
起動したタグで Emacs を実行していますworker
。server-start
ファイル マネージャーを別の場所 (別のモニターなど) で開いていて、テキスト ファイルを開くと、emacsclient
Emacs で正常に開きますが、Emacs に切り替わらず、表示されません。
私が探しているのは、 内のクライアント固有のシグナルですrc.lua
。次のようなものです:
client.add_signal("focus", function(c) c:raise() end)
Emacs 固有のものにしたいです。worker
同時にタグに切り替えます。あるいは、Emacs ルール コールバックから実行できますか?
何か案は? :)
答え1
私も同じことを望んでいましたが、emacs コールバックのアイデアが最終的に機能しました。 awesome でテストしたわけではありませんが、dwm を使用しており、これらは十分に類似しているため、機能すると思います。
これは emacs のコールバック関数です:
(defun raiseme ()
(x-send-client-message
nil ; DISPLAY - nil is selected frame
0 ; DEST - 0 is root window of display
nil ; FROM - nil is selected frame
"_NET_ACTIVE_WINDOW" ; MESSAGE-TYPE - name of an Atom as a string
32 ; FORMAT - size of the values in bits
'(1 "_NET_WM_USER_TIME" 0) ; VALUES
)
)
コールバックを呼び出す方法はいくつかあります。シンプルさと柔軟性のために、コールバックを呼び出して通常の emacsclient を呼び出すシェル エイリアスを選択しました。
$ alias edi
alias edi='emacsclient -e "(raiseme)"; emacsclient -n'
まだ役に立つことを願っています ;)
メッセージタイプと値の詳細については、以下を参照してください。ウィンドウマネージャのヒント。
awesomeのこのメッセージの処理については、このイベントが処理されているようです。ソースコードはここ。