====== bmarkmidori ======
* Objet : script python pour midori((Voir : [[:doc:reseau:midori]])) sous Openbox(([[:doc:environnements:x11:openbox | Gestionnaire Openbox]]))
* Niveau requis :{{tag>débutant avisé}}
* Commentaires : // Script mis à disposition par //**Thuban**// afin d'améliorer le menu de midori. //
* Débutant, à savoir : [[:doc:systeme:commandes:le_debianiste_qui_papillonne|Utiliser GNU/Linux en ligne de commande, tout commence là !]] :-)
* Suivi : {{tag>à-tester}}
* Création par [[user>thuban]] le 31/12/2011
* Testé par .... le ....
* Commentaires sur le forum : [[https://debian-facile.org/viewtopic.php?pid=153633#p153633 |C'est ici]]((N'hésitez pas à y faire part de vos remarques, succès, améliorations ou échecs !))
===== Aspect =====
Une fois le script en action, le menu de midori ressemblera à :
{{/file-Re8e9516ac1e8cc9ea6c3b9872b0b195d.png}}
===== Script =====
Ajouter(([[:doc:editeurs:vim:vim]])) à votre fichier :
~/.config/openbox/menu.xml
Cette ligne :
menu execute="/usr/bin/python ~/Documents/Scripts/Openbox/ob_bmarkmidori.py" id="midori-menu" label="Marques-Pages"
Et éditer le fichier :
~/Documents/Scripts/Openbox/ob_bmarkmidori.py
pour y écrire le script suivant :
#!/usr/bin/env python
# -*- coding:Utf-8 -*-
# thuban
#
# add this line to menu.xml
#
#
# be careful not to use the id 2 in another menu to avoid conflicts
#######################################################################
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
########################################################################
import os
from xml.etree import ElementTree as ET
browser = 'midori'
bookmarks = os.path.expanduser('~/.config/midori/bookmarks.xbel')
def print_label(title, url):
print('- '.format(title.encode('utf-8')))
print( '')
print( '{0} {1}'.format(browser, url))
print( '')
print( '
')
def print_submenu(title,titleList, urlList):
print('')
def print_bookmarks(elem):
'''print les bookmarks avec leur url'''
t = elem.getiterator('title')
u = elem.getiterator('bookmark')
for i in range(len(u)):
print_label(t[i].text, u[i].get('href'))
def print_folder_menu(folder):
folderTitle = folder[0].getiterator('title')[0].text
urls, titles = [], []
if len(folder[1:]) > 0:
for i in folder[1:]:
u = i.getiterator('bookmark')
t = i.getiterator('title')
for i in t:
titles.append(i.text)
for i in u:
urls.append(i.get('href'))
print_submenu(folderTitle, titles, urls)
def rbuild_tree(id, bookmarks):
'''Crée le menu openbox à partir d'une liste d'éléments'''
tree = ET.parse(bookmarks).getroot()
folderList = tree.getiterator('folder')
print('')
for folder in folderList:
tree.remove(folder)
print_folder_menu(folder)
print_bookmarks(tree)
print('')
def main():
rbuild_tree(2, bookmarks)
if __name__ == '__main__':
main()