如何让快捷列表项在路径中启动?

如何让快捷列表项在路径中启动?

在 .desktop 文件中,您可以Path在 [Desktop Entry] 中指定键,这样启动时工作目录就是该路径Exec。但是,即使该键是在 [Desktop Action] 组中设置的,当从 Quicklist 启动项目时,该键似乎不起作用Path。是我做错了什么,还是 Unity 还不支持这个?

如果没有办法做到这一点,我可以通过某种方式更改 Exec 键来获得相同的效果吗?

编辑: 为了测试目的,这里有一个示例小脚本 (displaycwd.py),运行时会在 Gtk 窗口中显示当前工作路径。下面有一个示例 .desktop 文件,显示当通过启动器正常运行时,它会以正确的路径打开(在我的情况下是 /home/ian/Documents)。但是,通过快速列表激活它会显示用户目录(在我的情况下是 /home/ian)。只需确保将脚本放在 $PATH 中的某个位置即可。

#!/usr/bin/python
from gi.repository import Gtk
import os

pwd=os.path.realpath(os.curdir)

win=Gtk.Window()
label=Gtk.Label(pwd)
win.add(label)
win.show_all()
win.connect('destroy', Gtk.main_quit)
Gtk.main()

还有 .desktop 文件:

[Desktop Entry]
Name=Display Working Directory
Exec=displaycwd.py
Type=Application
Actions=quicklist
Path=/home/ian/Documents
Icon=folder

[Desktop Action quicklist]
Name=QL Display WD
Exec=displaycwd.py
Path=/home/ian/Documents

答案1

好的,我找到了一种解决方法,因为快速列表似乎忽略了路径和其他变量,我们可以创建一个更改目录的脚本,然后执行你的程序。

  1. 创建一个名为或您选择的标题的文件cd.sh,在该文件中使用以下文本:

    #!/bin/bash
    cd /home/ian/Documents
    displaycwd.py
    
  2. 将该文件标记为可执行文件,右键单击>属性>权限>允许此文件作为程序运行。

    或者在终端中:

    chmod +x cd.sh 
    
  3. 放置cd.sh在相同的位置displaycwd.py并将快捷列表更改为:

    [Desktop Action quicklist]
    Name=QL Display WD
    Exec=cd.sh
    

    这使得 quicklist 首先调用一个改变目录的 shell 脚本,然后运行你的程序。


解决方案 #2

环顾四周后,我认为你可以将这Exec一行改为这样:

Exec=bash -c "cd /home/ian/Documents && displaycwd.py"

通过 bash 传递字符串,会改变目录然后运行程序。

相关内容