]> gitweb.fluxo.info Git - utils-x11.git/commitdiff
Session enhancements
authorSilvio Rhatto <rhatto@riseup.net>
Wed, 7 Mar 2018 07:06:32 +0000 (04:06 -0300)
committerSilvio Rhatto <rhatto@riseup.net>
Wed, 7 Mar 2018 07:06:32 +0000 (04:06 -0300)
session

diff --git a/session b/session
index 979a2d82933cf3aa7b3ff0e0a923bb9b59240ce5..be3acfb78b78aa32c6f26f10bd870dec2fa45d1c 100755 (executable)
--- a/session
+++ b/session
@@ -4,21 +4,20 @@
 #
 
 # 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_list {
+function __session_query {
   # VIM
   if [ -e "$HOME/.local/share/vim/sessions" ]; then
-    echo -n "vim: "
-    ls $HOME/.local/share/vim/sessions | sed -e 's/\.vim//g' | xargs
+    ls -1 $HOME/.local/share/vim/sessions | sed -e 's/\.vim//g'
   fi
 
   # Tmux
   if [ -d "$HOME/.tmux" ]; then
-    echo -n "tmux: "
-    ls $HOME/.tmux
+    ls -1 $HOME/.tmux
   fi
 
   # TODO
@@ -26,32 +25,96 @@ function __session_list {
 
   # Luakit
   if [ -d "$HOME/.local/share/luakit/sessions" ]; then
-    echo -n "luakit: "
-    ls $HOME/.local/share/luakit/sessions | xargs
+    ls -1 $HOME/.local/share/luakit/sessions
   fi
 
   # Qutebrowser
   if [ -d "$HOME/.local/share/qutebrowser" ]; then
-    echo -n "qutebrowser: "
-    ls $HOME/.local/share/qutebrowser/ | xargs
+    ls -1 $HOME/.local/share/qutebrowser
   fi
 
   # Chromium
   if [ -d "$HOME/.config/chromium-profiles" ]; then
-    echo -n "chromium: "
-    ls $HOME/.config/chromium-profiles | xargs
+    ls -1 $HOME/.config/chromium-profiles
   fi
 
   # Firefox
   if [ -d "$HOME/.mozilla/firefox/profiles" ]; then
-    echo -n "firefox: "
-    ls $HOME/.mozilla/firefox/profiles | xargs
+    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 {
-  true
+  __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
@@ -105,11 +168,11 @@ if [ -z "$1" ]; then
   exit 1
 fi
 
+# Dispatch
 if echo "$1" | grep -q -- '--list'; then
   __session_list
-# TODO
-#if echo "$1" | grep -q -- '--choser'; then
-#  __session_choser
+elif echo "$1" | grep -q -- '--choser'; then
+  __session_choser
 else
   __session_open $*
 fi