Script: uptime en status caps lock en num lock

Alles over programmeren in Linux
Gebruikersavatar
Mogenblue
Held
Held
Berichten: 351
Lid geworden op: Wo 18 Okt 2017, 08:27
Locatie: Amsterdam

Script: uptime en status caps lock en num lock

Berichtdoor Mogenblue » Wo 23 Jun 2021, 10:45

Op de werkbalk kun je hulpjes plaatsen die de uptime en status van caps lock en num lock weergeven.
Dat werkt niet altijd even goed. Op de ene computer gaat het goed, op de andere loopt Cinnamon regelmatig vast. Dat is tenminste wat ik ervan merk.
Het is een kleine moeite om Cinnamon te herstarten, je werk raak je daar niet mee kwijt, maar het is toch wel hinderlijk. Er wordt ook steeds gevraagd om die hulpjes uit te schakelen.

Daarom is het makkelijk dat je deze informatie ook met een script op je scherm kan laten zetten. Het is minder geavanceerd als een werkbalkhulpje omdat je het script moet starten om de informatie te zien, maar het werkt wel.

In onderstaande script kun je kiezen om de informatie in een terminal venster te laten zien, of om het via een pup-up venster op het scherm te tonen. De uitvoer die je niet wilt hebben kun je met een # teken deactiveren.

Het script heet uptime.sh en dit staat erin:

Code: Selecteer alles

#!/bin/bash

#--------------------------------------------------------------------------------------------------

# functie tijdverschil: starttijd eindtijd => tijdverschil
# uitvoer is tijdverschil in seconden
# invoer- en uitvoerformaat '2021-01-01 12:54:42' '2021-01-01 12:54:54' => 12
tijdverschil() {

# declareer variabele lokaal en bereken verschil in nanoseconden
local TimeD=$(( $(date '+%s' --date="$2") - $(date '+%s' --date="$1") ))

# plaats een nul voor waarden kleiner dan 1 seconde (,531 wordt 0,531) en rond af op 0 decimalen
printf -v TimeD "%-0.0f" $TimeD

echo $TimeD

}

#--------------------------------------------------------------------------------------------------

# functie showtime: seconden => d h m s
# uitvoer is dagen, uren, minuten en seconden
# invoer- en uitvoerformaat '1823' => 0d 0h 30m 23s
function show_time () {
num=$1
min=0
hour=0
day=0
if((num>59));then
((sec=num%60))
((num=num/60))
if((num>59));then
((min=num%60))
((num=num/60))
if((num>23));then
((hour=num%24))
((day=num/24))
else
((hour=num))
fi
else
((min=num))
fi
else
((sec=num))
fi
echo "$day"d "$hour"h "$min"m "$sec"s
}

#--------------------------------------------------------------------------------------------------

echo .
echo .
echo .
echo .

# boottime
BootTime=$(uptime -s)
CrntTime=$(date +"%Y-%m-%d %H:%M:%S")
# bereken verschil
UpTime=$(tijdverschil "$BootTime" "$CrntTime")
FormatUptime=$(show_time "$UpTime" )
#echo "BootTime=$BootTime, CrntTime=$CrntTime, UpTime=$UpTime, FormatUptime=$FormatUptime"

echo "Current time: $CrntTime"
echo "Up since: $BootTime"
echo "UpTime: $FormatUptime"

echo .
echo .
echo "Toetsenbord status:"
KeyStatus=$( xset -q | grep Caps )
CapStatus=${KeyStatus:8:16}
NumStatus=${KeyStatus:32:16}
echo $CapStatus, $NumStatus

zenity --info --width=375 --text="Up since: $BootTime\nUpTime: $FormatUptime\n\n$CapStatus, $NumStatus"
Er staan twee functies in dit script en ze worden allebei maar één keer gebruikt. Dan had het natuurlijk ook wel zonder kunnen worden geschreven, maar het komt de leesbaarheid wel ten goede.
Dit script kun je met een programmastarter op je buroblad zetten.

De functie show_time is op stackoverflow mooi weergegeven met inspringingen en verschillende kleuren. Zulke opmaak wordt op dit forum dus helaas niet ondersteund.


Referenties:
Convert seconds to hours, minutes, seconds
Check Lock Keys state from command-line

Terug naar “Programmeren”

Wie is er online

Gebruikers op dit forum: Geen geregistreerde gebruikers en 1 gast