[openbox]aide pour pipemenu (resolu)

Xorg, Compiz, KDE / Gnome / Xfce / Fluxbox / e17 / fvwm ... GDM/KDM/XDM...
Avatar de l’utilisateur
Thuban
Daikyu
Messages : 82
Inscription : mar. 30 juin 2009, 17:12

[openbox]aide pour pipemenu (resolu)

Message par Thuban »

bonjour! j'aimerais utiliser ce pipemenu :

http://student.tol.oulu.fi/~lhakko/dir-menu

Cependant, lorsque je passe la souris sur un élément, j'ai droit à un tout petit carré (en gros, ça ne marche pas...)
quelqu'un pourrait-il m'aider svp?

voici mon menu.xml :

Code : Tout sélectionner

<?xml version="1.0" encoding="UTF-8"?>

<openbox_menu xmlns="http://openbox.org/3.4/menu">
<menu id="Fichiers" label="FICHIERS" execute="python /home/xavier/Documents/Scripts/obfile.py" />
<menu id="mpc" label="mpc" execute="/home/xavier/Documents/Scripts/obmpc.sh" />

<menu id="root-menu" label="Openbox 3">
  <menu id="Fichiers"/>
  <separator />
    <menu id="mpc"/>
  <separator />
  <item label="Log Out">
    <action name="SessionLogout">
      <prompt>yes</prompt>
    </action>
  </item>
</menu>

</openbox_menu>
Dernière modification par Thuban le dim. 05 juil. 2009, 21:10, modifié 2 fois.
Avatar de l’utilisateur
Thuban
Daikyu
Messages : 82
Inscription : mar. 30 juin 2009, 17:12

Re: [openbox]aide pour pipemenu (non résolu)

Message par Thuban »

Je suis bête, il fallait copier ce script dans /usr/bin pour qu'il mache même dans les sous-menus. c'est vraiment un menu très pratique! je le conseille vivement!
Je ne suis pas du tout doué en python, donc si quelqu'un saurait s'y prendre pour qu'il ne liste pas le /, mais seulement le répertoire de l'utilisateur courant, ça serait chouette!
Avatar de l’utilisateur
Thuban
Daikyu
Messages : 82
Inscription : mar. 30 juin 2009, 17:12

Re: [openbox]aide pour pipemenu (resolu)

Message par Thuban »

c'est résolu, voici le nouveau fichier python :

Code : Tout sélectionner

#!/usr/bin/python

import os
import random
from sys import argv

mypath = argv[0]

def ext_resolver(filename):
    ext = filename.split('.')[-1]
    ext = ext.lower()
    ext_list = {'smc':'zsnes -m -v 18 -y',
                'bin':'dgen -f -j',
                'ogm':'mplayer',
                'avi':'mplayer',
                'mkv':'mplayer',
				'ogg':'gnome-mplayer',
				'mp4':'mplayer',
				'mp3':'gnome-mplayer',
                'py' :'geany',
				'c' :'geany',
				'pdf' :'evince',
				'obt' :'openofficewriter',
				'py' :'abiword',
                'png':'gpicview',
                'jpg':'gpicview',
                'bmp':'gpicview',
                'gif':'gpicview'}
    if ext in ext_list:
        return ext_list[ext]
    else:
        return 'echo'

def dir_list(dircontent):
    dirs = []
    files = []
    for item in dircontent:
        if os.path.isdir(currentpath + '/' + item):
            dirs.append(item)
        else:
            files.append(item)
    dirs.sort()
    files.sort()
    return dirs, files

def replacer(string):
    return string.replace('&', '&').replace('<', '<').replace('>', '>').replace('"', '"').replace("'", '&apos;')

def gen_menu(dirs, files):
    curpath = replacer(currentpath)
    print('<openbox_pipe_menu>')
    
    print('<item label="Ouvrir dans Thunar"><action name="execute"><execute>thunar "' + curpath + '"</execute></action></item>')
    print('<item label="Terminal ici..."><action name="execute"><execute>sh -c "cd ' + curpath + ' && urxvt "</execute></action></item>')
    print('<separator />')
    
    for thisdir in dirs:
        thisdir = replacer(thisdir)
        menuid = str(random.randrange(1,99,1)).zfill(2)
        print('  <menu execute="' + mypath + ' ' + curpath + '/' + thisdir + '" id="' + thisdir + "-" + menuid + '" label="' + thisdir + '"/>')
        
    for thisfile in files:
        thisfile = replacer(thisfile)
        print('  <item label="' + thisfile + '">')
        print('    <action name="execute">')
        print('      <execute>')
        print('        ' + ext_resolver(thisfile) + ' "' + curpath + '/' + thisfile + '"')
        print('      </execute>')
        print('    </action>')
        print('  </item>')
    print('</openbox_pipe_menu>')

if len(argv) > 1:
    currentpath = ' '.join(argv[1:])
else:
    currentpath = "/home/xavier"

try:
    content = [x for x in os.listdir(currentpath) if x[0] != '.']
    parts = dir_list(content)
    gen_menu(parts[0], parts[1])
except OSError:
    print('<openbox_pipe_menu>')
    print('<separator label="No access" />')
    print('</openbox_pipe_menu>')
Répondre