web-dev-qa-db-ja.com

クイックリストアイテムをパスで起動するにはどうすればよいですか?

.desktopファイルでは、[DesktopEntry]でPathキーを指定して、Execの起動時に作業ディレクトリがそのパスになるようにすることができます。ただし、[デスクトップアクション]グループでPathキーが設定されていても、クイックリストからアイテムを起動すると、このキーは機能しないようです。私は何か間違ったことをしていますか、それともUnityはまだこれをサポートしていませんか?

これを行う方法がない場合、同じ効果を得るために何らかの方法でExecキーを変更できますか?

EDIT:テストの目的で、実行時にGtkウィンドウに現在の作業パスを表示する小さなスクリプト(displaycwd.py)の例を次に示します。次の.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
2
Ian B.

クイックリストはパスやその他の変数を無視しているように見えるので、それを回避する方法を見つけました。ディレクトリを変更するスクリプトを作成して、プログラムを実行できます。

  1. cd.shまたは任意のタイトルというファイルを作成します。そのファイルで、次のテキストを使用します。

    #!/bin/bash
    cd /home/ian/Documents
    displaycwd.py
    
  2. ファイルを実行可能としてマークし、右クリック>プロパティ>権限>このファイルをプログラムとして実行できるようにします。

    またはターミナルで:

    chmod +x cd.sh 
    
  3. cd.shdisplaycwd.pyと同じ場所に配置し、クイックリストを次のように変更します。

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

    これにより、クイックリストは最初にディレクトリを変更するシェルスクリプトを呼び出し、次にプログラムを実行します。


解決策#2

周りを見回した後、Exec行を次のように変更できると思います。

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

文字列をbashに渡すには、ディレクトリを変更してからプログラムを実行します。

1
Mateo