我想在我的 lxpanel 上制作一个按钮来启动一个Hello World!
在弹出的 lxterminal 中打印出来的程序,因此我使用了之前在 Debian 7 中成功实现的技术,即:
gedit /bin/hello.sh
(以下内容):#!/bin/bash echo 'Hello World!';
gedit /usr/share/applications/hello1.desktop
(以下):[Desktop Entry] Version=1.0 Type=Application Name=Hello1 Comment=Test the terminal running a command inside it Exec=lxterminal -e "/bin/hello.sh" StartupNotify=true Icon=utilities-terminal Terminal=true Categories=Utility;
最后我
chown
和chmod
上述两个文件如下:-rwxr-xr-x 1 a adm 230 1月 1 13:02 /usr/share/applications/hello1.desktop* -rwxr-xr-x 1 a adm 240 1月 1 12:57 /usr/share/applications/hello1.desktop~* -rwxr-xr-x 1 a adm 194 1月 1 12:04 /usr/share/applications/hello.desktop* -rwxr-xr-x 1 a adm 195 1月 1 12:03 /usr/share/applications/hello.desktop~* -rwxrwxr-x 1 a adm 87 1月 1 12:35 /usr/share/applications//bin/hello.sh* -rwxrwxr-x 1 a a 87 1月 1 12:25 /usr/share/applications//bin/hello.sh~* -rwxrwxr-x 1 a adm 134 12月 13 09:56 /usr/share/applications//bin/hello_world.sh*
不幸的是无论我做什么,该hello1.desktop
文件只能打开一个空白的终端,并且没有任何输出。
我正在运行 Lubuntu 14.04,并按照以下教程将桌面文件链接到 *.sh 脚本程序:
- 创建一个在终端中打开并执行命令的 .desktop 文件
- 在桌面图标中启动脚本
- http://ubuntuforums.org/showthread.php?t=2194284
- http://lkubaski.wordpress.com/2012/06/29/adding-lxde-start-menu-and-desktop-shortcuts/
- http://forum.lxde.org/viewtopic.php?f=8&t=31647
- http://forum.lxde.org/viewtopic.php?f=26&t=31373
- https://bugs.launchpad.net/ubuntu/+source/lubuntu-default-settings/+bug/975152
我还做了以下改动hello1.desktop
:
- 第 10 行(最后一行)——我也尝试过不使用分号。
- 第 9 行(“终端”行)- 尝试“false”
第 6 行(“Exec”行)- 尝试了这些:
Exec=sh /bin/hello.sh; Exec=lxterminal -e “/bin/hello.sh” Exec=/bin/hello.sh Exec=sh -c /bin/hello.sh Exec=lxterminal -x sh -c 'echo hello' Exec=sh -c 'gnome-terminal echo hello' Exec=sh -c 'echo hello' Exec=sh /bin/hello.sh Exec=sh -c /bin/hello.sh
但最终一切都是一样的(Terminal=false
显然,第 9 行除外,因为没有终端)。
我可以hello1
在系统 -> 附件下看到,但当我单击它时,仍然会弹出一个空白屏幕。在 debian 7.5 LXDE wheezy 中,这确实很容易成功完成,但 Lubuntu 14.04 中出了什么问题,让它变得更加困难?
安德鲁
答案1
我已设法复制您的问题并找到了解决方案。
正如您的研究表明的那样,您最初的问题是:
Terminal=true
和...一起:
Exec=lxterminal -e /bin/hello.sh
唯一的问题是,当您使用:
Terminal=false
执行脚本后,终端会关闭,但实际上它确实运行了脚本。由于脚本产生的输出很少,因此人眼无法看到这种情况,因此看起来像是“弹出空白屏幕”。
据我所知(来自man lxterminal
和来自 Google),没有特定的方法可以要求 lxterminal 在执行脚本后保持打开状态,因此您必须更改 bash 脚本(即您的 hello.sh)本身。
例如,您可以将以下任一项添加到脚本末尾。
echo "Press [ENTER] to exit" && read
- 终端将等待用户点击Enter。 (实际上是输入任何内容后跟Enter。)
/bin/bash
- 该航站楼将保持开放。
有关执行命令后阻止 shell 关闭的常见问题的讨论,包括有关其他终端仿真器的信息,请参见:如何在不关闭终端的情况下运行脚本?
顺便说一下,桌面文件末尾的分号没有任何作用,所以您最好将其删除。
概括:您需要对原始桌面文件进行的唯一更改是Terminal=false
,但如果您想查看脚本是否已运行,则需要在 bash 脚本末尾添加一行。