| @@ -0,0 +1,24 @@ | |||||
| #!/usr/bin/env bash | |||||
| # 0 = Normal/Balanced | |||||
| # 1 = Boost | |||||
| # 2 = Silent. | |||||
| MODELIST=("Balanced" "Boost" "Silent") | |||||
| INTERFACE="/sys/devices/platform/asus-nb-wmi/throttle_thermal_policy" | |||||
| CURRENT_MODE=$(cat ${INTERFACE}) | |||||
| MODE=${CURRENT_MODE} | |||||
| if [[ ! ${1} ]]; then | |||||
| [[ ${MODE} == 2 ]] && MODE=0 || let MODE+=1 | |||||
| else | |||||
| MODE=${1} | |||||
| fi | |||||
| echo ${MODE} > ${INTERFACE} | |||||
| CHECK_MODE=$(cat ${INTERFACE}) | |||||
| notify-send "Fan mode changed" "${MODELIST[${CURRENT_MODE}]} -> ${MODELIST[${CHECK_MODE}]}" | |||||
| @@ -0,0 +1,14 @@ | |||||
| #!/usr/bin/env bash | |||||
| init () { | |||||
| kill $(pidof redshift) | |||||
| fanmode.sh 1 | |||||
| } | |||||
| deinit () { | |||||
| exec redshift & | |||||
| fanmode.sh 0 | |||||
| } | |||||
| init && /usr/bin/prime-run $@ && deinit | |||||
| @@ -0,0 +1,33 @@ | |||||
| #!/bin/sh | |||||
| # VPN | |||||
| NMCONN="49088a1e-18c2-48aa-a664-f212eb83a727" | |||||
| # RDP | |||||
| DEF_RESOLUTION="1920x1080" | |||||
| DRIVE="work,${HOME}/Documents/Work" | |||||
| DOMAIN="$(pass show Work/AD-LOGIN | awk '/domain:/ {print $2}')" | |||||
| USER="$(pass show Work/AD-LOGIN | awk '/user:/ {print $2}')" | |||||
| REMOTE="$(pass show Work/AD-LOGIN | awk '/remote:/ {print $2}')" | |||||
| rdp() { | |||||
| # alternative to "dynamic-resolution" is "smart-sizing" | |||||
| xfreerdp /network:lan /gdi:hw +glyph-cache +fonts +aero \ | |||||
| /bpp:32 /size:${DEF_RESOLUTION} /dynamic-resolution \ | |||||
| /audio-mode:0 /sound:sys:pulse /microphone:sys:pulse \ | |||||
| /kbd:German /drive:${DRIVE} \ | |||||
| +auto-reconnect /auto-reconnect-max-retries:5 \ | |||||
| /d:${DOMAIN} /u:${USER} /v:${REMOTE} /p:$(zenity --entry \ | |||||
| --title="Password" --text="Enter your _password:" --hide-text) | |||||
| zenity --question --title="Disconnect?" \ | |||||
| --text="RDP connection closed. Do you want to close the VPN connection too?" && \ | |||||
| nmcli con down ${NMCONN} | |||||
| } | |||||
| if [ $(nmcli con show ${NMCONN} | awk '/GENERAL.STATE/ {print $2}') == "activated" ]; then | |||||
| rdp | |||||
| else | |||||
| nmcli --ask con up ${NMCONN} & | |||||
| rdp | |||||
| fi | |||||
| @@ -0,0 +1,95 @@ | |||||
| #!/usr/bin/env bash | |||||
| #============================================================================== | |||||
| #title : sanemime.sh | |||||
| #description : Resets MIMe configuration to sane defaults in case any shitty | |||||
| # software broke it. | |||||
| #author : hmk | |||||
| #date : 20210620 | |||||
| #version : 0.4 | |||||
| #============================================================================== | |||||
| cp ${HOME}/.config/mimeapps.list ${HOME}/.config/mimeapps.list.bak | |||||
| BROWSER=/usr/share/applications/firefox.desktop | |||||
| EMAIL=${HOME}/.local/share/applications/neomutt.desktop | |||||
| #IMAGE_VIEWER=/usr/share/applications/feh.desktop | |||||
| IMAGE_VIEWER=/usr/share/applications/sxiv.desktop | |||||
| VIDEO_VIEWER=/usr/share/applications/mpv.desktop | |||||
| PDF_VIEWER=/usr/share/applications/org.pwmt.zathura-pdf-mupdf.desktop | |||||
| MSTEAMS=${HOME}/.local/share/applications/teams.desktop | |||||
| TS3=${HOME}/.local/share/applications/teamspeak.desktop | |||||
| ZOOM=${HOME}/.local/share/applications/zoom.desktop | |||||
| # Set default browser | |||||
| BROWSER_NAME=$(awk -F= '/^Name=/ {print $2;exit;}' ${BROWSER}) | |||||
| IFS=';' read -ra types <<< $(awk -F= '/MimeType/ {print $2}' ${BROWSER}) | |||||
| for type in ${types[@]}; do | |||||
| echo "Setting ${type} to ${BROWSER_NAME}" | |||||
| xdg-mime default $(basename ${BROWSER}) ${type} | |||||
| done | |||||
| # Set default E-Mail client | |||||
| EMAIL_NAME=$(awk -F= '/^Name=/ {print $2;exit;}' ${EMAIL}) | |||||
| IFS=';' read -ra types <<< $(awk -F= '/MimeType/ {print $2}' ${EMAIL}) | |||||
| for type in ${types[@]}; do | |||||
| echo "Setting ${type} to ${EMAIL_NAME}" | |||||
| xdg-mime default $(basename ${EMAIL}) ${type} | |||||
| done | |||||
| # Set default image viewer | |||||
| IMAGE_VIEWER_NAME=$(awk -F= '/^Name=/ {print $2;exit;}' ${IMAGE_VIEWER}) | |||||
| IFS=';' read -ra types <<< $(awk -F= '/MimeType/ {print $2}' ${IMAGE_VIEWER}) | |||||
| for type in ${types[@]}; do | |||||
| if [[ ${type} =~ ^image.*$ ]]; then | |||||
| echo "Setting ${type} to ${IMAGE_VIEWER_NAME}" | |||||
| xdg-mime default $(basename ${IMAGE_VIEWER}) ${type} | |||||
| fi | |||||
| done | |||||
| # Set default video viewer | |||||
| VIDEO_VIEWER_NAME=$(awk -F= '/^Name=/ {print $2;exit;}' ${VIDEO_VIEWER}) | |||||
| IFS=';' read -ra types <<< $(awk -F= '/MimeType/ {print $2}' ${VIDEO_VIEWER}) | |||||
| for type in ${types[@]}; do | |||||
| if [[ ${type} =~ ^video.*$ ]]; then | |||||
| echo "Setting ${type} to ${VIDEO_VIEWER_NAME}" | |||||
| xdg-mime default $(basename ${VIDEO_VIEWER}) ${type} | |||||
| fi | |||||
| done | |||||
| # Set default PDF viewer | |||||
| PDF_VIEWER_NAME=$(awk -F= '/^Name=/ {print $2;exit;}' ${PDF_VIEWER}) | |||||
| IFS=';' read -ra types <<< $(awk -F= '/MimeType/ {print $2}' ${PDF_VIEWER}) | |||||
| for type in ${types[@]}; do | |||||
| if [[ ${type} =~ ^application.*$ ]]; then | |||||
| echo "Setting ${type} to ${PDF_VIEWER_NAME}" | |||||
| xdg-mime default $(basename ${PDF_VIEWER}) ${type} | |||||
| fi | |||||
| done | |||||
| # Set communication applications | |||||
| MSTEAMS_NAME=$(awk -F= '/^Name=/ {print $2;exit;}' ${MSTEAMS}) | |||||
| IFS=';' read -ra types <<< $(awk -F= '/MimeType/ {print $2}' ${MSTEAMS}) | |||||
| for type in ${types[@]}; do | |||||
| if [[ ${type} =~ ^x-scheme-handler.*$ ]]; then | |||||
| echo "Setting ${type} to ${MSTEAMS_NAME}" | |||||
| xdg-mime default $(basename ${MSTEAMS}) ${type} | |||||
| fi | |||||
| done | |||||
| TS3_NAME=$(awk -F= '/^Name=/ {print $2;exit;}' ${TS3}) | |||||
| IFS=';' read -ra types <<< $(awk -F= '/MimeType/ {print $2}' ${TS3}) | |||||
| for type in ${types[@]}; do | |||||
| if [[ ${type} =~ ^x-scheme-handler.*$ ]]; then | |||||
| echo "Setting ${type} to ${TS3_NAME}" | |||||
| xdg-mime default $(basename ${TS3}) ${type} | |||||
| fi | |||||
| done | |||||
| ZOOM_NAME=$(awk -F= '/^Name=/ {print $2;exit;}' ${ZOOM}) | |||||
| IFS=';' read -ra types <<< $(awk -F= '/MimeType/ {print $2}' ${ZOOM}) | |||||
| for type in ${types[@]}; do | |||||
| if [[ ${type} =~ ^x-scheme-handler.*$ ]]; then | |||||
| echo "Setting ${type} to ${ZOOM_NAME}" | |||||
| xdg-mime default $(basename ${ZOOM}) ${type} | |||||
| fi | |||||
| done | |||||
| @@ -0,0 +1,68 @@ | |||||
| #!/bin/bash | |||||
| function unlock { | |||||
| ### Activates the screen and unlocks the phone | |||||
| # Reads the current screen state eturns any combination of ON/OFF and | |||||
| # LOCKED/UNLOCKED (i.e. OFF_LOCKED). | |||||
| # Works only on NFC enabled phones but alternative methods exist. | |||||
| IFS='_' read -ra screenstate <<< $(adb shell dumpsys nfc | awk -F'=' \ | |||||
| '/mScreenState/ {print $2}') | |||||
| # Emulate Power-Button press if screen is OFF. | |||||
| [[ ${screenstate[0]} == "OFF" ]] && adb shell input keyevent 26 && \ | |||||
| echo Screen activated | |||||
| # Emulate Menu-button press if phone is locked. Requires the phone to | |||||
| # unlock without PIN or password. | |||||
| [[ ${screenstate[1]} == "LOCKED" ]] && adb shell input keyevent 82 && \ | |||||
| echo Device unlocked | |||||
| } | |||||
| function blank { | |||||
| ### Blanks the screen after X seconds | |||||
| sleep ${1} | |||||
| IFS='_' read -ra screenstate <<< $(adb shell dumpsys nfc | awk -F'=' \ | |||||
| '/mScreenState/ {print $2}') | |||||
| [[ ${screenstate[0]} == "ON" ]] && adb shell input keyevent 26 && \ | |||||
| echo Screen deactivated | |||||
| } | |||||
| function end { | |||||
| ### Cleans up after exiting | |||||
| # Stop DroidCamX on device | |||||
| echo "Stopping DroidCamX" | |||||
| adb shell am force-stop com.dev47apps.droidcamx | |||||
| # blank device | |||||
| blank 0 | |||||
| } | |||||
| # Unlock phone | |||||
| unlock | |||||
| # Start DroidCamX app, intent may vary for free DroidCam version | |||||
| echo "(Re-)Starting DroidCamX" | |||||
| adb shell << EOF | |||||
| am force-stop com.dev47apps.droidcamx | |||||
| am start -n com.dev47apps.droidcamx/com.dev47apps.droidcamx.DroidCamX | |||||
| EOF | |||||
| # Wait some seconds for the app to settle | |||||
| sleep 3 | |||||
| # Initiate screen blanking in X seconds (mind the background function "&") | |||||
| x=10 | |||||
| blank ${x} & | |||||
| # Start droidcam binary | |||||
| # 1920x1080 breaks Skype! | |||||
| echo "" | |||||
| echo "+-------------------------------------------------------------+" | |||||
| echo "| |" | |||||
| echo "| SCREEN WILL BLANK IN ${x} SECONDS. CONNECT WITHIN THIS LIMIT! |" | |||||
| echo "| |" | |||||
| echo "+-------------------------------------------------------------+" | |||||
| echo "" | |||||
| /usr/bin/droidcam -v -dev=/dev/video10 -size=1280x720 adb 4747 > /dev/null | |||||
| #/usr/bin/droidcam -v -dev=/dev/video10 -size=1920x1080 adb 4747 > /dev/null | |||||
| # Cleanup when droidcam binary exited | |||||
| end | |||||