Sử dụng chế độ daemon trong Gnome 3


13

Tôi đã nhận được trình nền Emacs để làm việc thông qua dòng lệnh bằng cách sử dụng trang EmacsWiki , nhưng tôi bị mắc kẹt về cách làm cho máy khách chạy qua trình khởi chạy Gnome 3. Làm cách nào tôi có thể thiết lập tệp máy tính để bàn Gnome khởi chạy cửa sổ GUI kết nối với trình nền Emacs?

Câu trả lời:


16

Tôi đang sử dụng Ubuntu, vì vậy vị trí của tệp máy tính để bàn có thể khác nhau nhưng tôi nghĩ nội dung nên giống nhau.

$ cat ~/.local/share/applications/emacsclient.desktop 
#!/usr/bin/env xdg-open

[Desktop Entry]
Version=1.0
Name=GNU Emacs 24
GenericName=Text Editor
Comment=View and edit files
MimeType=text/english;text/plain;text/x-makefile;text/x-c++hdr;text/x-c++src;text/x-chdr;text/x-csrc;text/x-java;text/x-moc;text/x-pascal;text/x-tcl;text/x-tex;application/x-shellscript;text/x-c;text/x-c++;
Exec=/usr/bin/emacsclient -c -a "" %F
Icon=/usr/share/icons/hicolor/scalable/apps/emacs-snapshot.svg
Type=Application
Terminal=false
Categories=Utility;Development;TextEditor;
StartupWMClass=Emacs
Name[en_US]=GNU Emacs 24

Phần quan trọng là:

Exec=/usr/bin/emacsclient -c -a "" %F

Để làm rõ điều đó có lẽ nên:

Exec=/usr/bin/emacsclient --create-frame --alternate-editor "" %F

Từ tài liệu về emacsclient, các công tắc đó thực hiện như sau:

-c, --create-frame      Create a new frame instead of trying to
                        use the current Emacs frame
-a EDITOR, --alternate-editor=EDITOR
                        Editor to fallback to if the server is not running
                        If EDITOR is the empty string, start Emacs in daemon
                        mode and try connecting again

Vì vậy, nó tạo một khung mới bằng cách sử dụng -cvà sau đó nếu emacs chưa được daemon hóa, nó bắt đầu một daemon emacs mới với -a "". Cuối cùng, %Fbản sửa lỗi để bạn có thể kéo tệp văn bản vào biểu tượng và nó sẽ mở nó.

Cũng như một bên bạn cũng có thể xem xét bao gồm -F "((fullscreen . maximized))"để buộc khung hình tối đa hóa khi khởi chạy. Thật không may, tôi không thể nhớ phiên bản nào của emacs được yêu cầu để nó hoạt động.


1
Điều này hoạt động rất tốt, nhưng nó luôn mở một cửa sổ Emacs mới. Đối với các biểu tượng trình khởi chạy khác, một cửa sổ hiện có được tập trung. Có cách nào để có được hành vi tương tự?
akaihola

2

Tôi thực sự chỉ điều chỉnh câu trả lời của dgtized để giải quyết nhận xét từ akaihola. Tức là những gì chúng ta muốn là

  • sử dụng chức năng daemon của Emacs
  • triệu tập một khung hiện có hoặc tạo một khung nếu cần thiết.

Tôi thấy rằng việc tạo một emacs25.desktoptệp chứ không phải emacsclient.desktoplàm việc một cách kỳ diệu (thật lòng mà nói, tôi không biết tại sao).

Tôi cũng vậy:

cp /usr/share/applications/emacs25.desktop ~/.local/share/applications

(tùy thuộc vào hệ thống của bạn, nó có thể không emacs25)

Sau đó, ~/.local/share/applications/emacs25.desktoptôi đã thay đổi dòng Exec thành:

Exec=/bin/bash --login -c "emacsclient --alternate-editor= --create-frame %F"

Shell đăng nhập bash đảm bảo daemon có môi trường đăng nhập đầy đủ của tôi.

Và tôi đã gỡ bỏ TryExecdòng.

Cuối cùng, tôi đã chỉnh sửa Nameđể tôi có thể nhận ra nó trong trình khởi chạy, gõ Super và nhấp chuột phải để thêm mục mới của tôi vào mục yêu thích. Tôi luôn có Emacs vật phẩm đầu tiên cho mình để sau đó Super + 1 triệu tập nó.

Name=GNU Emacs client

Và tất cả dường như là tốt.

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.