Utility Scripts for the xxxterm browser

xxxterm (xombrero) is a nice minimalist web browser with a focus on security and keyboard users. Since I've been starting to use it as my main browser, I've written a couple of scripts to integrate it in my workflow.

Scripts

choose_xxxterm_session (kdialog)

xxxterm can save your open pages in a named session; this script shows a list of existing sessions and opens the selected one.

This version uses kdialog; support for other *dialogs hasn't proved as trivial as it usually is, and may come (or not) in the future.:

#!/bin/sh

SESSIONDIR=~/.xxxterm/sessions

if SESSION=$(kdialog --title "xxxterm session chooser" \
    --menu "Choose a session" \
    $(ls $SESSIONDIR | awk '{ print $0;print$0 }') none "Start a new session")
then
    if [ x$SESSION != x'none' ]
    then
        xxxterm -s $SESSION &
    else
        xxxterm &
    fi
fi

choose_xxxterm_session (zenity)

The same script as above, this time using zenity and the gtk:

#!/bin/sh

SESSIONDIR=~/.xxxterm/sessions

if SESSION=$(zenity --list --title "xxxterm session chooser" \
    --text "" --column Session $(ls $SESSIONDIR) "Start a new session")
then

    if [ x$SESSION != x'Start a new session' ]
    then
        xxxterm -s $SESSION &
    else
        xxxterm &
    fi
fi

Francesco Polsinelli <bek DOT deb AT gmail DOT com> sent me an upgraded script that adds a column with the tabs number, the ability to create a new named session and does not reopen an already opened session:

#!/bin/sh


SESSIONDIR=~/.xxxterm/sessions

if [ -d "$SESSIONDIR"  ]
then
    cd $SESSIONDIR
    SESSIONS=$(wc -l * | awk 'NR>1{print prev} {prev=$2" "$1-1}')
    if SESSION=$(zenity --list --title "xxxterm session chooser" \
                 --text "xxxterm session chooser" \
                 --column Sessions --column Tabs \
                 "Start a new session" "0" $SESSIONS)
    then
        if [ -n "$SESSION" ]
        then
            if [ "$SESSION" = 'Start a new session' ]
            then
                NEWSESSION=$(zenity --entry --text "Enter the new session name:" \
                             --entry-text "session-$(date '+%Y%m%dT%H%M%S')")
                xxxterm -s "$NEWSESSION" &
            else
                if SESSIONPID=$(pgrep -xfu $USER "xxxterm -s $SESSION")
                then
                    zenity --warning --no-wrap --title "xxxterm session chooser" \
                    --text "xxxterm session chooser\n\n The session \"$SESSION\" is already running with PID: $SESSIONPID"
                else
                    xxxterm -s "$SESSION" &
                fi
            fi
        else
            xxxterm &
        fi
    fi
fi

License

Released under plain 3-clause BSD: do whatever you want, but don't complain when something breaks, or in legal terms:

Copyright (c) 2012, Elena Grandi All rights reserved.

Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

  • Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
  • Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
  • Neither the name of the author nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

Send a comment: unless requested otherwise I may add it, or some extract, to this page.

Return to Top