Paste this into Bash:
get_screen_time() {
since=${1:-today}
until_opt=${2:+--until "$2"}
journalctl --output json -u systemd-logind --since "$since" $until_opt | \
jq -r 'select(.MESSAGE_ID and .__REALTIME_TIMESTAMP) |
if (.MESSAGE | test("Lid opened|Starting systemd-logind|Operation .suspend. finished")) then
.__REALTIME_TIMESTAMP + " start"
elif (.MESSAGE | test("Lid closed|Stopping systemd-logind|system will suspend")) then
.__REALTIME_TIMESTAMP + " stop"
else
empty
end' | \
awk -v current_time=$(date +%s%6N) '
{
if ($2 == "start") {
last_start = $1
} else if ($2 == "stop" && last_start != 0) {
total += ($1 - last_start) / 1000000
last_start = 0
}
}
END {
if (last_start != 0) {
total += (current_time - last_start) / 1000000
}
seconds = int(total)
hours = int(seconds/3600)
minutes = int((seconds%3600)/60)
printf "%02d:%02d", hours, minutes
}'
}
PS1='$(get_screen_time) '$PS1
Now you have screen time for today in your prompt:
00:21 user@asus:~/Documents$
00:21 user@asus:~/Documents$ cd ../Pictures/
00:21 user@asus:~/Pictures$
Cool?
that will help to make the terminal slower!
Honestly I don’t understand what this is showing. I guess it’s how long the lid was open?
Speaking of bash prompt: https://mina86.com/2015/bash-right-prompt/
Relies on Systemd.
Edit: tryuptime. Or, Linux only,/proc/uptime.Editedit:
uptimeis for uptime. For last login islast -n1or “logged in since <time>” islast -s <time>.Oh no, now it will be compatible only with most of the distros out there.
Only Linux distros. Which is, why i mentioned it.
uptimelastworks on BSD’s and not-Systemd’s too.
Relies on bash
Relies on awk
Relies on the Gregorian calendar
Well yeah, that’s what most people use
Cool. Some don’t. Reason enough to mention requirements.



