Уведомить Ubuntu/Gnome с помощью скрипта, что приложение занято, чтобы предотвратить выключение питания.

Вопрос или проблема

При использовании действия “Выключить” в Gnome, если есть некоторые графические приложения с несохраненными изменениями (например, текстовый редактор), появится сообщение “Некоторые приложения заняты или имеют несохраненную работу”.

Я ищу способ установить этот статус “несохраненный” из командной строки. Так я смогу интегрировать это в свой рабочий процесс, когда использую tmux/neovim, чтобы случайно не выключить ПК, когда у меня открыты некоторые сессии.

Выяснил, что можно использовать инструмент gnome-session-inhibit для установки флага для сеанса Gnome, чтобы “подавить” некоторые действия (выход в данном случае).

$ gnome-session-inhibit --app-id APP_ID --reason reason --inhibit logout --inhibit-only

Единственное замешательство заключается в том, что для APP_ID вам следует использовать что-то, что имело .desktop файл (см. endSessionDialog.js#L173 для деталей). Например, вы можете использовать --app-id vim.

Ответ или решение

Чтобы уведомить Ubuntu/Gnome о том, что приложение занято и избежать непреднамеренного завершения работы системы, вы можете воспользоваться инструментом gnome-session-inhibit. Это полезно, особенно если вы используете такие утилиты, как tmux или neovim, и хотите гарантировать, что ваши сессии не будут потеряны из-за неожиданного отключения питания. В этом ответе мы рассмотрим, как использовать gnome-session-inhibit для достижения этой цели.

Что такое gnome-session-inhibit?

gnome-session-inhibit — это утилита командной строки, которая позволяет инхибировать (то есть временно приостанавливать) определённые действия в Gnome, такие как выход из системы или завершение сеанса. Ваша задача — создать индикацию того, что приложение занято, чтобы система не завершила сеанс.

Как использовать gnome-session-inhibit?

Чтобы использовать gnome-session-inhibit, необходимо выполнить команду, указывая необходимые параметры. Вот синтаксис команды:

gnome-session-inhibit --app-id APP_ID --reason "Your reason here" --inhibit logout --inhibit-only

Параметры команды:

  • --app-id: уникальный идентификатор приложения. Это должно совпадать с .desktop файлом вашего приложения. Например, для vim это будет vim.desktop.

  • --reason: текстовое сообщение, объясняющее причину инхибирования. Это сообщение отображается пользователю и может помочь в понимании ситуации.

  • --inhibit: действие, которое необходимо инхибировать (например, logout, shutdown, sleep и т.д.).

  • --inhibit-only: этот параметр гарантирует, что инхибирование будет выполнено только для указанных действий.

Пример использования

Допустим, вы хотите заблокировать действие выхода (logout) для vim. В этом случае вы можете выполнить следующую команду в терминале:

gnome-session-inhibit --app-id vim --reason "Editing session is active" --inhibit logout --inhibit-only

Это создаст статус, который сообщит Gnome, что приложение vim занято и не должно быть завершено.

Как интегрировать с tmux или neovim

В случае использования tmux или neovim, вы можете добавить команду gnome-session-inhibit в скрипты или конфигурационные файлы, чтобы автоматизировать процесс при открытии или приостановке сессий. Например, вы можете создать скрипт start_neovim.sh:

#!/bin/bash

gnome-session-inhibit --app-id neovim --reason "Neovim editing session is active" --inhibit logout --inhibit-only &
nvim
# После завершения работы с nvim, завершите инхибирование
pkill -f "gnome-session-inhibit --app-id neovim"

Заключение

Используя gnome-session-inhibit, вы добавляете важный уровень защиты к вашим рабочим процессам на Ubuntu/Gnome, что позволяет избежать потерь данных и неожиданных завершений сеансов. Внедрение этой команды в ваши привычные рабочие процессы, такие как комбинации tmux и neovim, значительно улучшит вашу опыт работы. Не забывайте, что правильно настроенный рабочий процесс может сэкономить вам время и нервы в будущем.

Оцените материал
Добавить комментарий

Капча загружается...