Impressionante, um sinal para aumentar o cliente quando o foco for recebido

Impressionante, um sinal para aumentar o cliente quando o foco for recebido

Eu tenho meu Emacs rodando em uma tag workerlaunch server-start. Eu tenho um gerenciador de arquivos aberto em outro lugar (outro monitor, por exemplo) e quando abro um arquivo de texto com emacsclientele abre com sucesso no emacs, mas não muda para ele e não o aumenta.

O que estou procurando é um sinal específico do cliente no arquivo 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. Alternativamente, posso fazer isso no retorno de chamada da regra do Emacs?

Alguma ideia? :)

Responder1

Eu queria a mesma coisa, e sua ideia de retorno de chamada do emacs foi o que finalmente funcionou. Não testei no incrível, 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 invocar o retorno de chamada. Para simplicidade e flexibilidade, optei por um alias de shell que invoca o retorno de chamada e depois o emacsclient normal:

$ 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, consulteDicas do gerenciador de janelas.

Quanto ao tratamento desta mensagem por Awesome, parece que este evento foi tratado. O código fonte éaqui.

informação relacionada