#!/bin/bash
# vim: set fileencoding=utf-8 ts=4 sts=4 sw=4 tw=80 expandtab :
# Copyright (C) 2012 Florian Bruhin <me@the-compiler.org>
# tagswitch is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# tagswitch is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with tagswitch If not, see <http://www.gnu.org/licenses/>.
# Changes herbstluftwm tags
checkuse() {
if [[ "${tags[$1]}" != [.!]* ]]; then # tag is not unused
herbstclient use "${tags[$1]:1}" # cutting off first char (.#:!)
exit 0
fi
}
tags=( $(herbstclient tag_status) )
# Find the currently active tag
for ((i=0; i<="${#tags[@]}"; i++)); do
[[ "${tags[i]}" == "#"* ]] && activetag="$i"
done
if [[ "$1" == next ]]; then # next active tag
for ((i="$((activetag+1))"; i<"${#tags[@]}"; i++)); do
checkuse "$i"
done
# at the end of the taglist, wrap around
for ((i=0; i<"$activetag"; i++)); do
checkuse "$i"
done
elif [[ "$1" == prev ]]; then # previous active tag
for ((i="$((activetag-1))"; i>=0; i--)) do
checkuse "$i"
done
# at the beginning of the taglist, wrap around
for ((i=${#tags[@]}-1; i>$((activetag-1)); i--)) do
checkuse "$i"
done
else
echo "Usage: $0 [next|prev]"
exit 1
fi
{"text":"text","html5":"html","css":"css","javascript":"javascript","php":"php","python":"python","ruby":"ruby","lua":"lua","bash":"sh","erlang":"erlang","go":"golang","c":"c_cpp","cpp":"c_cpp","diff":"diff","latex":"latex","sql":"sql","xml":"xml","0":"text","abap":"abap","actionscript":"actionscript","actionscript3":"actionscript","ada":"ada","apache":"apache_conf","applescript":"applescript","asm":"assembly_x86","autohotkey":"autohotkey","closure":"closure","cobol":"cobol","coffeescript":"coffee","cpp-winapi":"c_cpp","c_loadrunner":"c_cpp","c_mac":"c_cpp","c_winapi":"c_cpp","csharp":"csharp","d":"d","dart":"dart","dot":"dot","eiffel":"eiffel","fortran":"fortran","groovy":"groovy","haskell":"haskell","haxe":"haxe","ini":"ini","io":"io","java":"java","java5":"java","make":"makefile","matlab":"matlab","mysql":"mysql","objc":"objectivec","ocaml":"ocaml","pascal":"pascal","perl":"perl","perl6":"perl","postgresql":"pgsql","powershell":"powershell","prolog":"prolog","properties":"properties","rails":"ruby","rust":"rust","scala":"scala","scheme":"scheme","smarty":"smarty","tcl":"tcl","vala":"vala","vb":"vbscript","verilog":"verilog","vhdl":"vhdl","yaml":"yaml"}