我有一些经常运行的脚本/程序。我如何才能将图标添加到面板中,例如 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=true
false
使鼠标指针在单击图标和窗口打开之间的时间内执行“等待”动画(旋转圆圈/沙漏)。您可以根据需要进行设置。Actions=...
列出上下文菜单项的内部标识符名称。它们必须与上下文菜单部分标题 ([Desktop Action ...]
) 中使用的名称相匹配,并且必须是以分号分隔的列表,中间没有空格。
[Desktop Action ...]
部分:
您只需要这里的密钥Name
(以及翻译,如Name[de]
,如果您需要的话)和Exec
。与上述相同的标准也适用于此处。
另外,请再次确保章节标题中的标识符(此处ContextMenu1
和)出现在上面的列表中!ContextMenu2
Actions=
此类上下文菜单块的数量是无限的。
修改上述示例存根后,将其保存在~/.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
截屏