Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#51 Le 14/05/2010, à 23:10

JB-home

Re : Postez ici vos Pipemenus Openbox!

PipeMenu - Quote VDM (VieDeMerde)

vdm-pipemenu.png

#!/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/&amp;quot;\|&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/&amp;quot;\|&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/&amp;quot;\|&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 wink


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 smile

Hors ligne

#54 Le 16/05/2010, à 19:00

JB-home

Re : Postez ici vos Pipemenus Openbox!

PipeMenu - YourIP

yourIP.png

#!/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 wink

Edit :
J'ai réussi à afficher le contenu de mon dossier.
Il ne reste plus qu'à prendre en compte le clic... hmm

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.

f2e279e2ec6c67502825f554071d5.png

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... hmm

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 : _
cool

Hors ligne

#59 Le 16/07/2010, à 20:17

Fenouille84

Re : Postez ici vos Pipemenus Openbox!

Youhou !! Merci wlourf wink


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 ? smile


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