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

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

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

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

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

Quiero que sea sólo 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? :)

Respuesta1

Quería lo mismo y tu idea de una devolución de llamada de emacs es lo que finalmente funcionó. No lo he probado en Awesome, pero estoy usando dwm y supongo que son lo suficientemente similares como 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 emacsclient normal:

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

Espero que siga siendo útil ;)

Para obtener más referencia sobre el tipo de mensaje y los valores, consulteConsejos para el administrador de ventanas.

En cuanto al manejo de este mensaje por parte de Awesome, parece que este evento está manejado. El código fuente esaquí.

información relacionada