#!/bin/bash # # Open a work session, which might consist of VIM, tmux, etc sessions. # # Parameters NAME="$0" BASENAME="`basename $0`" # TODO: config file to restrict which sessions we'll use # TODO: sort by session name, listing applications for each session function __session_query { # VIM if [ -e "$HOME/.local/share/vim/sessions" ]; then ls -1 $HOME/.local/share/vim/sessions | sed -e 's/\.vim//g' fi # Tmux if [ -d "$HOME/.tmux" ]; then ls -1 $HOME/.tmux fi # TODO # Screen # Luakit if [ -d "$HOME/.local/share/luakit/sessions" ]; then ls -1 $HOME/.local/share/luakit/sessions fi # Qutebrowser if [ -d "$HOME/.local/share/qutebrowser" ]; then ls -1 $HOME/.local/share/qutebrowser fi # Chromium if [ -d "$HOME/.config/chromium-profiles" ]; then ls -1 $HOME/.config/chromium-profiles fi # Firefox if [ -d "$HOME/.mozilla/firefox/profiles" ]; then ls -1 $HOME/.mozilla/firefox/profiles fi } function __session_list { n="0" __session_query | sort | uniq | while read session; do echo -en "$n. $session:" # Check VIM session if [ -e "$HOME/.local/share/vim/sessions/$session.vim" ]; then echo -n " vim" #else # echo " -" fi # Check tmux session if [ -e "$HOME/.tmux/$session" ]; then echo -n " tmux" #else # echo " -" fi # Screen if [ -e "$HOME/.screen/$session" ]; then echo -n " screen" #else # echo " -" fi # Luakit if [ -e "$HOME/.local/share/luakit/sessions/$session" ]; then echo -n " luakit" #else # echo " -" fi # Qutebrowser if [ -d "$HOME/.local/share/qutebrowser/$session" ]; then echo -n " qutebrowser" #else # echo " -" fi # Chromium if [ -d "$HOME/.config/chromium-profiles/$session" ]; then echo -n " chromium" #else # echo " -" fi # Firefox if [ -d "$HOME/.mozilla/firefox/profiles/$session" ]; then echo -n " firefox" #else # echo " -" fi echo "" let ++n done | column -t -c 6 #| sed -e 's/^/\t/' } # TODO function __session_choser { __session_list read -rep "Choose session: " n if [ ! -z "$n" ]; then session="$(__session_list | grep "^$n." | sed -e "s/^$n. //" | cut -d : -f 1)" if [ ! -z "$session" ]; then $NAME $session fi fi } # TODO: config file to restrict which sessions we'll use # TODO: check if the program is installed before running it function __session_open { SESSION="$1" # Check VIM session if [ -e "$HOME/.local/share/vim/sessions/$SESSION.vim" ]; then terminal vim -S $HOME/.local/share/vim/sessions/$SESSION.vim & fi # Check tmux session if [ -e "$HOME/.tmux/$SESSION" ]; then terminal shell $SESSION & fi # TODO # Screen # Luakit # TODO: how to open luakit in a given session from the command line? #if [ -e "$HOME/.local/share/luakit/sessions/$SESSION" ]; then #fi # TODO # Qutebrowser #if [ -d "$HOME/.local/share/qutebrowser/$SESSION" ]; then # qutebrowser -r $SESSION #fi # TODO # Chromium #if [ -d "$HOME/.config/chromium-profiles/$SESSION" ]; then # chromium-profile $SESSION #fi # TODO # Firefox #if [ -d "$HOME/.mozilla/firefox/profiles" ]; then # firefox-profile $SESSION #fi } # Check syntax if [ -z "$1" ]; then echo "usage: $BASENAME [--list|--choser] " echo "available sessions:" echo "" __session_list exit 1 fi # Dispatch if echo "$1" | grep -q -- '--list'; then __session_list elif echo "$1" | grep -q -- '--choser'; then __session_choser else __session_open $* fi