[英]desktop application with gnome-terminal: relative paths to script and icon
我正在使用gnome-terminal
创建一个可点击的桌面应用程序。 应用程序应下载到zip文件夹中,子目录bin
包含myapp.desktop
。 我想在我的zip文件中有一个不同的目录somedir
,其中包含主应用程序脚本和应用程序的图标。
但是, gnome-terminal
似乎不适用于相对路径。 这是我的myapp.desktop
:
[Desktop Entry]
Exec=gnome-terminal -e "bash -c -i 'exec $SHELL --init-file ../somedir/myscript.sh'"
Icon=../somedir/myicon.gif
Terminal=true
Type=Application
我的问题是:如何将点击应用程序图标的目录传递给gnome-desktop
? 或者我如何组织我的目录,这样我就不myicon.gif
和myscript.sh
放在与myapp.desktop
相同的目录中?
我知道gnome-terminal
的--working-directory
参数并尝试传递$PWD
,但没有成功。
编辑:
相关问题: 用于Python脚本的桌面启动器以错误的路径启动程序(Linux)
可以在.desktop
文件中指定路径,但同样,它似乎不处理相对路径。 如果我添加Path=.
,没找到。
基于这个文档和其他问题ubuntu的答案(像这样或者这样 ),我认为你不能直接在桌面应用程序中使用相对路径。
但是,您可以将文件保存在所需的文件夹中,并在包中包含一个配置脚本,该脚本可复制可执行文件和默认路径中的图标,如文档中所述(可执行文件的$ PATH和/ usr / share / pixmaps用于图标)。
此外, 这里有一个很好的解决方法。 这里有一个类似我提出的解决方案。
每个人似乎都同意不可能使用相对路径,但......
...进一步搜索似乎可以通过省略路径上的正斜杠来使用主目录作为相对路径的起点。 基于此页面( 链接 ):
Exec="${HOME}/bin/scripts/UNIX/Prototype.bash"
Path=${HOME}/bin/scripts/UNIX
不起作用
但是这个:
Exec="Prototype.bash"
Path=bin/scripts/UNIX
应该。
此方法不起作用,因为.desktop文件中的$ PWD指向主目录。所以你应该创建一个安装脚本来生成“myapp.desktop”并将“myapp.desktop”和“icon.png”都复制到特定目录。 将此脚本复制到您的应用程序的根目录并运行它!
install.sh
#!/bin/bash
home_local=$HOME/.local/share
icon_dir=$home_local/icons/hicolor/48x48/apps
myapp_desktop=$home_local/applications/myapp.desktop
myapp_dir=$PWD
myapp=$myapp_dir/bin/myapp.sh
myapp_icons=$myapp_dir/icons/myapp.png
echo "[Desktop Entry]" > $myapp_desktop
echo "Name=MyApp" >> $myapp_desktop
echo "Exec=bash -c 'cd $myapp_dir;bash $myapp;exec bash'" >> $myapp_desktop
echo "Icon=myapp.png" >> $myapp_desktop
echo "Terminal=true" >> $myapp_desktop
echo "Type=Application" >> $myapp_desktop
cp $myapp_icon $icons_dir
让Exec看起来像这样:
Exec=gnome-terminal -e "bash -c -i 'set > /tmp/env_vars.log'"
然后在日志文件中检查可用变量(例如,从哪里运行),并相应地调整相对路径。 如果没有任何有用的东西,可以在某个现有变量上使用dirname来获取完整路径等。
你也可以这样运行:
Exec=gnome-terminal -e "bash -c -i 'pwd' > /tmp/curdir.log"
并使用curdir.log中找到的路径作为相对的路径。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.