This repository has been archived on 2024-03-28. You can view files and clone it, but cannot push or open issues or pull requests.
dotfiles/shell/shell_funcs

68 lines
1.5 KiB
Bash

#!/usr/bin/env bash
calc() {
tp="$*"
python -c "print(${tp})"
}
export -f calc
stopbar() {
# TODO: get the proper monitor!
BAR_MONITOR="$(polybar --list-monitors | tail -n 1 | sed -n 's/^\s*\(.*\):.*$/\1/p')"
bspc config -m "${BAR_MONITOR}" bottom_padding "0"
bspc config -m "${BAR_MONITOR}" top_padding "0"
killall -q polybar
while pgrep -x polybar >/dev/null; do sleep 1; done
}
export -f stopbar
# wm aliases
startbar() {
bash "${DOTFILES_PATH}/de/bar/bar.bash" &
bg
disown
}
export -f startbar
# save the current directory for later retrieval
scwd() {
addon=""
if [[ -n $1 ]]; then
addon="-${1}"
fi
echo "${PWD}" > "${DOTFILES_PATH}/.cwd${addon}.tmp"
}
export -f scwd
# bind '"\C-s"':"\"scwd\C-m\""
# go to the saved current directory
gcwd() {
addon=""
if [[ -n $1 ]]; then
addon="-${1}"
fi
cd "$(cat "${DOTFILES_PATH}/.cwd${addon}.tmp")" || return
}
export -f gcwd
# bind '"\C-g"':"\"gcwd\C-m\""
fsw() {
SHELL_COMMAND="${1}"
shift
inotifywait -q -m -e close_write "${@}" | while read -r _ _; do
eval "${SHELL_COMMAND}"
done
}
export -f fsw
# tmux session switcher with fzf from https://github.com/junegunn/fzf/issues/997
tmuxswitcher() {
local -r fmt='#{session_id}:|#S|(#{session_attached} attached)'
{ tmux display-message -p -F "$fmt" && tmux list-sessions -F "$fmt"; } \
| awk '!seen[$1]++' \
| column -t -s'|' \
| fzf -q '$' --reverse --prompt 'switch session: ' -1 \
| cut -d':' -f1 \
| xargs tmux switch-client -t
}
export -f tmuxswitcher