EmacsWiki pageを使用してコマンドラインで動作するようにEmacsデーモンを取得しましたが、Gnome 3ランチャーでクライアントを実行する方法に固執しています。Emacsデーモンに接続するGUIウィンドウを起動するGnomeデスクトップファイルを設定するにはどうすればよいですか?
EmacsWiki pageを使用してコマンドラインで動作するようにEmacsデーモンを取得しましたが、Gnome 3ランチャーでクライアントを実行する方法に固執しています。Emacsデーモンに接続するGUIウィンドウを起動するGnomeデスクトップファイルを設定するにはどうすればよいですか?
回答:
私はUbuntuを使用しているため、デスクトップファイルの場所は異なる場合がありますが、内容は似ているはずです。
$ cat ~/.local/share/applications/emacsclient.desktop
#!/usr/bin/env xdg-open
[Desktop Entry]
Version=1.0
Name=GNU Emacs 24
GenericName=Text Editor
Comment=View and edit files
MimeType=text/english;text/plain;text/x-makefile;text/x-c++hdr;text/x-c++src;text/x-chdr;text/x-csrc;text/x-java;text/x-moc;text/x-pascal;text/x-tcl;text/x-tex;application/x-shellscript;text/x-c;text/x-c++;
Exec=/usr/bin/emacsclient -c -a "" %F
Icon=/usr/share/icons/hicolor/scalable/apps/emacs-snapshot.svg
Type=Application
Terminal=false
Categories=Utility;Development;TextEditor;
StartupWMClass=Emacs
Name[en_US]=GNU Emacs 24
重要な部分は次のとおりです。
Exec=/usr/bin/emacsclient -c -a "" %F
明確にするためには、おそらく次のようにする必要があります。
Exec=/usr/bin/emacsclient --create-frame --alternate-editor "" %F
emacsclientのドキュメントから、これらのスイッチは次のことを行います。
-c, --create-frame Create a new frame instead of trying to
use the current Emacs frame
-a EDITOR, --alternate-editor=EDITOR
Editor to fallback to if the server is not running
If EDITOR is the empty string, start Emacs in daemon
mode and try connecting again
そのため、を使用して新しいフレームを作成し、-c
emacsがまだデーモン化されていない場合は、で新しいemacsデーモンを開始します-a ""
。最後に、%F
テキストファイルをアイコンにドラッグして開くことができるように修正します。
余談ですが-F "((fullscreen . maximized))"
、起動時にフレームを最大化するように強制することも検討できます。残念ながら、それが機能するためにどのバージョンのemacsが必要なのか思い出せません。
akaiholaからのコメントに対処するために、dgtizedの答えを微調整しているだけです。すなわち、私たちがしたいのは
魔法のように機能するのemacs25.desktop
ではなく、ファイルを作成することがわかりますemacsclient.desktop
(率直に言って、理由はわかりません)。
だから私はやった:
cp /usr/share/applications/emacs25.desktop ~/.local/share/applications
(システムによっては、そうでない場合がありますemacs25
)
それから私の~/.local/share/applications/emacs25.desktop
中で、Exec行を次のように変更しました。
Exec=/bin/bash --login -c "emacsclient --alternate-editor= --create-frame %F"
bashログインシェルは、デーモンに完全なログイン環境があることを確認します。
そして、私はTryExec
行を削除しました。
最後Name
に、ランチャーで認識できるように編集し、スーパーをタップして右クリックし、新しいアイテムをお気に入りに追加しました。私はいつも最初のアイテムとしてEmacsを持っているので、Super + 1がそれを呼び出します。
Name=GNU Emacs client
そして、すべてがうまくいくようです。