Forum Linux.débutant Utiliser "at" pour lancer un programme graphique ?

Posté par  (site Web personnel) . Licence CC By‑SA.
Étiquettes :
0
13
avr.
2020

Avec at, je peux programmer le lancement d'un script qui sera exécuté par défaut dans /bin/sh :

$ echo "/chemin/script.sh" | at now +1 minute
warning: commands will be executed using /bin/sh
job 6 at Mon Apr 13 11:53:00 2020

Mais je n'arrive pas à lancer de la même façon un programme graphique. Par exemple $ echo "/usr/bin/firefox" | at now +1 minute ou $ echo "/usr/bin/firefox &" | at now +1 minute ne me lance pas de fenêtre.

En fait, ce qui m'intéresse, ce serait de lancer un script dans une fenêtre de terminal qui s'ouvrirait à une heure précise, un truc du genre $ echo "konsole /chemin/script.sh" | at now +1 minute.

Quelque chose m'échappe…

  • # Complément d'infos

    Posté par  . Évalué à -1.

    Salut,

    Regarde peut-être par  ?

    Pas sûr, mais si pas de /etc/at.allow c'est peut-être root qui lance et n'a pas accès au display ?

  • # Affecter la variable DISPLAY

    Posté par  . Évalué à 3.

    Pour que le programme sache où s'afficher, il faut définir la variable DISPLAY. Fais précéder tes commandes de "DISPLAY=:0", par exemple "DISPLAY=:0 konsole".

    • [^] # Re: Affecter la variable DISPLAY

      Posté par  (site Web personnel) . Évalué à 2.

      Merci pour vos réponses ! Je m'étais pourtant déjà fais avoir avec des histoires de variables d'environnement avec at… Effectivement, ainsi ça marche :

      $ echo "DISPLAY=:0 firefox https://linuxfr.org/" | at now +1 minute
      

      Voici les différences entre les variables d'environnement du bash de départ et celles du sh lancé par at :

      $ env | sort > env_bash.txt
      $ echo "env | sort > env_sh.txt" | at now
      $ diff env_sh.txt env_bash.txt
      5a6
      > DISPLAY=:0
      23d23
      < OLDPWD=/
      30a31
      > SHELL=/bin/bash
      34a36
      > TERM=xterm-256color
      35a38
      > _=/usr/bin/env
      
      • [^] # Re: Affecter la variable DISPLAY

        Posté par  . Évalué à 3.

        plutot que le echo xxx | at
        pourquoi ne pas utiliser

        at -c 'DISPLAY=:0 /usr/bin/firefox'

        • [^] # Re: Affecter la variable DISPLAY

          Posté par  (site Web personnel) . Évalué à 1.

          J'ai essayé mais ça ne marche pas. D'après man at :

          -c     cats the jobs listed on the command line to standard output.
          

          Par exemple si j'ai créé avec at un job dont l'identifiant est 21, avec $ at -c 21 j'obtiens l'affichage du script qui lancera le job (avec les variables d'environnement qui seront utilisées, le cd pour le répertoire de travail, etc.) Ce qui est intéressant et permet de comprendre le fonctionnement de at.

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n’en sommes pas responsables.