summaryrefslogtreecommitdiffstats
path: root/laptop/.bin
diff options
context:
space:
mode:
Diffstat (limited to 'laptop/.bin')
-rwxr-xr-xlaptop/.bin/backlight47
-rwxr-xr-xlaptop/.bin/import11
-rwxr-xr-xlaptop/.bin/numkeys57
-rwxr-xr-xlaptop/.bin/sc19
-rwxr-xr-xlaptop/.bin/setup-inputs18
-rwxr-xr-xlaptop/.bin/tv15
-rwxr-xr-xlaptop/.bin/volume45
-rwxr-xr-xlaptop/.bin/vscreen16
-rwxr-xr-xlaptop/.bin/watch-kbd14
-rwxr-xr-xlaptop/.bin/webcam5
10 files changed, 247 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