Есть ли хорошее сочетание командной строки и графического файлового браузера?

15

Есть ли реальное решение, которое сочетает в себе преимущества командной строки и графического браузера файлов?

Например, командная строка удобна для изменения каталога и выполнения команд, но не может отображать миниатюры, а файловый браузер интуитивно понятен, дает хороший обзор того, где вы находитесь в дереве, но вы не можете «общаться» с компьютер как в командной строке.

РЕДАКТИРОВАТЬ: для меня, как пользователя командной строки, это больше похоже на необходимость командной строки с дополнительными возможностями файлового браузера, чем наличие файлового браузера с некоторыми функциями командной строки.

dStulle
источник

Ответы:

9

Дельфин выглядит так, как вы ищете:

Но терминал является подчиненным своего каталога навигации (если вы измените каталог в графическом интерфейсе, он изменится в терминале, но не наоборот).

Чтобы изменить каталог приложения при изменении текущего каталога в терминале, вы можете заставить свою оболочку отправлять сообщение Dolphin, чтобы обновить его представление. Добавьте это к своим rc-файлам оболочки ( Внимание: не тщательно протестировано, но работает здесь для наиболее распространенных ситуаций, используйте на свой страх и риск):

Bash:

if [ -n "$KONSOLE_DBUS_SERVICE" ]; then
  if qdbus "$KONSOLE_DBUS_SERVICE" /dolphin >/dev/null 2>&1; then
    cd() {
      builtin cd "$@"
      qdbus "$KONSOLE_DBUS_SERVICE" /dolphin/MainWindow0 org.kde.dolphin.MainWindow.changeUrl "$PWD" >/dev/null
    }
  fi
fi

Zsh:

if [ -n "$KONSOLE_DBUS_SERVICE" ]; then
  if qdbus "$KONSOLE_DBUS_SERVICE" /dolphin >/dev/null 2>&1; then
    chpwd() {
      qdbus "$KONSOLE_DBUS_SERVICE" /dolphin/MainWindow0 org.kde.dolphin.MainWindow.changeUrl "$PWD" >/dev/null
    }
  fi
fi

Существует проблема с этим. Когда окно Dolphin меняет текущий каталог, терминал теряет фокус. Вы можете запросить исправление (или даже полную встроенную поддержку этой функции) для разработчиков, если вам это нравится.

Жулиано
источник
К сожалению, изменение каталогов из командной строки является одной из важных функций для меня.
dStulle
@dStulle: Если вы просто хотите использовать клавиатуру для изменения каталога, вы можете ввести Ctrl-LDolphin, чтобы курсор переместился на адресную строку, где вы можете ввести адрес нового каталога и нажать, Enterчтобы перейти к нему. Если вы действительно хотите ввести cdв командной строке, вы должны иметь возможность сделать хак, который выполняется, qdbusчтобы отправить сообщение org.kde.dolphin.MainWindow.changeUrl($PWD)обратно в Dolphin. Но я думаю, что вы должны попробовать, это в основном привыкает к новой парадигме интеграции GUI-терминала.
Джулиано
речь идет не о том, чтобы «напечатать» местоположение, а о том, чтобы «быть» в командной строке. qdbus очень хорош и может работать для этого, но не может найти, как связать Терминал с его экземпляром дельфина. если открыто более одного окна Dolphin, кажется, что вы не можете определить, на каком из них будет changeUrl, и я также не могу найти ни псевдоним, ни скрипт, ни функцию для изменения текущего каталога командной строки. РЕДАКТИРОВАТЬ: похоже, что кто-то сделал, когда я пытался ...
dStulle
Сервис Dolphin можно увидеть в терминале из переменной env $ KONSOLE_DBUS_SERVICE. Это реальная проблема, если у вас два открытых окна одного экземпляра Dolphin. Я действительно не знаю, как отличить их. Существует $ KONSOLE_DBUS_SESSION, но он ссылается только на сеанс konsole, а не на окно дельфина. В любом случае, вы должны предложить эту функцию разработчикам Dolphin, половина из которых реализована выше.
Джулиано
Чтобы уточнить: чего не хватает Dolphin: (1) не брать фокус с виджета терминала, когда вызывается changeUrl (), и (2) переменную окружения, которая сообщает, к какому окну подключен терминал, чтобы вышеприведенный скрипт мог отправить сообщение в правильное окно.
Джулиано
4

Gnome Commander - файловый менеджер с командной строкой оболочки внизу. Midnight Commander (mc) похож, но в текстовом режиме. (Оба черпают вдохновение из Norton Commander .)

Жиль "ТАК - прекрати быть злым"
источник
к сожалению, в командной строке не хватает важной функции [tab] -auto-complete и реального file-thumbnail-preview.
dStulle
Ctrl-O поместит вас в оболочку в Midnight Commander, а Ctrl-Enter поместит имя любого элемента, выбранного в командной строке. Не совсем как автозаполнение [tab], но довольно близко.
3

Nautilus Terminal - это плагин для Nautilus (файловый менеджер Gnome).

Каталоги не следует из командной строки, но это достаточно быстро сделать pwd | xclip, <Ctrl> +<l>,<Ctrl>+<v>

Шон Дж. Гофф
источник
Также хорошо, но, как уже упоминалось, файловый браузер также не следует командной строке. Также кажется, что он не "cd" в новый каталог, но запускает полностью новый экземпляр bash. И некоторые ярлыки, такие как «ctrl-a», влияют не на командную строку, а на файл-браузер.
dStulle
1

Konqueror http://www.konqueror.org/ предлагает простые способы перехода между окнами терминала и файловым менеджером. Смотрите обсуждение на форуме по адресу: http://www.knoppix.net/forum/threads/3838-How-to-Open-Konqueror-in-the-Directory-as-Your-Current-Shell. При вводе konqueror ctrl-t получает у вас терминал в текущем каталоге, а в оболочке kfmclient exec. открывает konqueror в текущем каталоге.

kasterma
источник
0

Ниже приведен вариант ответа @Juliano с использованием dolphin + qdbus + Terminal (добавлен здесь в качестве ответа вместо комментария для форматирования фрагмента кода.) Этот вариант также имеет ограничения и определенно является хаком.

Это также предполагает, что «дельфин» работает на подключенном терминале (просмотр> панели> терминал; или нажмите «F4»). Как и в другом предложении, он отправляет команду дельфину, чтобы обновить путь в графическом интерфейсе, чтобы он соответствовал PWD в консоли. Чтобы заставить терминал сохранять фокус, он отправляет закрытие / открытие (f4 + f4) в окно терминала с помощью xte (xautomation): то есть, автоматически закрывая и немедленно повторно открывая терминал, чтобы он снова вернулся в фокус.

if [ -n "$KONSOLE_DBUS_SERVICE" ]; then
  if qdbus "$KONSOLE_DBUS_SERVICE" /dolphin >/dev/null 2>&1; then
    cd() {
      [ "$1" != "$PWD" ] && do_send=true || do_send=false;
      builtin cd "$@"
      if $do_send ; then
        qdbus "$KONSOLE_DBUS_SERVICE" /dolphin/MainWindow0 org.kde.dolphin.MainWindow.changeUrl "$PWD" >/dev/null 2>&1
        xte 'key F4' >/dev/null > /dev/null 2>&1 
        xte 'key F4' >/dev/null > /dev/null 2>&1 
      fi
    }
  fi
fi

Основная проблема (помимо небольшого мерцания при закрытии / повторном открытии терминала) заключается в том, что дельфин (по какой-то причине) вставляет «control + c» плюс «cd {dir}» (где «dir» - путь к файлу менеджер) в терминал каждый раз, когда терминал вновь открывается, мешая другим набираемым командам. (Изменить: добавить взломать взломать, как еще один обходной путь для этого: так alias ccd=cd как символ «c» этого элемента управления + c, кажется, всегда вставляется перед a cd {path}...)

Конечно, было бы лучше иметь правильное исправление для дельфина, чтобы терминал сохранял фокус и / или имел всю эту функцию, встроенную в дельфина.

Майкл
источник