[menu] Une approche un peu bête mais polyvalente

Autres projets et contributions
Avatar de l’utilisateur
reflets de vert
yeomen
Messages : 295
Inscription : mar. 23 mars 2010, 15:17
Localisation : Strasbourg

[menu] Une approche un peu bête mais polyvalente

Message par reflets de vert »

Salut,

J'utilise souvent dwm et dmenu. Du coup, parfois je me suis dit ce serait bien une liste des programmes installés, un genre de truc que je mets à jour à la main et qui me donne cette indication joliment. Parce que je peux pas tout le temps me souvenir de tout ce que j'ai installé, et pcmanfm n'a pas de menus très bien, c'est le bordel et il manque des trucs comme par exemple les programmes en mode texte!
Ça ressemble à ce que fait menumaker.

J'ai donc fait à la main un ensemble de dossiers et de sous-dossiers où chaque dossier est une catégorie et chaque fichier une sorte de raccourci vers un programme. Bien sûr il faut penser à mettre à jour en écrivant soi-même dès qu'on installe des nouveaux programmes.

Voici ce que ça donne avec une petite commande sympa:

Code : Tout sélectionner

$ tree menu
menu
├── accessoires
│   ├── cal
│   ├── gpa
│   ├── peazip
│   ├── qalculate
│   ├── scrot
│   ├── steghide
│   ├── xclock
│   └── xev
├── bureautique
│   ├── easy-ebook-viewer
│   ├── gimagereader
│   ├── libreoffice
│   │   ├── lobase
│   │   ├── localc
│   │   ├── lodraw
│   │   ├── loimpress
│   │   ├── lomath
│   │   ├── loweb
│   │   └── lowriter
│   ├── mupdf
│   ├── pdfmod
│   ├── sc
│   ├── scribus
│   ├── Ted
│   └── xpdf
├── Editeurs
│   ├── geany
│   ├── mcedit
│   ├── nano
│   ├── tea
│   └── vim
├── imagerie
│   ├── feh
│   ├── fontforge
│   ├── freecad
│   ├── geeqie
│   ├── gimp
│   ├── inkscape
│   ├── mtpaint
│   └── mypaint
├── jeux
│   └── dosbox
├── Navigateurs_de_fichiers
│   ├── konqueror
│   ├── mc
│   ├── pcmanfm
│   └── ranger
├── réglages
├── Réseau
│   ├── connman-gtk
│   ├── deluge
│   ├── elinks
│   ├── gftp
│   ├── httrack
│   ├── konqueror
│   ├── netsurf
│   ├── palemoon
│   ├── surf
│   ├── sylpheed
│   └── w3m
├── Son-Vidéo
│   ├── alsamixer
│   ├── ardour
│   ├── arecord
│   ├── clipgrab
│   ├── deadbeef
│   ├── lmms
│   ├── movgrab
│   ├── openshot
│   ├── vlc
│   └── you-get
└── système
    ├── acpi
    ├── éteindre
    ├── gparted
    ├── inxi
    ├── menumaker
    ├── ncdu
    ├── packer
    ├── pacman
    ├── parted
    ├── powertop
    ├── redémarrer
    ├── shred
    ├── st
    ├── systemctl
    ├── terminator
    ├── top
    ├── udevil
    ├── vrms
    └── xterm

11 directories, 81 files
Après je me suis dit que ce serait bien de rendre les fichiers exécutables.

Par exemple pour top le fichier est:

Code : Tout sélectionner

#!/bin/bash
st -e top
Ça m'a bien plu quand j'ai vu qu'avec mc (midnight commander) ça donne un menu où les commandes aussi bien graphiques qu'en mode texte tournent. Pour les commandes comme shred j'ai mis la page donnée par man.

Du coup je me dis que c'est un menu que je peux ouvrir soit en mode texte, soit dans un navigateur de fichiers, etc… j'ai regardé s'il y avait un truc tout bête pour en faire un menu sans faire grand-chose… j'ai pas trouvé.

Mais je suis déjà assez content de ça.
J'utilise console-tdm, dwm, …
(bon moi aussi j'écris en bépo - même si ça se voit pas)
Avatar de l’utilisateur
Piczel
Chu Ko Nu
Messages : 314
Inscription : dim. 03 mai 2015, 19:17
Localisation : Terre du Milieu

Re: [menu] Une approche un peu bête mais polyvalente

Message par Piczel »

Salut !

Premièrement, je pense qu'utiliser des liens pour les apps graphiques serait plus simple, par exemple un ln -s /usr/bin/firefox /path/to/menu/firefox.

Après, je pense qu'utiliser un fichier XML avec les chemins absolus de tes applications, et un wrapper par dessus pour gérer tout ça serait nettement plus intéressant,et sûrement plus simple à maintenir voire agrandir plus tard.

À toi de voir :)

EDIT : il semble que cette lib python soit assez simple, je pense que y'a moyen de faire un super script pour gérer tous tes raccourcis
lili : Lenovo E540 | ArchLinux
abraham : RaspBerry Pi 3 B | ArchLinux
isaac : RaspBerry Pi 3 B | ArchLinux
Github
The best way to accelerate a computer running Windows is at 9.81m/s²
10 types de geeks, ceux qui savent compter en binaire, et les autres.
Avatar de l’utilisateur
reflets de vert
yeomen
Messages : 295
Inscription : mar. 23 mars 2010, 15:17
Localisation : Strasbourg

Re: [menu] Une approche un peu bête mais polyvalente

Message par reflets de vert »

Pourquoi pas. Je veux bien tester les liens, je comprends pas pourquoi c'est mieux techniquement, mais pourquoi pas.

L'idéal serait d'avoir une forme de menu qui soit gérable soit dans un terminal, où on peut facilement lancer les programmes dans un shell et revenir au menu une fois que ça a été exécuté, soit en mode graphique mais minimaliste et "moche" où on fait des flèches haut bas et entrée pour démarrer soit des applications graphiques soit cli.

Je vais regarder tout ça, le xml et python. Je ne connais pas.
Un script bash me parle plus, mais je sais pas.

L'idée de départ c'était d'avoir une sorte de menu tout bête qu'on fait à la main, qu'on peut utiliser dans tous les systèmes linux, et qui intègre les programmes cli qui sont toujours négligés.

Merci beaucoup je vais voir.
J'utilise console-tdm, dwm, …
(bon moi aussi j'écris en bépo - même si ça se voit pas)
Avatar de l’utilisateur
reflets de vert
yeomen
Messages : 295
Inscription : mar. 23 mars 2010, 15:17
Localisation : Strasbourg

Re: [menu] Une approche un peu bête mais polyvalente

Message par reflets de vert »

Alors rebonjour tout le monde

Toujours en train d'utiliser dwm, et toujours aussi "énervé" que les menus de pcmanfm n'intègrent pas les bons programmes en mode texte, mais par contre pas grave tout ça, c'est leur problème à pcmanfm, j'ai avancé!

En cherchant un peu sur un site qu'on m'avait conseillé, arpinux, j'ai découvert 9menu

Trop trop bien!
C'est le truc de gros paresseux, mais c'est très bien pour les utilisateurs un peu plus lambda, ça a des options sympa et une syntaxe tout bete.

Ainsi, on peut faire un menu juste en tapant dans un terminal graphique ou un lanceur:

Code : Tout sélectionner

9menu exit st pcmanfm gimp basilisk
On a un menu tout con, simple, et qui fonctionne déjà super bien!

J'ai un peu regardé pour faire quelque chose de plus joli et pratique. Donc j'ai crée une touche de raccourci dans le fichier de config de dwm pour lancer 9menu, et me suis mis à développer mes menus (je vais voir pour rendre ça plus joli et civilisé au fil des temps).

Donc la commande "améliorée" pour 9menu:

Code : Tout sélectionner

9menu -popup -teleport 'menu principal' exit "" 'accessoires:mna' 'bureautique:mnb' 'editeurs:mne' 'imagerie:mni' 'jeux:mnj' 'navigateurs:mnn' 'reglages:mnr' 'reseau:mnw' 'son-video:mns' 'systeme:mny'
Alors l'option popup permet de fermer la fenetre du menu une fois un programme lancé, teleport permet d'avoir le menu qui apparaisse sous le pointeur de la souris (super pratique surtout avec le déclenchement par touche de raccourci), et la syntaxe

Code : Tout sélectionner

'accessoires:mna'
permet d'avoir un texte descriptif dans le menu, sur lequel on clique pour lancer la commande correspondante.

J'ai donc créé sur ~/.local/bin un dossier appelé menu où il y a des petits scripts très basiques comme celui-là:

Code : Tout sélectionner

#!/bin/bash

9menu -popup -teleport exit "   " '<----:mnu' eteindre redemarrer acpi_ archiso_ bleachbit cups_ gparted smartmontools_ clonezilla_ inxi_ ncdu_ pacman_ parted_ photorec_ powertop_ qterminal shred_ st systemctl_ termite testdisk_ tmux_ top_ udevil_ upower_ vrms_ xterm xkill yay


ça c'est un sous-menu

ou celui-là:

Code : Tout sélectionner

#!/bin/bash

st -e man elinks
c'est un petit script qui lance la page man de elinks

J'ai mis ~/.local/bin/menu dans le chemin des exécutables, en mettant cette ligne dans .xinitrc:

Code : Tout sélectionner

export PATH=${PATH}:/home/daniel/.local/bin/menu
Comme j'utilise pas mal dmenu, je me suis dit je vais donner des noms de programme simples et courts à mes petits scripts de menu.
Ainsi, le menu principal s'appelle mnu, le sous-menu imagerie mni, etc…
Comme ça je peux lancer directement et rapidement un sous-menu si j'en ai besoin, les noms sont courts et logiques.

J'ai aussi mis dans les menus des noms de programmes genre shred_, le tiret bas signifiant qu'il s'agit d'un programme en mode texte, comme ça on se repère.

Comme parfois certains programmes en mode texte sont super incontournables et qu'on les utilise toujours de la même façon (et aussi dans le but de faire ces menus pour des gens qui aiment pas trop la ligne de commande, j'ai déjà quelqu'un d'autre qui utilise mon système), j'ai rendu "graphique" certains programmes en mode texte.

Pour ça j'ai utilisé Xdialog.
Alors il y a aussi xmessage, whiptail, ou d'autres, mais je me suis dit Xdialog c'est très bien, et ça permet de faire des copier/coller et des trucs bien pratiques.

Donc une version avec un menu:

Code : Tout sélectionner

#!/bin/bash

Xdialog --stdout --menubox "Option pour termsaver" 200 300 12 asciiartfarts "montre des images ascii de asciiartfarts.com" clock "la super montre" matrix "fait défiler des lignes comme matrix" sysmon "montre une sorte de moniteur système" jokes4all "blagues du site du même nom" quotes4all "citations du même site">res && res=$(cat res) && exec st -e termsaver $res
Une version où on donne un texte:

Code : Tout sélectionner

#!/bin/bash

Xdialog --title "lien de la vidéo à télécharger" --backtitle "lien sous la forme http://www.tructube.com/video/8!898" --stdout --inputbox "lien de la vidéo" 10 20 >res && res=$(cat res) && exec st -e you-get $res
Une version avec texte et mot de passe:

Code : Tout sélectionner

#!/bin/bash

Xdialog --title "fichier à faire sortir" --backtitle "lien du fichier /home/guest/truc" --stdout --inputbox "lien du fichier avec les données" 10 20 >res && res=$(cat res)
Xdialog --title "mot de passe" --backtitle "attention à verr maj et des trucs comme ça" --stdout --password --inputbox "mot de passe:" 10 20 >resp && resp=$(cat resp) ; steghide extract -p $resp -sf $res
Xdialog --timeout 0 --textbox /home/daniel/mots\ de\ passe 0 0 ; shred -uvz -n 30 mots\ de\ passe
Voilà, je vois bien qu'il y a moyen d'améliorer tout ça, mais je suis déjà bien content de ce menu!

Voici un lien vers mon site pour télécharger ça:
http://www.millerebonds.lautre.net/donn ... enu.tar.gz
J'utilise console-tdm, dwm, …
(bon moi aussi j'écris en bépo - même si ça se voit pas)
Répondre