Existe-t-il une bonne combinaison de navigateur de ligne de commande et de fichier graphique?

15

Existe-t-il une solution réalisable qui combine les avantages d'une ligne de commande et d'un navigateur de fichiers graphique?

Par exemple, la ligne de commande est bonne pour changer le répertoire et exécuter des commandes mais ne peut pas afficher les vignettes et le navigateur de fichiers est intuitif, donne un bon aperçu de l'endroit où vous vous trouvez dans l'arborescence mais vous ne pouvez pas "parler" au ordinateur comme dans une ligne de commande.

EDIT: pour moi, en tant qu'utilisateur de ligne de commande, c'est plus comme avoir besoin d'une ligne de commande avec des capacités supplémentaires de navigateur de fichiers que d'avoir un navigateur de fichiers avec certaines fonctionnalités de ligne de commande.

dStulle
la source

Réponses:

9

Dolphin ressemble à ce que vous recherchez:

Mais le terminal est esclave de sa navigation dans le répertoire (si vous changez le répertoire dans l'interface graphique, il change dans le terminal, mais pas l'inverse).

Pour changer le répertoire de l'application lorsque vous changez le répertoire courant dans le terminal, vous pouvez faire en sorte que votre shell envoie un message à Dolphin pour mettre à jour sa vue. Ajoutez ceci à vos fichiers shell rc ( Attention: pas testé à fond, mais fonctionne ici pour les situations les plus courantes, utilisez à vos risques et périls):

Frapper:

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

Il y a un problème avec cela. Lorsque la fenêtre Dolphin change le répertoire en cours, le terminal perd le focus. Vous voudrez peut-être demander un correctif (ou même un support natif complet pour cette fonctionnalité) aux développeurs, si vous l'aimez.

Juliano
la source
Malheureusement, la modification des répertoires à partir de la ligne de commande est l'une des fonctionnalités importantes pour moi.
dStulle
@dStulle: Si vous souhaitez simplement utiliser le clavier pour modifier le répertoire, vous pouvez taper Ctrl-LDolphin pour faire sauter le curseur dans la barre d'adresse, où vous pouvez taper l'adresse du nouveau répertoire et appuyer sur Enterpour y accéder. Si vous voulez vraiment taper cddans la ligne de commande, vous devriez pouvoir faire un hack qui s'exécute qdbuspour renvoyer le message org.kde.dolphin.MainWindow.changeUrl($PWD)à Dolphin. Mais je pense que vous devriez l'essayer, il s'habitue surtout à un nouveau paradigme d'intégration GUI-Terminal.
Juliano
il ne s'agit pas de "taper" l'emplacement mais "d'être" dans la ligne de commande. qdbus est très agréable et pourrait fonctionner pour cela, mais n'a pas pu trouver comment lier le terminal à son instance de dauphin. s'il y a plus d'une fenêtre Dolphin ouverte, il semble que vous ne pouviez pas déterminer celle sur laquelle changer l'Url et je ne pouvais pas non plus trouver d'alias, de script ou de fonction pour changer également le répertoire de ligne de commande actuel. EDIT: ressemble à quelqu'un d'autre pendant que j'essayais…
dStulle
Le service Dolphin est visible dans le terminal à partir de la variable env $ KONSOLE_DBUS_SERVICE. C'est un vrai problème si vous avez deux fenêtres ouvertes de la même instance de Dolphin. Je ne sais vraiment pas comment les distinguer. Il y a un $ KONSOLE_DBUS_SESSION, mais il n'est lié qu'à la session konsole, pas à la fenêtre des dauphins. Quoi qu'il en soit, vous devriez suggérer cette fonctionnalité aux développeurs Dolphin, la moitié est implémentée ci-dessus.
Juliano
Pour clarifier: ce qui manque à Dolphin, c'est: (1) ne pas prendre le focus du widget de terminal lorsque changeUrl () est appelé, et (2) une variable d'environnement qui indique à quelle fenêtre le terminal est attaché, afin que le script ci-dessus puisse envoyer le message à la fenêtre correcte.
Juliano
4

Gnome Commander est un gestionnaire de fichiers avec une ligne de commande shell en bas. Midnight Commander (mc) est similaire, mais en mode texte. (Les deux s'inspirent de Norton Commander .)

Gilles 'SO- arrête d'être méchant'
la source
malheureusement, il semble manquer la fonction [tab] -auto-complete importante pour la ligne de commande et un véritable aperçu de vignette de fichier.
dStulle
Ctrl-O vous déposera dans un shell dans Midnight Commander et Ctrl-Enter placera le nom de l'élément sélectionné dans la ligne de commande. Pas tout à fait comme la saisie automatique de [tab] mais assez proche.
3

Nautilus Terminal est un plugin pour Nautilus (gestionnaire de fichiers de Gnome).

Les répertoires ne suivent pas la ligne de commande, mais il est assez rapide à faire pwd | xclip, <Ctrl> +<l>,<Ctrl>+<v>

Shawn J. Goff
la source
Aussi sympa mais comme mentionné, le navigateur de fichiers ne suit pas non plus la ligne de commande. Il ne semble pas non plus "cd" dans le nouveau répertoire, mais démarre une nouvelle instance bash complète. Et certains raccourcis comme "ctrl-a" n'affectent pas la ligne de commande mais le navigateur de fichiers.
dStulle
1

Konqueror http://www.konqueror.org/ propose des moyens simples de faire des allers-retours entre les fenêtres de terminal et le gestionnaire de fichiers. Voir la discussion du forum à: http://www.knoppix.net/forum/threads/3838-How-to-Open-Konqueror-in-the-Directory-as-Your-Current-Shell Dans konqueror, taper ctrl-t obtient vous un terminal dans le répertoire courant, et dans le shell kfmclient exec. ouvre konqueror dans le répertoire courant.

kasterma
la source
0

Vous trouverez ci-dessous une variation de la réponse de @Juliano en utilisant dolphin + qdbus + terminal (ajouté ici comme réponse au lieu d'un commentaire afin de formater l'extrait de code.) Cette variation a également des limites, et est certainement un hack.

Cela suppose également que "dauphin" exécute un terminal connecté (affichage> panneaux> terminal; ou appuyez sur "F4"). Tout comme l'autre proposition, il envoie une commande à dolphin pour mettre à jour le chemin dans l'interface graphique pour correspondre au PWD dans la console. Pour forcer le terminal à conserver le focus, il envoie une fermeture / ouverture (f4 + f4) à la fenêtre du terminal en utilisant xte (xautomation): c'est-à-dire en fermant automatiquement et en rouvrant immédiatement le terminal pour qu'il retrouve le focus.

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

Le problème principal (en plus du léger scintillement lors de la fermeture / réouverture du terminal) est que dauphin (pour une raison quelconque) insère un "contrôle + c" plus "cd {dir}" (où "dir" est le chemin du fichier manager) dans le terminal à chaque réouverture du terminal, ce qui interfère avec les autres commandes en cours de saisie. (Edit: pour ajouter hack sur hack, comme une autre solution: juste alias ccd=cd parce que le caractère "c" de ce contrôle + c semble toujours être inséré devant a cd {path}...)

Bien sûr, il serait préférable d'avoir un correctif correct dans dolphin, pour que le terminal conserve le focus et / ou que toute cette fonctionnalité soit intégrée dans dolphin.

Michael
la source