Files

93 lines
3.5 KiB
Plaintext

/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
#include "nsIShellService.idl"
interface nsIINIParserWriter;
interface mozIDOMWindowProxy;
[scriptable, uuid(2ce5c803-edcd-443d-98eb-ceba86d02d13)]
interface nsIGNOMEShellService : nsIShellService
{
/**
* Used to determine whether or not to offer "Set as desktop background"
* functionality. Even if shell service is available it is not
* guaranteed that it is able to set the background for every desktop
* which is especially true for Linux with its many different desktop
* environments.
*/
readonly attribute boolean canSetDesktopBackground;
/**
* Returns true if Firefox is set as the default handler for the scheme.
*/
boolean isDefaultForScheme(in AUTF8String aScheme);
AUTF8String getGSettingsString(in AUTF8String aScheme, in AUTF8String aKey);
void setGSettingsString(in AUTF8String aScheme, in AUTF8String aKey, in AUTF8String aValue);
/**
* Gets the command name that was used to start the browser.
*
* @returns the value of argv[0].
*/
ACString getArgv0();
/**
* Gets the program name from GLib, which is used as the default window
* class. This will often be identical to the app remotingName, but can be
* overridden with the '--name' command line argument.
*
* @returns the result of g_get_prgname.
*/
ACString getGlibPrgname();
/**
* Used for the return value of getDesktopEntryStatus. 'ABSENT' indicates the
* desktop file doesn't exist (or does but is marked Hidden=); 'INVISIBLE'
* indicates the desktop file exists, but will not be shown (e.g. via
* NoDisplay=); 'VISIBLE' indicates that it does exist and will be shown.
*/
cenum DesktopEntryStatus : 8 {
DESKTOP_ENTRY_ABSENT = 0,
DESKTOP_ENTRY_INVISIBLE = 1,
DESKTOP_ENTRY_VISIBLE = 2,
};
/**
* Determines whether the named desktop entry exists and is visible,
* returning a status intended for telemetry.
*
* Note that this could be inaccurate if you're running under Flatpak or
* Snap. From JavaScript, you can detect that with nsGIOService.
*
* @param aEntryId The ID of the desktop entry; this should end with
* '.desktop'.
* @returns The current status of the desktop entry.
*/
nsIGNOMEShellService_DesktopEntryStatus getDesktopEntryStatus(in AUTF8String aEntryId);
/**
* Uses the Dynamic Launcher portal to install a desktop entry for this user.
*
* @param aEntryId The ID of the desktop entry; if this were being installed
* manually, this would be the filename before ".desktop".
* @param aDesktopEntry The content of the desktop entry. Note that the
* 'Name' and 'Icon' fields may be overridden by the user.
* @param aWindow The window to use as the owner of the dialog (if any).
* @returns A promise resolved when the user has completed the installation.
*/
[implicit_jscontext]
Promise requestInstallDynamicLauncher(in AUTF8String aEntryId, in nsIINIParserWriter aDesktopEntry, in mozIDOMWindowProxy aWindow);
/**
* Uses the Dynamic Launcher portal to remove a desktop entry for this user.
*
* @param aEntryId The ID that the desktop entry was installed with.
* @returns A promise that resolves when uninstallation is complete.
*/
[implicit_jscontext]
Promise requestUninstallDynamicLauncher(in AUTF8String aEntryId);
};