Awesome-wm сигнал для подъема клиента при получении фокуса

Awesome-wm сигнал для подъема клиента при получении фокуса

У меня запущен Emacs на теге workerс server-startзапущенным. У меня открыт файловый менеджер где-то еще (например, на другом мониторе), и когда я открываю текстовый файл, emacsclientон успешно открывается в emacs, но не переключается на него и не поднимает его.

Я ищу специфический для клиента сигнал в rc.lua. Что-то вроде:

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

Я хочу, чтобы это было только специфично для Emacs. И переключиться на workerтег в то же время. Или я могу сделать это из обратного вызова правила Emacs?

Есть идеи? :)

решение1

Я хотел того же самого, и ваша идея обратного вызова emacs в итоге сработала. Я не тестировал это на awesome, но я использую dwm, и я полагаю, что они достаточно похожи, чтобы это сработало.

Это функция обратного вызова в 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
   )
  )

Есть несколько способов вызвать обратный вызов. Для простоты и гибкости я выбрал псевдоним оболочки, который вызывает обратный вызов, а затем обычный emacsclient:

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

Надеюсь, это все равно будет полезно ;)

Дополнительную информацию о типе сообщения и значениях см.Советы по работе с оконным менеджером.

Что касается обработки этого сообщения awesome, то, похоже, это событие обрабатывается. Исходный кодздесь.

Связанный контент