如何向 Ubuntu 面板添加带有操作下拉菜单的图标

如何向 Ubuntu 面板添加带有操作下拉菜单的图标

我有一些经常运行的脚本/程序。我如何才能将图标添加到面板中,例如 Dropbox,当单击时会提供一个带有多个选项的下拉菜单,单击每个选项时都会运行一个 shell 脚本或带有一些参数的程序(最好有 - 报告成功或失败)。

答案1

您可以创建自定义启动器图标来执行脚本。打开您最喜欢的文本编辑器并复制以下代码片段:

[Desktop Entry]
Encoding=UTF-8
Name=My Scripts
Name[de]=Meine Skripte
Exec=myscript_0.sh
Terminal=true
Type=Application
Icon=terminal
StartupNotify=true
Actions=ContextMenu1;ContextMenu2

[Desktop Action ContextMenu1]
Name=Run script 1
Name[de]=Skript 1 starten
Exec=myscript_1.sh

[Desktop Action ContextMenu2]
Name=Run script 2
Name[de]=Skript 2 starten
Exec=myscript_2.sh

现在是时候修改上面的存根了,因为它对你来说不再有用!

[Desktop Entry]部分:

  • Encoding=UTF-8更好的不修改此行,因为否则,如果您在此文件中使用任何非 ASCII 字符,就会遇到问题。
  • Name=...在这里输入任意字符串,它将作为启动器项的默认英文名称。
  • Name[de]=...与 相同Name=,但用于德语(de)翻译。
    这只是一个例子,您可以删除所有这些行或[de]用另一个语言环境代码替换它们。
  • Exec=...在此处输入单击启动器图标时要执行的命令。
    如果脚本位于$PATH环境变量中列出的文件夹中,则只需输入可执行文件的名称即可,否则您必须指定完整路径。
    确保没有拼写错误并且脚本是可执行的(chmod +x并且它以有效的“shebang”行开头)!
    • Terminal=true如果您将其设置为false相反,则不会打开任何终端窗口并且脚本将在后台运行。
    • Type=Application不变这条线。
    • Icon=terminal指定启动器项目的图标。您可以使用通用名称,例如terminal或输入图像文件的完整路径。
    • StartupNotify=truefalse使鼠标指针在单击图标和窗口打开之间的时间内执行“等待”动画(旋转圆圈/沙漏)。您可以根据需要进行设置。
    • Actions=...列出上下文菜单项的内部标识符名称。它们必须与上下文菜单部分标题 ( [Desktop Action ...]) 中使用的名称相匹配,并且必须是以分号分隔的列表,中间没有空格。

[Desktop Action ...]部分:

您只需要这里的密钥Name(以及翻译,如Name[de],如果您需要的话)和Exec。与上述相同的标准也适用于此处。

另外,请再次确保章节标题中的标识符(此处ContextMenu1和)出现在上面的列表中!ContextMenu2Actions=

此类上下文菜单块的数量是无限的。


修改上述示例存根后,将其保存在~/.local/share/applications/具有自定义文件名的目录中,但扩展名为.desktop

然后它应该会出现在你的 Unity Dash 的应用程序镜头 ( Super+ A) 中。如果没有,请注销并重新登录以更新它。然后用鼠标将其从 Dash 拖到启动器栏上。右键单击它将打开上下文菜单,其中列出了所有“桌面操作”项目,如下面的示例屏幕截图所示:

图像

答案2

答案并没有提供创建指标的方法,但它确实提供了一种替代方案。核心思想是使用脚本的图形列表来启动它们。

脚本

下面的脚本使用用户可能想要启动的收藏脚本的完整路径数组。建议将以下脚本保存在个人$HOME/bin文件夹中,并使用 使其可执行chmod +x。它可以进一步链接到键盘快捷键以轻松调用启动器,或者将其放入.desktop快捷方式中,如 ByteCommander 的答案中所示。

按照脚本注释中的建议进行修改以满足您的需要

#!/bin/bash
# -------------------------------
# Author: Serg Kolo
# Date: Nov 10th, 2015
# Description: A launcher for favorite scripts
# Written for: http://askubuntu.com/q/693413/295286
#---------------------------------

# ARRAY holds full paths to scripts that you want to launch
# Always enclose paths in double quotes, separate by spaces

ARRAY=("/home/xieerqi/bin/sh/resizer.sh" "/home/xieerqi/bin/sh/verticalSplit.sh" "/home/xieerqi/bin/sh/vol-down.sh"  )

# This launches zenity dialog with the list from ARRAY
# Stores into SCRIPT variable
SCRIPT="$( zenity --list --title "Select script to run" --column "Script files" "${ARRAY[@]}" | cut -d '|' -f1)"

# If SCRIPT variable is empty, do nothing, fail silently
# If exists, check if user has executable permissions
# Implies script existence
if  [ -n "$SCRIPT" ];then
  if  [ -x "$SCRIPT" ] ; then
    # if you want to see script running in terminal
    # replace the line bellow with  xterm -hold -e "$SCRIPT" 
    "$SCRIPT" &
   else
    zenity --error --text "File doesn't exist or wrong permission "
  fi
fi 

截屏

在此处输入图片描述

相关内容