De jolies choses dans ce terminal !

Posté par  (site web personnel) . Modéré par Florent Zara.
Étiquettes :
40
6
juin
2009
Ligne de commande
Vous avez envie de passer au tiling desktop et vous aimez le terminal... mais bon... c'est bien beau d'avoir du texte partout, parfois on aimerait simplement faire des petites fenêtres pas trop moches pour mettre en forme notre sortie de commande. Vous connaissez les ncurses, mais vous avez envie de faire vite, en bash... oui en bash !

C'est là que "Bash simple curses" peut vous aider. L'auteur (moi même) cherchait à la base à se faire une petite barre pour Xmonad, c'est devenu une bibliothèque sympathique qui permet de faire des choses assez sympathiques. Voyez les deux captures dans la page d'accueil du projet et surtout comme le code est petit pour réaliser ce genre de sortie de terminal. À la base ce n'était que pour réaliser une petite barre de monitoring. Puis en quelques minutes les fonctions ont été créées et en à peine 30 minutes ça fonctionnait. Et comme le monde du libre est plein de bonnes âmes, le code est fourni depuis ce matin. Cette bibliothèque permet simplement de créer des fenêtre à la ncurses, c'est à dire basées sur des caractères graphiques. Si en plus votre terminal ne supporte pas très bien les caractères spéciaux, cette bibliothèque propose de fonctionner aussi avec des caractères ASCII standards. Il suffit d'exporter la variable ASCIIMODE à « ascii ».

Le projet propose une petite documentation, un didacticiel simple et deux exemples qui permettent de se rendre compte de ce que l'on peut faire. Pour le moment, pas de release mais un accès au dépôt subversion. Si vous êtes fana du terminal et que vous avez envies de réaliser quelques rapport en mode texte qui ont « de la gueule », vous pouvez certainement vous pencher sur ce projet

Aller plus loin

  • # bonne idée, mais la portabilité ?

    Posté par  (site web personnel) . Évalué à 10.

    c'est vraiment sympa ce que tu as fait, mais quid de la portabilité (j'entends entre OS libres) ?
    "/dev/shm/deskbar.buffer"$RANDOM par hop en 3s le script devient linux-only, par exemple.
  • # Bravo

    Posté par  . Évalué à 5.

    Super sympa ta lib.
    • [^] # Re: Bravo

      Posté par  . Évalué à 2.

      tout a fait étonnant, j'ai l'impression de voir autre chose que du bash. C'est très bien fait. Je ne pense pas que tout cela ait été réalisé en 30mn ; je pense qu'il s'agit du début du projet qui a démarré si rapidement.

      Question, tu ne te bases pas sur ncurses pour la gestion des fenêtres ?
      • [^] # Re: Bravo

        Posté par  . Évalué à 5.

        Il utilise principalement tput[1], qui lui même utilise l'entrée terminfo/termcap[2] du terminal que tu utilises.

        À ce propos, comme dit un peu plus haut, encore un peu plus de portabilité serait chouette :
        * /bin/sh
        * pas de /dev/shm (il doit bien exister une alternative portable)

        Aussi, pour le dessin de lignes, tu utilises directement les échappements. Pourquoi ne pas utiliser tput comme pour le reste ? Si le terminal ne gère pas les lignes tput met déjà des caractères ascii il me semble.

        --

        [1] http://en.wikipedia.org/wiki/Tput
        [2] http://en.wikipedia.org/wiki/Terminfo / http://en.wikipedia.org/wiki/Termcap
  • # todo

    Posté par  . Évalué à 2.

    - support CSS :)
  • # Bravo ++

    Posté par  . Évalué à 3.

    Très bonne idée !
    C'est prometteur et me semble très facile à lire/ecrire.

    Bonne continuation ( zones saisie, menus .... etc ?? !! ).
    • [^] # Re: Bravo ++

      Posté par  (site web personnel) . Évalué à 4.

      Effectivement après avoir jetté un oeil l'écriture à l'air plus simple que conky mais aussi sans doute moins poussé:

      En tous cas bravo
  • # Bravo

    Posté par  . Évalué à 3.

    Je trouve ça génial ! Ça me fait penser à Conky, qui d'ailleurs peut exécuter des scripts ;)

    Et visiblement tu n'affiche le contenu uniquement après le calcul (comme Conky le fait avec l'option "double buffering") ce qui fait que le rafraîchissement n'est pas désagréable (pas de clignotement visible). Au début j'ai cru que non, mais c'est parce qu'il y avait un problème avec le script d'exemple (ifconfig n'est pas dans le $PATH des simples utilisateurs dans Gentoo).

    DLFP >> PCInpact > Numerama >> LinuxFr.org

    • [^] # Re: Bravo

      Posté par  . Évalué à 2.

      J'ai bien gaspillé 2heures à essayer de faire fonctionner Conky sans accros, peine perdue.
      Le double tampon n'y change rien.

      Sous Awesome, pareille, la "barre de tâche" est toujours parasitée dés lors qu'il y a du texte qui se rafraîchit. (un moniteur de cpu, etc...)

      Qu'est-ce qui fait que ça soit si crade d'avoir un rendu de texte dynamique?
  • # Petit essai

    Posté par  . Évalué à 6.

    Cool, ça à l'air joli et pas trop compliqué, allez je me lance!

    Il y a un wiki, j'essai. Peit problème, google code me demande un mot de passe. Au troisième essai je me rends compte qu'on se connecte par svn via https. Un s en moins et ça roule.

    Premier test: affichage du contenu du home... OK, RAS. Plus essai date/heure. date marche bien, par contre on perd la mise en page de cal. Ce qui fais un truc moche. Dommage. La limite taille n'aide pas.

    Pas grave, on va mettre le ls $HOME en forme. man ls => ls --color -1 me semble bien. Mais -1 ne marche pas.

    Ca me fais quand même une mise en forme géniale celà dis.

    Résumé: c'est vraiment cool, il manque juste une meilleure fidélité pour la mise forme des commandes. Un système de blocs pour la mise en forme serais sympa aussi, à l'image des <div>...</div> en html. Par exemple bashbar est trop haut pour mon petit 1024*768, jai voulu mettre comme celà:

    HOSTNAME | MEMORY | Inet interfaces
    Processus taking memory and CPU
    Last kernel messages

    Mais je n'ai pas réussi.

    J'ai ouvert les bugs correspondant. Hop inauguration du bugtracker!

    Bon courage :)
    • [^] # Re: Petit essai

      Posté par  (site web personnel) . Évalué à 1.

      > Résumé: c'est vraiment cool, il manque juste une meilleure fidélité pour la mise forme des commandes.

      Il ne te reste plus qu'à contribuer du code :)
    • [^] # Re: Petit essai

      Posté par  (site web personnel) . Évalué à 1.

      J'ai pris en compte la plupart des tickets qu'on m'a remonté, tu peux retester et continuer à me faire des bug reports, avec mes remerciements :)
  • # zsh

    Posté par  . Évalué à 1.

    zsh possède déjà une bibliothèque curses (dont je ne connais pas la qualité, mais ça aurait pu aider ta lib)
    De plus, du point de vue licence, ta lib sous BSD conviendrait mieux à zsh (sous BSD également) qu'à bash (GPL)
  • # Pratique pour les VMs !

    Posté par  (site web personnel) . Évalué à 2.

    J'étais aussi en train d'en faire une ; c'est très pratique pour les VMs ; ca permet de voir dès le boot dans la console l'ip et l'etat de la machine une fois démarrée sans se loguer (a mettre en respawn dans inittab).

    Du coup, je vais piquer ta lib ;)
  • # Merci à tous

    Posté par  (site web personnel) . Évalué à 2.

    Merci pour ces commentaire, je vais tenter de faire un point rapide sur ce que vous avez dit:

    En ce qui concerne la portabilité, je suis en train de voir un peu les différentes solutions. Laurent Bachelier m'a donné un patch que j'ai appliqué qui permet justement de faire attention de ne pas utiliser SHM si il n'est pas disponible. De plus, on est passé à mktemp pour la génération de buffer.

    En ce qui concerne tput, je n'ai pas encore tout intégré les options possibles de cette superbe commande. Je cherche encore à modifier le comportement du curseur.

    Attention, Conky est bien plus poussé et je ne suis pas là pour concurrencer Conky. Mon projet est surtout de faire en sorte que vous puissiez générer un rapport après certaines commandes dans un terminal et ce de manière plus sympa qu'un simple log.

    En tout cas vos commentaires me font très plaisirs et il ne faut pas hésiter à le critiquer. Je suis prêt à faire un maximum de choses pour que vous soyez satisfaits de cette librairie.

    Un dernier point, je ne pense pas faire en sorte de pouvoir mettre des entrée de texte, menu ou des choses de ce genre. Ce pour différentes raisons:

    * il existe "dialog" pour ça
    * la manière dont est géré le buffer ne me le permet pas facilement
    * est-ce bien raisonnable ?

    Je pense tout de même développer un pseudo menu, comme un menu de site avec des liens...

    Voilà, sachez enfin qu'une version alpha est en téléchargement depuis hier. A vous les studios !

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.