#51 Le 14/05/2010, à 23:10
- JB-home
Re : Postez ici vos Pipemenus Openbox!
PipeMenu - Quote VDM (VieDeMerde)
#!/bin/bash
###########################################################################################################
## PipeMenu Openbox modifié par z0rg> ( script original de Ksass`Peuk ) ##
## http://interog.free.fr ##
## ##
## Menu.xml = <menu execute="/home/$USER/scripts/vdm.sh" id="VDM" label="VDM" /> ##
## Usage : 3 Quote VDM au hasards ##
###########################################################################################################
nb=20
nb1=20
nb2=20
function convert ()
{
sed -i 's/\"/`/g
s/\&/`/g' $1
}
while [ "$nb" -gt "15" -o "$nb" -lt "1" ]; do
wget --quiet -O .tmpvdm http://api.viedemerde.fr/1.2/view/random
grep -v '<?xml version="1.0" encoding="UTF-8"?>' .tmpvdm | sed 's/.*\(Aujourd\)/\1/' | sed 's/\(VDM\).*/\1/' | sed 's/&quot;\|"/\"/g' | fold -s -w 60 > .vdmquote
nb=$(sed -n '$=' .vdmquote)
done
convert .vdmquote
echo "<openbox_pipe_menu>"
echo "<item label=\"QuoteVDM - VieDeMerde\">"
echo "<action name=\"Execute\">"
echo "<execute>x-www-browser http://www.viedemerde.fr/</execute>"
echo "</action>"
echo "</item>"
echo "<separator label=\"-------\" />"
if [ -f .vdmquote ]
then
while read line1
do
echo "<item label=\"$line1\" />"
done < .vdmquote
else
echo "<item label=\"Une erreur s'est produite, executez le script dans un terminal pour verifier.\" />"
fi
while [ "$nb1" -gt "15" -o "$nb1" -lt "1" ]; do
wget --quiet -O .tmpvdm1 http://api.viedemerde.fr/1.2/view/random
grep -v '<?xml version="1.0" encoding="UTF-8"?>' .tmpvdm1 | sed 's/.*\(Aujourd\)/\1/' | sed 's/\(VDM\).*/\1/' | sed 's/&quot;\|"/\"/g' | fold -s -w 60 > .vdmquote1
nb1=$(sed -n '$=' .vdmquote1)
done
convert .vdmquote1
echo "<separator label=\"-------\" />"
if [ -f .vdmquote1 ]
then
while read line2
do
echo "<item label=\"$line2\" />"
done < .vdmquote1
else
echo "<item label=\"Une erreur s'est produite, executez le script dans un terminal pour verifier.\" />"
fi
while [ "$nb2" -gt "15" -o "$nb2" -lt "1" ]; do
wget --quiet -O .tmpvdm2 http://api.viedemerde.fr/1.2/view/random
grep -v '<?xml version="1.0" encoding="UTF-8"?>' .tmpvdm2 | sed 's/.*\(Aujourd\)/\1/' | sed 's/\(VDM\).*/\1/' | sed 's/&quot;\|"/\"/g' | fold -s -w 60 > .vdmquote2
nb2=$(sed -n '$=' .vdmquote2)
done
convert .vdmquote2
echo "<separator label=\"-------\" />"
if [ -f .vdmquote2 ]
then
while read line3
do
echo "<item label=\"$line3\" />"
done < .vdmquote2
else
echo "<item label=\"Une erreur s'est produite, executez le script dans un terminal pour verifier.\" />"
fi
echo "</openbox_pipe_menu>"
rm .vdmquote .vdmquote1 .vdmquote2 .tmpvdm .tmpvdm1 .tmpvdm2
exit 0
Hors ligne
#52 Le 15/05/2010, à 09:26
- Fenouille84
Re : Postez ici vos Pipemenus Openbox!
Bien joué z0rg
Ma page Deviant Art : conky inside ;-)
.
-- DropBox (online backup) : 2Go + 250 Mo pour vous et moi par parrainage --
Hors ligne
#53 Le 16/05/2010, à 17:58
- JB-home
Re : Postez ici vos Pipemenus Openbox!
merci
Hors ligne
#54 Le 16/05/2010, à 19:00
- JB-home
Re : Postez ici vos Pipemenus Openbox!
PipeMenu - YourIP
#!/bin/bash
###########################################################################################################
## PipeMenu Openbox by z0rg> ##
## http://interog.free.fr ##
## ##
## Menu.xml = <menu execute="/home/$USER/scripts/yourIP" id="yourIP" label="yourIP" /> ##
## Usage : Info IP ##
###########################################################################################################
Priv=`ifconfig | grep 'inet adr:'| grep -v '127.0.0.1' | cut -d: -f2 | awk '{ print $1}'`
Public=`wget http://checkip.dyndns.org/ -O - -o /dev/null | cut -d: -f 2 | cut -d\< -f 1`
echo "<openbox_pipe_menu>"
echo "<item label=\"IP : $Public ( $Priv )\">"
echo "<action name=\"Execute\">"
echo "<execute>x-www-browser http://www.geoiptool.com</execute>"
echo "</action>"
echo "</item>"
echo "<separator label=\"-------\" />"
n=0
while read ligne
do
if [ $n = 0 ]; then
[[ $ligne =~ "te:" ]] && var="Nom d'hôte" && n=1 && continue
[[ $ligne =~ "Pays:" ]] && var="Pays" && n=1 && continue
[[ $ligne =~ "Ville:" ]] && var="Ville" && n=1 && continue
[[ $ligne =~ "Longitude:" ]] && var="Longitude" && n=1 && continue
[[ $ligne =~ "Latitude:" ]] && var="Latitude" && n=1 && continue
fi
if [ $n = 1 ]; then
resultat_tmp=${ligne#<*>}
#si lien dans la ligne, substitution supplémentaire
[[ $ligne =~ href ]] && resultat_tmp=${resultat_tmp#<*>}
resultat=${resultat_tmp%%<*>}
echo "<item label=\"$var → $resultat\" />"
n=0
fi
done < <(curl -s http://www.geoiptool.com/fr/?IP=$Public)
echo "</openbox_pipe_menu>"
exit 0
( légère modification )
Dernière modification par z0rg> (Le 16/05/2010, à 19:06)
Hors ligne
#55 Le 16/07/2010, à 16:24
- Fenouille84
Re : Postez ici vos Pipemenus Openbox!
Bonjour,
Je voudrais un pipemenu qui me liste les fichiers texte d'un dossier dans un sous-menu et qu'il me donne aussi la possibilité de les éditer (en cliquant sur le nom du fichier).
Sauriez vous comment procéder ?!
Merci
Edit :
J'ai réussi à afficher le contenu de mon dossier.
Il ne reste plus qu'à prendre en compte le clic...
Dernière modification par Fenouille84 (Le 16/07/2010, à 16:57)
Ma page Deviant Art : conky inside ;-)
.
-- DropBox (online backup) : 2Go + 250 Mo pour vous et moi par parrainage --
Hors ligne
#56 Le 16/07/2010, à 17:09
- wlourf
Re : Postez ici vos Pipemenus Openbox!
Salut Fenouille,
J'en utilise un qui fait ça, il se base sur les extensions et classe les fichiers selon ces extensions, j'ai rajouté le .txt mais il ne parcourt pas les sous-dossiers...
#!/bin/bash
dir_config="~/.config/openbox"
#spécifier le dossier à nouveau un peu + bas (ligne 42)
#éditeur à utiliser
prog="gedit"
array_sh=()
array_xml=()
array_py=()
array_tint2=()
array_txt=()
function pipe_menu {
#http://www.unix.com/shell-programming-scripting/61370-bash-ksh-passing-array-function.html
# Setting the shell's Internal Field Separator to null
OLD_IFS=$IFS
IFS=''
# Create a string containing "colors[*]"
local array_string="$2[*]"
# assign loc_array value to ${colors[*]} using indirect variable reference
local loc_array=(${!array_string})
if [[ ${#loc_array[@]} == 0 ]]; then return;fi
# Resetting IFS to default
IFS=$OLD_IFS
echo "<menu id=\"menu_"$1"\" label=\"$1\">"
for elt in ${loc_array[@]}
do
echo "<item label=\"_${elt##*/}\" >"
echo "<action name=\"Execute\"><execute>$prog $elt</execute></action></item>"
done
echo "</menu>"
}
for file in ~/.config/openbox/*
do
extension=${file##*.}
if [[ $extension == "sh" ]]; then
array_sh[${#array_sh[@]}]=$file
elif [[ $extension == "xml" ]]; then
array_xml[${#array_xml[@]}]=$file
elif [[ $extension == "py" ]]; then
array_py[${#array_py[@]}]=$file
elif [[ $extension == "tint2rc" ]]; then
array_tint2[${#array_tint2[@]}]=$file
elif [[ $extension == "txt" ]]; then
array_txt[${#array_xcf[@]}]=$file
fi
done
echo "<openbox_pipe_menu>"
echo "<item id=\"nautilus_config_ob\" label=\"nautil_us\" >"
echo "<action name=\"Execute\"><execute>nautilus --no-desktop $dir_config</execute></action></item>"
echo "<item id=\"terminal_config_ob\" label=\"termin_al\" >"
echo "<action name=\"Execute\"><execute>gnome-terminal --working-directory=$dir_config</execute></action></item>"
pipe_menu "scr_ipts" array_sh
pipe_menu "_xml" array_xml
pipe_menu "p_y" array_py
pipe_menu "tint_2" array_tint2
pipe_menu "t_xt" array_txt
echo "</openbox_pipe_menu>"
exit 0
par contre je suis obligé d'écrire deux fois le dossier à traiter, dans la boucle for file, il ne fonctionne pas avec la variable, si quelqu'un à une idée.
Hors ligne
#57 Le 16/07/2010, à 19:59
- Fenouille84
Re : Postez ici vos Pipemenus Openbox!
@wlourf
Parfait !!
J'ai réussi à la modifier à ma guise, mais un petit soucis me résiste toujours...
Les fichiers s'affichent avec les raccourcis (lettres soulignées).
Et, dans l'idéal, j'aimerai les enlever.
Quelle partie dois-je modifier dans le script pour enlever sa ??
Voici ma version actuelle :
#!/bin/bash
dir_config="~/.devilspie"
prog="gedit"
array_ds=()
function pipe_menu
{
#http://www.unix.com/shell-programming-scripting/61370-bash-ksh-passing-array-function.html
# Setting the shell's Internal Field Separator to null
OLD_IFS=$IFS
IFS=''
# Create a string containing "colors[*]"
local array_string="$2[*]"
# Assign loc_array value to ${colors[*]} using indirect variable reference
local loc_array=(${!array_string})
if [[ ${#loc_array[@]} == 0 ]]; then return;fi
# Resetting IFS to default
IFS=$OLD_IFS
echo "<menu id=\"menu_"$1"\" label=\"$1\">"
for elt in ${loc_array[@]}
do
echo "<item label=\"_${elt##*/}\" >"
echo "<action name=\"Execute\"><execute>$prog $elt</execute></action></item>"
done
echo "</menu>"
}
for file in ~/.devilspie/*
do
extension=${file##*.}
if [[ $extension == "ds" ]]
then array_ds[${#array_ds[@]}]=$file
fi
done
echo "<openbox_pipe_menu>"
echo "<item label=\"Run GDP\">"
echo "<action name=\"Execute\"><execute>gdevilspie</execute></action></item>"
pipe_menu "Config files" array_ds
echo "<separator/>"
echo "<item label=\"Nautilus ici\">"
echo "<action name=\"Execute\"><execute>nautilus --no-desktop $dir_config</execute></action></item>"
echo "<item label=\"Terminal ici\">"
echo "<action name=\"Execute\"><execute>tilda -w $dir_config</execute></action></item>"
echo "</openbox_pipe_menu>"
exit 0
Dernière modification par Fenouille84 (Le 16/07/2010, à 20:00)
Ma page Deviant Art : conky inside ;-)
.
-- DropBox (online backup) : 2Go + 250 Mo pour vous et moi par parrainage --
Hors ligne
#58 Le 16/07/2010, à 20:15
- wlourf
Re : Postez ici vos Pipemenus Openbox!
un indice, c'est dans cette ligne:
echo "<item label=\"_${elt##*/}\" >"
juste ce caractère à enlever : _
Hors ligne
#59 Le 16/07/2010, à 20:17
- Fenouille84
Re : Postez ici vos Pipemenus Openbox!
Youhou !! Merci wlourf
Ma page Deviant Art : conky inside ;-)
.
-- DropBox (online backup) : 2Go + 250 Mo pour vous et moi par parrainage --
Hors ligne
#60 Le 20/02/2011, à 18:13
- Skubu
Re : Postez ici vos Pipemenus Openbox!
@Z0rg> : J'ai repris ton pipe pour les prog TV mais il m'affiche pas les apostrophes comme il faudrait. J'ai plutôt ça à la place : `#039;
Une astuce ?
Debian / Archlinux | Gnome / KDE
Hors ligne
#61 Le 11/09/2011, à 16:48
- nordinatueur
Re : Postez ici vos Pipemenus Openbox!
Voilà un pipe menu qui liste la playlist de mpd et joue le morceau sur lequel on clique.
#!/bin/bash
#Par Nordinatueur
#Liste la playlist mpd et joue le morceau sur lequel on clique.
cat <<EOF
<openbox_pipe_menu>
<item label="Play / Pause">
<action name="Execute">
<execute> mpc toggle </execute>
</action>
</item>
<separator label="--------------"/>
EOF
mpcCurrent="$(mpc current)";
i=1;
mpc playlist | while read ligne ; do
label="${ligne%%\?*}";
label="${label/[\"\/]/}";
label="${label//\&/and}";
if [[ "${ligne}" = ${mpcCurrent} ]]; then
echo "<separator label=\"${label}\"/>";
else
cat <<-EOF
<item label="${label}">
<action name="Execute">
<execute>
mpc play ${i}
</execute>
</action>
</item>
EOF
fi;
((i++));
done;
echo "</openbox_pipe_menu>"
Linux User #508094
Pour une meilleure coopération, utilisez des liens relatifs sur le forum !
Hors ligne