From 8cd946fdd1bb1bdf7793a7ace8e1ccb9b1340371 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Einar=20J=C3=B8rgen=20Haraldseid?= Date: Tue, 17 Aug 2021 14:59:33 +0200 Subject: [PATCH 01/16] Document that -j/--jpg is an option --- screenshot.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/screenshot.sh b/screenshot.sh index d920547..2649ddf 100755 --- a/screenshot.sh +++ b/screenshot.sh @@ -47,7 +47,7 @@ function take_screenshot() { function show_error() { errcho "Please use one of: -w, --window, -a, --area, -s, --selection," - errcho " -f, --full or no argument at all." + errcho " -f, --full, -j, --jpg or no argument at all." exit 1 } -- 2.47.3 From 64f4eb1eaa044c3a67dd151114f0f2ded460f0af Mon Sep 17 00:00:00 2001 From: =?utf8?q?Einar=20J=C3=B8rgen=20Haraldseid?= Date: Thu, 14 Jul 2022 18:26:23 +0200 Subject: [PATCH 02/16] Fix broken zec.sh --- zec.sh | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/zec.sh b/zec.sh index 75d7c94..d073300 100755 --- a/zec.sh +++ b/zec.sh @@ -2,8 +2,8 @@ LC_NUMERIC="en_US.utf-8" CacheFile="/tmp/coinindex.json" CacheFile2="/tmp/usd-nok.csv" -ApiURL="https://www.worldcoinindex.com/apiservice/json?key=iOU8ko9QJ01Qj1JXoXfAXaoLD" -ApiURL2="https://data.norges-bank.no/api/data/EXR/B.NOK.USD.SP.A?lastNObservations=1&format=csv-:-tab-false-y" +ApiURL="https://www.worldcoinindex.com/apiservice/json?key=srko6KyVB4VgtbfKsCKQibWe7Y6rjEcgN93" +ApiURL2="https://data.norges-bank.no/api/data/EXR/B.USD.NOK.SP.A?lastNObservations=1&format=csv-:-tab-false-y" CacheTime="150" # 150 seconds = 2.5 minutes NumberRegex="^[0-9]+([.][0-9]+)?$" @@ -31,10 +31,16 @@ fi PriceZECinUSD="$(jq '.Markets | .[] | select(.Name=="Zcash") | .Price_usd' ${CacheFile})" PriceUSDinNOK="$(tail -n 1 ${CacheFile2} | cut -f 2 | tr -d \")" PriceZECinNOK="$(echo "${PriceZECinUSD}*${PriceUSDinNOK}" | bc)" +PriceZECinUSDPretty="$(printf "%0.2f\n" $PriceZECinUSD)" +PriceZECinNOKPretty="$(printf "%0.2f\n" $PriceZECinNOK)" ValueUSD="$(echo "${PriceZECinUSD}*${Value}" | bc | sed 's/^\./0./')" ValueNOK="$(echo "${PriceZECinNOK}*${Value}" | bc | sed 's/^\./0./')" ValueUSDPretty="$(printf "%0.4f\n" $ValueUSD)" ValueNOKPretty="$(printf "%0.4f\n" $ValueNOK)" -echo "${Value} ZEC = \$ ${ValueUSDPretty} (about NOK ${ValueNOKPretty})" +if [ -z ${1+x} ]; then + echo "${Value} ZEC = \$ ${ValueUSDPretty} (about NOK ${ValueNOKPretty})" +else + echo "${Value} ZEC = \$ ${ValueUSDPretty} (about NOK ${ValueNOKPretty}) (1 ZEC = \$ ${PriceZECinUSDPretty} / NOK ${PriceZECinNOKPretty})" +fi -- 2.47.3 From d903416fd54b2472e5cf1df37ac85f377beec9cb Mon Sep 17 00:00:00 2001 From: =?utf8?q?Einar=20J=C3=B8rgen=20Haraldseid?= Date: Wed, 8 Feb 2023 09:53:56 +0100 Subject: [PATCH 03/16] =?utf8?q?Automatisk=20l=C3=A5sing=20av=20skjerm?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- autolock.py | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 autolock.py diff --git a/autolock.py b/autolock.py new file mode 100644 index 0000000..0fddaad --- /dev/null +++ b/autolock.py @@ -0,0 +1,48 @@ +# Automatically lock the screen when bluetooth beacon moves out of range +# Requires GNOME Shell + +from beacontools import BeaconScanner, IBeaconFilter, IBeaconAdvertisement +import time +import signal +import dbus + +global isHere, screenSaverSetActive, screenSaverGetActive + +def handler(signum, frame): + scanner.stop() + exit(0) + +def callback(bt_addr, rssi, packet, additional_info): + global isHere + isHere = True + +sessionBus = dbus.SessionBus() +screenSaver = sessionBus.get_object("org.gnome.ScreenSaver", "/org/gnome/ScreenSaver") +screenSaverIface = dbus.Interface(screenSaver, 'org.gnome.ScreenSaver') +screenSaverSetActive = screenSaverIface.get_dbus_method("SetActive") +screenSaverGetActive = screenSaverIface.get_dbus_method("GetActive") + +# To find beacon: +# scan for all iBeacon advertisements regardless from which beacon +#scanner = BeaconScanner(callback, +# packet_filter=IBeaconAdvertisement +#) + +signal.signal(signal.SIGINT, handler) + +while True: + isHere = False + scanner = BeaconScanner(callback, + device_filter=IBeaconFilter(uuid="INSERT YOUR UUID HERE") + ) + scanner.start() + time.sleep(45) + scanner.stop() + + if isHere: + print("Beacon is here") + else: + print("Beacon is gone") + if not screenSaverGetActive(): + print("Locking screen") + screenSaverSetActive(True) -- 2.47.3 From 354034f16f52d2a224ab932a2ac6bca89a327315 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Einar=20J=C3=B8rgen=20Haraldseid?= Date: Wed, 8 Feb 2023 16:31:12 +0100 Subject: [PATCH 04/16] Be more smarter when deciding when to lock screen --- autolock.py | 34 +++++++++++++++++++++++----------- 1 file changed, 23 insertions(+), 11 deletions(-) diff --git a/autolock.py b/autolock.py index 0fddaad..b02642b 100644 --- a/autolock.py +++ b/autolock.py @@ -1,12 +1,14 @@ +#!/usr/bin/env python # Automatically lock the screen when bluetooth beacon moves out of range -# Requires GNOME Shell -from beacontools import BeaconScanner, IBeaconFilter, IBeaconAdvertisement import time +from beacontools import BeaconScanner, IBeaconFilter, IBeaconAdvertisement import signal import dbus +from gi.repository import Gio -global isHere, screenSaverSetActive, screenSaverGetActive +global isHere, beaconTimeout +global screenSaverSetActive, screenSaverGetActive, sessionIdleTime def handler(signum, frame): scanner.stop() @@ -17,12 +19,16 @@ def callback(bt_addr, rssi, packet, additional_info): isHere = True sessionBus = dbus.SessionBus() + screenSaver = sessionBus.get_object("org.gnome.ScreenSaver", "/org/gnome/ScreenSaver") screenSaverIface = dbus.Interface(screenSaver, 'org.gnome.ScreenSaver') screenSaverSetActive = screenSaverIface.get_dbus_method("SetActive") screenSaverGetActive = screenSaverIface.get_dbus_method("GetActive") -# To find beacon: +mutter = sessionBus.get_object('org.gnome.Mutter.IdleMonitor', '/org/gnome/Mutter/IdleMonitor/Core') +mutterIface = dbus.Interface(mutter, 'org.gnome.Mutter.IdleMonitor') +sessionIdleTime = mutterIface.get_dbus_method("GetIdletime") + # scan for all iBeacon advertisements regardless from which beacon #scanner = BeaconScanner(callback, # packet_filter=IBeaconAdvertisement @@ -30,19 +36,25 @@ screenSaverGetActive = screenSaverIface.get_dbus_method("GetActive") signal.signal(signal.SIGINT, handler) +beaconTimeout=0 + while True: isHere = False scanner = BeaconScanner(callback, - device_filter=IBeaconFilter(uuid="INSERT YOUR UUID HERE") + device_filter=IBeaconFilter(uuid="INSERT BEACON UUID HERE") ) scanner.start() - time.sleep(45) + time.sleep(10) scanner.stop() + idleTime = sessionIdleTime() / 1000 if isHere: - print("Beacon is here") + #print("Beacon observed") + beaconTimeout = 0 else: - print("Beacon is gone") - if not screenSaverGetActive(): - print("Locking screen") - screenSaverSetActive(True) + beaconTimeout += 10 + #print("Beacon not observed,", idleTime, "seconds since last activity,", beaconTimeout, "seconds since beacon seen") + if idleTime >= 60 and beaconTimeout >= 60: + if not screenSaverGetActive(): + print("No activity and not seen for at least 60 seconds, locking screen") + screenSaverSetActive(True) -- 2.47.3 From e3f52b30f6c8b191aa48647a5ee1e46f52e6d386 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Einar=20J=C3=B8rgen=20Haraldseid?= Date: Mon, 27 Feb 2023 18:07:32 +0100 Subject: [PATCH 05/16] Flere retter og bacon --- middag.sh | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/middag.sh b/middag.sh index 832b053..ee3fbe9 100755 --- a/middag.sh +++ b/middag.sh @@ -7,6 +7,8 @@ Prep=( 'Gratinert' 'Bakt' 'Fritert' + 'Dampet' + 'Posjert' ) Meat=( @@ -19,14 +21,17 @@ Meat=( 'torsk' 'kotelett' 'løvbiff' + 'sau' + 'egg' ) Sides=( 'poteter' 'ris' - 'wokgrønnsaker' - 'kokte grønnsaker' + 'wokgrønsaker' + 'kokte grønsaker' 'fries' + 'smør, sukker og kanel' 'salat' 'couscous' 'søtpotetfries' @@ -43,4 +48,10 @@ MeatN=$RANDOM SideN=$RANDOM (( SideN %= ${#Sides[@]} )) -echo "${Prep[PrepN]} ${Meat[MeatN]} med ${Sides[SideN]}" +if (( RANDOM % 4 == 0 )); then + Bacon=" og bacon" +else + Bacon="" +fi + +echo "${Prep[PrepN]} ${Meat[MeatN]} med ${Sides[SideN]}${Bacon}" -- 2.47.3 From 2aad40a3b57a1324f7328c6d8547d6372af5eefe Mon Sep 17 00:00:00 2001 From: =?utf8?q?Einar=20J=C3=B8rgen=20Haraldseid?= Date: Wed, 13 Dec 2023 18:49:06 +0100 Subject: [PATCH 06/16] =?utf8?q?Script=20for=20=C3=A5=20beregne=20soloppga?= =?utf8?q?ng=20og=20solnedgang,=20til=20bruk=20med=20raspistill?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- sun.py | 52 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 sun.py diff --git a/sun.py b/sun.py new file mode 100644 index 0000000..c46cc67 --- /dev/null +++ b/sun.py @@ -0,0 +1,52 @@ +#!/usr/bin/python3 +from suncalc import get_position, get_times +from datetime import datetime, timedelta, date + +debug = False +#debug = True + +now = datetime.now() +#now = datetime(2023, 12, 13, 0, 0) +date = now.replace(hour=12, minute=0, second=0, microsecond=0) + +lon = 10.71 +lat = 60.772 +height = 100 + +sun = get_times(date, lon, lat, height) + +if type(sun["nautical_dawn"]) is datetime: + sunup = sun["nautical_dawn"] + timedelta(hours=1) +else: + sunup = now +if type(sun["nautical_dusk"]) is datetime: + sundown = sun["nautical_dusk"] + timedelta(hours=1) +else: + sundown = now + timedelta(hours=23, minutes=59, seconds=50) + +# If sunup is in the future +if now < sunup: + countdown = (sunup - now).total_seconds() + countdown_read = sunup - now + duration = (sundown - sunup).total_seconds() * 1000 + duration_read = sundown - sunup +else: + countdown = 0 + countdown_read = 0 + duration = (sundown - now).total_seconds() * 1000 + duration_read = sundown - now + +if int(duration) < 0: + print("Sun already set, fool") + exit(1) + +if debug: + print(" Now is ", now) + print(" Date is ", date) + print(" Sun up is ", sunup) + print(" Sun down is ", sundown) + print("Countdown is ", countdown_read) + print(" Duration is ", duration_read) + print("") + +print(int(countdown), int(duration), sep='\t') -- 2.47.3 From 61690daa9b77c717dc82f26c81696449140ebded Mon Sep 17 00:00:00 2001 From: =?utf8?q?Einar=20J=C3=B8rgen=20Haraldseid?= Date: Sat, 30 Mar 2024 23:52:02 +0100 Subject: [PATCH 07/16] =?utf8?q?Scan-hjelpeverkt=C3=B8y?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- scan | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100755 scan diff --git a/scan b/scan new file mode 100755 index 0000000..4af4c7d --- /dev/null +++ b/scan @@ -0,0 +1,40 @@ +#!/bin/bash +SANE_DEFAULT_DEVICE="epsonscan2:EPSON Scanner:001:011:esci2:usb:ES00EB:315" +export SANE_DEFAULT_DEVICE +scans=$(ls -1 scan*.jpg | wc -l) + +if [ "$1" == "1" ] || [ "$1" == "en" ]; then + echo "Scanner ett bilde og avslutter, pass på at bildet er plassert oppe til høyre med ca. 1 cm klaring til kantene." + ((scans++)) + file1=$(printf %03d $scans) + if scanimage -x 165 -y 115 --mode Color --resolution=1200 --format=tiff > /tmp/temp.tiff; then + echo "Scanning ferdig, konverterer til jpeg" + convert /tmp/temp.tiff "scan-${file1}.jpg" + echo "Lagret scan-${file1}.jpg" + rm /tmp/temp.tiff + else + echo "Scanning feilet, prøv igjen." + exit 1 + fi +else + echo "Automatisk scanning av to bilder om gangen, pass på at bildene er plassert oppe til høyre med ca. 1 cm klaring fra kantene." + while true; do + ((scans++)) + file1=$(printf %03d $scans) + ((scans++)) + file2=$(printf %03d $scans) + echo "Starter scanning …" + if scanimage -x 165 -y 230 --mode Color --resolution=1200 --format=tiff > /tmp/temp.tiff; then + echo "Scanning ferdig, lagrer bilder" + convert -chop 0x5200+0+0 -gravity South /tmp/temp.tiff "scan-${file1}.jpg" + echo "Lagret scan-${file1}.jpg" + convert -chop 0x5000+0+0 /tmp/temp.tiff "scan-${file2}.jpg" + echo "Lagret scan-${file2}.jpg" + rm /tmp/temp.tiff + else + echo "Scanning feilet, prøv igjen." + exit 1 + fi + read -p "Trykk enter for å scanne igjen, eller ctrl+C for å avslutte" + done +fi -- 2.47.3 From 3fe7c1e67ec1561dbc1aeb75ffa0efa38fe6ba41 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Einar=20J=C3=B8rgen=20Haraldseid?= Date: Tue, 7 May 2024 20:20:57 +0200 Subject: [PATCH 08/16] Script to switch a monitor on and off --- screencontrol.sh | 61 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100755 screencontrol.sh diff --git a/screencontrol.sh b/screencontrol.sh new file mode 100755 index 0000000..b01fc91 --- /dev/null +++ b/screencontrol.sh @@ -0,0 +1,61 @@ +#!/bin/bash +# Script to control and query a connected screen +# For infoscreen purposes +# Tries to use cec-client and falls back to DPMS +# Usage: ./screencontrol.sh [query | on | off] + +export DISPLAY=:0 +if [ -z "${1}" ]; then + set -- "query" +fi + +if [ "${1}" == "query" ]; then + if status=$(echo "pow 0" | cec-client -s -d 1); then + if [[ ${status} =~ (power status: on) ]]; then + echo "Screen is on" + else + echo "Screen is off" + fi + else + if status=$(xset q); then + if [[ ${status} =~ (Monitor is Off) ]]; then + echo "Screen is off" + else + echo "Screen is on" + fi + else + echo "Unable to determine status of screen" + exit 1 + fi + fi +elif [ "${1}" == "on" ]; then + if echo "on 0" | cec-client -s -d 1 >/dev/null; then + xset s off + xset s noblank + xset -dpms + echo "Screen turned on (CEC)" + else + if xset dpms force on; then + xset s off + xset s noblank + xset -dpms + echo "Screen turned on (DPMS)" + else + echo "Unable to turn screen on" + exit 1 + fi + fi +elif [ "${1}" == "off" ]; then + if echo "standby 0" | cec-client -s -d 1 >/dev/null; then + echo "Screen turned off (CEC)" + else + if xset dpms force off; then + echo "Screen turned off (DPMS)" + else + echo "Unable to turn screen off" + fi + fi +else + echo "Error: Unknown command" + exit 1 +fi -- 2.47.3 From f864072b93bf89fc47ef6e4fa265cd3f34a2d94c Mon Sep 17 00:00:00 2001 From: =?utf8?q?Einar=20J=C3=B8rgen=20Haraldseid?= Date: Fri, 13 Sep 2024 09:03:18 +0200 Subject: [PATCH 09/16] Diverse gamle patcher og forbedringer --- screenshot.sh | 36 +++++++++++++++++++++++++++--------- 1 file changed, 27 insertions(+), 9 deletions(-) diff --git a/screenshot.sh b/screenshot.sh index 2649ddf..bf0999c 100755 --- a/screenshot.sh +++ b/screenshot.sh @@ -2,11 +2,15 @@ # A quick and dirty script to take a screenshot, upload it via scp # and put a link to it in the clipboard for easy pasting to i.e. IRC. # It assumes a lot of things, e.g. that ssh to the target host has -# been set up with a working private key, and that xclip and +# been set up with a working logon with private key, and that xclip and # gnome-screenshot is installed. # # If all you have is a hammer, everything looks like a nail. +# TODO: +# * Undo function +# * Check that we don't overwrite an existing file (theoretically possible, but unlikely) + # Settings RemoteUser="einar" RemoteHost="wowbagger.slaskete.net" @@ -32,7 +36,7 @@ function take_screenshot() { mv "/tmp/${FileName}" "${LocalPath}/" else rm "/tmp/${FileName}" - notify-send -i applets-screenshooter "screenshot.sh" "Tried to post image from clipboard, but found no image there." + notify-send -a "screenshot.sh" -i dialog-warning "Ooopsie" "Tried to post image from clipboard, but found no image there." fi else gnome-screenshot -f "${LocalPath}/${FileName}" -p "$@" @@ -41,19 +45,29 @@ function take_screenshot() { scp -q "${LocalPath}/${FileName}" "${RemoteUser}@${RemoteHost}:${RemotePath}" echo -n "${UrlBase}/${FileName}"|xclip -selection p echo -n "${UrlBase}/${FileName}"|xclip -selection c - notify-send -i applets-screenshooter "screenshot.sh" "Screenshot published to ${UrlBase}/${FileName}" + notify-send -a "screenshot.sh" -i applets-screenshooter "Screenshot uploaded" "Screenshot published to ${UrlBase}/${FileName}" fi } -function show_error() { - errcho "Please use one of: -w, --window, -a, --area, -s, --selection," - errcho " -f, --full, -j, --jpg or no argument at all." +function show_help() { + errcho "Usage: screenshot.sh [option]" + errcho "This script wraps gnome-screenshot in order to instantly upload screenshots and get back a URL for sharing to IRC or other social media" + errcho "The default option is to take a screenshot of the whole screen." + errcho "The following options are available:" + errcho "-f, --full Take screenshot of the whole screen" + errcho "-w, --window Take screenshot of the active window" + errcho "-a, --area Take screenshot of an area/selection" + errcho "-s, --selection Take screenshot of an area/selection" + errcho "-c, --clipboard Upload image from paste buffer if present" + errcho "-p, --paste Upload image from paste buffer if present" + errcho "-j, --jpg, --jpeg Convert image from paste buffer to jpeg and upload" + errcho "-h, --help Show this help" exit 1 } case ${1} in -w|--window) - take_screenshot -w -b -e shadow + take_screenshot -w -b ;; -a|--area|-s|--selection) sleep 0.2 @@ -65,11 +79,15 @@ case ${1} in -c|--clipboard|-p|--paste) take_screenshot clipboard ;; - -j|--jpg) + -j|--jpg|--jpeg) take_screenshot jpg ;; + -h|--help) + show_help + ;; *) - show_error + errcho "ERROR: Unknown option." + show_help ;; esac -- 2.47.3 From 0deae0c15a3724b2482160caabf868f842d5602d Mon Sep 17 00:00:00 2001 From: =?utf8?q?Einar=20J=C3=B8rgen=20Haraldseid?= Date: Tue, 3 Dec 2024 21:15:45 +0100 Subject: [PATCH 10/16] =?utf8?q?La=20til=20en=20parser=20for=20=C3=A5=20gj?= =?utf8?q?=C3=B8re=20det=20enklere=20=C3=A5=20scanne=20farger=20med=20Lins?= =?utf8?q?hang=20LS171?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- colorscan.sh | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100755 colorscan.sh diff --git a/colorscan.sh b/colorscan.sh new file mode 100755 index 0000000..bcb9689 --- /dev/null +++ b/colorscan.sh @@ -0,0 +1,25 @@ +#!/bin/bash +n=1 +while read scan; do + if [ "${n}" != 1 ]; then + echo "" + fi + echo "Scan ${n}:" + lab=$(echo "${scan}" | jq -cr '.scan.lab | join(", ")') + lch=$(echo "${scan}" | jq -cr '.scan.lch | join(", ")') + rgb=$(echo "${scan}" | jq -cr '.scan.rgb | join(", ")') + r=$(echo "${rgb}" | cut -f 1 -d "," | tr -d " ") + g=$(echo "${rgb}" | cut -f 2 -d "," | tr -d " ") + b=$(echo "${rgb}" | cut -f 3 -d "," | tr -d " ") + rH=$(printf "%x\n" ${r}) + gH=$(printf "%x\n" ${g}) + bH=$(printf "%x\n" ${b}) + for i in {1..10}; do + echo -e "\033[48;2;${r};${g};${b}m \e[0m" + done + echo "L*a*b: ${lab}" + echo "L*C*h: ${lch}" + echo "RGB: ${rgb}" + echo "HEX: #${rH}${gH}${bH}" + ((n++)) +done < <(bluecolor --format json) -- 2.47.3 From e061f9c4fd5f25a8bf1df1661aea51ffdde0db6d Mon Sep 17 00:00:00 2001 From: =?utf8?q?Einar=20J=C3=B8rgen=20Haraldseid?= Date: Wed, 1 Jan 2025 16:28:18 +0100 Subject: [PATCH 11/16] =?utf8?q?Husk=20zeropad=20p=C3=A5=20hex-verdier?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- colorscan.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/colorscan.sh b/colorscan.sh index bcb9689..c57872a 100755 --- a/colorscan.sh +++ b/colorscan.sh @@ -11,9 +11,9 @@ while read scan; do r=$(echo "${rgb}" | cut -f 1 -d "," | tr -d " ") g=$(echo "${rgb}" | cut -f 2 -d "," | tr -d " ") b=$(echo "${rgb}" | cut -f 3 -d "," | tr -d " ") - rH=$(printf "%x\n" ${r}) - gH=$(printf "%x\n" ${g}) - bH=$(printf "%x\n" ${b}) + rH=$(printf "%02x\n" ${r}) + gH=$(printf "%02x\n" ${g}) + bH=$(printf "%02x\n" ${b}) for i in {1..10}; do echo -e "\033[48;2;${r};${g};${b}m \e[0m" done -- 2.47.3 From e599265f3df99606617ee9104bd8c7675a7f6128 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Einar=20J=C3=B8rgen=20Haraldseid?= Date: Wed, 30 Apr 2025 22:16:10 +0200 Subject: [PATCH 12/16] =?utf8?q?Oppdatering=20for=20=C3=A5=20st=C3=B8tte?= =?utf8?q?=20nyeste=20versjon=20av=20bluecolor?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- colorscan.sh | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/colorscan.sh b/colorscan.sh index c57872a..6386c17 100755 --- a/colorscan.sh +++ b/colorscan.sh @@ -1,13 +1,16 @@ #!/bin/bash n=1 while read scan; do - if [ "${n}" != 1 ]; then + if [[ ! "${scan}" =~ "[\"scan" ]]; then + continue + fi + if [ "${n}" -ne 1 ]; then echo "" fi echo "Scan ${n}:" - lab=$(echo "${scan}" | jq -cr '.scan.lab | join(", ")') - lch=$(echo "${scan}" | jq -cr '.scan.lch | join(", ")') - rgb=$(echo "${scan}" | jq -cr '.scan.rgb | join(", ")') + lab=$(echo "${scan}" | jq -cr '.[2].scan.lab | join(", ")') + lch=$(echo "${scan}" | jq -cr '.[2].scan.lch | join(", ")') + rgb=$(echo "${scan}" | jq -cr '.[2].scan.rgb | join(", ")') r=$(echo "${rgb}" | cut -f 1 -d "," | tr -d " ") g=$(echo "${rgb}" | cut -f 2 -d "," | tr -d " ") b=$(echo "${rgb}" | cut -f 3 -d "," | tr -d " ") @@ -22,4 +25,4 @@ while read scan; do echo "RGB: ${rgb}" echo "HEX: #${rH}${gH}${bH}" ((n++)) -done < <(bluecolor --format json) +done < <(bluecolor --scan --pipe --format json) -- 2.47.3 From 469b0ccccecd12d92d1cb30fdd14eb4457276e42 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Einar=20J=C3=B8rgen=20Haraldseid?= Date: Fri, 9 May 2025 14:16:06 +0200 Subject: [PATCH 13/16] =?utf8?q?Script=20for=20=C3=A5=20generere=20tilfeld?= =?utf8?q?ige=20navn=20som=20er=20mer=20eller=20mindre=20realistiske?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- generer-navneliste.sh | 770 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 770 insertions(+) create mode 100755 generer-navneliste.sh diff --git a/generer-navneliste.sh b/generer-navneliste.sh new file mode 100755 index 0000000..257e765 --- /dev/null +++ b/generer-navneliste.sh @@ -0,0 +1,770 @@ +#!/bin/bash +# Lag kommaseparert liste med tilfeldige for- og etternavn +# Generatoren lager alltid étt etternavn, med eller uten bindestrek + +# Generer så mange som det er bedt om, eller kun ett navn hvis det ikke er oppgitt et gyldig antall +Reg='^[0-9]+$' +if ! [[ ${1} =~ ${Reg} ]]; then + Antall=1 +else + Antall=${1} +fi + +echo "Fornavn,Etternavn" + +while [ "${Antall}" -gt 0 ]; do + # Arrayer med kvinnelige og mannlige fornavn, og etternavn + Fornavn_F=( + 'Ada' + 'Agnes' + 'Aiko' + 'Aina' + 'Akira' + 'Alexis' + 'Alice' + 'Alma' + 'Amalie' + 'Amanda' + 'Amelia' + 'Andrea' + 'Ane' + 'Anette' + 'Anita' + 'Anja' + 'Ann' + 'Anna' + 'Anne' + 'Anneli' + 'Anniken' + 'April' + 'Aslaug' + 'Astrid' + 'Aud' + 'Aurora' + 'Ava' + 'Beate' + 'Benedicte' + 'Bente' + 'Berit' + 'Birgit' + 'Bjørg' + 'Bodil' + 'Bridget' + 'Brit' + 'Britt' + 'Buffy' + 'Camilla' + 'Caroline' + 'Cathrine' + 'Cecilia' + 'Cecilie' + 'Celine' + 'Charlotte' + 'Chen' + 'Chloe' + 'Christina' + 'Christine' + 'Dagny' + 'Desdemona' + 'Desiderata' + 'Donjetë' + 'Ebba' + 'Egwene' + 'Eirin' + 'Eli' + 'Elin' + 'Eline' + 'Elisabeth' + 'Elise' + 'Elisha' + 'Ella' + 'Ellen' + 'Ellinor' + 'Elsa' + 'Else' + 'Emilie' + 'Emily' + 'Emma' + 'Esmerelda' + 'Eva' + 'Farah' + 'Freya' + 'Frida' + 'Gerd' + 'Grace' + 'Greta' + 'Grete' + 'Grethe' + 'Gro' + 'Gry' + 'Gunhild' + 'Gunn' + 'Gunvor' + 'Guro' + 'Hanna' + 'Hannah' + 'Hanne' + 'Hedda' + 'Hege' + 'Heidi' + 'Helene' + 'Helga' + 'Helle' + 'Henriette' + 'Hermine' + 'Hilde' + 'Ida' + 'Ina' + 'Inga' + 'Ingebjørg' + 'Ingeborg' + 'Inger' + 'Ingrid' + 'Ingunn' + 'Ingvild' + 'Irene' + 'Isabella' + 'Iselin' + 'Jade' + 'Jane' + 'Janne' + 'Jeanette' + 'Jenny' + 'Johanne' + 'Jorun' + 'Jorunn' + 'Julia' + 'Julie' + 'June' + 'Kaja' + 'Kajsa' + 'Karen' + 'Kari' + 'Karianne' + 'Karin' + 'Karina' + 'Karoline' + 'Kathrine' + 'Katrine' + 'Kim' + 'Kirsten' + 'Kirsti' + 'Kjersti' + 'Kristin' + 'Kristina' + 'Kristine' + 'Laila' + 'Leah' + 'Lena' + 'Lene' + 'Lill' + 'Lillian' + 'Lilly' + 'Lily' + 'Lina' + 'Linda' + 'Line' + 'Linn' + 'Linnea' + 'Lisa' + 'Lisbeth' + 'Lise' + 'Liv' + 'Live' + 'Lorelai' + 'Lucy' + 'Magnhild' + 'Magrat' + 'Maja' + 'Malene' + 'Malin' + 'Maren' + 'Margit' + 'Margrethe' + 'Mari' + 'Maria' + 'Mariann' + 'Marianne' + 'Marie' + 'Mariko' + 'Marit' + 'Marita' + 'Marta' + 'Marte' + 'Marthe' + 'Martine' + 'Mary' + 'Mathilde' + 'May' + 'Merete' + 'Mia' + 'Min' + 'Mina' + 'Miriam' + 'Mona' + 'Monica' + 'Monika' + 'Natasja' + 'Nessa' + 'Nina' + 'Nora' + 'Oda' + 'Olaug' + 'Olga' + 'Oline' + 'Olivia' + 'Paulina' + 'Pauline' + 'Pernille' + 'Petra' + 'Pia' + 'Ragna' + 'Ragnhild' + 'Randi' + 'Regine' + 'Reidun' + 'Renate' + 'Rigmor' + 'Rikke' + 'Rita' + 'Riwa' + 'Rosa' + 'Ruth' + 'Saga' + 'Sandra' + 'Sara' + 'Sarah' + 'Selma' + 'Signe' + 'Sigrid' + 'Silje' + 'Siri' + 'Sissel' + 'Siv' + 'Sofia' + 'Sofie' + 'Solfrid' + 'Solveig' + 'Sonja' + 'Sophie' + 'Stine' + 'Sunniva' + 'Susanne' + 'Süeda' + 'Synne' + 'Synnøve' + 'Sølvi' + 'Thea' + 'Therese' + 'Thora' + 'Tina' + 'Tiril' + 'Tone' + 'Tonje' + 'Torhild' + 'Toril' + 'Torill' + 'Torunn' + 'Tove' + 'Trine' + 'Trude' + 'Turid' + 'Una' + 'Unni' + 'Valeria' + 'Veronica' + 'Victoria' + 'Vigdis' + 'Vilde' + 'Vilja' + 'Vilma' + 'Wenche' + 'Willow' + 'Yuki' + 'Zoe' + 'Åse' + 'Aase' + 'Åshild' + ) + + Fornavn_M=( + 'Abdinasir' + 'Adrian' + 'Ahmed' + 'Aksel' + 'Alexander' + 'Alf' + 'Alfred' + 'Alv' + 'Amund' + 'Amunder' + 'Anders' + 'Andre' + 'Andreas' + 'Anton' + 'Arne' + 'Arthur' + 'August' + 'Awet' + 'Axel' + 'Benjamin' + 'Benjaminn' + 'Birk' + 'Bjarne' + 'Bjarte' + 'Bjørn' + 'Brumund' + 'Børre' + 'Bård' + 'Carl' + 'Charles' + 'Christoffer' + 'Dag' + 'Daniel' + 'David' + 'Dennis' + 'Edvin' + 'Edward' + 'Egil' + 'Eigil' + 'Einar' + 'Eivind' + 'Elias' + 'Emil' + 'Erik' + 'Ernst' + 'Eskil' + 'Espen' + 'Even' + 'Farzad' + 'Federico' + 'Felix' + 'Filip' + 'Finn' + 'Frank' + 'Fredrik' + 'Frode' + 'Gabriel' + 'Gandalf' + 'Gaus' + 'Gaute' + 'Geir' + 'George' + 'Gisle' + 'Gudmund' + 'Gunnar' + 'Hall' + 'Hallvard' + 'Halvor' + 'Hans' + 'Harald' + 'Helge' + 'Henrik' + 'Henry' + 'Håkon' + 'Haakon' + 'Hårek' + 'Håvard' + 'Inge' + 'Isak' + 'Ivar' + 'Iver' + 'Jack' + 'Jacob' + 'Jahn' + 'Jakob' + 'James' + 'Jan' + 'Jens' + 'Joakim' + 'Johan' + 'Johannes' + 'John' + 'Jon' + 'Jonas' + 'Jonathan' + 'Julian' + 'Jørgen' + 'Jørn' + 'Kark' + 'Karl' + 'Kennet' + 'Kenneth' + 'Kim' + 'Kjartan' + 'Kjell' + 'Klemet' + 'Knut' + 'Kolbjørn' + 'Kristian' + 'Kristoffer' + 'Lambert' + 'Lars' + 'Lasse' + 'Leif' + 'Leiv' + 'Leon' + 'Liam' + 'Lucas' + 'Ludvig' + 'Ludvik' + 'Mads' + 'Magne' + 'Magnus' + 'Marcus' + 'Marius' + 'Martin' + 'Mathias' + 'Matias' + 'Matt' + 'Mattias' + 'Michael' + 'Mohammed' + 'Morten' + 'Muhammed' + 'Nicolai' + 'Nikolai' + 'Nils' + 'Noah' + 'Odd' + 'Oddmund' + 'Oddvar' + 'Odin' + 'Ola' + 'Ole' + 'Oliver' + 'Oscar' + 'Oskar' + 'Ozzy' + 'Patrick' + 'Paul' + 'Peder' + 'Per' + 'Peter' + 'Petter' + 'Pål' + 'Rand' + 'Rasmus' + 'Reidar' + 'Rein' + 'Reiulf' + 'Richard' + 'Roar' + 'Robert' + 'Robin' + 'Rolf' + 'Roms' + 'Rune' + 'Samim' + 'Sander' + 'Sebastian' + 'Sigurd' + 'Sigve' + 'Simen' + 'Simon' + 'Sindre' + 'Stein' + 'Stian' + 'Svein' + 'Sven' + 'Sverre' + 'Terje' + 'Theodor' + 'Thomas' + 'Thor' + 'Tobias' + 'Tomas' + 'Tommy' + 'Tonny' + 'Tor' + 'Torben' + 'Torbjørn' + 'Trent' + 'Trond' + 'Tryggve' + 'Trygve' + 'Ulf' + 'Vagn' + 'Valentin' + 'Vegard' + 'Vetle' + 'Vidar' + 'Viktor' + 'Viljar' + 'William' + 'Xander' + 'Yngvar' + 'Yngve' + 'Øystein' + 'Øyvind' + 'Åge' + ) + + Etternavn_A=( + 'Abrahamsen' + 'Ahmed' + 'Ali' + 'Alstad' + 'Amundsen' + 'Andersen' + 'Andersson' + 'Andreassen' + 'Antonsen' + 'Arnesen' + 'Askeland' + 'Aune' + 'Bakke' + 'Bakken' + 'Balle' + 'Barlund' + 'Behrns' + 'Berg' + 'Bergersen' + 'Berglund' + 'Bergman' + 'Bergström' + 'Bjerke' + 'Bjornstad' + 'Bjørk' + 'Blom' + 'Borgen' + 'Bratland' + 'Bratt' + 'Breivik' + 'Brenden' + 'Bru' + 'Brun' + 'Brynulfsen' + 'Bråten' + 'Braaten' + 'Bråthen' + 'Bugge' + 'Bø' + 'Bøe' + 'Carlsen' + 'Christensen' + 'Christiansen' + 'Cohen' + 'Dahl' + 'Dahlberg' + 'Dal' + 'Dalen' + 'Danielsen' + 'Davidsen' + 'Dybvik' + 'Eide' + 'Eikeland' + 'Eliassen' + 'Ellingsen' + 'Eng' + 'Engen' + 'Enger' + 'Eriksen' + 'Espeland' + 'Fernandez' + 'Fjeld' + 'Fjeldet' + 'Fjell' + 'Flaten' + 'Flood' + 'Foss' + 'Fossum' + 'Fredheim' + 'Fredriksen' + 'Frøyland' + 'Furulund' + 'Gabrielsen' + 'Garcia' + 'Gjerde' + 'Gjertsen' + 'Gonzalez' + 'Gran' + 'Grindheim' + 'Gulbrandsen' + 'Gundersen' + 'Gustavsen' + 'Hagen' + 'Halvorsen' + 'Hammer' + 'Hansen' + 'Haraldseid' + 'Haug' + 'Haugen' + 'Haugland' + 'Haugsrud' + 'Hegge' + 'Hellevik' + 'Henriksen' + 'Hermansen' + 'Hjelle' + 'Hol' + 'Holm' + 'Holmberg' + 'Holter' + 'Hov' + 'Hovland' + 'Husemoen' + 'Høyland' + 'Haaland' + 'Ivanov' + 'Iversen' + 'Jacobsen' + 'Jakobsen' + 'Jamtli' + 'Jensen' + 'Johannessen' + 'Johansen' + 'Johansson' + 'Johnsen' + 'Jørstad' + 'Karlsen' + 'Karlsson' + 'Kim' + 'Kjeldsen' + 'Kjellevold' + 'Kjos' + 'Kleppe' + 'Kleven' + 'Knudsen' + 'Knutsen' + 'Kolstad' + 'Korsvold' + 'Kristensen' + 'Kristiansen' + 'Krogstad' + 'Kvam' + 'Langseth' + 'Larsen' + 'Lee' + 'Lie' + 'Lien' + 'Lindberg' + 'Lindholm' + 'Lopez' + 'Lund' + 'Lundberg' + 'Lunde' + 'Lundeberg' + 'Løkken' + 'Madsen' + 'Martinez' + 'Mo' + 'Moe' + 'Moen' + 'Mohammed' + 'Murstad' + 'Myhre' + 'Nes' + 'Nguyen' + 'Nilsen' + 'Nordheim' + 'Nygård' + 'Nystrøm' + 'Olofsson' + 'Olsen' + 'Patel' + 'Pedersen' + 'Rasmussen' + 'Reinsborg' + 'Rodriguez' + 'Roland' + 'Rønning' + 'Rønningen' + 'Sand' + 'Sandvik' + 'Singh' + 'Skog' + 'Solberg' + 'Stene' + 'Stensrud' + 'Strand' + 'Svensson' + 'Sveum' + 'Sæter' + 'Sørensen' + 'Sørheim' + 'Tangen' + 'Trohaug' + 'Tronæs' + 'Tveit' + 'Vang' + 'Vik' + 'Viken' + 'Wang' + 'Yilmaz' + 'Ødegård' + 'Ødegaard' + 'Aas' + 'Aasen' + 'Åsheim' + 'Aasland' + ) + + # Finner størrelsen på arrayene + Fornavn_F_N=${#Fornavn_F[@]} + Fornavn_M_N=${#Fornavn_M[@]} + Etternavn_A_N=${#Etternavn_A[@]} + + # Finn ut om vi plukke ut en kvinnelig eller mannlig navn + Kjonn=$((RANDOM % 2)) + + # Finn ut om vi vil ha dobbelt fornavn, 1/7 får det + Dobbel_Fornavn=$((RANDOM % 7)) + + # Hvis dobbelt fornavn så skal 1/10 av dem ha bindestrek + if [ ${Dobbel_Fornavn} == 0 ]; then + if [ $((RANDOM % 10)) == 0 ]; then + Fornavn_Skilletegn="-" + else + Fornavn_Skilletegn=" " + fi + fi + + # Finn ut om vi vil ha dobbelt etternavn, 1/10 får det + Dobbel_Etternavn=$((RANDOM % 10)) + + # Hvis dobbelt etternavn så skal 1/8 av dem ha bindestrek + if [ ${Dobbel_Etternavn} == 0 ]; then + if [ $((RANDOM % 8)) == 0 ]; then + Etternavn_Skilletegn="-" + else + Etternavn_Skilletegn=" " + fi + fi + + if [ ${Kjonn} == 0 ]; then + Fornavn_F_I=$((RANDOM % Fornavn_F_N)) + Fornavn=${Fornavn_F[Fornavn_F_I]} + if [ ${Dobbel_Fornavn} == 0 ]; then + Fornavn_F=("${Fornavn_F[@]/${Fornavn}}") + ((Fornavn_F_N--)) + Fornavn_F_I=$((RANDOM % Fornavn_F_N)) + Fornavn="${Fornavn}${Fornavn_Skilletegn}${Fornavn_F[Fornavn_F_I]}" + fi + else + Fornavn_M_I=$((RANDOM % Fornavn_M_N)) + Fornavn=${Fornavn_M[Fornavn_M_I]} + if [ ${Dobbel_Fornavn} == 0 ]; then + Fornavn_M=("${Fornavn_M[@]/${Fornavn}}") + ((Fornavn_M_N--)) + Fornavn_M_I=$((RANDOM % Fornavn_M_N)) + Fornavn="${Fornavn}${Fornavn_Skilletegn}${Fornavn_M[Fornavn_M_I]}" + fi + fi + + Etternavn_A_I=$((RANDOM % Etternavn_A_N)) + Etternavn=${Etternavn_A[Etternavn_A_I]} + if [ ${Dobbel_Etternavn} == 0 ]; then + Etternavn_A=("${Etternavn_A[@]/${Etternavn}}") + ((Fornavn_A_N--)) + Etternavn_A_I=$((RANDOM % Etternavn_A_N)) + if [ "$Etternavn_Skilletegn" == "-" ]; then + Etternavn="${Etternavn}${Etternavn_Skilletegn}${Etternavn_A[Etternavn_A_I]}" + else + Fornavn="${Fornavn}${Etternavn_Skilletegn}${Etternavn_A[Etternavn_A_I]}" + fi + fi + + echo "${Fornavn},${Etternavn}" + ((Antall--)) +done -- 2.47.3 From 0237618b247feefbb422e697fbb157ac471afd56 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Einar=20J=C3=B8rgen=20Haraldseid?= Date: Tue, 10 Mar 2026 20:11:48 +0100 Subject: [PATCH 14/16] don't use endless echo statements --- trollface.sh | 34 ++++++++++++++++++---------------- 1 file changed, 18 insertions(+), 16 deletions(-) diff --git a/trollface.sh b/trollface.sh index d3fc489..5584ad4 100755 --- a/trollface.sh +++ b/trollface.sh @@ -1,17 +1,19 @@ #!/bin/bash -echo " ▄▄▄▄▀▀▀▀▀▀▀▀▄▄▄▄▄▄" -echo " █░░░░▒▒▒▒▒▒▒▒▒▒▒▒░░▀▀▄" -echo " █░░░▒▒▒▒▒▒░░░░░░░░▒▒▒░░█" -echo " █░░░░░░▄██▀▄▄░░░░░▄▄▄░░░░█" -echo " ▄▀▒▄▄▄▒░█▀▀▀▀▄▄█░░░██▄▄█░░░░█" -echo "█░▒█▒▄░▀▄▄▄▀░░░░░░░░█░░░▒▒▒▒▒░█" -echo "█░▒█░█▀▄▄░░░░░█▀░░░░▀▄░░▄▀▀▀▄▒█" -echo " █░▀▄░█▄░█▀▄▄░▀░▀▀░▄▄▀░░░░█░░█" -echo " █░░░▀▄▀█▄▄░█▀▀▀▄▄▄▄▀▀█▀██░█" -echo " █░░░░██░░▀█▄▄▄█▄▄█▄████░█" -echo " █░░░░▀▀▄░█░░░█░█▀██████░█" -echo " ▀▄░░░░░▀▀▄▄▄█▄█▄█▄█▄▀░░█" -echo " ▀▄▄░▒▒▒▒░░░░░░░░░░▒░░░█" -echo " ▀▀▄▄░▒▒▒▒▒▒▒▒▒▒░░░░█" -echo " ▀▄▄▄▄▄░░░░░░░░█" -echo " ▀▀▀▀▀▀▀▀" +cat << EOF + ▄▄▄▄▀▀▀▀▀▀▀▀▄▄▄▄▄▄ + █░░░░▒▒▒▒▒▒▒▒▒▒▒▒░░▀▀▄ + █░░░▒▒▒▒▒▒░░░░░░░░▒▒▒░░█ + █░░░░░░▄██▀▄▄░░░░░▄▄▄░░░░█ + ▄▀▒▄▄▄▒░█▀▀▀▀▄▄█░░░██▄▄█░░░░█ +█░▒█▒▄░▀▄▄▄▀░░░░░░░░█░░░▒▒▒▒▒░█ +█░▒█░█▀▄▄░░░░░█▀░░░░▀▄░░▄▀▀▀▄▒█ + █░▀▄░█▄░█▀▄▄░▀░▀▀░▄▄▀░░░░█░░█ + █░░░▀▄▀█▄▄░█▀▀▀▄▄▄▄▀▀█▀██░█ + █░░░░██░░▀█▄▄▄█▄▄█▄████░█ + █░░░░▀▀▄░█░░░█░█▀██████░█ + ▀▄░░░░░▀▀▄▄▄█▄█▄█▄█▄▀░░█ + ▀▄▄░▒▒▒▒░░░░░░░░░░▒░░░█ + ▀▀▄▄░▒▒▒▒▒▒▒▒▒▒░░░░█ + ▀▄▄▄▄▄░░░░░░░░█ + ▀▀▀▀▀▀▀▀ +EOF -- 2.47.3 From 5eb6a1d40b6d16d28892813c60804dd3d7382f67 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Einar=20J=C3=B8rgen=20Haraldseid?= Date: Tue, 10 Mar 2026 20:13:24 +0100 Subject: [PATCH 15/16] list-inhibitors.sh for listing apps that are blocking screen blanking --- list-inhibitors.sh | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100755 list-inhibitors.sh diff --git a/list-inhibitors.sh b/list-inhibitors.sh new file mode 100755 index 0000000..dfc2527 --- /dev/null +++ b/list-inhibitors.sh @@ -0,0 +1,12 @@ +inhibitors=$(dbus-send --print-reply --dest=org.gnome.SessionManager /org/gnome/SessionManager org.gnome.SessionManager.GetInhibitors 2>/dev/null | awk '/object path/ {print $3}' | tr -d '\"') +if [[ -z "$inhibitors" ]]; then + echo "No inhibitors found." + exit 0 +else + # Loop through each inhibitor and get the application name + for inhibitor in $inhibitors; do + app_id=$(dbus-send --print-reply --dest=org.gnome.SessionManager "$inhibitor" org.gnome.SessionManager.Inhibitor.GetAppId 2>/dev/null | awk -F '"' '/string/ {print $2}') + app_reason=$(dbus-send --print-reply --dest=org.gnome.SessionManager "$inhibitor" org.gnome.SessionManager.Inhibitor.GetReason 2>/dev/null | awk -F '"' '/string/ {print $2}') + echo "Inhibitor: $inhibitor | App: $app_id | Reason: $app_reason" + done +fi -- 2.47.3 From f29f5b82a458901bd0e591d6968fb8bdb4e3b0d9 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Einar=20J=C3=B8rgen=20Haraldseid?= Date: Sat, 18 Apr 2026 12:05:05 +0200 Subject: [PATCH 16/16] Kjapt lite MAC-vendor-oppslagscript --- macvendor.sh | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100755 macvendor.sh diff --git a/macvendor.sh b/macvendor.sh new file mode 100755 index 0000000..c4dd1b2 --- /dev/null +++ b/macvendor.sh @@ -0,0 +1,23 @@ +#!/usr/bin/env bash + +prefixesfile=/home/einar/ownCloud/Datadumper/master_oui.txt + +if [[ ! -f $prefixesfile ]]; then + echo "Could not find MAC prefixes file $prefixesfile, please download from https://raw.githubusercontent.com/Ringmast4r/OUI-Master-Database/main/LISTS/master_oui.txt and save to some suitable " + exit 1 +fi + +hexregex="^[[:xdigit:]]{6,12}$" + +prefix=${1//:/} # strip : +prefix=${prefix//-/} # strip - +prefix=${prefix//./} # strip . +prefix=${prefix^^} # uppercase + +if [[ $prefix =~ $hexregex ]]; then + prefix=${prefix:0:6} # we only need first 6 chars + grep "$prefix" "$prefixesfile" +else + echo "Input parameter does not resemble a MAC address" + exit 1 +fi -- 2.47.3