Как установить emacs в качестве файлового менеджера по умолчанию?

19

Некоторые программы, такие как firefox, имеют кнопки, которые при нажатии открывают файловый менеджер для просмотра файлов. Как мне сделать так, чтобы он открывался в emacs с режимом dired в Debian Linux?

godblessfq
источник
9
Какая у вас операционная система?
Дрю
1
Я использую Debian Джесси.
Godblessfq

Ответы:

17

В зависимости от среды рабочего стола способ установки приложения по умолчанию может отличаться. Тем не менее, многие среды рабочего стола уважают ассоциации, в ~/.local/share/applications/mimeapps.listкоторых вы можете установить ассоциации для application/x-directoryи / или inode/directoryтипов.

Моя mimeapps.listвыглядит сейчас так:

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

В той же директории у меня есть файл emacs-dired.desktopсо следующим содержимым:

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

Когда мой долгоживущий экземпляр Emacs запускает сервер ( M-x server-start) и я нажимаю, скажем, значок папки в списке загрузок в Icecat, открывается новый diredбуфер.

Это на самом деле работает для меня сейчас. Спасибо, что задали вопрос --- иначе я бы не настроил это.

rekado
источник
6

Вот как сделать emacs файловым менеджером по умолчанию в Ubuntu.

Сначала мы должны написать скрипт, который будет действовать как наш файловый менеджер.

#!/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()

Сохраните это как emacsfmв /usr/bin/. Теперь в терминале вместо использования nautilusили nautilus /foo/barмы можем использовать emacsfm или emacsfm /foo/bar.

Теперь нам нужно установить это как файловый менеджер по умолчанию. Установить exo-utilsс помощью

sudo apt-get install exo-utils

и запустить его

exo-preferred-applications

Это открывает новое окно. Зайдите в Утилиты -> Файловый менеджер -> Другое и введите в него / usr / bin / emacsfm "% s" .

Вы можете перейти к загрузке Chrome, и если щелкнуть по show in folderнему, откроется emacs dired :-)

Обновить:

введите описание изображения здесь Ссылка: https://help.ubuntu.com/community/DefaultFileManager

ChillarAnand
источник
Ананд, он работает ... но он каждый раз открывает новое окно emacs ... хорошо использовать emacsclient, который откроет новый буфер в уже открытом сеансе emacs ....
Madhavan
я думаю, предыдущий ответ обращается к этой точке ...
Мадхаван
4

Хотя вопрос был специально для Linux, я пошел и выяснил это для Windows (так как это побудило меня найти, как сделать это для себя).

Интересно, что вам не нужно вызывать Dired, просто передать папку как файл. Это экономит много хлопот в Windows, так %1как пройдет c:\Users(например) и остановится, \Uесли будет включено в evalоператор, а передача его в виде файла будет правильно проанализирована.

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"

Ссылка: Семь форумов - Как изменить файловый менеджер по умолчанию

Джонатан Лич-Пепин
источник
-4

Вы можете использовать Рейнджер. Тем не менее, вы можете настроить xmonad для использования Emacs Windows по умолчанию при запуске сеанса

mizhac
источник
7
Пожалуйста, расширьте свой ответ, чтобы сделать его автономным.
Дан