Awesome-wm một tín hiệu để tăng khách hàng khi nhận được tiêu điểm


13

Tôi đã có Emacs của tôi chạy trên một thẻ workervới server-startphóng. Tôi có một trình quản lý tệp được mở ở một nơi khác (ví dụ như một màn hình khác) và khi tôi mở một tệp văn bản với emacsclientnó sẽ mở thành công trong emacs nhưng không chuyển sang nó và không tăng nó lên.

Những gì tôi đang tìm kiếm là một tín hiệu cụ thể của khách hàng trong rc.lua. Cái gì đó như:

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

Tôi muốn nó chỉ là Emacs cụ thể. Và chuyển sang workerthẻ cùng một lúc. Ngoài ra, tôi có thể làm điều đó từ cuộc gọi lại quy tắc Emacs không?

Có ý kiến ​​gì không? :)


1
Không ai từng đi qua điều đó?
platforma

Câu trả lời:


0

Tôi muốn điều tương tự, và ý tưởng của bạn về một cuộc gọi lại emacs là những gì cuối cùng đã làm việc. Tôi chưa thử nghiệm nó một cách tuyệt vời, nhưng tôi đang sử dụng dwm và tôi cho rằng chúng đủ tương tự để nó hoạt động.

Đây là chức năng gọi lại trong 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
   )
  )

Có một số cách để gọi lại. Để đơn giản và linh hoạt, tôi đã chọn một bí danh shell để gọi lại cuộc gọi và sau đó là emacsclient thông thường:

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

Hy vọng nó sẽ vẫn hữu ích;)

Để tham khảo thêm về loại thông báo và giá trị, hãy xem Gợi ý của Trình quản lý cửa sổ .

Đối với việc xử lý tuyệt vời thông điệp này, có vẻ như sự kiện này đã được xử lý. Mã nguồn là đây .

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.