Awesome-wm una señal para elevar el cliente cuando se recibe el foco

13

Tengo mi Emacs ejecutándose en una etiqueta workercon server-startlanzado. Tengo un administrador de archivos abierto en otro lugar (otro monitor, por ejemplo) y cuando abro un archivo de texto con emacsclientéxito se abre en emacs pero no cambia a él y no lo levanta.

Lo que estoy buscando es una señal específica del cliente en el rc.lua. Algo como:

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

Quiero que sea solo específico de Emacs. Y cambie a la workeretiqueta al mismo tiempo. Alternativamente, ¿puedo hacerlo desde la devolución de llamada de la regla de Emacs?

¿Algunas ideas? :)

platforma
fuente
1
¿Nadie se ha encontrado con eso?
plataforma

Respuestas:

0

Quería lo mismo, y su idea de una devolución de llamada de emacs es lo que finalmente funcionó. No lo he probado en asombroso, pero estoy usando dwm, y supongo que son lo suficientemente similares para que esto funcione.

Esta es la función de devolución de llamada en 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
   )
  )

Hay varias formas de invocar la devolución de llamada. Por simplicidad y flexibilidad, he optado por un alias de shell que invoca la devolución de llamada y luego el cliente electrónico regular:

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

Espero que siga siendo útil;)

Para obtener más información sobre el tipo de mensaje y los valores, consulte Sugerencias para el Administrador de ventanas .

En cuanto al manejo impresionante de este mensaje, parece que este evento se maneja. El código fuente está aquí .

Tiago
fuente