Awesome-wm sygnał do wzrostu klienta po otrzymaniu fokusu

13

Mam Emacsa uruchomionego na tagu workerz server-starturuchomionym. Mam menedżera plików otwartego gdzie indziej (na przykład inny monitor), a kiedy otwieram z emacsclientnim plik tekstowy, z powodzeniem otwiera się w emacsie, ale nie przełącza się na niego i nie podnosi go.

To, czego szukam, to sygnał specyficzny dla klienta w sieci rc.lua. Coś jak:

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

Chcę, żeby było to specyficzne tylko dla Emacsa. I jednocześnie przełącz się na workertag. Alternatywnie czy mogę to zrobić z wywołania zwrotnego reguły Emacsa?

Jakieś pomysły? :)

platforma
źródło
1
Nikt nigdy tego nie spotkał?
platforma

Odpowiedzi:

0

Chciałem tego samego, a twój pomysł na wywołanie zwrotne emacsa w końcu zadziałał. Nie testowałem tego na niesamowitym, ale używam dwm i przypuszczam, że są wystarczająco podobne, aby to zadziałało.

Jest to funkcja zwrotna w emacsie:

(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
   )
  )

Istnieje kilka sposobów wywołania oddzwonienia. Dla uproszczenia i elastyczności wybrałem alias powłoki, który wywołuje funkcję zwrotną, a następnie zwykły emacsclient:

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

Mam nadzieję, że nadal się przyda;)

Aby uzyskać dodatkowe informacje na temat typu komunikatu i wartości, zobacz Wskazówki dotyczące Menedżera okien .

Jeśli chodzi o obsługę tej wiadomości przez niesamowite, wygląda na to, że to zdarzenie jest obsługiwane. Kod źródłowy jest tutaj .

Tiago
źródło