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.

#1001 Le 26/04/2009, à 14:45

Pahoo

Re : [plus maintenu] Manipulation des USplash

par contre je n'ai toujours pas accès à préférences ni à propos
les menus ne réagissent pas lorsque je m'en sert, c'est en cours ?
ou bien j'ai encore un problème avec mon environnement


--------   Edit ------------------

Ok j'ai vu que c'étais en cours

Dernière modification par Pahoo (Le 26/04/2009, à 19:18)


Ubuntu 10.04    Fedora 14   DualCore 3.00GHz  2GoRam

Hors ligne

#1002 Le 26/04/2009, à 21:19

prnity

Re : [plus maintenu] Manipulation des USplash

Comment peut on faire pour convertir un usplash en .so qui est fait pour Intrepid pour l'utiliser sur Jaunty?

#1003 Le 26/04/2009, à 21:56

philarmonie

Re : [plus maintenu] Manipulation des USplash

on ne peut pas, il faut avoir les sources.

#1004 Le 27/04/2009, à 15:11

toufku

Re : [plus maintenu] Manipulation des USplash

bonjour

je voulais simplement signaler que le logiciel marche bien chez moi. Il manque neanmoins un test de dépendances ou au moins une note sur la premiere page de ce topic pour imagemagik
(j utilise une jaunty toute fraiche)

bonne continuation


avec linux les noyaux, avec windows les pepins....

Hors ligne

#1005 Le 27/04/2009, à 15:31

xanix

Re : [plus maintenu] Manipulation des USplash

j'utilise Usplash-manger-Themes , mon theme est bien appliqué quand je quitte Ubuntu. Mais quand je lance Ubuntu il applique l'ancien theme par défaut.

Hors ligne

#1006 Le 27/04/2009, à 15:53

philarmonie

Re : [plus maintenu] Manipulation des USplash

sudo update-initramfs -u -k 'all'

Bizarre que cette commande n'est pas été exécutée quand tu as installé ton thème.
Je viens y jeter un coup d'œil.

#1007 Le 27/04/2009, à 20:49

François666

Re : [plus maintenu] Manipulation des USplash

Je n'ai pas le courage de lire les 40 pages précédentes pour si on a déjà parlé de ce bug donc je le poste ici.

L'installation s'est passée sans problème mais après avoir choisi l'image que je voulais, rien ne se passe.
J'ai vu dans la console qu'il manquait le dossier ~/.usplash-manager-themes
Je l'ai créé et tout s'est bien passé :-)

Merci pour ce génial programme!

#1008 Le 04/05/2009, à 22:21

temps

Re : [plus maintenu] Manipulation des USplash

Bonjour, Je suis sous 9.04
j'ai installé le .deb et tout à l'air de bien fonctionner. Le test se lance et l'image se lance sans problème.
Je suis donc allé dans mon dossier personnel, j'ai fait un Ctrl+h pour voir apparaitre les fichiers cachés, j'ai trouvé usplash-manager-theme, j'ai trouvé mon fichier .so que j'ai récupéré pour le placer dans un initrd,
mais quand je le place dans mon image, cela ne fonctionne plus !
Est-ce que cela peut provenir du nom lors de la construction ou faut-il faire quelque chose de spéciale ? pour retrouver l'image du boot à la place des textes défilant ?


Parce que l'USB bootable est le support des systèmes experts,
Parce que l'USB bootable contient sa propre image au démarrage.
L'USB bootable permet de créer un monde à la dimension de son imagination
https://www.letime.net

Hors ligne

#1009 Le 05/05/2009, à 15:14

smo

Re : [plus maintenu] Manipulation des USplash

ola

philarmonie, merci pour ton post auquel je n avais pas pris le temps de repondre jusqu ici

alors smile

j ai suivi tes instructions malheureusement moi je fais du perl pas du python  donc pas tout a fait pareil
ton fichier libreader pete bien effectivement sauf que moi je n ais pas ces outils la en perl surtout le  "CDLL"

je n arrive donc pas a recuperer simplement la version, les resolutions etc etc

par contre on a reussi a recreer les images de background et des barres smile ca ca roule , me resterait dans l absolu a replacer les barres en rapport a leur taille/position comme tu le disais mais je vois pas comment ...

pb aussi avec la taille qu on doit donner tres precisement et que jene recupere donc pas a lavance sad , ok pour le background mais pour les barres j y vais au pif, j ai mis 320 en base en largeur, ca passe pour certaines, mais d autres sont pas tres belles car la taille n est pas bonne...

alors par contre niveau perf rien a voir avec toi, le seul moyen qu on a trouve pour recuperer les infos data et l offset de depart/fin etait de passer par objdump -D -F, donc on se tape une decompile du .so complet et on retravaille sur les infos apres...

donc questions;
- toi avec ton libreader, t arrives donc a lui demander directement les infos data de telle ou telle image ?
- dans quel fichier se trouvent les resolutions supportees? et se presentent comment dans le fichier, vu que certaisn usplash ont toutes les resolutions, d autre comme le theme ubuntu par defaut n en ont pas .. juste le throbber par exemple en 400x300 Oo...

- comment ferais tu pour placer les images de barre sur l image de background? (sachant que j ai bien du mal a recuperer les bonnes tailles)

une chtite video te montrer comment ca s passe (mega lent...)

http://www.ubukey.fr/downloads/gstylepb.ogv


++ smile

Dernière modification par smo (Le 05/05/2009, à 15:29)

Hors ligne

#1010 Le 05/05/2009, à 16:08

philarmonie

Re : [plus maintenu] Manipulation des USplash

smo a écrit :

- toi avec ton libreader, t arrives donc a lui demander directement les infos data de telle ou telle image ?
- dans quel fichier se trouvent les resolutions supportees? et se presentent comment dans le fichier, vu que certaisn usplash ont toutes les resolutions, d autre comme le theme ubuntu par defaut n en ont pas .. juste le throbber par exemple en 400x300 Oo...
- comment ferais tu pour placer les images de barre sur l image de background? (sachant que j ai bien du mal a recuperer les bonnes tailles)

Mon fichier libreader me permet d'avoir accès aux structures définies dans la bibliothèque .so grâce à la fonction CDDL qui me permet de charger dynamiquement en mémoire une bibliothèque C et de la manipuler comme un objet python.
Une structure c'est un peu comme un objet mais qui n'a que des attributs et pas de méthodes (ça permet de créer de nouveaux types de données).
Il y a 3 structures principales:
- usplash_font (pour ceux qui veulent personnaliser la font du texte du thème, non utilisé par les thèmes UTM)
- usplash_pixmap (les images: barres et background)
- usplash_theme (les thèmes proprement dit, une telle structure par résolution)

Pour connaitre les différents attributs de chaque structure il suffit de regarder le début de mon fichier libreader c'est là que je les définis. Pour voir comment sont agencées toutes ces structures pour créer un thème, le mieux serai que tu regardes le code C d'un thème créé avec UTM (tu le trouvera dans le dossier caché de ton thème).
Je n'ai pas encore implémenté le code pour faire cela, mais voilà comment je m'y prendrai:
- je charge le thème en mémoire grâce à CDLL
- je cherche une structure qui est nécessairement présente: usplash_theme (nom de la  variable) qui est de type... usplash_theme
- je regarde si son attribut next est null ou non, s'il n'est pas null il pointe vers le nom de la variable du prochain thème (les thèmes sont ainsi chaînés par ordre de résolution croissante)
- à ce stade j'ai récupéré le nom de toutes les variables qui représentent le thème avec des résolutions différentes
- pour chacune de ses structures de type usplash_theme je regarde son attribut usplash_pixmap qui me donne le nom de la variable de type usplash_pixmap qui représente l'image de fond
- pour chacune de ses structures de type usplash_pixmap je regarde leurs attributs width et height ce qui me donne toutes les résolutions supportées par le thème
- ensuite je cherche deux variables de type usplash_pixmap: pixmap_throbber_back et pixmap_throbber_fore qui représentent les images des barres.
- en lisant les attributs width et height je connais la taille de la barre
- pour reconstitué chacune des images je dois me servir des attributs data, palette et width en utilisant la technique décrite dans mon message précédent.
- enfin pour savoir où placer la barre par rapport à l'image de fond, il me suffit de lire les attributs progressbar_x et progressbar_y de la structure de type usplash_theme correspondant à la résolution de mon image de fond.

Voilà donc comment je m'y prendrai, mais je peux le faire ainsi car j'ai un accès direct aux variables globales du thème que je peux manipuler comme des objets python.
Dans ton cas je ne sais pas comment tu pourrai faire, tout dépend de comment tu fais pour « lire » dans la bibliothèque compilée. Tu as regardé si en Perl il n'y a pas un équivalent de la CDLL de python? (c'est présent car Python est codé en C et donc ces deux langages communiquent bien ensemble)

#1011 Le 05/05/2009, à 16:14

smo

Re : [plus maintenu] Manipulation des USplash

bah oui j ai bien capté tout ca maispb a moi c est justement de lire le C plus efficacement

pas de CDLL quoi, objdump et j recree tousles fichiers et apres je travail avec...

vu la video?

Hors ligne

#1012 Le 05/05/2009, à 16:28

philarmonie

Re : [plus maintenu] Manipulation des USplash

smo a écrit :

vu la video?

J'avais pas vu jusqu'au bout et n'avais pas vu le problème du deuxième thème tongue
Déjà vous arrivez à retrouver les data des images et la résolution des thèmes (vous passez par mon libreader pour ça?) et comment vous arrivez a bien reconstituer l'image de fond mais pas celle des barres?

Je vais regarder à quoi ressemble la sortie de objdump -D -F.

Dernière modification par philarmonie (Le 05/05/2009, à 16:29)

#1013 Le 05/05/2009, à 17:08

smo

Re : [plus maintenu] Manipulation des USplash

je suis au sport je repond plus precisement ce soir

smile

++

Hors ligne

#1014 Le 05/05/2009, à 18:22

philarmonie

Re : [plus maintenu] Manipulation des USplash

Ha bah c'est pas aussi simple que je le croyais: quand je veux lire l'attribut data je me mange une belle Erreur de Segmentation tongue
À mon avis c'est parce que je le déclare comme un tableau de char dans mon code python alors qu'en C cet attribut est défini comme un tableau d'unsigned char, je vais voir ce que je peux faire là-dessus. hmm

#1015 Le 05/05/2009, à 22:01

philarmonie

Re : [plus maintenu] Manipulation des USplash

Je progresse smile
Le fait que ce soit des char ou unsigned char n'a finalement aucune importance.
C'est le type C que je déclare pour l'attribut palette qui ne va pas, c'est un tableau bi-dimensionnel donc c'est du pointeur de pointeur, et je n'arrive toujours pas à bien le déclarer: dès que je veux lire une des valeurs je me prends un Erreur de Segmentation.
Par contre maintenant j'arrive à récupérer parfaitement l'attribut data. smile

Je m'en vais approfondir ma connaissance de pointeurs en C pour pouvoir lire ces putains de palettes tongue

#1016 Le 05/05/2009, à 23:28

smo

Re : [plus maintenu] Manipulation des USplash

whoue non c etait un autre pb on creeait une image avec palette, on read le data et on rempli en gros mais en faisant ca ca repassait l image en rgb Oo

du coup autre systeme que je ne saurais expliquer big_smile pas moi qui l ai fait (en ascii et pnm si j ai bien compris).. et la ok...

pour te repondre, j arrive a avoir l image ok car moi je me base sur les usplash_1024_768_data et palette par exemple donc forcement j ai la bonne taille, par contre pour les barres j en sais rien a l avance, un de mes pb

fin bon moi tourne autour du fait que je n arrive pas a extraire les infos que je veux de la meme maniere que toi

demandes moi j ai un deb du soft tu pourras voirle code du module que tu capteras je pense sans soucis...


toi a ton avis, lecture des infos/extraction/creation etc, l operation va prendre combien de temps dans le soft ?, moi genre 10 sec avec un gros theme...

++

Dernière modification par smo (Le 05/05/2009, à 23:40)

Hors ligne

#1017 Le 05/05/2009, à 23:53

philarmonie

Re : [plus maintenu] Manipulation des USplash

smo a écrit :

toi a ton avis, lecture des infos/extraction/creation etc, l operation va prendre combien de temps dans le soft ?, moi genre 10 sec avec un gros theme...

J'ai pas chronométré mais pour toutes les données que je peux récupérer (tailler, data, position et pour toutes résolutions) ça m'apparait comme instantané. Donc je serai bien loin des 10 sec quand j'arriverai à lire les palettes. smile La création de l'aperçu dans le menu de choix sera transparente pour l'utilisateur.

Si tu veux pour t'enlever une épine du pied, je te posterai demain un code python qui renverra sur la sortie standard la taille et position des barres. Tu n'aura qu'à le lancer avec ton script perl et récupérer sa sortie pour la traiter ensuite.

#1018 Le 06/05/2009, à 00:05

smo

Re : [plus maintenu] Manipulation des USplash

ca m aiderait bien

moi en fait y me faudrait

- la version de usplash (systeme) et la version du usplash
- la taille des barres
- la liste des resolutions

tu dois deja avoir tout ca a mon avis big_smile,maisbon je vais continuer a chercher, deconne perl sur ce coup la!!!

MERCI

et hizoka, t es passé ou !! ? wink

++

Hors ligne

#1019 Le 06/05/2009, à 00:13

Hizoka

Re : [plus maintenu] Manipulation des USplash

ba je suis toujours là, mais vous ne parlez plus français là smile

donc je prefere ne rien dire que de dire des conneries (vu que de toute façon nous ne sommes plus du même monde smile)

je pige même pas ce que tu veux faire smo...

Dernière modification par Hizoka (Le 06/05/2009, à 00:13)


KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github

Hors ligne

#1020 Le 06/05/2009, à 00:52

philarmonie

Re : [plus maintenu] Manipulation des USplash

Voilà le code

#!/usr/bin/python
# -*- coding: utf-8 -*-

import sys
from ctypes import *

class usplash_font(Structure):
    _fields_ = [("name", c_char_p),
                ("height", c_int),
                ("index_mask", c_int),
                ("offset", POINTER(c_int)),
                ("index", c_char_p),
                ("content", c_uint),
                ("default_char", c_wchar)]

class usplash_pixmap(Structure):
    _fields_ = [("width", c_int),
                ("height", c_int),
                ("ncols", c_int),
                ("transparent", c_int),
                ("palette", POINTER(c_char_p * 3)),
                ("data", c_char_p)]

class usplash_theme(Structure):
    pass

usplash_theme._fields_ = [("version", c_int),
                          ("next", POINTER(usplash_theme)),
                          ("ratio", c_int),
                          ("usplash_pixmap", POINTER(usplash_pixmap)),
                          ("usplash_font", POINTER(usplash_font)),
                          ("background", c_short),
                          ("progressbar_background", c_short),
                          ("progressbar_foreground", c_short),
                          ("text_background", c_short),
                          ("text_foreground", c_short),
                          ("text_success", c_short),
                          ("text_failure", c_short),
                          ("progressbar_x", c_short),
                          ("progressbar_y", c_short),
                          ("progressbar_width", c_short),
                          ("progressbar_height", c_short),
                          ("text_x", c_short),
                          ("text_y", c_short),
                          ("text_width", c_short),
                          ("text_height", c_short),
                          ("line_height", c_short),
                          ("line_length", c_short),
                          ("status_width", c_short),
                          ("init", c_void_p),
                          ("clear_screen", c_void_p),
                          ("clear_progressbar", c_void_p),
                          ("clear_text", c_void_p),
                          ("animate_step", c_void_p),
                          ("draw_progress_bar", c_void_p),
                          ("draw_text", c_void_p),
                          ("draw_status", c_void_p)]

def own_version():
    """
    return the usplash version installed on disk
    """

    headerFile = open('/usr/include/usplash-theme.h')
    content = headerFile.read()
    headerFile.close()
    return int(content[content.find('THEME_VERSION') + 14])

def open_lib(lib):
    
    CDLL('libusplash.so', RTLD_GLOBAL)
    print 'trying to load the %s usplash theme library' % lib
    try:
        lib = CDLL(lib)
    except OSError:
        print 'the library %s does not exist or cannot be opened' % lib
        return
    return lib

def resolution_info(lib):
    
    theme = usplash_theme.in_dll(lib, 'usplash_theme')
    res_info = []
    while theme.next:
        pix = theme.usplash_pixmap.contents
        res_info.append((pix.width, pix.height,
                        theme.text_x, theme.text_y))
        theme = theme.next.contents
    else:
        pix = theme.usplash_pixmap.contents
        res_info.append((pix.width, pix.height,
                        theme.text_x, theme.text_y))
    return res_info


if __name__ == '__main__':
    if len(sys.argv) == 1:
        print u'passez une bibilothèque de thème en argument'
        exit()
    lib = open_lib(sys.argv[1])
    theme_version = usplash_theme.in_dll(lib, 'usplash_theme').version
    bar = usplash_pixmap.in_dll(lib, 'pixmap_throbber_fore')
    print u'Versions :'
    print u'----------\n'
    print u'Version d\'Usplash installée : %d\n' % own_version()
    print u'Version du thème : %d\n' % theme_version
    print u'Taille de la barre :'
    print u'--------------------\n'
    print u'Largeur    Hauteur'
    print str(bar.width)+ ' ' * (11 - len(str(bar.width)))+\
            str(bar.height)+'\n'
    print u'Info sur les résolutions :'
    print u'--------------------------\n'
    print u'Largeur   Hauteur   Bar X   Bar Y'
    for info in resolution_info(lib):
        print str(info[0])+' ' * (10 - len(str(info[0])))+\
                str(info[1])+' ' * (10 - len(str(info[1])))+\
                str(info[2])+' ' * (8 - len(str(info[2])))+\
                str(info[3])

Par contre ma définition des structures n'est pas encore au point tongue
Pour avoir la position de la barre en fait faut que je lise la position du texte (cf. les theme.text_x et theme.text_y) lol
Sinon pour l'utiliser faut lui donner comme premier argument le chemin complet vers le thème compilé.
Si la mise en forme de la sortie ne te plait pas tu peux la retoucher, comme c'est à base de print même si tu connais pas le python tu devrai quand même pouvoir l'adapter à ton goût.
Sur un de mes thèmes ça donne ça:

Versions :
----------

Version d'Usplash installée : 4

Version du thème : 4

Taille de la barre :
--------------------

Largeur    Hauteur
450        24

Info sur les résolutions :
--------------------------

Largeur   Hauteur   Bar X   Bar Y
640       480       95      372
800       600       175     468
1024      600       287     468
1024      640       287     500
1024      768       287     602
1280      1024      415     807
1280      720       415     564
1280      800       415     628
1440      900       495     708
1600      1200      575     948
1680      1050      615     828

@ Hizo: salut smile smo cherche à reconstituer l'apparence d'un thème qui est déjà compilé, ce que j'essaye aussi de faire de mon côté pour pouvoir avoir une image d'aperçu dans le menu de choix du thème à utiliser.

Dernière modification par philarmonie (Le 06/05/2009, à 01:41)

#1021 Le 06/05/2009, à 14:58

smo

Re : [plus maintenu] Manipulation des USplash

ola

magnifique philo, j essaye ca ce soir et te fais un retour mais ca devrait me suffir
restera a voir comment on fait le placement des images avec perl...

++ merci

Hors ligne

#1022 Le 06/05/2009, à 19:35

philarmonie

Re : [plus maintenu] Manipulation des USplash

Ça y est je peux lire les palettes \o/ j'avais mis un pointeur de trop tongue
Et pareil pour le thème je peux bien lire les positions de la barre en lisant les attributs progressbar_x et progressbar_y, j'avais oublié de définir 4 attributs pour le thème, d'où le décalage.

Je t'adapte le script pour qu'il te donne aussi palette et data des images, et je rajoute l'aperçu de thèmes à UTM smile

#1023 Le 06/05/2009, à 23:11

smo

Re : [plus maintenu] Manipulation des USplash

magnifique smile

bah j attend de voir ton code a ce moment la.. smile

pour replacer les images avec leur position tu le fais par une librairie gimp?



++ encore merci big_smile

Dernière modification par smo (Le 07/05/2009, à 01:14)

Hors ligne

#1024 Le 07/05/2009, à 07:46

ljere

Re : [plus maintenu] Manipulation des USplash

philo le boite de texte continue a rester apparente tu as tester sous jaunty


ancien PC Toshiba satellite_c670d-11 / Linux Mint 21 Vanessa
Nouveau PC ASUS TUF GAMING A17 GPU RTX 4070 CPU AMD Ryzen 9 7940HS w/ Radeon 780M Graphics / Linux Mint 21.2 Victoria / Kernel: 6.4.8-1-liquorix / Desktop: Cinnamon

Hors ligne

#1025 Le 07/05/2009, à 17:18

philarmonie

Re : [plus maintenu] Manipulation des USplash

Salut ljere,

Oui j'ai vu ça me le fait avec ma Jaunty. Maintenant que j'ai aussi ce problème je vais pouvoir y jeter un coup d'œil pour voir d'où ça vient et réparer.

@smo: je vais réarranger le module libreader pour lui donner une approche complètement orientée objet, je devrai pouvoir faire ça dans la soirée.