BASH peut-il s'afficher dans la barre d'état système en tant qu'indicateur d'application?

2

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

    
posée WinEunuuchs2Unix 12.02.2017 - 00:34
la source

1 réponse

5

La meilleure méthode que j'ai trouvée est l ' indicateur du Moniteur système de cet article: webupd8.org - Indicateur d'application Ubuntu affichant 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 Gnome-Shell + app-indicateur et Budgie, rendez-vous sur 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 dans lequel indicator-sysmonitor est disponible:

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

Lancez maintenant 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 le bouton Nouveau pour ajouter un nouveau contrôle
  • Dans le champ Capteur, entrez custom
  • Dans le type de champ Description Bash Indicator _ Dans le champ de commande, tapez le nom de votre script bash, c.-à-d. /mnt/e/bin/indicator-sysmonitor-display
  • Enregistrez votre nouvel indicateur personnalisé
  • Mettez en surbrillance la ligne custom et cliquez sur le bouton Ajouter 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 modifié l'intervalle d'actualisation de 2 secondes à .3 seconde. Pour soutenir "la pizza qui tourne" expliqué ci-dessous.
  • Cliquez maintenant sur le bouton Enregistrer .

Indicateur Sysmonitor en action

Ce .gif montre son apparence lors de la mise à jour de la zone de dépannage Unity d’Ubuntu.

  • Audébutdel'animation,lasortiedenotresystraycontient"Luminosité: 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". Ceci est le réglage de jour pour le niveau de luminosité de mon matériel Intel Backlight (lien ci-dessous).

Script BASH d'indicateur Sysmonitor

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 indiqué à 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 les valeurs Temps restant et Afficher le niveau de luminosité . 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 Ubuntu , Une minuterie pour configurer différentes alarmes simultanément et Ajuster automatiquement la luminosité de l'affichage en fonction du lever et du coucher du soleil respectivement.

Pizza qui tourne - text-spinner script BASH

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 indicateur Sysmonitor à partir de la valeur par défaut 2 secondes pour qu'elle soit d'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
    
réponse donnée WinEunuuchs2Unix 12.02.2017 - 00:34
la source

Lire d'autres questions sur les étiquettes