Gibt es eine gute Kombination aus Befehlszeilen- und Grafikdateibrowser?

15

Gibt es eine praktikable Lösung, die die Vorteile einer Befehlszeile und eines grafischen Dateibrowsers kombiniert?

Die Befehlszeile eignet sich beispielsweise zum Ändern des Verzeichnisses und zum Ausführen von Befehlen, kann jedoch keine Miniaturansichten anzeigen, und der Dateibrowser ist intuitiv und gibt einen guten Überblick darüber, wo Sie sich im Baum befinden, mit dem Sie jedoch nicht "sprechen" können Computer wie in einer Befehlszeile.

BEARBEITEN: Für mich als Befehlszeilenbenutzer ist es eher so, als ob Sie eine Befehlszeile mit zusätzlichen Dateibrowserfunktionen benötigen, als einen Dateibrowser mit einigen Befehlszeilenfunktionen.

dStulle
quelle

Antworten:

9

Dolphin sieht so aus, wie Sie es suchen:

Das Terminal ist jedoch ein Slave seiner Verzeichnisnavigation (wenn Sie das Verzeichnis in der GUI ändern, ändert es sich im Terminal, aber nicht umgekehrt).

Um das Anwendungsverzeichnis zu ändern, wenn Sie das aktuelle Verzeichnis im Terminal ändern, können Sie Ihre Shell veranlassen, eine Nachricht an Dolphin zu senden, um die Ansicht zu aktualisieren. Fügen Sie dies zu Ihren Shell-rc-Dateien hinzu ( Warnung: nicht gründlich getestet, funktioniert hier jedoch in den häufigsten Situationen, Verwendung auf eigenes Risiko):

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

Damit ist ein Problem verbunden. Wenn das Dolphin-Fenster das aktuelle Verzeichnis ändert, verliert das Terminal den Fokus. Wenn Sie möchten, können Sie die Entwickler um einen Bugfix (oder sogar um die vollständige native Unterstützung für diese Funktion) bitten.

Juliano
quelle
Leider ist das Wechseln der Verzeichnisse über die Befehlszeile eine der wichtigsten Funktionen für mich.
dStulle
@dStulle: Wenn Sie das Verzeichnis nur über die Tastatur ändern möchten, können Sie Ctrl-LDolphin eingeben , damit der Cursor zur Adressleiste springt. Dort können Sie die Adresse des neuen Verzeichnisses Entereingeben und drücken, um dorthin zu navigieren. Wenn Sie wirklich cddie Befehlszeile eingeben möchten , sollten Sie in der Lage sein, einen Hack durchzuführen qdbus, der ausgeführt wird , um die Nachricht org.kde.dolphin.MainWindow.changeUrl($PWD)an Dolphin zurückzusenden. Aber ich denke, Sie sollten es versuchen, es ist meist an ein neues Paradigma der GUI-Terminal-Integration gewöhnt.
Juliano
Es geht nicht darum, den Ort zu "tippen", sondern in der Befehlszeile "zu sein". qdbus ist sehr nett und könnte für dieses arbeiten, konnte aber nicht finden, wie man das Terminal mit seiner Delphin-Instanz verbindet. Wenn mehr als ein Dolphin-Fenster geöffnet ist, können Sie anscheinend nicht bestimmen, welches von ihnen geändert werden soll, und ich konnte auch weder einen Alias ​​noch ein Skript oder eine Funktion finden, um auch das aktuelle Befehlszeilenverzeichnis zu ändern. BEARBEITEN: sieht so aus, als hätte jemand anderes es versucht ...
dStulle
Der Dolphin-Dienst kann im Terminal über die Umgebungsvariable $ KONSOLE_DBUS_SERVICE eingesehen werden. Es ist ein echtes Problem, wenn Sie zwei Fenster derselben Instanz von Dolphin geöffnet haben. Ich weiß wirklich nicht, wie ich zwischen ihnen unterscheiden soll. Es gibt eine $ KONSOLE_DBUS_SESSION, die jedoch nur auf die Konsolensitzung verweist, nicht auf das Delphinfenster. Auf jeden Fall sollten Sie diese Funktion Dolphin-Entwicklern empfehlen, die Hälfte davon ist oben implementiert.
Juliano
Zur Verdeutlichung: Was Dolphin fehlt, ist: (1) Beim Aufruf von changeUrl () nicht den Fokus vom Terminal-Widget übernehmen und (2) eine Umgebungsvariable, die angibt, welches Fenster dem Terminal angehängt ist, damit das obige Skript die Datei senden kann Nachricht an das richtige Fenster.
Juliano
4

Gnome Commander ist ein Dateimanager mit einer Shell-Befehlszeile am unteren Rand. Midnight Commander (mc) ist ähnlich, aber im Textmodus. (Beide lassen sich von Norton Commander inspirieren .)

Gilles 'SO - hör auf böse zu sein'
quelle
Leider scheint die wichtige [tab] -auto-complete-Funktion für die Kommandozeile und eine echte Datei-Thumbnail-Vorschau zu fehlen.
dStulle
Mit Strg-O gelangen Sie zu einer Shell in Midnight Commander, und mit Strg-Enter wird der Name des ausgewählten Elements in die Befehlszeile eingefügt. Nicht ganz das Gleiche wie [tab] Auto-Vervollständigen, aber ziemlich nahe.
3

Nautilus Terminal ist ein Plugin für Nautilus (Gnomes Dateimanager).

Die Verzeichnisse nicht über die Befehlszeile folgen, aber es ist ziemlich schnell zu tun pwd | xclip, <Ctrl> +<l>,<Ctrl>+<v>

Shawn J. Goff
quelle
Auch schön, aber wie bereits erwähnt, folgt der Dateibrowser auch nicht der Kommandozeile. Es scheint auch nicht in das neue Verzeichnis zu "cd", sondern startet eine komplett neue Bash-Instanz. Und einige Verknüpfungen wie "Strg-A" wirken sich nicht auf die Befehlszeile aus, sondern auf den Dateibrowser.
dStulle
0

Nachfolgend finden Sie eine Variation der Antwort von @Juliano unter Verwendung von dolphin + qdbus + terminal (hier als Antwort anstelle eines Kommentars hinzugefügt, um das Code-Snippet zu formatieren.) Diese Variation weist ebenfalls Einschränkungen auf und ist definitiv ein Hack.

Dies setzt auch voraus, dass "dolphin" ein angeschlossenes Terminal ausführt (view> panels> terminal; oder drücken Sie "F4"). Genau wie der andere Vorschlag sendet es einen Befehl an Delphin, um den Pfad in der GUI zu aktualisieren, damit er mit der PWD in der Konsole übereinstimmt. Um zu erzwingen, dass das Terminal den Fokus beibehält, sendet es mit xte (xautomation) ein Schließen / Öffnen (f4 + f4) an das Terminalfenster. Das heißt, das Terminal wird automatisch geschlossen und sofort wieder geöffnet, damit es wieder den Fokus erhält.

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

Das Hauptproblem (neben dem leichten Flackern beim Schließen / erneuten Öffnen des Terminals) ist, dass Delphin (aus irgendeinem Grund) ein "control + c" plus "cd {dir}" einfügt (wobei "dir" der Pfad der Datei ist Manager) bei jedem erneuten Öffnen des Terminals in das Terminal ein, wodurch die anderen eingegebenen Befehle gestört werden. (Bearbeiten: um Hack auf Hack hinzuzufügen, als eine andere Problemumgehung: nur alias ccd=cd weil das "c" -Zeichen dieses Steuerelements + c immer vor einem eingefügt zu sein scheint cd {path}...)

Natürlich ist es besser, einen korrekten Fix in Delphin zu haben, das Terminal im Fokus zu behalten und / oder diese ganze Funktion in Delphin zu integrieren.

michael
quelle