Menggunakan mode daemon di Gnome 3

14

Saya mendapatkan daemon Emacs untuk bekerja melalui baris perintah menggunakan halaman EmacsWiki , tapi saya terjebak pada bagaimana membuat klien dijalankan melalui peluncur Gnome 3. Bagaimana cara mengatur file desktop Gnome yang meluncurkan jendela GUI yang terhubung ke daemon Emacs?

tbekolay
sumber

Jawaban:

17

Saya menggunakan Ubuntu, jadi lokasi file desktop mungkin berbeda tetapi saya pikir isinya harus sama.

$ 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

Bagian yang penting adalah:

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

Untuk mengklarifikasi yang seharusnya:

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

Dari dokumentasi emacsclient, sakelar itu melakukan hal berikut:

-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

Jadi itu membuat bingkai baru menggunakan -cdan kemudian jika emacs belum di-daemonisasi itu mulai dengan daemon emacs baru -a "". Terakhir, %Fperbaiki agar Anda dapat menyeret file teks ke ikon dan itu akan membukanya.

Sama seperti samping Anda mungkin juga melihat ke dalam -F "((fullscreen . maximized))"untuk memaksa frame untuk memaksimalkan saat peluncuran. Sayangnya, saya tidak ingat versi emacs mana yang diperlukan untuk itu berfungsi.

dgtized
sumber
1
Ini berfungsi dengan baik, tetapi selalu membuka jendela Emacs baru. Untuk ikon peluncur lainnya, jendela yang ada difokuskan. Apakah ada cara untuk mendapatkan perilaku yang sama?
akaihola
2

Saya benar-benar hanya mengutak-atik jawaban dgtized untuk menanggapi komentar dari akaihola. Yaitu yang kita inginkan adalah

  • memanfaatkan fungsionalitas daemon Emacs
  • panggil bingkai yang ada atau buat bingkai jika perlu.

Saya menemukan bahwa membuat emacs25.desktopfile daripada emacsclient.desktopbekerja secara ajaib (terus terang, saya tidak tahu mengapa).

Jadi saya melakukannya:

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

(tergantung pada sistem Anda, mungkin tidak emacs25)

Kemudian di saya, ~/.local/share/applications/emacs25.desktopsaya mengubah baris Exec menjadi:

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

Shell login bash memastikan daemon memiliki lingkungan login penuh saya.

Dan saya menghapus TryExecgaris.

Akhirnya, saya mengedit Namesehingga saya bisa mengenalinya di peluncur, mengetuk Super dan mengklik kanan untuk menambahkan item baru saya ke favorit. Saya selalu memiliki Emacs item pertama untuk saya sehingga Super + 1 memanggilnya.

Name=GNU Emacs client

Dan sepertinya semuanya baik-baik saja.

James Ferguson
sumber