Awesome-wm - сигнал для підвищення клієнта, коли фокус отриманий


13

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

Що я шукаю - це специфічний для клієнта сигнал в rc.lua. Щось на зразок:

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

Я хочу, щоб це було лише для Emacs. І перейти до workerтегу одночасно. Або я можу це зробити з зворотного виклику правила Emacs?

Будь-які ідеї? :)


1
Ніхто ніколи на це не стикався?
платформа

Відповіді:


0

Я хотів те саме, і ваша ідея зворотного виклику emacs - це те, що нарешті спрацювало. Я не перевіряв це на чудово, але я використовую 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'

Сподіваюся, це все-таки буде корисно;)

Детальнішу інформацію щодо типу та значень повідомлення див. Підказки менеджера вікон .

Що стосується чудового поводження з цим повідомленням, схоже, що ця подія обробляється. Вихідний код тут .

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.