如何制作一个执行特定命令的按钮?

如何制作一个执行特定命令的按钮?

如何在任务栏上创建一个按钮,其中包含时间和执行特定任务的内容?我希望能够借助键盘快捷键禁用和启用键盘,但我意识到一旦使用快捷键禁用键盘,我就无法使用键盘再次启用它。因此,我希望在任务栏上有一个按钮,只需单击按钮即可完成此操作,因此不需要使用键盘。

谢谢。

答案1

这可以通过创建 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"
  ]
}

完成两个文件的复制粘贴后,使用 Alt+F2 r Enter 方法刷新 gnome-shell,或者注销并登录。

然后要启用扩展,请运行以下命令。

gnome-extensions enable KBD

再次使用 Alt+F2 r Enter 方法刷新 gnome-shell 或者注销并登录。

现在您将看到右上角的键盘按钮。当您单击它时,它会运行您准备的脚本。

在此处输入图片描述

请注意,扩展程序在屏幕锁定时被禁用,在解锁后启用。因此您无法在锁定屏幕上单击此按钮。

答案2

一个非常优雅的解决方案已经提供这个答案UnKNOWn 的方法,但技术性较强。为了完整性,我想添加一种更直接的方法,即使用桌面启动器,但在这个特定情况下,我会选择 UnKNOWn 的方法。

您可以随时创建运行命令或脚本的自定义桌面启动器。放置在适当的位置后,它将出现在应用程序概览中,您可以从那里将其固定到仪表板上。在 Ubuntu 中,您还可以将其放置在桌面上,以便从那里启动它。

桌面启动器是一个带有扩展名的文本文件.desktop,采用特定格式。如果您将其放在文件夹中.local/share/applications,它将在应用程序概览中被选中。

因此,您可以创建文件~/.local/share/applications/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;

答案3

这是一个有点核建议,但其他可选桌面,如 MATE 或 Metacity(可能还有其他),仍然通过鼠标单击面板提供“创建自定义启动器”选项。

相关内容