Как сделать кнопку, которая выполняет определенную команду?

Как мне создать кнопку на моей панели задач вместе со временем и прочим, которая выполняет определенную задачу? Я хотел иметь возможность отключать и включать свою клавиатуру с помощью сочетания клавиш, но я понял, что как только я отключу свою клавиатуру с помощью сочетания клавиш, я не смогу использовать клавиатуру, чтобы снова включить ее. Итак, мне нужна кнопка на моей панели задач, которая делает это за меня одним нажатием кнопки, не требуя клавиатуры.

Спасибо.

10
задан 4 November 2020 в 03:13

3 ответа

это может быть достигнуто путем создания gnome-shell-extension.

Проверено в gnome-shell --version 3.38.1

Выполните следующие команды одну за другой для создания необходимых файлов.

mkdir -p $HOME/.local/share/gnome-shell/extensions/KBD
touch $HOME/.local/share/gnome-shell/extensions/KBD/extension.js
touch $HOME/.local/share/gnome-shell/extensions/KBD/metadata.json

extension.js содержимое файла, скопируйте и вставьте в созданный выше файл extension.js . Обратите внимание на 11-ю строку Util.spawnCommandLine ("bash /home/admin/mykbd.sh") замените /home/admin/mykbd.sh на путь вашего скрипта, который переключает вы ищете содержимое файла.

'use strict';

const St = imports.gi.St;

const Main = imports.ui.main;
const Util = imports.misc.util;

let button;

function _myKBD () {
Util.spawnCommandLine("bash /home/admin/mykbd.sh")
}

function init() {
    button = new St.Bin({ style_class: 'panel-button',
                          reactive: true,
                          can_focus: true,
                          track_hover: true });
                          
    let icon = new St.Icon ({ icon_name: 'input-keyboard-symbolic',
                      style_class: 'system-status-icon' });
    button.set_child(icon);
    button.connect('button-press-event', _myKBD);
}

function enable() {
        Main.panel._rightBox.insert_child_at_index(button, 0);
}

function disable() {
        Main.panel._rightBox.remove_child(button);
}

metadata.json , скопируйте и вставьте в созданный выше файл metadata.json .

{
  "name": "KBD",
  "description": "KBD",
  "uuid": "KBD",
  "shell-version": [
    "3.36"
  ]
}

как только вы закончите копирование и вставку в два файла. Обновите оболочку gnome с помощью Alt + F2 r Введите метод или выйдите из системы и войдите.

Затем, чтобы включить расширение, выполните команду ниже.

gnome-extensions enable KBD

Снова Обновите оболочку gnome с помощью Alt + F2 r Введите метод или выйдите из системы и войдите в систему .

Теперь вы увидите кнопку клавиатуры в правом верхнем углу. при нажатии на нее запускается подготовленный вами сценарий.

enter image description here

Обратите внимание, что расширения отключаются, когда экран заблокирован, и включаются после разблокировки. Таким образом, вы не сможете нажать эту кнопку на экране блокировки.

16
ответ дан 4 January 2021 в 08:17

Немного ядерное предложение, но другие дополнительные рабочие столы, такие как MATE или Metacity (и, возможно, другие), по-прежнему предлагают опцию «Создать настраиваемую программу запуска» через щелкните мышью на панели.

5
ответ дан 4 January 2021 в 08:17

Очень элегантное решение было предоставлено в этом ответе UnKNOWn, но оно довольно техническое. Для полноты картины я хотел бы добавить более простой метод с использованием настольных пусковых установок, но в данном конкретном случае я бы выбрал подход UnKNOWn.

Вы можете в любое время создать собственную настольную пусковую установку, которая запускает вашу команду или скрипт. . Размещенный в соответствующем месте, он появится в обзоре приложений, откуда вы сможете закрепить его на панели. В Ubuntu вы также можете разместить его на рабочем столе, чтобы запускать его оттуда.

Средство запуска рабочего стола - это текстовый файл с расширением .desktop ,отформатированы определенным образом. Если вы поместите его в папку .local / share / applications , он будет обнаружен в обзоре приложения.

Таким образом, вы можете создать файл ~ / .local / share / application / toggle-keyboard.desktop , чтобы запустить сценарий. Содержимое должно выглядеть так:

[Desktop Entry]
Name=Toggle Keyboard
Comment=Toggle keyboard on or off
Exec=<name or path to your script>
Terminal=false
Type=Application
Icon=<name or path to the icon >
Categories=Utility;
12
ответ дан 4 January 2021 в 08:17

Другие вопросы по тегам:

Похожие вопросы: