diff options
Diffstat (limited to 'laptop')
-rwxr-xr-x | laptop/.bin/backlight | 47 | ||||
-rwxr-xr-x | laptop/.bin/import | 11 | ||||
-rwxr-xr-x | laptop/.bin/numkeys | 57 | ||||
-rwxr-xr-x | laptop/.bin/sc | 19 | ||||
-rwxr-xr-x | laptop/.bin/setup-inputs | 18 | ||||
-rwxr-xr-x | laptop/.bin/tv | 15 | ||||
-rwxr-xr-x | laptop/.bin/volume | 45 | ||||
-rwxr-xr-x | laptop/.bin/vscreen | 16 | ||||
-rwxr-xr-x | laptop/.bin/watch-kbd | 14 | ||||
-rwxr-xr-x | laptop/.bin/webcam | 5 | ||||
-rw-r--r-- | laptop/.config/sh/rc.d/laptop | 1 | ||||
-rw-r--r-- | laptop/.config/systemd/user/watch-kbd.service | 6 | ||||
-rw-r--r-- | laptop/Makefile | 9 |
13 files changed, 263 insertions, 0 deletions
diff --git a/laptop/.bin/backlight b/laptop/.bin/backlight new file mode 100755 index 0000000..314e874 --- /dev/null +++ b/laptop/.bin/backlight @@ -0,0 +1,47 @@ +#!/usr/bin/env perl +use strict; +use warnings; +use 5.014; + +my @levels = ( + 1, + 2, + 4, + 8, + 16, + 31, + 63, + 125, + 250, + 500, + 1000, +); +chomp(my $current = `xbacklight -getf`); +$current = int($current * 10); +my $idx; +for my $i (0..$#levels) { + my $level = $levels[$i]; + $idx = $i; + last if $level >= $current; +} + +my $inc; +if ($ARGV[0] eq 'inc') { + $inc = 1; +} +elsif ($ARGV[0] eq 'dec') { + $inc = -1; +} +elsif ($ARGV[0] eq 'get') { + say $idx * 10; + exit; +} +else { + die "unknown arg '$ARGV[0]'"; +} + +my $new_idx = $idx + $inc; +if ($new_idx >= 0 && $new_idx <= $#levels) { + my $new_level = $levels[$new_idx] * 0.1; + system("xbacklight -set $new_level"); +} diff --git a/laptop/.bin/import b/laptop/.bin/import new file mode 100755 index 0000000..ea4f1f2 --- /dev/null +++ b/laptop/.bin/import @@ -0,0 +1,11 @@ +#!/bin/sh + +services="" +trap 'for service in $services; do systemctl --user start $service; done' EXIT +for service in unclutter picom; do + if [ "$(systemctl --user show --property MainPID --value "$service")" != 0 ]; then + systemctl --user stop "$service" + services="$service $services" + fi +done +/usr/bin/import "$@" diff --git a/laptop/.bin/numkeys b/laptop/.bin/numkeys new file mode 100755 index 0000000..9b284bb --- /dev/null +++ b/laptop/.bin/numkeys @@ -0,0 +1,57 @@ +#!/bin/sh +set -eu +set -o pipefail + +on() { + xmodmap -e 'keycode 10 = exclam 1' + xmodmap -e 'keycode 11 = at 2' + xmodmap -e 'keycode 12 = numbersign 3' + xmodmap -e 'keycode 13 = dollar 4' + xmodmap -e 'keycode 14 = percent 5' + xmodmap -e 'keycode 15 = asciicircum 6' + xmodmap -e 'keycode 16 = ampersand 7' + xmodmap -e 'keycode 17 = asterisk 8' + xmodmap -e 'keycode 18 = parenleft 9' + xmodmap -e 'keycode 19 = parenright 0' + xmodmap -e 'keycode 20 = underscore minus' + xmodmap -e 'keycode 34 = braceleft bracketleft' + xmodmap -e 'keycode 35 = braceright bracketright' + xmodmap -e 'keycode 49 = asciitilde grave' + xmodmap -e 'keycode 51 = bar backslash' +} + +off() { + xmodmap -e 'keycode 10 = 1 exclam' + xmodmap -e 'keycode 11 = 2 at' + xmodmap -e 'keycode 12 = 3 numbersign' + xmodmap -e 'keycode 13 = 4 dollar' + xmodmap -e 'keycode 14 = 5 percent' + xmodmap -e 'keycode 15 = 6 asciicircum' + xmodmap -e 'keycode 16 = 7 ampersand' + xmodmap -e 'keycode 17 = 8 asterisk' + xmodmap -e 'keycode 18 = 9 parenleft' + xmodmap -e 'keycode 19 = 0 parenright' + xmodmap -e 'keycode 20 = minus underscore' + xmodmap -e 'keycode 34 = bracketleft braceleft' + xmodmap -e 'keycode 35 = bracketright braceright' + xmodmap -e 'keycode 49 = grave asciitilde' + xmodmap -e 'keycode 51 = backslash bar' +} + +toggle() { + if xmodmap -pk | grep -q '(1).*(exclam).*(1).*(exclam)'; then + on + else + off + fi +} + +case "$1" in +on) on ;; +off) off ;; +toggle) toggle ;; +*) + echo invalid 1>&2 + exit 1 + ;; +esac diff --git a/laptop/.bin/sc b/laptop/.bin/sc new file mode 100755 index 0000000..614a1bc --- /dev/null +++ b/laptop/.bin/sc @@ -0,0 +1,19 @@ +#!/bin/sh + +case "$1" in +on) + xset s 300 5 + xset dpms 600 600 600 + ;; +off) + xset s off + xset dpms 0 0 0 + ;; +q) + xset q | perl -nlE'print if ((/^(:?Screen Saver|DPMS)/.../^[^\s]/) && /^(:?Screen Saver|DPMS|\s)/)' + ;; +*) + echo "$(basename "$0"): unknown argument '$1'" >&2 + exit 1 + ;; +esac diff --git a/laptop/.bin/setup-inputs b/laptop/.bin/setup-inputs new file mode 100755 index 0000000..cd1b4cf --- /dev/null +++ b/laptop/.bin/setup-inputs @@ -0,0 +1,18 @@ +#!/bin/sh +set -eu +set -o pipefail + +# key bindings +setxkbmap -option ctrl:nocaps +setxkbmap -option compose:caps +xmodmap "$HOME"/.Xmodmap +"$(dirname "$0")"/numkeys on + +# trackpad settings +touchpad="$(xinput list --name-only | grep Touchpad)" +xinput set-prop "$touchpad" "libinput Accel Speed" 0.4 +xinput set-prop "$touchpad" "libinput Tapping Enabled" 1 + +# needs to happen after xmodmap stuff +systemctl --user restart xcape +systemctl --user restart xbindkeys diff --git a/laptop/.bin/tv b/laptop/.bin/tv new file mode 100755 index 0000000..1c99e2e --- /dev/null +++ b/laptop/.bin/tv @@ -0,0 +1,15 @@ +#!/bin/sh + +if xrandr -q | grep -q "DP-3 connected ("; then + xrandr --auto + xrandr --output DP-3 --right-of eDP-1 --mode 1920x1080 +elif xrandr -q | grep -q "DP-4 connected ("; then + xrandr --auto + xrandr --output DP-4 --right-of eDP-1 --mode 1920x1080 +elif xrandr -q | grep -q "DP-3 connected"; then + xrandr --auto + xrandr --output DP-4 --off +elif xrandr -q | grep -q "DP-4 connected"; then + xrandr --auto + xrandr --output DP-4 --off +fi diff --git a/laptop/.bin/volume b/laptop/.bin/volume new file mode 100755 index 0000000..668c1b1 --- /dev/null +++ b/laptop/.bin/volume @@ -0,0 +1,45 @@ +#!/usr/bin/env perl +use strict; +use warnings; +use 5.014; + +chomp(my $sink=`pactl get-default-sink`); + +sub get { + if (`pactl get-sink-mute $sink` =~ /Mute: yes/) { + 'mute' + } + else { + (`pactl get-sink-volume $sink` =~ /(\d+)%/)[0] + } +} + +if ($ARGV[0] eq 'get') { + say get; +} +elsif ($ARGV[0] eq 'up') { + my $get = get; + system("pactl set-sink-mute $sink 0"); + if ($get eq 'mute') { + exit; + } + elsif ($get <= 90) { + system("pactl set-sink-volume $sink +10%"); + } + elsif ($get < 100) { + system("pactl set-sink-volume $sink 100%"); + } +} +elsif ($ARGV[0] eq 'down') { + my $get = get; + if ($get eq 'mute') { + exit; + } + system("pactl set-sink-volume $sink -10%"); +} +elsif ($ARGV[0] eq 'mute') { + system("pactl set-sink-mute $sink toggle") +} +else { + die "unknown command '$ARGV[0]'"; +} diff --git a/laptop/.bin/vscreen b/laptop/.bin/vscreen new file mode 100755 index 0000000..52fc5cc --- /dev/null +++ b/laptop/.bin/vscreen @@ -0,0 +1,16 @@ +#!/bin/sh + +case "$1" in +goto) + xrandr --addmode VIRTUAL1 1920x1080 + xrandr --output VIRTUAL1 --auto --output eDP1 --auto --left-of VIRTUAL1 + i3-switch-workspace virtual + ;; +off) + xrandr --output VIRTUAL1 --off + ;; +*) + echo "bad subcommand $1" >&2 + exit 1 + ;; +esac diff --git a/laptop/.bin/watch-kbd b/laptop/.bin/watch-kbd new file mode 100755 index 0000000..269213e --- /dev/null +++ b/laptop/.bin/watch-kbd @@ -0,0 +1,14 @@ +#!/bin/bash +set -eu +set -o pipefail + +trap 'kill $(jobs -p)' EXIT + +inotifywait -mq -e create -e delete -e moved_to --exclude '.*tmp.*' /dev/input/by-path/ | + while read -r event; do + echo "$event" + if echo "$event" | grep -q -- '-usb.*-kbd'; then + setup-inputs + fi + done & +wait diff --git a/laptop/.bin/webcam b/laptop/.bin/webcam new file mode 100755 index 0000000..fdac5f8 --- /dev/null +++ b/laptop/.bin/webcam @@ -0,0 +1,5 @@ +#!/bin/sh +set -eu +set -o pipefail + +mpv av://v4l2:/dev/video0 diff --git a/laptop/.config/sh/rc.d/laptop b/laptop/.config/sh/rc.d/laptop new file mode 100644 index 0000000..6f95731 --- /dev/null +++ b/laptop/.config/sh/rc.d/laptop @@ -0,0 +1 @@ +alias wifi="sudo systemctl restart iwd" diff --git a/laptop/.config/systemd/user/watch-kbd.service b/laptop/.config/systemd/user/watch-kbd.service new file mode 100644 index 0000000..b1a2add --- /dev/null +++ b/laptop/.config/systemd/user/watch-kbd.service @@ -0,0 +1,6 @@ +[Service] +ExecStart=%h/.bin/watch-kbd +Restart=always + +[Install] +WantedBy=default.target diff --git a/laptop/Makefile b/laptop/Makefile new file mode 100644 index 0000000..a16e3bc --- /dev/null +++ b/laptop/Makefile @@ -0,0 +1,9 @@ +include ../Makefile.include + +install: + @systemctl --user enable watch-kbd + @systemctl --user start watch-kbd + +uninstall: + @systemctl --user stop watch-kbd + @systemctl --user disable watch-kbd |