From f88286d60b5013ca8518915f39019cb437004b7d Mon Sep 17 00:00:00 2001 From: Hunter Haugen Date: Fri, 22 Mar 2024 14:26:28 -0700 Subject: [PATCH] Update tmux and add local bins --- .tmux/plugins/nord-tmux | 2 +- .tmux/plugins/tmux-prefix-highlight | 2 +- .tmux/plugins/tmux-sensible | 2 +- local/bin/emoji-menu | 66 +++++++++++++++++++++++++++++ local/bin/flash_keeb.sh | 31 ++++++++++++++ local/bin/keeb.sh | 2 + local/bin/office-hdmi.sh | 6 +++ local/bin/talon_pedal.sh | 19 +++++++++ local/bin/talon_state.sh | 16 +++++++ local/bin/twomon.sh | 8 ++++ local/bin/use_avid.sh | 3 ++ local/bin/uuid.sh | 3 ++ local/bin/youtube-to-gif.sh | 27 ++++++++++++ 13 files changed, 184 insertions(+), 3 deletions(-) create mode 100755 local/bin/emoji-menu create mode 100755 local/bin/flash_keeb.sh create mode 100755 local/bin/keeb.sh create mode 100755 local/bin/office-hdmi.sh create mode 100755 local/bin/talon_pedal.sh create mode 100755 local/bin/talon_state.sh create mode 100755 local/bin/twomon.sh create mode 100755 local/bin/use_avid.sh create mode 100755 local/bin/uuid.sh create mode 100644 local/bin/youtube-to-gif.sh diff --git a/.tmux/plugins/nord-tmux b/.tmux/plugins/nord-tmux index 4e2dc2a..f7b6da0 160000 --- a/.tmux/plugins/nord-tmux +++ b/.tmux/plugins/nord-tmux @@ -1 +1 @@ -Subproject commit 4e2dc2a5065f5e8e67366700f803c733682e8f8c +Subproject commit f7b6da07ab55fe32ee5f7d62da56d8e5ac691a92 diff --git a/.tmux/plugins/tmux-prefix-highlight b/.tmux/plugins/tmux-prefix-highlight index 15acc61..489a961 160000 --- a/.tmux/plugins/tmux-prefix-highlight +++ b/.tmux/plugins/tmux-prefix-highlight @@ -1 +1 @@ -Subproject commit 15acc6172300bc2eb13c81718dc53da6ae69de4f +Subproject commit 489a96189778a21d2f5f4dbbbc0ad2cec8f6c854 diff --git a/.tmux/plugins/tmux-sensible b/.tmux/plugins/tmux-sensible index 44af8d8..25cb91f 160000 --- a/.tmux/plugins/tmux-sensible +++ b/.tmux/plugins/tmux-sensible @@ -1 +1 @@ -Subproject commit 44af8d8eff820eedd9702704d832ceda6732b34c +Subproject commit 25cb91f42d020f675bb0a2ce3fbd3a5d96119efa diff --git a/local/bin/emoji-menu b/local/bin/emoji-menu new file mode 100755 index 0000000..f6495ee --- /dev/null +++ b/local/bin/emoji-menu @@ -0,0 +1,66 @@ +#!/usr/bin/env bash +# +# Emoji Menu +# +# Quickly find emojis and copy to clipboard. +# +# +# To install: +# +# 1. Clean-up https://unicode.org/Public/emoji/11.0/emoji-test.txt +# grep -Po '(?<= #).*' +# +# 2. Install xclip and rofi +# sudo apt install xclip rofi +# +# 3. Assign to a keyboard combination +# Try xbindkeys +# + +set -e + +# Emoji database location +EMOJI_MENU_DB=${EMOJI_MENU_DB:-"$HOME/.emoji-menu-db"} + +# Command to run after user chooses an emoji +EMOJI_MENU_COMMAND=${EMOJI_MENU_COMMAND:-'xclip -selection clipboard'} + +# Report usage +usage() { + echo "Usage: $(basename "$0") [-t | -c ] [-f ]" 1>&2 + echo + echo " -f Use a custom emoji database." + echo " -c Apply a custom command to the emoji choice." + echo " -t Simulate typing the emoji choice with the keyboard." + echo + exit "$1" +} + +# Type result using xdotool +typeResult() { + awk '{ print "type " $0 }' | xdotool - +} + +# Get Options +while getopts ":c:f:th" o; do + case "${o}" in + f) EMOJI_MENU_DB="${OPTARG}" ;; + c) EMOJI_MENU_COMMAND="${OPTARG}" ;; + t) EMOJI_MENU_COMMAND=typeResult ;; + h) usage 0 ;; + *) usage 1 ;; + esac +done + +# Default DB +if [ ! -e "$EMOJI_MENU_DB" ]; then + wget -O "$EMOJI_MENU_DB" 'http://bit.ly/emoji-menu-db' +fi + +# Rofi can handle large inputs and emojis +rofi -p '🔍' -width 610 -dmenu \ + < "$EMOJI_MENU_DB" \ + | grep -oP '^[^\s]+' \ + | tr -d '\n' \ + | ${EMOJI_MENU_COMMAND} + diff --git a/local/bin/flash_keeb.sh b/local/bin/flash_keeb.sh new file mode 100755 index 0000000..23ffb4d --- /dev/null +++ b/local/bin/flash_keeb.sh @@ -0,0 +1,31 @@ +#!/bin/sh + +echo Need the sudo pass first... +sudo echo OK + +if [ ! -f "${HOME}/Downloads/firmware.zip" ]; then + echo Could not find firmware.zip + exit 1 +fi + +FILES=$(unzip -l ~/Downloads/firmware.zip | awk '{print $4}' | rg -v '(Name|^$|----)') +FILE=$(echo $FILES | head -n1) +if [ -z "$FILE" ]; then + echo Could not find firmware file in firmware.zip + exit 1 +fi +echo Found firmware file: $FILE +unzip -o ~/Downloads/firmware.zip "$FILE" -d /tmp +echo Reset the keeb..... +sleep 5 + +sudo mount /dev/sdb /mnt/keeb +sudo cp /tmp/$FILE /mnt/keeb +sudo umount /mnt/keeb +echo Flashed! + +echo "Remove firmware.zip? (y/n)" +read -r REMOVE +if [ "$REMOVE" = "y" ]; then + rm ~/Downloads/firmware.zip +fi diff --git a/local/bin/keeb.sh b/local/bin/keeb.sh new file mode 100755 index 0000000..2e0a8a0 --- /dev/null +++ b/local/bin/keeb.sh @@ -0,0 +1,2 @@ +#!/bin/sh +xset r rate 200 30 diff --git a/local/bin/office-hdmi.sh b/local/bin/office-hdmi.sh new file mode 100755 index 0000000..39db86a --- /dev/null +++ b/local/bin/office-hdmi.sh @@ -0,0 +1,6 @@ +#!/usr/bin/env bash + +xrandr --output eDP-1-1 --auto +xrandr --output HDMI-1-1 --auto +xrandr --output HDMI-1-1 --left-of eDP-1-1 +xrandr --output HDMI-1-1 --primary diff --git a/local/bin/talon_pedal.sh b/local/bin/talon_pedal.sh new file mode 100755 index 0000000..d98d393 --- /dev/null +++ b/local/bin/talon_pedal.sh @@ -0,0 +1,19 @@ +#!/bin/bash + +pedal_down="enable" +pedal_up="disable" + +if [ xsleep = x"$1" ]; then + pedal_down="disable" + pedal_up="enable" +fi + +line="" +aseqdump -p "USB Uno MIDI Interface" | while true ; do + read -r line + case $(echo "$line" | tr -s " " | cut -d " " -f 4-8) in + "0, controller 67, value 0") echo "actions.speech.${pedal_up}()" | ~/.talon/bin/repl ;; + "0, controller 67, value 127") echo "actions.speech.${pedal_down}()" | ~/.talon/bin/repl ;; + *) echo "other stuff: $(echo "$line" | tr -s " " | cut -d " " -f 4-8)" ;; + esac +done diff --git a/local/bin/talon_state.sh b/local/bin/talon_state.sh new file mode 100755 index 0000000..8fa512a --- /dev/null +++ b/local/bin/talon_state.sh @@ -0,0 +1,16 @@ +#!/bin/sh + +if [ x = x"$1" ]; then + echo "wrong" + exit 1 +fi +if [ "wake" = "$1" ]; then + echo 'actions.speech.enable()' | ~/.talon/bin/repl + exit 0 +fi +if [ "sleep" = "$1" ]; then + echo 'actions.speech.disable()' | ~/.talon/bin/repl + exit 0 +fi +echo "what?" +exit 1 diff --git a/local/bin/twomon.sh b/local/bin/twomon.sh new file mode 100755 index 0000000..b9acff2 --- /dev/null +++ b/local/bin/twomon.sh @@ -0,0 +1,8 @@ +#!/usr/bin/env bash + +xrandr --output eDP-1-1 --auto +xrandr --output DP-1-2 --auto +xrandr --output HDMI-1-1 --auto +xrandr --output DP-1-2 --left-of eDP-1-1 +xrandr --output HDMI-1-1 --left-of DP-1-2 +xrandr --output DP-1-2 --primary diff --git a/local/bin/use_avid.sh b/local/bin/use_avid.sh new file mode 100755 index 0000000..e25a882 --- /dev/null +++ b/local/bin/use_avid.sh @@ -0,0 +1,3 @@ +#!/bin/sh + +echo 'actions.sound.set_microphone("Avid Mbox Mini Analog Stereo")' | ~/.talon/bin/repl diff --git a/local/bin/uuid.sh b/local/bin/uuid.sh new file mode 100755 index 0000000..cbd5c62 --- /dev/null +++ b/local/bin/uuid.sh @@ -0,0 +1,3 @@ +#!/bin/sh + +uuidgen | tr -d '\n' | xclip diff --git a/local/bin/youtube-to-gif.sh b/local/bin/youtube-to-gif.sh new file mode 100644 index 0000000..f0fbc5c --- /dev/null +++ b/local/bin/youtube-to-gif.sh @@ -0,0 +1,27 @@ +#!/bin/bash + +# brew install x265 +# brew install ffmpeg +# brew install youtube-dl +# brew install imagemagick + +ID='https://www.youtube.com/watch?v=p0JspnMuyig' # YouTube video ID, i.e. https://www.youtube.com/watch?v={ID} + +# fetch the video file with youtube-dl +# convert it to MP4 (not really needed, but keeps the filename predictable) +if [ ! -f $ID.mp4 ]; then + youtube-dl --output '%(id)s.%(ext)s' --recode-video mp4 $ID +fi + +# convert the video file to GIF with ffmpeg +START='00:08:52.000' # start 4 seconds in +LENGTH='00:00:25.000' # end after 5 seconds +SIZE='400x300' # size of the output GIF +ffmpeg -ss $START -i $ID.mp4 -pix_fmt rgb8 -r 10 -s $SIZE -t $LENGTH $ID-unoptimized.gif + +# optimize the GIF with imagemagick +convert -layers Optimize $ID-unoptimized.gif $ID.gif + +# credits: +# http://www.commandlinefu.com/commands/view/10002/create-an-animated-gif-from-a-youtube-video +# http://superuser.com/a/436109/106809