Vous n'êtes pas identifié(e).
teste sur kali-linux-1.0.9a-i386-openbox.
pour le teste, j'ai choisi le thème Titanium-compact trouvé ici:
http://box-look.org/content/show.php/Ti … ent=159924
exemple d'installation:
télécharger le fichier 159924-Titanium-compact-1.0.tar.gz dans le dossier /root/Téléchargements
décompresser:
clic droit sur l'archive 159924-Titanium-compact-1.0.tar.gz > extraire ici
copier, coller le dossier Titanium-compact nouvellement obtenu, dans le dossier /usr/share/themes
lancer le gestionnaire de configuration d'openbox.
dans le terminal lancer la commande obconf.
# obconf
ou par le menu:
dans le gestionnaire de configuration d'openbox > choisir le thème (là pour ce teste, Titanium-compact).
fermer.
on peut aller un petit peu plus loin avec lxappearance pour personnaliser l'apparence.
menu > Settings > User interface Settings
ou la commande:
# lxappearance
sélectionner interface > Titanium-compact > appliquer
Dernière modification par WangXiangzhai (10-11-2014 00:46:24)
PC: HP-pavilion a6227.fr | wifi: Awus036H et HWGUSB2-54 | CG: NVIDIA geforce 8400 GS | OS: Debian-8.1.0-i386 Xfce | EN TESTE kali-linux-openbox-rolling-i386.iso (KaliBang), bento-openbox-14.04.3-i386.iso et Viperr8_i686.iso
Hors ligne
Tout d'abords merci pour tout ces tuto et test WangXiangzhai
En cas de messages d'erreurs concernant le moteur de rendu si vous installez un thème et que vous lancez une application graphique.
Recherchez les moteur de rendu avec la commande suivante:
apt-cache search gtk2-engines
Ce qui devrait vous répondre ceci
gtk2-engines-nodoka - Nodoka theme engine for GTK+ 2.x
gtk2-engines-aurora - Aurora gtk+-2.0 theme engine
gtk2-engines-cleanice - CleanIce themes for GTK+ 2.x
gtk2-engines-magicchicken - Magic Chicken themes for GTK+ 2.x
gtk2-engines-qtcurve - This is a set of widget styles for Gtk2 based apps
gtk2-engines-wonderland - Wonderland theme for GTK+-2.0
gtk2-engines-xfce - GTK+-2.0 theme engine for Xfce
kde-style-qtcurve - QtCurve widget style for KDE 4
kwin-style-qtcurve - QtCurve window decoration for KWin
qtcurve - Unified window decoration for KDE and GTK+ (meta-package)
gtk2-engines-moblin - gtk2 engines for moblin
gtk2-engines-ubuntulooks - 'ubuntulooks' theme for GTK+ 2.x
gnome-icon-theme-gartoon - Thème d'icônes Gartoon pour GTK+ 2.x
gtk2-engines - Moteur de thèmes pour GTK+ 2.x
gtk2-engines-murrine - Moteur de thème gtk+ 2.0 basé sur cairo
gtk2-engines-oxygen - thème Oxygen pour les applications basées sur GTK+
gtk2-engines-pixbuf - thème basé sur « pixbuf » pour GTK+ 2.x
Il ne reste plus qu'a installer Le moteur de rendu voulu.
Pour vérifier les thèmes installé faite la commande suivante:
dpkg -l | grep gtk2-engines
Utiliser des logiciels propriétaires, c'est comme les plats préparés, on est incapable de dire les conservateurs qu'ils contiennent, on dira toujours que c'est bon, mais ça ne remplacera jamais le repas fait maison par sa maman.
]:D #! Crunchbang & Archlinux GNU/Linux User ]:D
Hors ligne
Je pense que cb-personal-themes devrait fonctionner
Hors ligne
Bonjour y a une solution radicale pour ne plus être embêter c est :
sudo apt-get install gtk2-engines-*
Hors ligne
@ manon, un petit retour de teste de Cb-personal-thèmes, sur kali-linux-1.0.9a-i386-openbox.
avant:
après:
merci.
Dernière modification par WangXiangzhai (17-11-2014 18:55:40)
PC: HP-pavilion a6227.fr | wifi: Awus036H et HWGUSB2-54 | CG: NVIDIA geforce 8400 GS | OS: Debian-8.1.0-i386 Xfce | EN TESTE kali-linux-openbox-rolling-i386.iso (KaliBang), bento-openbox-14.04.3-i386.iso et Viperr8_i686.iso
Hors ligne
Je pense que cb-personal-themes devrait fonctionner
Je n'ai pas pensé à tester sur kali openbox, mais je trouve dommage qu'il n'y a pas plus de thème rajouté sur le site.
Utiliser des logiciels propriétaires, c'est comme les plats préparés, on est incapable de dire les conservateurs qu'ils contiennent, on dira toujours que c'est bon, mais ça ne remplacera jamais le repas fait maison par sa maman.
]:D #! Crunchbang & Archlinux GNU/Linux User ]:D
Hors ligne
Désolé, mais c'est quoi la différence entre avant et après ? À part le la couleur du thème qui à changé :-/
>> Good things come to those who, Wait.. <<
>> sip:yzeew@ekiga.net << and >> #Pouni3 <<
Hors ligne
Désolé, mais c'est quoi la différence entre avant et après ? À part le la couleur du thème qui à changé :-/
toutes les actions de Cb-personal-thèmes se trouvent dans le script cb-personal-themes.py
/cb-personal-themes1.2/usr/bin/cb-personal-themes.py
je te fais une copie ici:
1 #!/usr/bin/env python
2 # -*-coding:utf-8-*
3
4 import pygtk
5 pygtk.require("2.0")
6 import os, gtk, shutil, tarfile, re
7 import threading, time, subprocess, gobject
8 from os import chdir
9 from lxml import etree
10
11 gobject.threads_init()
12 BASE = os.path.expanduser('/')
13 HOME_FOLDER = os.path.expanduser('~')
14 EMPLACEMENT = os.path.join(HOME_FOLDER, "themesCB/")
15 FULL_CONFIG = ['.bashrc', '.config/openbox/menu.xml']
16
17 theme_config = {".gtkrc-2.0":HOME_FOLDER+'/.gtkrc-2.0',
18 "compton.conf":HOME_FOLDER+"/.config/compton.conf",
19 "rc.xml":HOME_FOLDER+"/.config/openbox/rc.xml",
20 "autostart":HOME_FOLDER+"/.config/openbox/autostart"}
21
22 newFichier, gtkConf = {}, {}
23
24 chdir(HOME_FOLDER)
25
26 if os.path.isdir("themesCB") != True: #si le dossier n'est pas prM-CM-)sent
27 os.mkdir("themesCB") #on crM-CM-)er le dossier
28
29 chdir(EMPLACEMENT)
30
31 class ObPersonalTheme :
32 '''class qui gM-CM-(re l'interface graphique'''
33
34 def Quitter(self, widget):
35 gtk.main_quit()
36
37 def sauvegarde(self, widget):
38 '''fonction appelM-CM-)e au clique sur le bouton sauvegarde'''
39 ChoixNomTheme(self, "sauvegarde")
40 self.boutonSauvegarde.set_label("Sauvegarde RM-CM-)ussie")
41
42 def exportation_theme(self, widget):
43 ChoixNomTheme(self, "exportation")
44
45 def importation_theme(self, widget):
46 SelecteurFichier(self)
47
48 def listeTheme(self, listeDeroulante):
49 '''fonction qui liste les themes dispo et les rajoute M-CM- la liste dM-CM-)roulante'''
50 themes_dispo= [nom for nom in os.listdir(EMPLACEMENT) if os.path.isdir(nom) == True]
51 for theme in themes_dispo:
52 listeDeroulante.append_text(theme)
53
54 def theme_choix(self, listeDeroulante):
55 '''fonction appelM-CM-)e au choix du theme dans la liste deroulante'''
56 choix = listeDeroulante.get_active_text()
57 if (choix == "ThM-CM-)mes Disponible"):
58 pass
59 else:
60 chdir('{0}'.format(choix))
61 fonctions.restauration_theme()#ligne
62 fonctions.restauration_openbox()#ligne
63 chdir(EMPLACEMENT)
64
65 def saveConfig(self, widget):
66 fonctions.creation_dossier("Ma_config")
67 chdir("Ma_config")
68 fonctions.sauvegarde_config()
69 fonctions.sauvegarde_theme("sauvegarde")
70 self.boutonSaveConfig.set_label("Sauvegarde RM-CM-)ussie")
71 chdir(EMPLACEMENT)
72
73 def restaurationConfig(self, widget):
74 if os.path.isdir("Ma_Config") == True:
75 chdir("Ma_Config")
76 fonctions.restauration_config()
77 fonctions.restauration_theme()
78 chdir(EMPLACEMENT)
79 else:
80 self.boutonRestaurationConfig.set_label("Pas de sauvegarde")
81
82 def saveConfTargz(self, widget):
83 fonctions.creation_dossier("Ma_Config")
84 nom_theme = "Ma_Config"
85 self.savetargz = Exportation_thread(self, nom_theme)
86 self.savetargz.start() # ligne
87
88 def __init__(self):
89
90 maFenetre = gtk.Window()
91 maFenetre.set_title("Cb_Personal_ThM-CM-(mes")
92 maFenetre.connect("destroy", self.Quitter)
93 maFenetre.set_default_size(300, 250)
94
95 separateur = gtk.HSeparator()
96 separateur.set_size_request(150, 4)
97
98 cadre1 = gtk.Frame("Sauvegarde")
99 cadre1.set_shadow_type(gtk.SHADOW_ETCHED_OUT)
100
101 tableau1 = gtk.Table(2, 2)
102 cadre1.add(tableau1)
103
104 self.boutonSauvegarde = gtk.ToggleButton(label = "Sauvegarder le thM-CM-(me actuel")
105 self.boutonSauvegarde.connect("clicked" ,self.sauvegarde)
106 tableau1.attach(self.boutonSauvegarde, 0, 1, 0, 1)
107
108 self.boutonExportation = gtk.ToggleButton(label = "Exporter le thM-CM-(me actuel")
109 self.boutonExportation.connect("clicked" ,self.exportation_theme)
110 tableau1.attach(self.boutonExportation, 0, 1, 1, 2)
111
112 cadre2 = gtk.Frame("Importation")
113 cadre2.set_shadow_type(gtk.SHADOW_ETCHED_OUT)
114 tableau2 = gtk.Table(2, 2)
115 cadre2.add(tableau2)
116
117 self.boutonImportation = gtk.ToggleButton(label = "Importer un thM-CM-(me")
118 self.boutonImportation.connect("clicked" ,self.importation_theme)
119 tableau2.attach(self.boutonImportation, 0, 1, 0, 1)
120
121 listeDeroulante = gtk.combo_box_new_text()
122 listeDeroulante.append_text('ThM-CM-)mes Disponible')
123 listeDeroulante.set_wrap_width(2)
124 self.listeTheme(listeDeroulante)
125 listeDeroulante.connect('changed', self.theme_choix)
126 listeDeroulante.set_active(0)
127 tableau2.attach(listeDeroulante, 0, 1, 1, 2)
128
129 cadre3 = gtk.Frame("Administration")
130 cadre3.set_shadow_type(gtk.SHADOW_ETCHED_OUT)
131 tableau3 = gtk.Table(3, 2)
132 cadre3.add(tableau3)
133
134 self.boutonSaveConfig = gtk.ToggleButton(label = "Sauvegarder Configuration")
135 self.boutonSaveConfig.connect("clicked", self.saveConfig)
136 tableau3.attach(self.boutonSaveConfig, 0, 1, 0, 1)
137
138 self.boutonRestaurationConfig = gtk.ToggleButton(label = "Restaurer Configuration")
139 self.boutonRestaurationConfig.connect("clicked", self.restaurationConfig)
140 tableau3.attach(self.boutonRestaurationConfig, 0, 1, 1, 2)
141
142 self.boutonSaveTarGz = gtk.ToggleButton(label = "Sauvegarder en Tar.gz")
143 self.boutonSaveTarGz.connect("clicked", self.saveConfTargz)
144 tableau3.attach(self.boutonSaveTarGz, 0, 1, 2, 3)
145
146 separateur2 = gtk.HSeparator()
147 separateur2.set_size_request(150, 4)
148 separateur3 = gtk.HSeparator()
149 separateur3.set_size_request(150, 4)
150 separateur4 = gtk.HSeparator()
151 separateur4.set_size_request(150, 4)
152
153 boutonQuitter = gtk.Button("Quitter", stock = gtk.STOCK_QUIT)
154 boutonQuitter.connect("clicked", self.Quitter)
155
156 vBox = gtk.VBox()
157 vBox.pack_start(separateur, False, True, 2)
158 vBox.pack_start(cadre1, False, False, 4)
159 vBox.pack_start(separateur2, False, True, 2)
160 vBox.pack_start(cadre2, False, False, 4)
161 vBox.pack_start(separateur3, False, True, 2)
162 vBox.pack_start(cadre3, False, False, 4)
163 vBox.pack_start(separateur4, False, True, 2)
164 vBox.pack_end(boutonQuitter, False, False, 2)
165 maFenetre.add(vBox)
166 maFenetre.show_all()
167
168
169
170 class Fonctions:
171
172 def copie_fichiers(self, fichierSource, fichierCopie):
173 self.source, self.copie = fichierSource, fichierCopie
174 try:
175 shutil.copyfile(self.source, self.copie)
176 except (IOError, shutil.Error):
177 pass
178
179 def creation_dossier(self, nomDossier):
180 self.nom = nomDossier
181 try:
182 os.mkdir(self.nom)
183 except OSError:
184 pass
185
186 def copie_dossier(self, dossierSource, dossierCopie):
187 self.source, self.copie = dossierSource, dossierCopie
188 try:
189 shutil.copytree(self.source, self.copie)
190 except OSError:
191 pass
192
193 def suppression_dossier(self, nomDossier):
194 self.nom = nomDossier
195 try:
196 shutil.rmtree(self.nom)
197 except (OSError, shutil.Error):
198 pass
199
200 def sauvegarde_theme(self, typeSauvegarde):
201 self.lecture_config() # lecture de la configuration
202 self.option = typeSauvegarde
203
204 for cle, valeur in theme_config.items():
205 if cle in ['cbconky', 'cbconky1', 'cbconky2', 'cbconky3']:
206 self.copie_fichiers(valeur, 'cb' + os.path.basename(valeur))
207 del theme_config[cle]
208 #end if
209 self.copie_fichiers(valeur, os.path.basename(valeur))
210
211
212 if self.option == "sauvegarde":
213 os.remove(os.path.basename(theme_config["emplacementWall"]))
214 #end if
215 self.lecture_gtkrc()
216 #
217 for cle, valeur in gtkConf.items():
218 if self.option == "exportation":
219 self.copie_dossier(valeur, os.path.basename(valeur))
220
221 if self.option == "sauvegarde" and "ACYL" in valeur:
222 self.copie_dossier(valeur, os.path.basename(valeur))
223
224 def restauration_theme(self):
225 os.system("killall conky")
226 self.copie_fichiers("autostart", HOME_FOLDER+"/.config/openbox/autostart")
227
228 if len(theme_config) >= 5:
229 list_clear = ['bg-saved.cfg', '.conkyrc', 'tint2rc', 'feh', 'cbconky', 'cbconky2', 'cbconky3', 'cbconky4']
230 for clear in list_clear:
231 if clear in theme_config:
232 del theme_config[clear]
233
234
235 self.lecture_config()
236
237
238 for cle, valeur in theme_config.items():
239 if "bg-saved.cfg" in cle:
240 self.copie_fichiers(cle, valeur)
241 subprocess.call("nitrogen --restore ", shell=True)
242 del theme_config[cle]
243
244 if ".conkyrc" in cle:
245 self.copie_fichiers(cle, valeur)
246 os.system("conky -q &")
247 del theme_config[cle]
248
249 if "tint2rc" in cle:
250 self.copie_fichiers(cle, valeur)
251 self.tint2 = Tint2Thread(self)
252 self.tint2.start()
253 del theme_config[cle]
254
255 if "feh" in cle:
256 os.system("feh --bg-scale "+valeur)
257 if cle in ['cbconky', 'cbconky2', 'cbconky3', 'cbconky4']:
258 os.system("conky -c "+valeur+" &")
259 time.sleep(1)
260 del theme_config[cle]
261
262 else:
263 self.copie_fichiers(cle, valeur)
264 #end
265 #
266 listFichiers = os.listdir(os.getcwd())
267 for fichier in listFichiers:
268 if "ACYL" in fichier:
269 self.acyl_fonction()
270 self.copie_dossier(fichier, HOME_FOLDER+"/.icons/"+fichier)
271 #end
272 #
273 if ('.conkyrc' in listFichiers) and not '.conkyrc' in theme_config:
274 os.system("conky -q &")
275
276 def restauration_openbox(self):
277 #os.system("compton --config ~/.config/compton.conf &")
278 try:
279 os.system("thunar --daemon --quit")
280 except OSError:
281 pass
282
283 subprocess.call("openbox --reconfigure ", shell=True)
284 time.sleep(1)
285 subprocess.call("openbox --restart ", shell=True)
286
287 def lecture_config(self):
288 '''Lecture de la configuration dans l'autostart recupM-CM-)re aussi l'emplacement du wallpaper'''
289 autostart = open(HOME_FOLDER+"/.config/openbox/autostart", 'r')
290 i = 0
291 for ligne in autostart:
292 if 'feh --bg-scale' in ligne and (ligne[0] != '#'):
293 wallPosition = ligne.split('feh --bg-scale ')[1].replace(' ', '').rstrip('\)&\n')
294 if (wallPosition[0] == '~') or (wallPosition[0] == '.'):
295 theme_config["emplacementWall"] = HOME_FOLDER+"/"+wallPosition[1:]
296 else:
297 theme_config["emplacementWall"] = wallPosition
298 theme_config["feh"] = wallPosition
299
300 if 'nitrogen --restore' in ligne and (ligne[0] != '#'):# nitrogen utilisM-CM-)
301 bgSaved = open(HOME_FOLDER+'/.config/nitrogen/bg-saved.cfg', 'r')
302 for ligne in bgSaved:
303 if "file=" in ligne:
304 theme_config["emplacementWall"] = ligne[5:].rstrip('\n\r')
305 theme_config["bg-saved.cfg"] = HOME_FOLDER+'/.config/nitrogen/bg-saved.cfg'
306 break
307
308 if ("conky -c" in ligne) and (ligne[0] != '#'):
309 i += 1
310
311 conkyPosition = ligne.split('conky -c ')[1].replace(' ', '').rstrip('\)&\n')
312 if (conkyPosition[0] == '~') or (conkyPosition[0] == '.'):
313 cheminConky = HOME_FOLDER+"/"+conkyPosition[1:]
314 else:
315 cheminConky = conkyPosition
316 if i == 1:
317 theme_config["cbconky"] = cheminConky
318 else:
319 theme_config["cbconky"+str(i)] = cheminConky
320
321 if ("conky -q" in ligne) and (ligne[0] != '#'):
322 theme_config[".conkyrc"] = HOME_FOLDER+"/.conkyrc"
323
324 if ("tint2" in ligne) and (ligne[0] != '#'):
325 theme_config["tint2rc"] = HOME_FOLDER+"/"+".config/tint2/tint2rc"
326
327 #end
328 autostart.close()
329
330 def creationAutostart(self):
331 '''crM-CM-)er le nouveau autostart par rapport au fichiers contenus dans l'archive'''
332 self.lecture_config()
333
334 wall = os.path.basename(theme_config["emplacementWall"])
335 emplacementWall = theme_config["emplacementWall"].rstrip(wall)
336 if emplacementWall == "/usr/share/backgrounds/":
337 emplacementWall = os.getcwd()+"/"+newFichier["wall"]
338
339 listFichiers = os.listdir(os.getcwd())
340 for fichier in listFichiers:
341 if(fichier[-4:].lower() == '.jpg') or (fichier[-4:].lower() == '.png'):
342 newFichier["wall"] = fichier
343 if ".conkyrc" in fichier:
344 newFichier[fichier] = True
345 if "tint2rc" in fichier:
346 newFichier[fichier] = True
347 if "bg-saved.cfg" in fichier:
348 newFichier[fichier] = True
349 if "cb" in fichier:
350 newFichier[fichier] = os.getcwd()+"/"+fichier
351
352 autostart = open("autostart", 'w')
353 ancienAutostart = open(HOME_FOLDER+"/.config/openbox/autostart", 'r')
354 for ligne in ancienAutostart:
355 if ('nitrogen --restore' in ligne) and (ligne[0] != '#'):
356 bgSaved = open('bg-saved.cfg', 'w')
357 print >> bgSaved, "[:0.0]"
358 print >> bgSaved, "file="+emplacementWall+newFichier["wall"]
359 print >> bgSaved, "mode=5"
360 print >> bgSaved, "bgcolor=#2d3335"
361 bgSaved.close()
362 if ('feh --bg-scale' in ligne) and (ligne[0] != '#'):
363 ligne = "feh --bg-scale "+emplacementWall+newFichier["wall"]+" & \n"
364 if ("conky -q" in ligne) and (ligne[0] != '#'):
365 ligne = "#"+ligne
366 if ("conky -c " in ligne) and (ligne[0] != '#'):
367 ligne = "#"+ligne
368
369 autostart.write(ligne)
370 #end
371
372 ancienAutostart.close()
373
374 if ".conkyrc" in newFichier.keys():
375 print >> autostart, "(sleep 3s && conky -q) &"
376
377 for cle, valeur in newFichier.items():#voir regex
378 if 'cb' in cle:
379 print >> autostart, "(sleep 3s && conky -c "+valeur+") &"
380 autostart.close()
381
382 def lecture_gtkrc(self):
383 gtkrc = open(HOME_FOLDER+"/.gtkrc-2.0", 'r')
384 for ligne in gtkrc:
385 if "gtk-theme-name=" in ligne:
386 nomtheme = ligne.rstrip('\n\r').split("\"")[1]
387 if os.path.isdir("/usr/share/themes/"+nomtheme) == True:
388 gtkConf["gtk-theme-name"] = "/usr/share/themes/"+nomtheme
389 else:
390 gtkConf["gtk-theme-name"] = HOME_FOLDER+"/.themes/"+nomtheme
391 if "gtk-icon-theme-name=" in ligne:
392 nomicons = ligne.rstrip('\n\r').split("\"")[1]
393 if os.path.isdir("/usr/share/icons/"+nomicons) == True:
394 gtkConf["icons"] = "/usr/share/icons/"+nomicons
395 else:
396 gtkConf["icons"] = HOME_FOLDER+"/.icons/"+nomicons
397 gtkrc.close()
398
399 def acyl_fonction(self):
400 themeIcons = os.listdir(HOME_FOLDER+"/.icons")
401 for theme in themeIcons:
402 if "ACYL" in theme:
403 self.suppression_dossier(HOME_FOLDER+"/.icons/"+theme)
404 break
405
406 def sauvegarde_config(self):
407 self.sauvegarde_theme("sauvegarde")
408 for fichierSource in [os.path.join(HOME_FOLDER, fichier) for fichier in FULL_CONFIG]:
409 fichierCopie = os.path.basename(fichierSource)
410 self.copie_fichiers(fichierSource, fichierCopie)
411
412 def restauration_config(self):
413 for fichierCopie in [os.path.join(HOME_FOLDER, fichier) for fichier in FULL_CONFIG]:
414 fichierSource = os.path.basename(fichierCopie)
415 self.copie_fichiers(fichierSource, fichierCopie)
416 self.restauration_theme()
417
418
419 class ChoixNomTheme:
420
421 def __init__(self, widget, choix):
422 self.fenetre = gtk.Window(gtk.WINDOW_TOPLEVEL)
423 self.fenetre.set_size_request(200, 100)
424 self.fenetre.set_title("Nom du theme")
425 self.fenetre.connect("delete_event", gtk.main_quit)
426 self.choix = choix
427 etiquette = gtk.Label()
428 etiquette.set_text("Nom de votre thM-CM-(me :")
429 nom_theme_export = gtk.Entry()
430 nom_theme_export.set_text("votre theme")
431 nom_theme_export.connect("activate", self.validation, nom_theme_export)
432
433 bouton_valider = gtk.Button("Valider")
434 bouton_valider.connect("clicked", self.validation, nom_theme_export)
435
436 vBox = gtk.VBox()
437 vBox.pack_start(etiquette)
438 vBox.pack_start(nom_theme_export)
439 vBox.pack_start(bouton_valider, False, False, 2)
440
441 self.fenetre.add(vBox)
442 self.fenetre.show_all()
443
444 def validation(self,fenetre, nom_theme_export):
445 nom_theme = nom_theme_export.get_text()
446 emplacement_theme = os.path.join(EMPLACEMENT, '{0}'.format(nom_theme))
447 fonctions.creation_dossier('{0}'.format(nom_theme))
448 chdir(nom_theme)
449 self.quitter(fenetre, nom_theme_export)
450 if (self.choix == "exportation"):
451 self.exportation = Exportation_thread(self, nom_theme)
452 self.exportation.start()
453 if (self.choix == "sauvegarde"):
454 fonctions.sauvegarde_theme("sauvegarde")
455 chdir(EMPLACEMENT)
456
457 def quitter(self, widget, nom_theme_export):
458 self.fenetre.destroy()
459
460
461 class SelecteurFichier:
462
463 def destroy(self, widget):
464 self.selectfichier.destroy()
465 def choix_fichier(self, w):
466 chdir(EMPLACEMENT)
467 nomThemeImport = self.selectfichier.get_filename()
468 self.selectfichier.destroy()
469
470 self.importation = ImportationThread(self, nomThemeImport)
471 self.importation.start()
472
473 def __init__(self, widget):
474 chdir(HOME_FOLDER)
475 self.selectfichier = gtk.FileSelection("Selection de fichier")
476 self.selectfichier.connect("destroy", self.destroy)
477 self.selectfichier.ok_button.connect("clicked", self.choix_fichier)
478 self.selectfichier.cancel_button.connect("clicked", lambda w: self.selectfichier.destroy())
479 self.selectfichier.set_filename("manon")
480 self.selectfichier.show()
481
482
483 class Exportation_thread(threading.Thread):
484
485 def __init__ (self, fenetre, nom_theme):
486 threading.Thread.__init__ (self, target=self)
487 self.nom_theme = nom_theme
488
489 def run(self):
490 emplacement_theme = os.path.join(EMPLACEMENT, '{0}'.format(self.nom_theme))
491
492 fenetre2 = gtk.Window()
493 fenetre2.set_default_size(240, 140)
494 etiquette = gtk.Label()
495 etiquette.set_justify(gtk.JUSTIFY_CENTER)
496 fenetre2.add(etiquette)
497 fenetre2.show_all()
498
499 etiquette.set_text("\nCopie des fichiers\nde configuration\ndu theme gtk et des icM-CM-4nes\n")
500
501 if (self.nom_theme == "Ma_Config"):
502 fonctions.sauvegarde_config()
503
504 fonctions.sauvegarde_theme("exportation")
505
506 chdir(HOME_FOLDER)
507 etiquette.set_text("\nRecherche et copie du theme openbox \n ")
508
509 tree = etree.parse('.config/openbox/rc.xml')
510 theme_open_box = tree.find('{http://openbox.org/3.4/rc}theme/{http://openbox.org/3.4/rc}name').text
511 chdir(emplacement_theme)
512 if os.path.isdir("/usr/share/themes/{0}".format(theme_open_box)):
513 fonctions.copie_dossier("/usr/share/themes/"+theme_open_box, theme_open_box)
514 if os.path.isdir(HOME_FOLDER+'/.themes/'+theme_open_box) == True :
515 fonctions.copie_dossier(HOME_FOLDER+'/.themes/'+theme_open_box, theme_open_box)
516
517 fichierExport = open("exportImport.txt", 'w')
518 print >> fichierExport, "{0}".format(theme_open_box)
519 fichierExport.close()
520 time.sleep(2)
521
522 etiquette.set_text("\nCrM-CM-)ation de l'archive\nle plus long...\n")
523 chdir(EMPLACEMENT)
524 tz = tarfile.open('{0}.tar.gz'.format(self.nom_theme), 'w:gz')
525 tz.add(self.nom_theme)
526 tz.close()
527
528 chdir(HOME_FOLDER)
529 shutil.move(emplacement_theme+'.tar.gz', self.nom_theme+".tar.gz")
530 chdir(EMPLACEMENT)
531 etiquette.set_text("Exportation TerminM-CM-)e\nVotre theme se trouve \ndans votre dossier personnel")
532 time.sleep(4)
533 fenetre2.destroy()
534
535
536 class ImportationThread(threading.Thread):
537
538 def __init__ (self, widget, nomThemeImport):
539 threading.Thread.__init__ (self, target=self)
540 self.nom_theme = nomThemeImport
541
542 def run(self):
543 fenetre2 = gtk.Window()
544 fenetre2.set_default_size(240, 140)
545 etiquette = gtk.Label()
546 etiquette.set_justify(gtk.JUSTIFY_CENTER)
547 fenetre2.add(etiquette)
548 fenetre2.show_all()
549
550 nom_tar_gz = self.nom_theme.split('.tar.gz')[0]
551 nom_dossier = os.path.basename(nom_tar_gz)
552 etiquette.set_text("dM-CM-)compression de l'archive\n le plus long")
553 tz = tarfile.open('{0}.tar.gz'.format(nom_tar_gz), 'r')
554 tz.extractall()
555 tz.close()
556
557 os.system("killall conky")
558 time.sleep(2)
559 chdir("{0}{1}/".format(EMPLACEMENT, nom_dossier))
560
561 fonctions.creationAutostart()
562
563 fonctions.copie_fichiers(newFichier["wall"],
564 theme_config["emplacementWall"].rstrip(os.path.basename(theme_config["emplacementWall"]))+newFichier["wall"])
565
566 etiquette.set_text("recherche et copie du theme et des icM-CM-4nes")
567 fonctions.restauration_theme()
568
569 fonctions.lecture_gtkrc()
570 '''
571 if "/usr/share/icons/" in gtkConf["icons"]:
572 gtkConf["icons"] = gtkConf["icons"].replace("/usr/share/icons/", os.path.basename(gtkConf["icons"]))'''
573
574 fonctions.copie_dossier(os.path.basename(gtkConf["icons"]),
575 HOME_FOLDER+'/.icons/'+os.path.basename(gtkConf["icons"]))
576
577 if "ACYL" not in gtkConf["icons"]:
578 fonctions.suppression_dossier(os.path.basename(gtkConf["icons"]))
579
580 fonctions.copie_dossier(os.path.basename(gtkConf["gtk-theme-name"]),
581 HOME_FOLDER+'/.themes/'+os.path.basename(gtkConf["gtk-theme-name"]))
582
583 fonctions.suppression_dossier(os.path.basename(gtkConf["gtk-theme-name"]))
584
585 exportImport = open("exportImport.txt", 'r').read()
586 themeBox = exportImport.rstrip('\n\r')
587
588 os.remove("exportImport.txt")
589
590 fonctions.copie_dossier(themeBox, HOME_FOLDER+"/.themes/"+themeBox)
591 fonctions.suppression_dossier(themeBox)
592
593 tree = etree.parse(HOME_FOLDER + '/.config/openbox/rc.xml')
594 tree.find('{http://openbox.org/3.4/rc}theme/{http://openbox.org/3.4/rc}name').text = themeBox
595 tree.write(HOME_FOLDER + '/.config/openbox/rc.xml')
596
597
598 etiquette.set_text("Mise en place du theme")
599 fonctions.restauration_openbox()
600 chdir(EMPLACEMENT)
601
602 fonctions.copie_fichiers(HOME_FOLDER+"/.config/openbox/rc.xml", "rc.xml")
603 time.sleep(2)
604 etiquette.set_text("Importation TerminM-CM-)e")
605 time.sleep(2)
606 fenetre2.destroy()
607
608
609 class Tint2Thread(threading.Thread):
610 def __init__ (self, tint2):
611 threading.Thread.__init__ (self, target=self)
612 def run(self):
613 os.system("pkill tint2 && tint2 &")
614
615
616 if __name__ == "__main__":
617
618 fonctions = Fonctions()
619 ObPersonalTheme()
620 gtk.main()
tu remarqueras entre autre, qu'il modifie le conky par défaut.
bien sauvegarder l'ensemble de sa conf avant de tester, pour le retour arrière.
ou comme moi, un clone de kali-linux-1.0.9a-i386-openbox dans virtualbox.
+ d'infos, tu demandes à manon j'ai vu > Maintainer: manon
PS:
pas obligé d'installer en .deb pour tester on peut le faire à partir de cb-personal-themes.py.
à noter, que l'installation et la désinstallation en .deb, chez moi fonctionne.
Dernière modification par WangXiangzhai (18-11-2014 19:19:12)
PC: HP-pavilion a6227.fr | wifi: Awus036H et HWGUSB2-54 | CG: NVIDIA geforce 8400 GS | OS: Debian-8.1.0-i386 Xfce | EN TESTE kali-linux-openbox-rolling-i386.iso (KaliBang), bento-openbox-14.04.3-i386.iso et Viperr8_i686.iso
Hors ligne
Désolé, mais c'est quoi la différence entre avant et après ? À part le la couleur du thème qui à changé :-/
Il doit y avoir un problème avec les screen , regarde plutot ça => Démo changement thème
cb-personal thème modifie conky , wallpaper , icones, thème GTK et thème openbox.
+ d'infos, tu demandes à manon j'ai vu > Maintainer: manon
Voila
et aussi sauvegarde ton théme avant car le menu sera modifier
Hors ligne
Merci manon, je vois maintenant
>> Good things come to those who, Wait.. <<
>> sip:yzeew@ekiga.net << and >> #Pouni3 <<
Hors ligne