Awesome-wm ein Signal zum Aufstehen des Clients, wenn Fokus empfangen wird

Awesome-wm ein Signal zum Aufstehen des Clients, wenn Fokus empfangen wird

Ich habe meinen Emacs auf einem Tag workermit server-start„gelauncht“ laufen. Ich habe irgendwo anders einen Dateimanager geöffnet (beispielsweise auf einem anderen Monitor) und wenn ich eine Textdatei damit öffne, emacsclientwird sie erfolgreich in Emacs geöffnet, wechselt aber nicht dorthin und ruft sie nicht auf.

Ich suche nach einem kundenspezifischen Signal in der rc.lua. So etwas wie:

client.add_signal("focus", function(c) c:raise() end)

workerIch möchte, dass es nur Emacs-spezifisch ist. Und gleichzeitig zum Tag wechseln . Kann ich es alternativ über den Emacs-Regel-Callback tun?

Irgendwelche Ideen? :)

Antwort1

Ich wollte dasselbe, und Ihre Idee eines Emacs-Rückrufs hat letztendlich funktioniert. Ich habe es nicht auf Awesome getestet, aber ich verwende dwm, und ich nehme an, sie sind ähnlich genug, damit es funktioniert.

Dies ist die Rückruffunktion in 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
   )
  )

Es gibt mehrere Möglichkeiten, den Rückruf aufzurufen. Der Einfachheit und Flexibilität halber habe ich mich für einen Shell-Alias ​​entschieden, der den Rückruf und dann den regulären Emacs-Client aufruft:

$ alias edi
alias edi='emacsclient -e "(raiseme)"; emacsclient -n'

Hoffe, es ist trotzdem noch nützlich ;)

Weitere Informationen zum Nachrichtentyp und den Werten finden Sie unterHinweise zum Fenstermanager.

Was die Verarbeitung dieser Nachricht durch Awesome betrifft, so scheint es, dass dieses Ereignis verarbeitet wird. Der Quellcode istHier.

verwandte Informationen