diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..806ddd9 --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +### emacs ### +*~ +\#*\# diff --git a/README.md b/README.md index f071aaa..46d94bb 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,3 @@ # kb-layout-caps-led + Switching on and off capslock led according to the keyboard layout diff --git a/daemons/gnome-kb-layout-watcher.service b/daemons/gnome-kb-layout-watcher.service new file mode 100644 index 0000000..b3576ba --- /dev/null +++ b/daemons/gnome-kb-layout-watcher.service @@ -0,0 +1,24 @@ +[Unit] +Description=Gnome-KB-Layout-Watcher + +[Service] +Type=simple +Restart=always +RestartSec=1 +PIDFile=/tmp/gnome-kb-layout-watcher.pid +WorkingDirectory=/tmp/ + +#User=bvn13 +#Group=bvn13 + +OOMScoreAdjust=-1000 + +ExecStart=/bin/bash /home/bvn13/develop/kb-layout-caps-led/scripts/gnome-kb-layout-watcher.sh +ExecStop=kill -0 `cat /tmp/gnome-kb-layout-watcher.pid` +ExecReload=kill -0 `cat /tmp/gnome-kb-layout-watcher.pid` && /bin/bash /home/bvn13/develop/kb-layout-caps-led/scripts/gnome-kb-layout-watcher.sh + +TimeoutSec=300 +TimeoutStartSec=0 + +[Install] +WantedBy=default.target diff --git a/daemons/kb-layout-signal-watcher.service b/daemons/kb-layout-signal-watcher.service new file mode 100644 index 0000000..d7c2907 --- /dev/null +++ b/daemons/kb-layout-signal-watcher.service @@ -0,0 +1,27 @@ +[Unit] +Description=KB-Layout-Signal-Watcher +After=network.target + +[Service] +Type=simple +Restart=always +RestartSec=1 +PIDFile=/tmp/kb-layout-signal-watcher.pid +WorkingDirectory=/tmp/ + +User=root +#Group=root + +OOMScoreAdjust=-1000 + +Environment=PATH=/bin/ + +ExecStart=/bin/bash /home/bvn13/develop/kb-layout-caps-led/scripts/kb-layout-signal-watcher.sh +ExecStop=kill -0 `cat /tmp/kb-layout-signal-watcher.pid` +ExecReload=kill -0 `cat /tmp/kb-layout-signal-watcher.pid` && /bin/bash /home/bvn13/develop/kb-layout-caps-led/scripts/kb-layout-signal-watcher.sh + +TimeoutSec=300 +TimeoutStartSec=0 + +[Install] +WantedBy=multi-user.target diff --git a/draft/get-current-layout.sh b/draft/get-current-layout.sh new file mode 100755 index 0000000..170f0d0 --- /dev/null +++ b/draft/get-current-layout.sh @@ -0,0 +1,3 @@ +#!/bin/bash + +gsettings get org.gnome.desktop.input-sources mru-sources | sed -e 's!\[!!g; s!\]!!g; s!), (!,!g; s!(!!; s!)!!g; s! !!g;' | awk -F, '{print $2}' | sed "s/'//g" diff --git a/draft/get-main-layout.sh b/draft/get-main-layout.sh new file mode 100755 index 0000000..cb06a1c --- /dev/null +++ b/draft/get-main-layout.sh @@ -0,0 +1,5 @@ +#!/bin/bash + +#gsettings get org.gnome.desktop.input-sources mru-sources + +gsettings get org.gnome.desktop.input-sources sources | sed -e 's!\[!!g; s!\]!!g; s!), (!,!g; s!(!!; s!)!!g; s! !!g;' | awk -F, '{print $2}' | sed "s/'//g" diff --git a/draft/turn-on.sh b/draft/turn-on.sh new file mode 100755 index 0000000..3424ce9 --- /dev/null +++ b/draft/turn-on.sh @@ -0,0 +1,3 @@ +#!/bin/bash + +echo 1 | sudo tee '/sys/class/leds/input3::capslock/brightness' diff --git a/scripts/gnome-kb-layout-watcher.sh b/scripts/gnome-kb-layout-watcher.sh new file mode 100644 index 0000000..b9adb08 --- /dev/null +++ b/scripts/gnome-kb-layout-watcher.sh @@ -0,0 +1,18 @@ +#!/bin/bash + +echo $$ > /tmp/gnome-kb-layout-watcher.pid + +MAIN_KB_LAYOUT=$(gsettings get org.gnome.desktop.input-sources sources | sed -e 's!\[!!g; s!\]!!g; s!), (!,!g; s!(!!; s!)!!g; s! !!g;' | awk -F, '{print $2}' | sed "s/'//g") + +while : +do + CURRENT_KB_LAYOUT=$(gsettings get org.gnome.desktop.input-sources mru-sources | sed -e 's!\[!!g; s!\]!!g; s!), (!,!g; s!(!!; s!)!!g; s! !!g;' | awk -F, '{print $2}' | sed "s/'//g") + + if [[ "$CURRENT_KB_LAYOUT" == "$MAIN_KB_LAYOUT" ]]; then + echo "1" > /tmp/kb-layout + else + echo "0" > /tmp/kb-layout + fi + + sleep .1 +done diff --git a/scripts/kb-layout-signal-watcher.sh b/scripts/kb-layout-signal-watcher.sh new file mode 100644 index 0000000..9f44326 --- /dev/null +++ b/scripts/kb-layout-signal-watcher.sh @@ -0,0 +1,27 @@ +#!/bin/bash + +echo $$ > /tmp/kb-layout-signal-watcher.pid + +CAPS_INPUT=$(ls /sys/class/leds/ | grep caps | head -n 1) + +echo $CAPS_INPUT + +PREVIOUS_KB_LAYOUT="" + +while : +do + CURRENT_KB_LAYOUT=$(cat /tmp/kb-layout) + + if ! [[ "$PREVIOUS_KB_LAYOUT" == "$CURRENT_KB_LAYOUT" ]]; then + if [[ "$CURRENT_KB_LAYOUT" == "1" ]]; then + echo 0 + echo 0 | sudo tee "/sys/class/leds/$CAPS_INPUT/brightness" + else + echo 1 + echo 1 | sudo tee "/sys/class/leds/$CAPS_INPUT/brightness" + fi + PREVIOUS_KB_LAYOUT="$CURRENT_KB_LAYOUT" + fi + + sleep .1 +done