IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Shell et commandes POSIX Discussion :

Fichier de ressources pour une application X11


Sujet :

Shell et commandes POSIX

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2010
    Messages
    345
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 345
    Points : 539
    Points
    539
    Par défaut Fichier de ressources pour une application X11
    Bonjour,
    Je cherche a définir un fichier de config spécifique pour une application X11 genre Xmessage.
    Les applications X11 lisent leurs paramètres dans app-defauts avec possibilité de leur adjoindre une customization.
    Les applications X11 lisent également le fichier $HOME/.Xresources et il y a possibilité d'être assez précis en définissant un nom avec l'option -name.
    Les applications X11 acceptent également l'option -xrm permettant de définir des paramètres en ligne de commande et spécifiques a la commande.
    C'est dans cette direction que je cherche, via -xrm ou une autre option qui m'aurait échappée, car je voudrais un fichier de ressources ponctuel que je pourrais transporter avec mon script.
    Exemple avec une boite de message affichant un pixmap.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    #!/bin/sh
    xmessage -buttons '' \
             -timeout 5 \
             -xrm 'xmessage.maxHeight: 48' \
             -xrm 'xmessage.minHeight: 48' \
             -xrm 'xmessage.form.Thickness: 0' \
             -xrm 'xmessage.form.message.background: yellow' \
             -xrm 'xmessage.form.message.scrollVertical: true' \
             -xrm 'xmessage.form.message.scrollHorizontal: false' \
             -xrm 'xmessage.form.message.topMargin: 10' \
             -xrm 'xmessage.form.message.leftMargin: 50' \
             -xrm 'xmessage.form.message.rightMargin: 50' \
             -xrm 'xmessage.form.message.cursorName: left_ptr' \
             -xrm 'xmessage.form.message*Translations: #override <BtnDown>: ' \
             -xrm 'xmessage.form.message*font: -*-helvetica-*-*-*-*-25*' \
             -xrm 'xmessage.form.message.textSink.foreground: magenta' \
             -xrm 'xmessage.form.message.Scrollbar.borderPixmap: /usr/share/pixmaps/xterm-color_48x48.xpm' \
             -xrm 'xmessage.form.message.Scrollbar.borderWidth: 48' \
             -xrm 'xmessage.form.message.Scrollbar.scrollDCursor: left_ptr' \
             -xrm 'xmessage.form.message.Scrollbar.scrollUCursor: left_ptr' \
             -xrm 'xmessage.form.message.Scrollbar.scrollVCursor: left_ptr' \
             -xrm 'xmessage.form.message.Scrollbar.width: 1' \
             "Magnifique message avec icon" &
    Toutes les lignes avec -xrm seraient dans un fichier ressources.
    Mon script deviendrait alors quelquechose de bien plus simple.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    #!/bin/sh
    xmessage -buttons '' \
             -timeout 5 \
             -xrm ou l'option qui va bien 'xmessage.fichier de ressource: MonFichier' \
             "Magnifique message avec icon" &
    Une idée ?
    Merci.

  2. #2
    Expert éminent sénior Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 242
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 242
    Points : 13 457
    Points
    13 457
    Par défaut
    Bonjour

    mes_ressources.txt
    xmessage.maxHeight: 48
    xmessage.minHeight: 48
    xmessage.form.Thickness: 0
    xmessage.form.message.background: yellow
    xmessage.form.message.scrollVertical: true
    xmessage.form.message.scrollHorizontal: false
    xmessage.form.message.topMargin: 10
    xmessage.form.message.leftMargin: 50
    xmessage.form.message.rightMargin: 50
    xmessage.form.message.cursorName: left_ptr
    xmessage.form.message*Translations: #override <BtnDown>:
    xmessage.form.message*font: -*-helvetica-*-*-*-*-25*
    xmessage.form.message.textSink.foreground: magenta
    xmessage.form.message.Scrollbar.borderPixmap: /usr/share/pixmaps/xterm-color_48x48.xpm
    xmessage.form.message.Scrollbar.borderWidth: 48
    xmessage.form.message.Scrollbar.scrollDCursor: left_ptr
    xmessage.form.message.Scrollbar.scrollUCursor: left_ptr
    xmessage.form.message.Scrollbar.scrollVCursor: left_ptr
    xmessage.form.message.Scrollbar.width: 1
    
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed 's/^/-xrm "/;s/$/" \\/; 1s/^/xmessage -buttons "" -timeout 5 \\\n/; $s/$/\n"Magnifique message avec icon"/' mes_ressources.txt | bash -
    Tu n'as pas parlé de xrdb pour ajouter tes ressources à la base.
    Tu n'as pas parlé non plus de la variable d'environnement XENVIRONMENT qui peut charger un fichier spécifique.

    Citation Envoyé par https://www.oreilly.com/library/view/x-window-system/9780937175149/Chapter09.html
    Other Sources of Resource Definition

    If xrdb has not been run, the RESOURCE_MANAGER property will not be set. Instead, the resource manager looks for a file called .Xdefaults in the user’s home directory. As we discussed earlier, resources found in this way are only available to clients running on the local machine.

    Whether or not resources have been loaded with xrdb, when a client is run the following sources of resource definition are consulted in this order:

    1. A file with the same name as the client application, in the directory /usr/lib/X11/appdefaults will be loaded into the resource manager.

    2. Files in the directory named by the environment variable XAPPLRESDIR, or if the variable is not set, in the user’s home directory, with the name Class where Class is the class name of a client program.

    3. Resources loaded into the RESOURCE_MANAGER property of the root window with xrdb; these resources are accessible regardless of the machine on which the client is running.

    If no resources are loaded in this way, the resource manager looks for a .Xdefaults file in the user’s home directory; these resources are only available on the local machine.

    4. Next, the contents of any file specified by the shell environment variable XENVIRONMENT will be loaded.

    If this variable is not defined, the resource manager looks for a file named .Xdefaults-hostname in the user’s home directory, where hostname is the name of the host where the client is running. These methods are used to set machine-specific resources.

    5. Any values specified on the command line with the -xrm option will be loaded for that instance of the program.

    All of these various sources of defaults will be loaded and merged, according to the precedence rules described above in the section “Precedence Rules for Resource Specification.”

    The client will then merge these various defaults specified by the user with its own internal defaults, if any.

    Finally, if the user has specified any options on the command line (other than with the -xrm option), these values will override those specified by resource defaults, regardless of their source.
    Cette réponse vous apporte quelque chose ? Cliquez sur en bas à droite du message.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2010
    Messages
    345
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 345
    Points : 539
    Points
    539
    Par défaut
    Merci pour ces infos et merci pour le sed que je n'ai pas essayé car je me dit que 6 mois plus tard, j'aurais du mal à comprendre le problème.
    Un peu de lecture des pages de man, ça fait pas de mal !
    Dans ma tête, xrdb permettais d'ajouter des paramètres, option -merge, mais en fait, xrdb est beaucoup plus puissant que ça.
    Il est possible de sauvegarder la config via -edit,
    Installer une nouvelle config via -load puis réinstaller l'ancienne config via -load également.
    Mon script devient :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    #!/bin/sh
    xrdb -edit /tmp/old_res
    xrdb ./Xsetup_0.res
    xmessage -buttons '' \
             -timeout 5 \
             "Magnifique message avec icon" &
    sleep 6
    xrdb /tmp/old_res
    rm /tmp/old_res
    xmessage -timeout 5 \
             -xrm 'xmessage.form.message*font: -*-helvetica-*-*-*-*-25*' \
             'Petite visu de ce que pense https://forum.openbsd.fr.eu.org' &
    sleep 6
    exo-open https://forum.openbsd.fr.eu.org/showthread.php?tid=2663#pid21067 &
    La variable d'environnement XENVIRONMENT a ma préférence.
    Mon script devient :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    #!/bin/sh
    export XENVIRONMENT=./Xsetup_0.res
    xmessage -buttons '' \
             -timeout 5 \
             "Magnifique message avec icon" &
    sleep 6
    unset XENVIRONMENT
    xmessage -timeout 5 \
             -xrm 'xmessage.form.message*font: -*-lucida-*-*-*-*-34*' \
             'Petite visu de ce que pense https://forum.openbsd.fr.eu.org' &
    sleep 6
    exo-open https://forum.openbsd.fr.eu.org/showthread.php?tid=2663#pid21067 &
    La dernière ligne ne fonctionne certainement que sur xfce mais permet de voir ce qu'en pense les autres.
    Il y aurait peut être moyen de spécifier que ces tutoriels sont obsolètes.
    En tous cas, merci pour ces pistes très efficaces.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. chemin des ressources pour une application web dynamique
    Par IT_Pro_Target dans le forum Développement Web en Java
    Réponses: 3
    Dernier message: 20/03/2018, 15h03
  2. Réponses: 12
    Dernier message: 19/11/2015, 18h08
  3. Réponses: 0
    Dernier message: 23/12/2010, 17h58
  4. Réponses: 14
    Dernier message: 10/04/2007, 07h59
  5. Réponses: 2
    Dernier message: 08/06/2006, 14h38

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo