Awesome-ui um sinal para aumentar o cliente quando o foco é recebido


13

Eu tenho meus Emacs execução em um tag workercom server-startlançada. Eu tenho um gerenciador de arquivos aberto em outro lugar (outro monitor, por exemplo) e quando eu abro um arquivo de texto com emacsclientele é aberto com êxito no emacs, mas não muda para ele e não aumenta.

O que estou procurando é um sinal específico do cliente no rc.lua. Algo como:

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

Eu quero que seja apenas específico do Emacs. E mude para a workertag ao mesmo tempo. Como alternativa, posso fazer isso a partir do retorno de chamada da regra do Emacs?

Alguma ideia? :)


1
Ninguém nunca se deparou com isso?
platforma

Respostas:


0

Eu queria a mesma coisa, e sua idéia de um retorno de chamada do emacs é o que finalmente funcionou. Eu não testei no awesome, mas estou usando o dwm, e suponho que eles sejam semelhantes o suficiente para que isso funcione.

Esta é a função de retorno de chamada no 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
   )
  )

Existem várias maneiras de chamar o retorno de chamada. Por simplicidade e flexibilidade, optei por um alias de shell que chama o retorno de chamada e, em seguida, o emacsclient regular:

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

Espero que ainda seja útil;)

Para obter mais referências sobre o tipo de mensagem e valores, consulte Dicas do Gerenciador de Janelas .

Quanto ao manuseio impressionante dessa mensagem, parece que esse evento foi tratado. O código fonte está aqui .

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.