diff --git a/bashrc/.bashrc b/bashrc/.bashrc index 34d31a3..26578ff 100644 --- a/bashrc/.bashrc +++ b/bashrc/.bashrc @@ -48,7 +48,7 @@ alias firefox='librewolf' ## run script to setup default tmux session and then attach the session ## attaching the session needs to be done from the calling shell, otherwise ## the setup script will only terminate after detaching or killing the session -alias dmux='default-tmux-session && tmux attach' +alias dmux='bash default-tmux-session.sh && tmux attach' alias tks='tmux kill-session' alias tma='tmux attach' @@ -80,10 +80,11 @@ source ~/.bash_alias ## source custom functions for specific purposes script_path=${HOME}/dotfiles/scripts/ source_list=() -source_list+=("${script_path}/navigate_bash_setup") -source_list+=("${script_path}/fzf-bash-history") +source_list+=("${script_path}/navigate_bash_setup.sh") +source_list+=("${script_path}/fzf-bash-history.sh") source_list+=("${script_path}/colors.sh") source_list+=("${script_path}/dunst.sh") +source_list+=("${script_path}/select-audio-sink.sh") ## source qmk setup script # source /home/scbj/repos/qmk_firmware/util/qmk_tab_complete.sh diff --git a/i3/.config/i3/config b/i3/.config/i3/config index d0dd2b1..d2955e5 100644 --- a/i3/.config/i3/config +++ b/i3/.config/i3/config @@ -167,7 +167,7 @@ bindsym $mod+s exec --no-startup-id maim -su | xclip -selection clipboard bindsym $mod+Shift+s exec --no-startup-id maim -su "/home/${USER}/Pictures/screenshots/$(date '+%Y%m%d_%H%M%S').png" # open pavucontrol -bindsym $mod+a exec --no-startup-id pavucontrol +bindsym $mod+a exec bash select-audio-sink.sh # Use pactl to adjust volume in PulseAudio. set $refresh_i3status killall -SIGUSR1 i3status diff --git a/scripts/default-tmux-session b/scripts/default-tmux-session.sh similarity index 100% rename from scripts/default-tmux-session rename to scripts/default-tmux-session.sh diff --git a/scripts/fzf-bash-history b/scripts/fzf-bash-history.sh similarity index 97% rename from scripts/fzf-bash-history rename to scripts/fzf-bash-history.sh index e18b442..acff17a 100644 --- a/scripts/fzf-bash-history +++ b/scripts/fzf-bash-history.sh @@ -1,3 +1,4 @@ +#!/usr/bin/env bash function __search-history { current_line="${READLINE_LINE}" diff --git a/scripts/navigate_bash_setup b/scripts/navigate_bash_setup.sh similarity index 100% rename from scripts/navigate_bash_setup rename to scripts/navigate_bash_setup.sh diff --git a/scripts/select-audio-sink.sh b/scripts/select-audio-sink.sh new file mode 100755 index 0000000..701514b --- /dev/null +++ b/scripts/select-audio-sink.sh @@ -0,0 +1,33 @@ +#!/usr/bin/env bash + +select_audio_sink() { + sinks="$(pactl list sinks | grep -iozP "(?s)(?<=Properties:).*?(?=Ports:)" | tr -d '\0')" + + IFS=$(echo -en "\n\b") + ids=($(echo "${sinks}" | grep -io -P "(?<=object.serial = ).*$")) + names=($(echo "${sinks}" | grep -ioP "(?<=device\.description = ).*$")) + unset IFS + + if [[ "${#ids[@]}" != "${#names[@]}" ]]; then + echo "ERROR: #ids (${#ids[@]}) != #names (${#names[@]})" + return 0 + fi + + selection="$(printf "%s\n" "${names[@]//\"/}" | rofi -dmenu)" + + unset number + for n in ${!names[@]}; do + if [[ "${names[$n]}" == *"${selection}"* ]]; then + number=$n + fi + done + + if [[ -z "${number}" ]]; then + echo "something went wrong.." + return 0 + fi + + pactl set-default-sink ${ids[$number]//\"/} +} + +select_audio_sink