xfce4のメニューを編集してEmacsを起動する(Ubuntu 24.04)
Emacs-clientの起動の問題点
いつのまにか Emacsがクライアント・サーバー型になっていて、
Ubuntuを起動したら勝手にEmacsサーバーが起動していて、
Emacs-client を使うことになっていた。
それに気づかずに 今まで Emacs-GUI を起動していたのだったが、
起動に時間がかかっていたのは、Emacsサーバーと衝突していたからか。
Emacs-client を使うと起動も速いし、いいのだけれど、
ファイルを右クリックして起動したとき、そのファイルが開かずに
以前開いていたファイルが開くので、それを修正するために、
xfce4のメニューを編集した。
xfce4のメニューを編集する
xfce4は、右クリックメニューも、メインメニューも、
次のようにすれば修正できる。
スタートメニューを開いて、”設定マネージャー(Settings Manager)”
を起動する。
その中に “メニューエディター” があり、それで編集できる。
今回は Emacs なので、”開発” の中の “Emacs(Client)” を選択する。
開いたペインで、”アプリケーションの詳細” の “コマンド” を編集する。
コマンドには、Emacsを起動するためのスクリプトが記述されている。
右の鉛筆マークをクリックすると、そのスクリプトを編集できる。
起動スクリプトを編集する
起動スクリプトは、次のようになっていた。
sh -c "if [ -n \\" \\$*\\" ]; then exec /usr/bin/emacsclient --alternate-editor= --reuse-frame \\"\\$@\\"; else exec emacsclient --alternate-editor= --create-frame; fi" sh %F
これは、次のような意味である。
sh -c "…" sh %F
sh -c で、 “…” の文字列をコマンドとして読み取る。
sh %F で、引数として指定されたファイル名を取得する。
コマンドの文字列は次のようになる。
if [ -n "$*" ];
then
exec /usr/bin/emacsclient --alternate-editor= --reuse-frame "$@";
else
exec emacsclient --alternate-editor= --create-frame;
fi
“$*” はコマンドライン引数。
-n は「文字列が空でないか」を判定する。
つまり、引数があれば then以下を実行し、なければ else以下を実行する。
–alternate-editor= は、Emacsサーバが起動していない場合、空の文字列を指定することで、新しい emacsプロセスを起動する。
–reuse-frame 既存のEmacsフレームを再利用してファイルを開く。
–create-frame 新しいフレームを作成してEmacsを起動する。
今回の場合、ファイルを指定してemacs-client を起動したら、以前のファイルを開いて起動したので、次のようにする。
--reuse-frame ==> --create-frame
全体を次のようにして、設定エディターの記述を修正する。
sh -c "if [ -n \" \$*\" ]; then exec /usr/bin/emacsclient --alternate-editor= --create-frame \"\$@\"; else exec emacsclient --alternate-editor= --create-frame; fi" sh %F
設定エディターを保存すると、自動で、バックスラッシュが \ から \ になる。
起動した
これで、Emacs-client が起動できた。
任意のファイルを右クリックすると、そのファイルが編集できるようになる。
カテゴリー: Emacs, memo, Ubuntu
タグ: emacs-client, emacs-server, xfce4, スクリプト
カウント: 17