web-dev-qa-db-fra.com

BASH peut-il afficher dans systray un indicateur d’application?

J'ai un script bash qui verrouille l'écran après un laps de temps défini ( Application qui verrouille l'écran après un certain temps pour Ubunt ). J'aimerais afficher le temps restant dans la barre d'état système/barre d'application d'Ubuntu.

2
WinEunuuchs2Unix

La meilleure méthode que j'ai trouvée est Indicateur du Moniteur système de cet article: webupd8.org - Indicateur d'application Ubuntu qui affiche bash . Il affiche le texte sur la barre d'indicateur d'application de la barre d'état système/Unity que votre script bash "echos".

L'article ci-dessus est destiné à Ubuntu 16.04 avec Unity. Pour plus d'informations sur Xubuntu, l'extension de l'indicateur d'application Gnome-Shell + et Budgie, visitez le site Web des développeurs: fossfreedom/indicateur-sysmonitor . Visitez également le site pour des instructions plus détaillées sur l’installation et la configuration.

Installer et configurer indicator-sysmonitor

Pour installer Indicateur du Moniteur système , vous devez d'abord spécifier le PPA où indicator-sysmonitor peut être trouvé:

Sudo add-apt-repository ppa:fossfreedom/indicator-sysmonitor
Sudo apt-get update
Sudo apt-get install indicator-sysmonitor

Maintenant, lancez l’interface graphique "indicateur-sysmonitor" de Dash (Alt+F2).

  • Cliquez sur la zone de systray qui apparaît avec "cpu: 99% mem: 99%"
  • Sélectionnez "Préférences"
  • L'onglet "Général" est initialement actif, cochez la case "Exécuter au démarrage".
  • Sélectionnez l'onglet "Avancé"
  • Cliquez sur New bouton pour ajouter un nouveau contrôle
  • Dans le champ Capteur, entrez custom
  • Dans la zone Description, tapez Bash Indicator _ Dans la zone Commande, tapez le nom de votre script bash, c.-à-d. /mnt/e/bin/indicator-sysmonitor-display.
  • Enregistrez votre nouvel indicateur personnalisé
  • Sélectionnez la ligne custom et cliquez sur le bouton Add bouton pour l'activer.
  • Vous pouvez supprimer les variables par défaut pour "CPU" et "Mem", ce qui pourrait ne pas vous être utile.
  • J'ai changé l'intervalle d'actualisation de 2 secondes à .3 seconde. Pour soutenir "la pizza qui tourne" expliqué ci-dessous.
  • Maintenant, cliquez sur le Save bouton.

Indicateur Sysmonitor en action

Ce .gif montre son apparence lorsque la barre système Unity d’Ubuntu est mise à jour.

multi-timer sysmonitor indicator.gif

  • Au début de l'animation, notre sortie systray contient "Brightness: 3000".
  • Ensuite, multi-timer (lien ci-dessous) est démarré et passe par plusieurs minuteries.
  • Une pizza en rotation apparaît avec un compte à rebours du temps restant.

REMARQUE: L'indicateur de surveillance du système affiche également "Luminosité: 3000". C'est le réglage de jour pour le niveau de luminosité de mon matériel Intel Backlight (lien ci-dessous).

Script BASH d'indicateur de système

Créez un script similaire au suivant et affectez-le à la variable {Custom} dans Indicateur Sysmonitor :

#!/bin/bash

# UPDT: May 30 2018 - Cohesion with new multi-timer and old lock-screen-timer.

if [ -f ~/.lock-screen-timer-remaining ]; then
    text-spinner
    Spinner=$(cat ~/.last-text-spinner) # read last text spinner used
    String=$(cat ~/.lock-screen-timer-remaining)
    systray="$Spinner  $String"
else
    systray=""
fi

if [ -f /tmp/display-current-brightness ]; then
    Brightness=$(cat /tmp/display-current-brightness)
    systray="$systray  Brightness: $Brightness"
else
    systray="$systray  Brightness: OFF"
fi

# Below for AU answer: https://askubuntu.com/questions/1024866/is-it-possible-to-show-ip-address-on-top-bar-near-the-time
# default_interface=$(route -n | awk '$1 == "0.0.0.0" {print $8; exit}')
# ip_address=$(ifconfig "$default_interface" | awk 'sub(/.* inet addr:/, "") {print $1}')
# systray="$systray  $ip_address"

echo "$systray" # sysmon-indidicator will put echo string into systray for us.

exit 0

Après avoir dit Indicateur Sysmonitor le nom de votre script bash en définissant la variable {Custom}, il exécute chaque intervalle d'actualisation. . Quel que soit le résultat de votre script bash via la commande echo, il apparaît dans la barre d'état système d'Ubuntu.

REMARQUE: Le script affiche le temps restant et le niveau de luminosité de l'affichage valeurs. Ces valeurs sont définies par les scripts décrits dans Ask Ubuntu : Application qui verrouille l'écran au bout d'un temps défini pour Ubunt , ne minuterie pour configurer différentes alarmes simultanément et Ajuste automatiquement la luminosité de l'écran en fonction du lever et du coucher du soleil .

Spinning pizza --text-spinner BASH script

Le script text-spinner bash crée un effet de pizza qui tourne en faisant défiler les caractères |, /, et \. Cet effet met en évidence le fait que quelque chose "travaille" ou "pense". Pour obtenir "l'effet de rotation", vous souhaitez modifier l'intervalle d'actualisation de Sysmonitor à partir de la valeur par défaut 2 secondes par environ 0.30 secondes.

Voici le script text-spinner bash:

#!/bin/bash

# return '|', '/', '─', '\' sequentially with each call to this script.
# Use ~/.last-text-spinner to store last used

FILE=~/.last-text-spinner

if ! [ -f $FILE ]; then
    echo '|' > $FILE
    exit 124 # ASCII equivalent for '|'. Bash doesn't allow character return codes
fi

LAST=$(cat $FILE) # read last character used

if [[ $LAST == '|' ]]; then
    echo '/' > $FILE
    exit 47 # ASCII equivalent of "/"
Elif [[ $LAST == '/' ]]; then  # NOTE: you must have spaces around " == " else code breaks
    echo '─' > $FILE
    exit 9472 # ASCII equivalent
Elif [[ $LAST == '─' ]]; then
    echo '\' > $FILE # NOTE: must use single quote because double quote BASH reinterprets
    exit 92 # ASCII
else
    echo '|' > $FILE
    exit 124 # ASCII
fi
6
WinEunuuchs2Unix