aboutsummaryrefslogtreecommitdiff
path: root/scripts
diff options
context:
space:
mode:
authorCody Hiar <codyfh@gmail.com>2019-02-14 19:16:55 +0000
committerCody Hiar <codyfh@gmail.com>2019-02-14 19:16:55 +0000
commite3bb01fd2b859d9144beb585a1b3a8f478906b7d (patch)
tree0f46c8f87eabcdee9c70d348ccc243a99be3d174 /scripts
parent3466993b19aed1953ea8890019ff7ec72b46aee8 (diff)
Adding rolodex script
Diffstat (limited to 'scripts')
-rwxr-xr-xscripts/rolodex.sh77
1 files changed, 77 insertions, 0 deletions
diff --git a/scripts/rolodex.sh b/scripts/rolodex.sh
new file mode 100755
index 0000000..56010a2
--- /dev/null
+++ b/scripts/rolodex.sh
@@ -0,0 +1,77 @@
+#!/usr/bin/env bash
+# vim: set filetype=sh
+#
+# Author: Cody Hiar
+# Date: 2019-01-11
+#
+# Description: Rolodex script
+#
+# Set options:
+# e: Stop script if command fails
+# u: Stop script if unset variable is referenced
+# x: Debug, print commands as they are executed
+# o pipefail: If any command in a pipeline fails it all fails
+#
+# IFS: Internal Field Separator
+set -euo pipefail
+IFS=$'\n\t'
+
+# Colors for printing
+G='\e[0;32m' # Green
+LG='\e[0;37m' # Light Gray
+C='\e[0;36m' # Cyan
+NC='\e[0m' # No Color
+
+# Immutable globals
+readonly ARGS=( "$@" )
+readonly NUM_ARGS="$#"
+readonly PROGNAME=$(basename "$0")
+
+get_number_of_active_window_panes() {
+ echo $(tmux lsp | wc -l)
+}
+
+get_number_of_buffer_window_panes() {
+ echo $(tmux lsp -t 2 | wc -l)
+}
+
+open_drawer_if_unopen() {
+ PANE_COUNT=$(get_number_of_active_window_panes)
+ if [[ "$PANE_COUNT" == '1' ]]; then
+ "$HOME"/.tmux/plugins/tmux-drawer/scripts/open_or_close_drawer.sh
+ fi
+}
+
+# Main loop of program
+main() {
+ BUFFER_COUNT=$(get_number_of_buffer_window_panes)
+ PANE_COUNT=$(get_number_of_active_window_panes)
+ if [[ "$NUM_ARGS" == 0 ]]; then
+ ACTION='next'
+ elif [[ "$NUM_ARGS" == 1 ]]; then
+ ACTION="${ARGS[0]}"
+ fi
+
+ if [[ "$ACTION" == 'prev' ]]; then
+ open_drawer_if_unopen
+ tmux swap-pane -s 1.2 -t 2."$BUFFER_COUNT"
+ MAX=$((BUFFER_COUNT - 1))
+ for i in $(seq 1 "$MAX" | tac); do
+ NEXT=$((i + 1))
+ tmux swap-pane -s 2."$i" -t 2."$NEXT"
+ done
+ tmux select-pane -t 1.1
+ elif [[ "$ACTION" == 'next' ]]; then
+ open_drawer_if_unopen
+ tmux swap-pane -s 1.2 -t 2.1
+ MAX=$((BUFFER_COUNT - 1))
+ for i in $(seq 1 "$MAX"); do
+ NEXT=$((i + 1))
+ tmux swap-pane -s 2."$i" -t 2."$NEXT"
+ done
+ tmux select-pane -t 1.1
+ else
+ echo "Command not recognized: $ACTION"
+ fi
+}
+main