Bonjour,
J'ai un menu contextuel dans xfce/thunar qui me permet d'éditer un fichier texte avec vi dans une fenêtre xterm.
Je m'en sert principalement pour modifier les fichiers systèmes.
Pour ceux qui voudraient tester et me proposer une solution ...
J'ai ajouté dans ~/.config/Thunar/uca.xml
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
<action>
	<icon>gvim</icon>
	<name>Modifier avec Vi</name>
	<unique-id>Menu_Perso-1</unique-id>
	<command>~/bin/Open_with_vi %f</command>
	<description>vi editor</description>
	<patterns>*</patterns>
	<other-files/>
	<text-files/>
</action>
J"ai ajouté dans ~/.config/Thunar/accels.scm
Code : Sélectionner tout - Visualiser dans une fenêtre à part
; (gtk_accel_path "<Actions>/ThunarActions/uca-action-Menu_Perso-1" "")
Mon fichier exécutable ~/bin/Open_with_vi
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#!/bin/sh
file="${1##*/}"
cmd="vi"
test $( ls -l "$1" | awk '{ print $3 }' ) != "$USER" && 
{
  comp="'"
  cmd="echo \"$file\" is not your file so you must set to root: ; su -l root -c '$cmd -c \"cd ${1%/*}\"" 
  xterm -title 'Vi Editor of '"$file" \
        -fa 'Monospace Regular' \
        -fs 15 \
        -e "$cmd '\''$1'\''$comp || \
           {
             tput clear
             echo Not authorized to edit \"$file\"
             echo Sorry
             sleep 3
           }"
} ||
xterm -title 'Vi Editor of '"$file" \
      -fa 'Monospace Regular' \
      -fs 15 \
      -e "$cmd '$1'"
Ici; j'ai 2 commandes xterm.
Je cherche a en avoir qu'une seule qui s'applique a tous les cas.
Mais là; je séche.
Actuellement, ça fonctionne sur debian, OpenBSD et NetBSD.
Je ne cherche pas une solution bash.
Si une petite suggestion vous vient a l'esprit, n'hesitez pas.
N_BaH va faire des bonds avec l'utilisation de ls mais s'il y a une meilleure solution ...

Petite explcation du script:

Si le fichier m'appartient, pas de probléme, vi est lancé.
Si c'est un fichier système, on demande le mot de passe root avant de lancer vi.
La commande change le répertoire courrant vers /root.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
su -l root -c '$cmd -c \"cd ${1%/*}\"
permet de positionner vi dans le répertoire du fichier.
A mon avis trés utile pour faire une copie de sauvegarde.
Il reste encore a traiter le cas du fichier qui n'appartient ni a root, ni a moi mais on verra plus tard.
Cordialement.