Home

Awesome

Unsafe Mode Menu

Simple GNOME extension to change the Gnome Shell unsafe-mode via the quick settings menu/panel menu. Currently runs on Gnome Shell 42-47 using the following extension versions:

Gnome ShellLatest VersionBranch
45-47v10main
42-44v8gnome-42-44

If you want to try it on a newer version you need to add "<version>" to the list of supported versions in unsafe-mode-menu@linushdot.local/metadata.json before installing it. If it just works or if there are bugs with the new Gnome Shell feel free to open an issue here and I will see if I can update the extension.

Install/Update

Clone this repository and copy the extension to your extensions folder.

git clone https://github.com/linushdot/unsafe-mode-menu.git
cd unsafe-mode-menu
mkdir -p ~/.local/share/gnome-shell/extensions/
cp -r unsafe-mode-menu@linushdot.local ~/.local/share/gnome-shell/extensions/

Then restart the shell and enable the extension from https://extensions.gnome.org/local/ or from gnome-extensions-app. Also on this page or in the extensions app the preferences can be modified.

If you need an older version than the current one (for example version 5) clone the repository with the following command instead and follow the rest of the steps.

git clone --branch v8 https://github.com/linushdot/unsafe-mode-menu.git

Preferences

Screenshot Gnome Shell 43

Screenshot Gnome Shell 43

Screenshot Gnome Shell 42

Screenshot Gnome Shell 42

Changing Unsafe Mode via dconf

With the extension enabled unsafe mode can be read and changed using dconf:

dconf read /org/gnome/shell/extensions/unsafe-mode-menu/state
dconf write /org/gnome/shell/extensions/unsafe-mode-menu/state <true|false>

Use Cases

Since Gnome 41 unsafe mode is necessary to let applications access certain private D-Bus APIs of the Gnome Shell. This mostly concerns:

An example for the latter is changing to the secondary input source using a command:

gdbus call --session --dest org.gnome.Shell \
    --object-path /org/gnome/Shell \
    --method org.gnome.Shell.Eval \
    "imports.ui.status.keyboard.getInputSourceManager().inputSources[1].activate()"