Jak ustawić emacsa jako domyślny menedżer plików?

19

Niektóre programy, takie jak Firefox, mają przyciski, które po kliknięciu otwierają menedżera plików do przeglądania plików. Jak sprawić, by otwierał się w emacsie z trybem dired w systemie Debian Linux?

godblessfq
źródło
9
Jaki jest twój system operacyjny?
Drew
1
Używam Debiana Jessie.
godblessfq,

Odpowiedzi:

17

W zależności od środowiska pulpitu metoda ustawienia domyślnej aplikacji może się różnić. To powiedziawszy, wiele środowisk pulpitu szanuje powiązania, w ~/.local/share/applications/mimeapps.listktórych można skonfigurować powiązanie dla application/x-directoryi / lub inode/directorytypów.

Kim mimeapps.listwygląda teraz:

[Default Applications]
application/x-directory=emacs-dired.desktop
inode/directory=emacs-dired.desktop

W tym samym katalogu mam plik emacs-dired.desktopo następującej treści:

[Desktop Entry]
Encoding=UTF-8
Version=1.0
Type=Application
NoDisplay=true
Exec=emacsclient --eval '(dired "%f")'
Name=Dired
Comment=Emacs Dired

Kiedy moja długotrwała instancja Emacsa uruchamia serwer ( M-x server-start) i kliknę, powiedzmy, ikonę folderu na liście Pobranych w Icecat, diredotwiera się nowy bufor.

To faktycznie działa teraz dla mnie. Dzięki, że zadałeś pytanie --- inaczej nie ustawiłbym tego.

rekado
źródło
6

Oto jak ustawić emacsa jako domyślny menedżer plików w Ubuntu.

Najpierw musimy napisać skrypt, który będzie działał jako nasz menedżer plików.

#!/usr/bin/env python
import os
import sys


def main():
    if len(sys.argv) > 1:
        dirname =  sys.argv[1]
    else:
        dirname = '~'
    os.system('emacs --eval \'(dired "{}")\'%'.format(dirname))
    # you can use emacsclient if you are running emacs server

if __name__ == "__main__":
    main()

Zapisz to jak emacsfmw /usr/bin/. Teraz w terminalu zamiast za pomocą nautiluslub nautilus /foo/barmożemy użyć emacsfm lub emacsfm /foo/bar.

Teraz musimy ustawić to jako domyślny menedżer plików. Zainstaluj exo-utilsza pomocą

sudo apt-get install exo-utils

i uruchom to

exo-preferred-applications

Otwiera nowe okno. Przejdź do Narzędzia -> Menedżer plików -> Inne i wpisz / usr / bin / emacsfm "% s" .

Możesz pobrać Chrome i jeśli klikniesz show in folder, otworzy się emacs dired :-)

Aktualizacja:

wprowadź opis zdjęcia tutaj Odniesienie: https://help.ubuntu.com/community/DefaultFileManager

ChillarAnand
źródło
Anand, to działa .. ale otwiera nowe okno emacs każdym razem .. to jest dobry do użycia emacsclient że otworzy nowy bufor w już otwartych sesji emacs ....
Madhavan
myślę, że poprzednia odpowiedź dotyczy tego punktu ...
Madhavan
4

Chociaż pytanie dotyczy konkretnie Linuksa, poszedłem i wymyśliłem je dla systemu Windows (ponieważ skłoniło mnie to do znalezienia, jak to zrobić dla siebie).

Co ciekawe, nie musisz wywoływać Dired, wystarczy przekazać folder jako plik. To oszczędza wiele kłopotów w systemie Windows, ponieważ %1przejdzie c:\Users(na przykład) i zepsuje się, \Ujeśli zostanie zawarte w evalinstrukcji, a przekazanie jej jako pliku spowoduje jej poprawną analizę.

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\Drive\shell]
@="Dired"

[HKEY_CLASSES_ROOT\Drive\shell\Dired]
@="Open in Dired"

[HKEY_CLASSES_ROOT\Drive\shell\Dired\command]
@="\"%path/to/emacsclientw%\" %1"

[HKEY_CLASSES_ROOT\Directory\shell]
@="XYplorer"

[HKEY_CLASSES_ROOT\Directory\shell\Dired]
@="Open in XYplorer"

[HKEY_CLASSES_ROOT\Directory\shell\Dired\command]
@="\"%path/to/emacsclientw%\" %1"

Odniesienia: Siedem forów - jak zmienić domyślny menedżer plików

Jonathan Leech-Pepin
źródło
-4

Możesz użyć Strażnika. Można jednak skonfigurować xmonad do użycia, aby emacs był domyślnym systemem Windows podczas uruchamiania sesji

mizhac
źródło
7
Rozwiń swoją odpowiedź, aby była samodzielna.
Dan