diff --git a/audio_mixer b/audio_mixer index 32fddb6..ed83e4a 100755 --- a/audio_mixer +++ b/audio_mixer @@ -1,6 +1,8 @@ -#/usr/bin/env bash +#!/usr/bin/env bash # docstring=simple mixer gui app, for the desktop set -E -o pipefail +shopt -s failglob +export LC_ALL=C.UTF8 mixxc \ --anchor right \ diff --git a/battery b/battery index 736b359..eda06d7 100755 --- a/battery +++ b/battery @@ -1,5 +1,7 @@ #!/usr/bin/env bash # docstring=just shows the current capacity set -E -o pipefail +shopt -s failglob +export LC_ALL=C.UTF8 cat /sys/class/power_supply/BAT0/capacity diff --git a/brght b/brght index cc735e3..ac217a6 100755 --- a/brght +++ b/brght @@ -1,6 +1,8 @@ #!/usr/bin/env bash # docstring=simplifies the brightnessctl command set -E -o pipefail +shopt -s failglob +export LC_ALL=C.UTF8 # when invoked without parameter will print current brightness in percent # it accepts a parameter from 0 to 100 for brightness. Please ommit the % symbol. diff --git a/dlp-trnsrpt b/dlp-trnsrpt index cb6a015..f36619f 100755 --- a/dlp-trnsrpt +++ b/dlp-trnsrpt @@ -1,6 +1,8 @@ #!/usr/bin/env bash # docstring=transcript of youtube videos set -E -o pipefail +shopt -s failglob +export LC_ALL=C.UTF8 TEMP_FOLDER='/tmp/dlp-trnsrpt' mkdir -p "$TEMP_FOLDER" diff --git a/hyprperf b/hyprperf index 9d45779..26969ab 100755 --- a/hyprperf +++ b/hyprperf @@ -1,5 +1,23 @@ -#!/usr/bin/env bash +#!/usr/bin/env python # docstring=disable hyprland blur for performance -set -E -o pipefail +import subprocess as sp +import json -hyprctl keyword decoration:blur:enabled false +def getoption(optionstring): + json_str = sp.run(["hyprctl", "-j", "getoption", optionstring], + capture_output=True, + text=True).stdout + + return json.loads(json_str) + +def set_blur(setstr): + return sp.run(["hyprctl", "keyword", "decoration:blur:enabled", setstr]) + +def main(): + if getoption("decoration:blur:enabled")["int"] == 1: + set_blur("false") + else: + set_blur("true") + +if __name__ == "__main__": + main() diff --git a/list_ips b/list_ips new file mode 100755 index 0000000..14b079d --- /dev/null +++ b/list_ips @@ -0,0 +1,46 @@ +#!/usr/bin/env python +#docstring=dirty tool to simplify the output of ip dramaticly +import subprocess as sp +import json + +CFG = { + "iface_allow_list": ["eth", "enp", "wlp", "wlan"], + "show_ip4": True, + "show_ip6": False, +} + +def filter_interfaces(): + output = json.loads( + sp.run(["ip", "-j", "addr", "show"], + text=True, + capture_output=True).stdout) + filtered_list=[] + for interface in output: + for allowed in CFG["iface_allow_list"]: + if allowed in interface["ifname"]: + filtered_list.append(interface) + return filtered_list + +def ip_string(interface): + conn_list = "" + for conn in interface["addr_info"]: + if conn["family"] == "inet" and CFG["show_ip4"] or conn["family"] == "inet6" and CFG["show_ip6"]: + conn_list += (conn["local"] + "/" + str(conn["prefixlen"])) + ", " + return conn_list.rstrip(", ") + +def pretty(interfaces): + longest_member = 0 + for interface in interfaces: + if len(interface["ifname"]) > longest_member: + longest_member = len(interface["ifname"]) + + for interface in interfaces: + len_diff = longest_member - len(interface["ifname"]) + print(interface["ifname"], ": ", " " * len_diff, ip_string(interface), sep="") + + + +def main(): + pretty(filter_interfaces()) +if __name__ == "__main__": + main() diff --git a/mserve b/mserve index 07123d7..563f193 100755 --- a/mserve +++ b/mserve @@ -1,15 +1,40 @@ -#!/usr/bin/env bash +#!/usr/bin/env python # docstring=serve files with http. -set -E -o pipefail -miniserve \ - --auth=guest:Super9000! \ - --color-scheme-dark=monokai \ - --qrcode \ - --dirs-first \ - --hide-version-footer \ - --show-wget-footer \ - --title="Rano's quick share" +import subprocess as sp +import argparse +CFG = { + "base": [ + "miniserve", + "--auth=guest:Super9000!", + "--color-scheme-dark=monokai", + "--qrcode", + "--dirs-first", + "--hide-version-footer", + "--show-wget-footer", + "--title=Rano's quick share", + ], + "folder": "./" +} +def main(): + ap = argparse.ArgumentParser() + ap.add_argument("-u", "--upload", help="enable upload", action="store_true") + args = ap.parse_args() + + cmd = CFG["base"] + + if args.upload: + cmd.extend(["--upload-files=./", "--overwrite-files"]) + + cmd.append(CFG["folder"]) + + try: + sp.run(cmd) + except KeyboardInterrupt: + print("\ninterrupted by user") + +if __name__ == "__main__": + main() # implement a switch for easy --upload-files=DIR diff --git a/mytools b/mytools index fc44975..806d67c 100755 --- a/mytools +++ b/mytools @@ -1,5 +1,6 @@ #!/usr/bin/env python3 # docstring=lists all tools and their docstrings +import argparse import os import os.path as path @@ -7,6 +8,8 @@ CFG = { "max_lines": 20, "offset": 20 } +SCRIPT_PATH = os.path.dirname(os.path.realpath(__file__)) + def parse_docstring(file_path, max_lines=CFG["max_lines"]): """ @@ -38,15 +41,14 @@ def offset(element, offset=CFG["offset"]): return " " * (offset - element_length) -def main(): +def list_tools(): """ lists all tools and their docstring from the same directory this sits in """ - script_path = os.path.dirname(os.path.realpath(__file__)) - list_dir = sorted(os.listdir(script_path)) + list_dir = sorted(os.listdir(SCRIPT_PATH)) for element in list_dir: - element_path = path.join(script_path, element) + element_path = path.join(SCRIPT_PATH, element) if path.isfile(element_path): print(element, end="") docstring = parse_docstring(element_path) @@ -55,5 +57,16 @@ def main(): print() +def main(): + ap = argparse.ArgumentParser() + ap.add_argument("-p", "--path", help="output path to tools directory", action="store_true") + args = ap.parse_args() + + if args.path: + print(SCRIPT_PATH) + else: + list_tools() + + if __name__ == "__main__": main() diff --git a/nstore-find b/nstore-find index 27999e1..0a5820d 100755 --- a/nstore-find +++ b/nstore-find @@ -1,5 +1,7 @@ #!/usr/bin/env bash # docstring=searches the nix store with find set -E -o pipefail +shopt -s failglob +export LC_ALL=C.UTF8 find /nix/store/ -maxdepth 1 -iname '*'"$@"'*' diff --git a/nswitch b/nswitch index 4bfdec9..7f5e213 100755 --- a/nswitch +++ b/nswitch @@ -2,21 +2,27 @@ # from https://github.com/0atman/noboilerplate/blob/main/scripts/38-nixos.md#dont-use-nix-env # docstring=quick edit (or ling xD) for nixos config set -E -o pipefail +shopt -s failglob +export LC_ALL=C.UTF8 cd ~/Projects/NixOS/ nvim -nix fmt . &>/dev/null -git diff -U0 *.nix -echo "Do you want to rebuild NixOS? [y/N]" -read -r YESNO +printf ">>> auto formating ..." +nix fmt . &> /dev/null +printf " DONE!\n" + +git diff -U0 # "*.nix" + +printf ">>> Do you want to rebuild NixOS? [y/N]\n" +printf "<<< " && read -r YESNO if ! [[ "${YESNO,,}" == "y" ]]; then - echo "Exiting ..." + printf ">>> Exiting ...\n" exit 1 fi -echo "Rebuilding NixOS" -sudo nixos-rebuild switch &>nixos-switch.log || ( - cat nixos-switch.log | grep --color error && false) +printf ">>> Rebuilding NixOS\n" +sudo nixos-rebuild switch | tee nixos-switch.log || ( + grep --color error nixos-switch.log && false) gen=$(nixos-rebuild list-generations | grep current) git commit -am "$gen" diff --git a/remote-audio b/remote-audio new file mode 100755 index 0000000..d50540e --- /dev/null +++ b/remote-audio @@ -0,0 +1,30 @@ +#!/usr/bin/env bash +#docstring=remote audio through roc-toolkit +#!TODO! use list_ips +#roc-recv -s rtp+rs8m://0.0.0.0:10001 -r rs8m://0.0.0.0:10002 -o alsa://default +#roc-send -s rtp+rs8m://192.168.178.40:10001 -r rs8m://192.168.178.40:10002 -i alsa://default +set -E -o pipefail +shopt -s failglob +export LC_ALL=C.UTF8 + +start() { + roc-recv -s rtp+rs8m://0.0.0.0:10001 -r rs8m://0.0.0.0:10002 -o alsa://default & + roc-send -s rtp+rs8m://192.168.178.40:10001 -r rs8m://192.168.178.40:10002 -i alsa://default & +} + +stop() { + killall roc-send + killall roc-recv +} + +stop9() { + killall -9 roc-send + killall -9 roc-recv +} + +if [[ -z "$1" ]]; then + #start() + start +else + $1 +fi diff --git a/rustdesk_profile b/rustdesk_profile index c2fbec3..332adff 100755 --- a/rustdesk_profile +++ b/rustdesk_profile @@ -1,6 +1,8 @@ #!/usr/bin/env bash # docstring=have and create multiple rustdesk profiles set -E -o pipefail +shopt -s failglob +export LC_ALL=C.UTF8 # define frist element in argument list as profile name RUSTDESK_PROFILE="$1" diff --git a/screenshot b/screenshot index c2c7ce2..a2af902 100755 --- a/screenshot +++ b/screenshot @@ -1,5 +1,7 @@ #!/usr/bin/env bash # docstring=do a screenshots on wayland compositors set -E -o pipefail +shopt -s failglob +export LC_ALL=C.UTF8 grim -g "$(slurp -o -r -c '#ff0000ff')" - | satty --filename - --fullscreen --output-filename ~/Media/Pictures/Screenshots/satty-$(date '+%Y%m%d-%H:%M:%S').png diff --git a/webcam b/webcam index 10e75fb..8fc6d6d 100755 --- a/webcam +++ b/webcam @@ -1,6 +1,8 @@ #!/usr/bin/env bash # docstring=open the webcam or v4l2 /dev/video* device set -E -o pipefail +shopt -s failglob +export LC_ALL=C.UTF8 if [[ "-h" == "$1" ]]; then echo "-l list devices"