17 votes

Awesome-wm un signal pour lever le client quand le focus est reçu

J'ai fait tourner mon Emacs sur une balise worker con server-start lancé. J'ai un gestionnaire de fichiers ouvert ailleurs (sur un autre écran, par exemple) et lorsque j'ouvre un fichier texte avec la commande emacsclient il s'ouvre avec succès dans emacs mais ne bascule pas vers lui et ne le lève pas.

Ce que je recherche, c'est un signal spécifique au client dans le fichier rc.lua . Quelque chose comme :

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

Je veux qu'il soit uniquement spécifique à Emacs. Et passer à l'option worker en même temps. Sinon, puis-je le faire à partir du rappel de règle d'Emacs ?

Des idées ? :)

1voto

Mike Ohlsen Points 1374

Je voulais la même chose, et votre idée d'un callback emacs est ce qui a finalement fonctionné. Je ne l'ai pas testé sur awesome, mais j'utilise dwm, et je suppose qu'ils sont suffisamment similaires pour que cela fonctionne.

C'est la fonction de rappel dans 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
   )
  )

Il existe plusieurs façons d'invoquer la fonction de rappel. Pour des raisons de simplicité et de flexibilité, j'ai opté pour un alias Shell qui invoque le callback et ensuite le emacsclient normal :

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

J'espère qu'il sera toujours utile ;)

Pour plus de références sur le type de message et les valeurs, voir Conseils pour le gestionnaire de fenêtres .

Quant au traitement de ce message par awesome, il semble que cet événement soit traité. Le code source est ici .

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X