Awesome-wm ein Signal zum Aufstieg des Kunden, wenn der Fokus empfangen wurde

1216
platforma

Ich habe meine Emacs bekam auf einem Tag läuft workermit server-startins Leben gerufen. Ich habe einen Dateimanager an einem anderen Ort geöffnet (beispielsweise einen anderen Monitor). Wenn ich eine Textdatei mit emacsclientdieser Datei öffne, wird sie erfolgreich in emacs geöffnet, wechselt jedoch nicht zu ihr und erhebt sie nicht.

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

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

Ich möchte nur Emacs spezifisch sein. Und gleichzeitig zum workerTag wechseln . Kann ich es alternativ aus dem Emacs-Regel-Callback machen?

Irgendwelche Ideen? :)

11
Niemand hat das je gesehen? platforma vor 11 Jahren 1

1 Antwort auf die Frage

0
Tiago

Ich wollte das Gleiche, und Ihre Idee eines Emacs-Rückrufs hat letztendlich funktioniert. Ich habe es noch nicht auf awesome getestet, aber ich verwende dwm, und ich nehme an, sie sind ähnlich genug, 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. Zur Vereinfachung und Flexibilität habe ich mich für einen Shell-Alias ​​entschieden, der den Callback 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 in den Fenstermanagerhinweisen .

Für die Behandlung dieser Nachricht durch awesome scheint es, dass dieses Ereignis behandelt wird. Quellcode ist hier .