Next: Documentation du paquetage Python, Previous: Recherche d'aide!, Up: Top
Dernière mise à jour: 31 mars 2006
Certaines plate-formes (NetBSD, Ubuntu Linux, et probablement
d'autres encore) altèrent parfois la version de Python, en
y ajoutant des lettres, des numéros de version mineures,
etc., ce qui empêche le script de configuration de la
détecter correctement. Si vous êtes
sûr que la version installée est
supérieure à la 2.3.0, vous pouvez utiliser
l'option --with-python-force-detection
de
configure
, ainsi le script de configuration passera
la détection de version.
Depuis adesklets 0.5.0, vous disposez d'un nouveau script adesklets_installer (See Utiliser adesklets.). Il peut vous aider à télecharger ou décompresser de nouveaux desklets, ou des mises à jour.
C'est vrai. adesklets_installer ne fait que vous mettre au courant des mises à jour, il télecharge, vérifie et décompresse les desklets, mais il est toujours de votre devoir de lire leur README, de satisfaire leurs dépendances, de les démarrer, les arrêter et les configurer.
Mais franchement est-ce si difficile? La plupart des gens ne changent pas la configuration de leurs desklets de toute façon. Ceci était un choix délibéré de notre part: le but d'adesklets à toujours été de limiter la compléxité globale du code, ce qui mène à un paquetage plus fin, léger et plus consistant. Pourquoi résoudre dans un logiciel long, pénible, difficile à écrire et à maintenir tous les problèmes pointus qu'un utilisateur avisé peut résoudre en quelques minutes avec une documentation correcte?
Si l'automatisation complète était ce pour quoi vous nous suppliez, jetez un oeil aux alternatives à adesklets (See A propos d'adesklets.).
ImportError: no module named
adesklets
de l'interpréteur Python. Qu'est-ce qui
se passe?C'est écrit dessus: python n'arrive pas à trouver le
paqetage adesklets
; peut-être qu'il n'a pas
été installé, ou qu'il a été
installé au mauvais endroit.
--without-python-support
.sed -n '/PYTHON_SITE_PKG/p' Makefile
est inclus dans:
echo 'import sys; print sys.path' | python
si'l ne l'est pas, vous pouvez toujours
essayer de déplacer manuellement le répertoire
d'adesklets de PYTHON_SITE_PKG
vers un des
chemins donnés par la commande précedente.
ADESKLETSError:
adesklets process exited
de l'interpréteur Python.
Qu'est-ce que c'est?C'est une erreur génerique vous informant qu'il manque quelquechose à l'interpréteur de bas niveau qui est suffisamment critique pour provoquer une sortie. Si vous êtes chanceux vous trouverez à la fin de la ligne un tiret suivi d'un message décrivant ce qui ne fonctionne pas. Dans ce cas, et si vous avez du mal à le comprendre, allez chercher de l'aide en ligne. Si aucune information ne vous est donnée concernant l'origine de l'erreur, essayez ceci depuis un pseudo-terminal sous X:
echo x_status | adesklets :
Vous devriez normalement obtenir quelquechose ressemblant à:
event: ready! command 0 ok: x_status 1 (connected to ':0.0')
Si c'est la cas, c'est probablement que vous utilisez un
système (archlinux
par exemple) sur lequel la variable PATH
de
l'interpréteur Python diffère de celle
héritée de l'environnement standard, ce qui fait
que le paquetage Python n'arrive pas à lancer adesklets en
tant que processus fils. Sur ce genre de systèmes,
assurez-vous que vous installez adesklets avec l'option
--prefix
appropriée lors de la configuration.
Par exemple, sur la plupart des plate-formes Linux
récentes, vous devriez utiliser:
./configure --prefix=/usr
Si vous obtenez des erreurs du type:
python: Modules/gcmodule.c:275: visit_decref: Assertion `gc->gc.gc_refs != 0' failed. Aborted
Cela signifie que le récuperateur automatique de mémoire de votre installation de Python est corrompu; c'est souvent du à une compilation utilisant des options d'optimisation incorrectes ou agressives. D'habitude recompiler un environnement Python solide provenant de http://python.org/ résoud ce problème.
Pour pouvoir fonctionner correctement, adesklets à
besoin de pouvoir vérouiller quelques fichiers dans le
répertoire $HOME
: la plupart des
problèmes avec les systèmes de fichiers en
réseau sont dus à des installations fonctionnant
à moitié qui n'arrivent pas à fournir ce
genre de verouillage. Dans l'archive tar des sources d'adesklets
vous trouverez un court script, test/flock.py
, qui
effectue un simple test des verrous fcntl; normalement il
récupère un verrou dans le répertoire de
travail courant, attend que l'utilisateur presse une touche,
alors il relache le verrou et sort. Vous pouvez lancer plusieurs
instances du script depuis le même répertoire pour
vérifier que le verouillage fonctionne effectivement. Si
ce n'est pas le cas, alors le faire fonctionner reviendra
surement à faire fonctionner adesklets.
Il y a un mécanisme interne de blocage dans
l'interpréteur qui empêche un utilisateur de lancer
simultanément plus d'un desklet avec le même
ID
et le même nom, quelle que soit la version.
Lorsque vous mettez à jour un desklet donné, vous
devriez d'abord quitter proprement le desklet (en utilisant la
commande Quit
du menu contextuel), puis installer le
desklet mis à jour en suivant les instructions fournies
par le fichier README.
C'est très probablement lié à la manière dont vous avez démarré le desklet (cf see Utiliser adesklets.). Vous devez invoquer le script du desklet une seule fois. Pour toute utilisation future vous n'aurez qu'a éxectuer la commande:
adesklets
qui se souviendra où vous aviez placé les desklets et quels desklets étaient lancés. N'oubliez pas d'activer les options correctes lors de l'appel à adesklets.
N'auriez-vous pas placé les desklets dans un répertoire du type $HOME/.adesklets? Veillez ne pas le faire. adesklets utilise le fichier $HOME/.adesklets pour enregistrer toutes sortes de paramètres des desklets lancés; créer un répertoire portant ce nom l'empêchera de faire son travail correctement, vous n'avez donc qu'a déplacer votre répertoire ailleurs ($HOME/.desklets, par exemple).
Normalement, les desklets sont censés s'arrêter automatiquement à la fin de la session. Si vous disposez de l'interface basée sur le shell (ce qui est le cas par défaut), vous pouvez aussi les fermer manuellement en invoquant la commande
adesklets --killall
lors de la sortie de session.
Essayez la commande:
python test/test.py
depuis le répertoire de base des sources. Si une fenêtre de 100x100 pixels apparaît, cela signifie très probablement que vous utilisez un gestionnaire de fenêtres qui dessine une grosse fenêtre (dite fausse fenêtre racine, “fake root window”) par dessus la fenêtre racine; vos desklets sont dessinés en-dessous. Parmi ces gestionnaires de fenêtres on trouve Nautilus, KDE, Xfce4, CDE, e16 version 0.16.8 et plus, ou e17. Pour adesklets 0.6.1, les gestionnaires de fenêtres supportés dans cette catégorie sont:
Depuis adesklets 0.4.11, la méthode de détection des fausses fenêtres racine a changé: par défaut cela ne fait plus partie du code C2. L'interpréteur s'attend maintenant à ce que la variable d'environnement ADESKLETS_ROOT contienne le bon ID hexadécimal de la fausse fenêtre racine, si'l y en a. Vous pouvez bien sur la définir manuellement, mais l'interface basée sur le shell prendra en charge pour vous les gestionnaires de fenêtres les plus courants (voir la liste précedente), pourvu que vous lui demandiez de le faire. Essayez d'invoquer:
adesklets --help
Si l'interface est installée, vous devriez voir de nombreuses options, notemment celles permettant d'activer une routine de détection de fausse fenêtre racine adaptée à un gestionnaire de fenêtres donné. Vous disposez aussi d'une détection “génerique” via l'option --user: elle peut fonctionner (ou pas) chez vous, selon la structure de votre gestionnaire de fenêtres. Enfin, veillez noter que l'interface est un simple script compatible sh, installé par défaut dans $prefix/share/adesklets – il devrait être très facile de le modifier pour tout personne désirant implémenter d'autres méthodes de détection.
Gardez aussi à l'esprit que la détection de fausse fenêtre racine requiert évidemment que celle-ci existe, il est donc important que vous invoquiez adesklets après l'initialisation du gestionnaire de fenêtre. Pour vous aider à le faire, vous avez à votre disposition l'option -w nomduprogramme dans l'interface du shell.
adesklets fonctionnera comme prévu avec e16 tant que vous n'activez pas les fonctions induisant l'uilisation de fausses fenêtres racine (voir les questions précedentes – vous devrez utiliser l'option –e16 pour e16 version 0.16.8 et supérieure), ce qui cache dans certains cas les desklets derrière la structure du gestionnaire de fenêtres. D'après l'experience de l'auteur, avec les versions 0.16.7.2 et 0.16.8 il n'est possible de voir les desklets que dans le premier bureau virtuel. Ceci dit, dans le jargon d'enlightenment, les bureaux virtuels peuvent s'étaler sur plusieurs "écrans" (quatre, alignés horizontalement par défaut), ce qui permet parfaitement l'usage de plusieurs espaces de travail en laissant les desklets d'adesklets visibles.
e17 n'est pas supporté. Si vous y tenez vous pouvez trouver plus d'astuces à ce sujet sur la FAQ d'enlightenment . Ceci dit, e17 est fourni avec ce qu'on appelle les “modules e17” (engage, etc.), qui fonctionnnent parfaitement avec ce WM et qui remplissent les mêmes fonctions.
Une pseudo-transparence correcte se base sur la possibilité de récupérer l'image de fond d'écran et d'être averti quand elle change. Il n'y a aucune méthode complètement fiable ni même bien établie pour le faire sur autre chose que la vraie fenêtre racine du protocole X11 (veuillez lire cette partie de la FAQ, “Afficher les desklets”, depuis le début pour bien comprendre ce qui suit).
Ainsi, même en présence d'une fausse fenêtre racine, adesklets récupère toujours l'arrière-plan de la vraie fenêtre racine: certains gestionnaires de fenêtres se soucient de la synchronisation permanente entre la vraie et la fausse fenêtre racine, mais pas assez. adesklets fait de son mieux, quand c'est possible de manière portable, pour synchroniser lors de son initialisation les arrières-plans mais dans certains cas supportés (ROX-Filer, xffm-desktop), ce n'est même pas possible. Par conséquent, si vous obtenez des arrières plans corrompus (pas d'arrière-plan, un arrière-plan incorrect ou ne reflétant pas le dernier changement effectué, alors que vous voyez effectivement le nouveau papier peint dans une fausse fenêtre racine), vous n'avez qu'à dupliquer le papier peint utilisé sur la vraie fenêtre racine, de préference en utilisant un afficheur de papier peint supportant la mécanisme ad-hoc, largement supporté, d' enlightenment pour la notification de changement de papier peint – n'importe lequel des programmes suivants devrait fonctionner correctment: Esetroot, wmsetbg, feh, hsetroot, chbg ou xsri. En fait vous pouvez utiliser n'importe quel afficheur de papier peint pour changer la vraie racine, mais ensuite vous aurez peut-être à rappeler le lanceur d'adesklets pour profiter d'une récupération initiale du papier peint correcte si aucune notification n'a été envoyée.
Les nouveaux desklets sont toujours lancés dans le coin le plus en haut à gauche de l'écran, tout en bas de la pile de fenêtres. Vérifiez qu'il n'y a rien (barre de gnome, engage, etc) qui puisse masquer cette zone de l'écran. Attention! Certaines applications sont pseudo-transparentes, et peuvent masquer la fenêtre racine sans en avoir l'air.
Allez voir la faq de Fvwm: http://www.fvwm.org/documentation/faq/#5.11.
D'après de nombreux utilisateurs de Fvwm, cette option,
BugOpts RaiseOverUnmanaged on
fonctionne bien.
Utilisez l'option --enable-control-on-context-menu lors de la configuration. Ainsi, un clic normal du bouton gauche sur un desklet devrait faire apparaitre le menu de votre gestionnaire de fenêtres dans la plupart des cas (testé sur Xfce4 et tous les *box). Dans tous les cas, vous devrez appuyer sur la touche control en même temps pour obtenir le menu contextuel du desklet.
Pour que cela marche–tout du moins pour tous les
desklets de démonstration–il faut que
xterm soit
installé, et que la variable EDITOR
soit
correctement définie dans votre environnement, comme le
veut l'usage sous UNIX. Veillez remarquer que cela ne fait que
lancer un éditeur de texte dans un terminal. Editer le
fichier de configuration du desklet (habituellement
config.txt dans le
répertoire de base du desklet) aura le même
effet.
Oui, pourquoi pas? Depuis adesklets 0.4.13, l'interface du shell permet de le faire facilement: utilisez l'option adesklets -e (editeur).
Désolé, ce n'est pas prévu. Ce n'est pas qu'SVG est un mauvais format; il est même assez bon. Mais c'est également un format orienté vers le dessin vectoriel (et assez complexe), alors qu'Imlib2, sur laquelle adesklets se base entièrement, est complètement orientée dessin de trame. Or c'est l'utilisation d'Imlib2 qui rend adesklets simple, relativement rapide et peu consommateur de ressources.
Ceci dit, il n'y a aucune raison que vous n'utilisiez pas d'image SVG dans vos desklets, puisqu'il est assez simple de convertir des images SVG en PNG de haute qualité en utilisant des programmes comme sodipodi , inkscape ou xsvg . Dans un répertoire plein de SVG, sur un système GNU vous pouvez aussi utiliser une commande comme::
ls *.svg | sed 's/\(.*\).svg/-z --file=& --export-png=\1.png --export-width=128 --export-height=128/' | xargs --max-lines=1 sodipodi
pour toutes les convertir en PNG semi-transparents de 128x128 pixels.
D'abord, votre adesklets doit supporter fontconfig. Vérifiez-le en lisant le fichier config.log issu de la phase de configuration. Si vous n'avez pas gardé le log, vous pouvez aussi voir quelles bibliothèques dynamiques sont liées à l'interpréteur. Sur un système disposant des binutils GNU, vous pouvez faire quelquechose comme:
ldd `which adesklets` | grep fontconfig
Si vous obtenez une réponse du genre:
libfontconfig.so.1 => /usr/lib/libfontconfig.so.1 (0x45c750000)
cela signifie que tout va bien. Autrement, vous devrez recompiler adeskelts à partir des sources. Ensuite, vous pouvez utiliser la commande:
echo 'list_font_path' | adesklets :
pour voir dans quels répertoires adesklets recherche
les polices TrueType. Consultez la documentation de fontconfig si
vous désirez les modifier (sur les systèmes
à jour, man 5 fonts-conf
est un bon point de
départ). De même:
echo 'list_fonts' | adesklets :
Vous listera les polices actuellement disponibles... Gardez à l'esprit lorsque vous les testerez que le nom des polices est sensible à la casse.
Enventuellement, si vous n'arrivez pas à faire
fonctionner fontconfig, une manière de contourner le
problème est de créer des liens symboliques vers
les polices que vous voulez utiliser dans n'importe quel
répertoire listé par la commande echo
'list_font_path' ...
ci-dessus.
[1] Merci à Stefan Jungcurt pour l'astuce.
[2] Bien que vous pouvez revenir à l'ancienne méthode si vous le désirez en utilisant --enable-legacy-fake-root-window-detection lors de la configuration. See Installer adesklets.