Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
33 changes: 17 additions & 16 deletions READMEs/README_ru.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,13 @@

Power Off Options — это расширение GNOME Shell, которое добавляет дополнительные кнопки в диалог выключения:

- **Выключить экран** — Немедленно выключить монитор/дисплей.
- **Гибридный сон** — Перевести в сон RAM и также сохранить состояние системы на диск (безопасно при потере питания).
- **Сон, затем гибернация** — Перевести систему в сон RAM и автоматически перейти в гибернацию после таймаута.
- **Гибернация** — Сохранить состояние системы на диск и выключить (медленнее возобновляется, чем сон).
- **Перезапуск пользовательского пространства (Мягкая перезагрузка)** — Перезапустить пользовательское пространство без перезагрузки всей системы.
- **Перезагрузка в BIOS** — Перезагрузить напрямую в настройку системной firmware/BIOS.
- **Пользовательские команды** — Добавьте свои собственные команды в меню питания.
- **Выключить экран** — немедленное выключение монитора/дисплея.
- **Гибридный сон** — переход в ждущий режим (в RAM) с одновременным сохранением состояния системы на диск (безопасно при потере питания).
- **Сон, затем гибернация** — перевод системы в ждущий режим с автоматическим переходом в режим гибернации по истечении времени.
- **Гибернация** — сохранение состояния системы на диск и полное выключение (медленнее возобновляется, чем сон).
- **Мягкий перезапуск** — перезапуск графической оболочки и процессов пользователя без полной перезагрузки системы.
- **Перезагрузка в BIOS** — прямая перезагрузка в меню настроек BIOS/UEFI.
- **Пользовательские команды** — добавление собственных команд через окно настроек. Это позволяет добавлять свои пункты в меню питания с любой shell-командой, которую вы хотите выполнить.

<p align="center">
<img src="../resources/ru_1.png"/>
Expand All @@ -17,8 +17,8 @@ Power Off Options — это расширение GNOME Shell, которое д
## Требования

- GNOME Shell;
- функция выключения экрана работает только в X11, Wayland не поддерживается;
- Гибернация, гибридный сон и связанные с перезагрузкой опции используют соответствующие команды `systemctl` и должны быть включены и настроены в вашей системе для исправной работы.
- Функция выключения экрана работает только в X11, Wayland не поддерживается;
- Гибернация, гибридный спящий режим и опции перезагрузки используют соответствующие команды `systemctl`. Они должны быть включены и настроены в вашей системе для корректной работы.

## Установка

Expand All @@ -27,12 +27,12 @@ Power Off Options — это расширение GNOME Shell, которое д

Или установите вручную:

1. скачайте или клонируйте этот репозиторий;
2. перейдите в каталог расширения;
3. выполните:
- `make` для установки расширения;
- `make uninstall` для удаления расширения;
4. перезапустите GNOME Shell для применения изменений (например, выйдите из системы и войдите снова).
1. Скачайте или клонируйте данный репозиторий;
2. Перейдите в директорию расширения;
3. Выполните:
- `make` для установки расширения;
- `make uninstall` для удаления расширения;
4. Перезапустите GNOME Shell, чтобы применить изменения (например, выйдите из системы и зайдите снова).

## Настройки

Expand All @@ -42,4 +42,5 @@ Power Off Options — это расширение GNOME Shell, которое д
gnome-extensions prefs power-off-options@axelitama.github.io
```

То же окно также доступно из приложения **GNOME Extensions**.
Это же окно доступно через приложение **Расширения GNOME** (GNOME Extensions).

Original file line number Diff line number Diff line change
Expand Up @@ -25,13 +25,12 @@ export default class CmdAsyncButton extends Button {
}

_execute() {
// FIXED: Removed the 5th and 6th arguments (setup, user_data) to suppress "Too many arguments" warning
GLib.spawn_async(
this._workingDir,
this._command,
this._env,
this._flags,
this._setup,
this._user_data
this._flags
);
}

Expand Down
6 changes: 3 additions & 3 deletions power-off-options@axelitama.github.io/buttons/customButton.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@ import CmdAsyncButton from './_cmdAsyncButton.js';

export default class CustomButton extends CmdAsyncButton {
constructor(systemMenu, label, commandString) {
// Wrap the user's command in `bash -c` to ensure it runs in a shell
// environment, which handles aliases, paths, and complex syntax.
const argv = ['/bin/bash', '-c', commandString];
// Wrap command in `bash -l -c` to invoke a login shell, ensuring
// the user's environment (PATH, aliases) is fully loaded.
const argv = ['/bin/bash', '-l', '-c', commandString];
super(systemMenu, label, argv);
}
}
10 changes: 10 additions & 0 deletions power-off-options@axelitama.github.io/buttons/settingsButton.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
import { gettext as _ } from 'resource:///org/gnome/shell/extensions/extension.js';
import CmdAsyncButton from './_cmdAsyncButton.js';

export default class SettingsButton extends CmdAsyncButton {
constructor(systemMenu) {
const uuid = "power-off-options@axelitama.github.io";
const argv = ['gnome-extensions', 'prefs', uuid];
super(systemMenu, '☰ ' + _('Customize this menu'), argv);
}
}
8 changes: 8 additions & 0 deletions power-off-options@axelitama.github.io/extension.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import HibernationButton from './buttons/hibernationButton.js';
import SuspendThenHibernateButton from './buttons/suspendThenHibernateButton.js';
import SoftRebootButton from './buttons/softRebootButton.js';
import RebootToBiosButton from './buttons/rebootToBiosButton.js';
import SettingsButton from './buttons/settingsButton.js';
import CustomButton from './buttons/customButton.js';

export default class PowerOffOptions extends Extension {
Expand Down Expand Up @@ -92,6 +93,13 @@ export default class PowerOffOptions extends Extension {
defaultPosition: 2,
shiftDeps: ['screenOff', 'hybridSleep', 'suspendThenHibernate', 'hibernate', 'softReboot'],
},
{
key: 'settings',
instance: new SettingsButton(this._systemMenu),
settingKey: 'show-settings',
defaultPosition: 5,
shiftDeps: ['screenOff', 'hybridSleep', 'suspendThenHibernate', 'hibernate', 'softReboot', 'rebootToBios'],
},
];
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: power-off-options\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-10-30 20:43+0100\n"
"POT-Creation-Date: 2026-01-17 16:08+0100\n"
"PO-Revision-Date: 2025-10-22 00:32+0200\n"
"Last-Translator: furik30 <furik@krv.li>\n"
"Language-Team: French\n"
Expand All @@ -33,6 +33,10 @@ msgstr "Redémarrer vers UEFI"
msgid "Turn Off Screen"
msgstr "Éteindre l'écran"

#: buttons/settingsButton.js:8
msgid "Customize this menu"
msgstr "Personnaliser ce menu"

#: buttons/softRebootButton.js:7 prefs.js:55
msgid "Restart user space (Soft Reboot)"
msgstr "Redémarrer l'espace utilisateur (Redémarrage logiciel)"
Expand Down Expand Up @@ -140,3 +144,12 @@ msgstr "Redémarre l'espace utilisateur sans redémarrer entièrement le systèm
#: prefs.js:62
msgid "Reboot directly into the system firmware/BIOS setup."
msgstr "Redémarre directement dans le micrologiciel UEFI du système."

#: prefs.js:67
msgid "Settings Button (Customize this menu)"
msgstr "Bouton Paramètres (Personnaliser ce menu)"

#: prefs.js:68
msgid "Show a button to open these preferences directly from the menu."
msgstr ""
"Afficher un bouton pour ouvrir ces préférences directement depuis le menu."
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: power-off-options\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-10-30 20:43+0100\n"
"POT-Creation-Date: 2026-01-17 16:08+0100\n"
"PO-Revision-Date: 2025-10-21 23:30+0200\n"
"Last-Translator: axelitama\n"
"Language-Team: Italian\n"
Expand All @@ -34,6 +34,10 @@ msgstr "Riavvia nel BIOS"
msgid "Turn Off Screen"
msgstr "Spegni Schermo"

#: buttons/settingsButton.js:8
msgid "Customize this menu"
msgstr "Personalizza questo menu"

#: buttons/softRebootButton.js:7 prefs.js:55
msgid "Restart user space (Soft Reboot)"
msgstr "Riavvia lo spazio utente"
Expand Down Expand Up @@ -141,3 +145,11 @@ msgstr "Riavvia lo spazio utente senza riavviare l'intero sistema."
msgid "Reboot directly into the system firmware/BIOS setup."
msgstr ""
"Riavvia direttamente nella configurazione del firmware/BIOS di sistema."

#: prefs.js:67
msgid "Settings Button (Customize this menu)"
msgstr "Pulsante Impostazioni (Personalizza questo menu)"

#: prefs.js:68
msgid "Show a button to open these preferences directly from the menu."
msgstr "Mostra un pulsante per aprire queste preferenze direttamente dal menu."
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-10-30 20:43+0100\n"
"POT-Creation-Date: 2026-01-17 16:08+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
Expand All @@ -33,6 +33,10 @@ msgstr ""
msgid "Turn Off Screen"
msgstr ""

#: buttons/settingsButton.js:8
msgid "Customize this menu"
msgstr ""

#: buttons/softRebootButton.js:7 prefs.js:55
msgid "Restart user space (Soft Reboot)"
msgstr ""
Expand Down Expand Up @@ -128,3 +132,11 @@ msgstr ""
#: prefs.js:62
msgid "Reboot directly into the system firmware/BIOS setup."
msgstr ""

#: prefs.js:67
msgid "Settings Button (Customize this menu)"
msgstr ""

#: prefs.js:68
msgid "Show a button to open these preferences directly from the menu."
msgstr ""
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: power-off-options\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-10-30 20:43+0100\n"
"POT-Creation-Date: 2026-01-17 16:08+0100\n"
"PO-Revision-Date: 2025-11-10 14:58-0300\n"
"Last-Translator: fkeglevich <fkeglevich@gmail.com>\n"
"Language-Team: Brazilian Portuguese\n"
Expand All @@ -34,6 +34,10 @@ msgstr "Reiniciar para a BIOS"
msgid "Turn Off Screen"
msgstr "Desligar Tela"

#: buttons/settingsButton.js:8
msgid "Customize this menu"
msgstr "Personalizar este menu"

#: buttons/softRebootButton.js:7 prefs.js:55
msgid "Restart user space (Soft Reboot)"
msgstr "Reiniciar o espaço de usuário"
Expand Down Expand Up @@ -141,3 +145,11 @@ msgstr "Reinicia o espaço de usuário sem precisar reiniciar todo o sistema."
msgid "Reboot directly into the system firmware/BIOS setup."
msgstr ""
"Reinicia diretamente para as configurações de firmware/BIOS do sistema."

#: prefs.js:67
msgid "Settings Button (Customize this menu)"
msgstr "Botão de Configurações (Personalizar este menu)"

#: prefs.js:68
msgid "Show a button to open these preferences directly from the menu."
msgstr "Mostrar um botão para abrir essas preferências diretamente do menu."
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: power-off-options\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-10-30 20:43+0100\n"
"POT-Creation-Date: 2026-01-17 16:08+0100\n"
"PO-Revision-Date: 2025-10-22 00:11+0200\n"
"Last-Translator: furik30 <furik@krv.li>\n"
"Language-Team: Russian\n"
Expand All @@ -33,6 +33,10 @@ msgstr "Перезагрузка в BIOS"
msgid "Turn Off Screen"
msgstr "Выключить экран"

#: buttons/settingsButton.js:8
msgid "Customize this menu"
msgstr "Настроить это меню"

#: buttons/softRebootButton.js:7 prefs.js:55
msgid "Restart user space (Soft Reboot)"
msgstr "Мягкий Перезапуск"
Expand Down Expand Up @@ -141,3 +145,11 @@ msgstr ""
#: prefs.js:62
msgid "Reboot directly into the system firmware/BIOS setup."
msgstr "Перезагружает непосредственно в настройку firmware/BIOS системы."

#: prefs.js:67
msgid "Settings Button (Customize this menu)"
msgstr "Кнопка настроек (Настроить это меню)"

#: prefs.js:68
msgid "Show a button to open these preferences directly from the menu."
msgstr "Показывать кнопку для открытия настроек прямо из меню."
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: power-off-options\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-10-30 20:43+0100\n"
"POT-Creation-Date: 2026-01-17 16:08+0100\n"
"PO-Revision-Date: 2025-11-07 17:37+0800\n"
"Last-Translator: EricWanAR <wanboyao@outlook.com>\n"
"Language-Team: Chinese (Simplified)\n"
Expand All @@ -33,6 +33,10 @@ msgstr "重启到 BIOS"
msgid "Turn Off Screen"
msgstr "关闭屏幕"

#: buttons/settingsButton.js:8
msgid "Customize this menu"
msgstr "自定义此菜单"

#: buttons/softRebootButton.js:7 prefs.js:55
msgid "Restart user space (Soft Reboot)"
msgstr "重启用户空间(软重启)"
Expand Down Expand Up @@ -133,3 +137,11 @@ msgstr "仅重启用户空间而不是整个操作系统"
#: prefs.js:62
msgid "Reboot directly into the system firmware/BIOS setup."
msgstr "直接重启到 系统固件/BIOS 设置中"

#: prefs.js:67
msgid "Settings Button (Customize this menu)"
msgstr "设置按钮(自定义此菜单)"

#: prefs.js:68
msgid "Show a button to open these preferences directly from the menu."
msgstr "显示一个直接从菜单打开首选项的按钮。"
7 changes: 7 additions & 0 deletions power-off-options@axelitama.github.io/prefs.js
Original file line number Diff line number Diff line change
Expand Up @@ -63,13 +63,20 @@ export default class ExamplePreferences extends ExtensionPreferences {
});
group.add(rebootToBiosRow);

const settingsRow = new Adw.SwitchRow({
title: _('Settings Button (Customize this menu)'),
subtitle: _('Show a button to open these preferences directly from the menu.'),
});
group.add(settingsRow);

// Bind settings
settings.bind('show-screenoff', screenOffRow, 'active', Gio.SettingsBindFlags.DEFAULT);
settings.bind('show-hybrid-sleep', hybridSleepRow, 'active', Gio.SettingsBindFlags.DEFAULT);
settings.bind('show-suspend-then-hibernate', suspendThenHibernateRow, 'active', Gio.SettingsBindFlags.DEFAULT);
settings.bind('show-hibernate', hibernateRow, 'active', Gio.SettingsBindFlags.DEFAULT);
settings.bind('show-soft-reboot', softRebootRow, 'active', Gio.SettingsBindFlags.DEFAULT);
settings.bind('show-reboot-to-bios', rebootToBiosRow, 'active', Gio.SettingsBindFlags.DEFAULT);
settings.bind('show-settings', settingsRow, 'active', Gio.SettingsBindFlags.DEFAULT);

const customCommandsGroup = new CustomCommandsManager(settings);
page.add(customCommandsGroup);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<schemalist>
<schema id="org.gnome.shell.extensions.power-off-options" path="/org/gnome/shell/extensions/power-off-options/">

<key name="show-settings" type="b">
<default>true</default>
</key>

<key name="show-screenoff" type="b">
<default>false</default>
</key>
Expand All @@ -26,7 +29,6 @@
<default>false</default>
</key>

<!-- A JSON array of custom command objects -->
<key name="custom-commands" type="s">
<default>'[]'</default>
</key>
Expand Down
Binary file modified resources/en_1.png
100644 → 100755
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified resources/fr_1.png
100644 → 100755
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified resources/it_1.png
100644 → 100755
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified resources/pt-BR_1.png
100644 → 100755
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified resources/ru_1.png
100644 → 100755
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified resources/zh-CN_1.png
100644 → 100755
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.