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

Aks*_*lva 10 button 20.04

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

谢谢。

UnK*_*OWn 18

这可以通过创建 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
Run Code Online (Sandbox Code Playgroud)

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);
}
Run Code Online (Sandbox Code Playgroud)

metadata.json文件内容,复制粘贴到上面创建的metadata.json文件中。

{
  "name": "KBD",
  "description": "KBD",
  "uuid": "KBD",
  "shell-version": [
    "3.36"
  ]
}
Run Code Online (Sandbox Code Playgroud)

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

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

gnome-extensions enable KBD
Run Code Online (Sandbox Code Playgroud)

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

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

在此处输入图片说明

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


van*_*ium 13

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;
Run Code Online (Sandbox Code Playgroud)


WU-*_*ANG 5

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