Awesome-wm ein Signal, um den Kunden zu erhöhen, wenn der Fokus empfangen wird

13

Ich habe meine Emacs auf einem Tag workermit server-startgestartet. Ich habe einen Dateimanager an einer anderen Stelle geöffnet (z. B. auf einem anderen Monitor), und wenn ich eine Textdatei emacsclientdamit öffne, wird sie erfolgreich in Emacs geöffnet, wechselt jedoch nicht dazu und ruft sie nicht auf.

Was ich suche, ist ein kundenspezifisches Signal in der rc.lua. Etwas wie:

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

Ich möchte, dass es nur Emacs-spezifisch ist. Und wechseln Sie gleichzeitig zum workerTag. Kann ich dies alternativ über den Emacs-Regelrückruf tun?

Irgendwelche Ideen? :) :)

Plattforma
quelle
1
Niemand ist jemals darauf gestoßen?
Plattform

Antworten:

0

Ich wollte das Gleiche, und Ihre Idee eines Emacs-Rückrufs hat endlich funktioniert. Ich habe es nicht auf awesome getestet, aber ich verwende dwm, und ich nehme an, dass sie ähnlich genug sind, damit dies 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 verschiedene 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 Emacsclient aufruft:

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

Hoffe es wird noch nützlich sein;)

Weitere Informationen zum Nachrichtentyp und zu den Werten finden Sie unter Window Manager-Hinweise .

Was die Behandlung dieser Nachricht durch awesome betrifft, scheint es, dass dieses Ereignis behandelt wird. Der Quellcode ist hier .

Tiago
quelle