.desktopファイルのExec行のスペースをエスケープする方法


15

ここで説明する.desktopようなファイルを作りたいです。

[Desktop Entry]
Name=Sublime Text 2
GenericName=Sublime Text 2
Comment=Edit text files
Exec=/home/user/opt/sublime/Sublime Text 2/sublime_text %U

ただし、これを開くと Nautilusのコンテキストメニューから実行すると、

「/ home / user / opt / sublime / Sublime」が見つかりませんでした

だから私は試した

Exec="/home/user/opt/sublime/Sublime Text 2/sublime_text" %U

そして得た

「。」の一致する引用が見つかる前にテキストが終了しました(テキストは「」/ home / user / opt / sublime / Sublime 'でした)

ファイルのExec行のスペースをエスケープする正しい方法は何.desktopですか?

回答:


5

各スペースの前にバックスラッシュを付けます:

[Desktop Entry]
Name=Sublime Text 2
GenericName=Sublime Text 2
Comment=Edit text files
Exec=/home/user/opt/sublime/Sublime\ Text\ 2/sublime_text %U

4
それは動作しません:Text ended just after a '\' character. (The text was '/home/user/opt/sublime/Sublime\')
nh2

おかしい、それは私のために働く。

同じバージョンを使用しますか?GNOME nautilus 3.4.212.04に。
nh2

Ubuntu 16.04で動作します。また、二重引用符も使用できます。ただし、スペースをエスケープしたり、パスとアイコンの値を引用したりしないでください。アプリケーションが実行されない場合があります(私のコンピューターでは、ダッシュのアイコンが点滅しますが、Terminal = trueでも端末を開くことさえできません)。ちなみに、Execをエスケープしないと同じ問題が発生するため、.desktopの各行で何をすべきかを見つけるのに時間がかかったと想像できます。
hsandt

奇妙な...これは、ランチャーを手動で実行した場合に機能しますが、自動起動では機能しません。この機能は非常にバグがあります。
エイドリアンロペス

3

私はまったく同じ問題を抱えていました!さまざまなエスケープ/引用パターンを試した後、最も簡単な解決策はsublime_text、$ PATHにシンボリックリンクを設定することです(またはコマンドラインエイリアスを使用できます)。

[Desktop Entry]
Version=1.0
Type=Application
Terminal=false
Icon[C]=/usr/share/Sublime Text 2/Icon/256x256/sublime_text.png
Name[C]=Sublime Text 2
Exec=Sublime-Text-2 %U
Comment[C]=Text Editor
Name=Sublime Text 2
Comment=Text Editor
Icon=/usr/share/Sublime Text 2/Icon/256x256/sublime_text.png
X-Desktop-File-Install-Version=0.21

4
これは賢明な回避策ですが、我々はまだ我々がされているのか分からない意味でスペースを使用して.desktopファイル。
nh2

2
同意しましたが、Exec私には間違って実装されているのではなく、解析の仕方でバグがあるように見えます。他のプロパティのパスにエスケープされていないスペース/引用符で囲まれていない文字列を使用できるため、スペースは値の終わりとして解釈されますが、これは奇妙です!
c24w

3

""引用符の代わりに ''引用符を使用してみましたか?Exec行にスペースを含むカスタマイズされた.desktopファイルがあり、私の引用符で動作します。


3

http://monkeyhacks.com/post/how-to-install-sublime-text-2-on-ubuntu-14-04)サイトからインストール手順を実行したときに同じ問題が発生しました。 :

  1. 「sublime」というソフトリンクを削除/削除します /usr/bin

  2. 「Sublime Text2」フォルダの名前を「SublimeText2」に変更して、すべての空白を削除します

  3. 次の場所でソフトリンクを再作成します /usr/bin/

    sudo ln -s /opt/SublimeText2/sublime_text /usr/bin/sublime
    
  4. 以下を含む.desktopファイルを作成します。

    Exec=/opt/SublimeText2/sublime_text %U
    Icon=/opt/SublimeText2/Icon/48x48/sublime_text.png
    


0

Ubuntu 12.04でGNOME nautilus 3.4.2を使用して同じ問題に遭遇しました。この代替回避策は、Moblin UIフレームワークの同じ問題のバグレポートで発見しました。これは、$ PATHにすべてのフォルダーを追加する必要がある場合に言及したものよりも好みです。

回避策は、単に
「スペースのないパスにシンボリックリンクを作成し、EXECフィールドがそのリンクを指すようにする」です。


-1

.desktopファイルは、シェルと同じように引用符、スペース、エスケープ文字を処理しません。おそらく、最良のオプションは、次のように、exec行でシェルを呼び出して、予想される動作を取得することです。

[Desktop Entry]
Name=Sublime Text 2
GenericName=Sublime Text 2
Comment=Edit text files
Exec=sh -c "/home/user/opt/sublime/Sublime Text 2/sublime_text" %U

詳細については、を参照してくださいman sh。これにより、他の回答と同様に、シンボリックリンクを作成および管理する必要がなくなります。


このソリューションは、ファイルパスなどの引数を最終的に呼び出されたコマンドに渡しません。-1
デビッドフォースター

ほら どうやら信頼性も低いようです。このソリューションを投稿する前にテストしましたが、うまくいきました。しかし、その後、テストを修正して、あなたが正しいかどうかを確認しました。今では、元の状態に戻した後でも動作しません。奇妙な。
KDØBPV
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.