Hello I'd like wmii to have a new event that gets triggered after the client gets focused. I believe this would give more freedom in customizing wmii with scripts.
One of the uses that comes to mind would be having the title of the selected client in a bar label thus making the individual titlebars of clients optional. (It's my opinion that you can usually identify a window by content and if you need more information about it wmii provides easy ways to navigate to it and then you should have some context information available. Actually I'd go even further and say that i'd like the whole wmiibar optional (that is have a shortcut to show/hide it) but I'm sure most will not agree so I'll drop it. As you might noticed i do not like to much "decor" in the workspace (as in work enviroment not the window manager meaning). My ideal setup would be having only the windows contents visible and a way to show other usage information on demand. Another thing I'd like to use this event for is to create a script for retaging the selected client (since as was discussed in an earlier thread you can not identify a client yet unless it's selected). The concept goes something like this: - have all the available tags shown in a bar with the tags that apply for the selected client highlighted - set up easy shortcuts for toggling Nth tag ie Ctrl+Alt+0..9 and maybe even +q,w,e,r..p if you need more - irssi style - have another shortcut for adding a new tag using the wmiimenu. The items for the menu would be taken from a file that contains your most used tags (user defined) and the tags that were used in the current wmii session but are not used for any client atm maybe some additional shortcuts for special things like: clear all tags, apply all tags, floating related stuff etc I believe this would be a better solution then the current way (which is pretty cumbersome imo) because you don't need to retype everything when working with multiple tags. Because English is not my native language i wrote a small script that demonstrates part of the concept (I'm also pretty new to shell scripting so try to ignore any stupid things you see :) : -x---------------- begin retag.sh --------------------- #!/bin/bash #----------------------------------- colors ----------------------------------# black='\E[30;47m' red='\E[31;47m' green='\E[32;47m' yellow='\E[33;47m' blue='\E[34;47m' magenta='\E[35;47m' cyan='\E[36;47m' white='\E[37;47m' #-------- from : http://www.faqs.org/docs/abs/HTML/colorizing.html -----------# ### cecho () # Color-echo. # Argument $1 = message # Argument $2 = color { local default_msg="No message passed." # Doesn't really need to be a local variable. message=${1:-$default_msg} # Defaults to default message. color=${2:-$black} # Defaults to black, if not specified. echo -en "$color" echo -n "$message" tput sgr0 return } #------------------------------------------------------------------------------# tags=` wmiir read /tags` #list of tags nl=`wmiir read /tags | awk 'END { print NR }'` #number of tags ########## populate tagar ################## i=1 for ctag in $tags do tagar[$i]=$ctag #echo -n " $i.$ctag " i=`expr $i + 1` done ####### get tags for selected client ####### seltags=`wmiir read /view/sel/sel/tags | sed -e "s/+/ /g"` ###### populate choicear ################### for cseltag in $seltags do #echo $cseltag for i in `seq 1 $nl` do if [ "$cseltag" = "${tagar[$i]}" ]; then choicear[$i]=1 fi done done while (true) do clear for i in `seq 1 $nl`; do if [ "${choicear[$i]}" = "1" ]; then # echo -ne $red"$i.[${tagar[$i]}] "'\033[0m' cecho "$i.[${tagar[$i]}] " $red else # echo -n "$i. ${tagar[$i]} " cecho "$i. ${tagar[$i]} " $blue fi #tput sgr0 done echo; echo cecho "########## KEYS ############" $black; echo cecho "# 1..9 toggle tag #" $black; echo # cecho "# x exit without saving #" $black; echo cecho "# q save and exit #" $black; echo cecho "############################" $black; echo read -s -n1 ch case "$ch" in [1-9]) if [ "${choicear[$ch]}" = "1" ]; then choicear[$ch]=0 else choicear[$ch]=1 fi;; x) clear;exit;; q) #construct tags string for i in `seq 1 $nl` do if [ "${choicear[$i]}" = "1" ]; then if [ "$new_tags" = "" ]; then new_tags=${tagar[$i]} else new_tags=$new_tags+${tagar[$i]} fi fi done echo -n "The new tags for the selected client would be: " echo $new_tags exit;; esac done ------------------ end retag.sh --------------------x- When unique ids for clients will be available in wmii-4 these kind of things could be done without wmii components. I'm sure there can be better examples to justify this event than the ones I presented. Regards, Neptun ---- <<Brescan Florin>> <<Neptun>> <<www.flo.haos.ro>>
#!/bin/bash #----------------------------------- colors ----------------------------------# black='\E[30;47m' red='\E[31;47m' green='\E[32;47m' yellow='\E[33;47m' blue='\E[34;47m' magenta='\E[35;47m' cyan='\E[36;47m' white='\E[37;47m' #-------- from : http://www.faqs.org/docs/abs/HTML/colorizing.html -----------# ### cecho () # Color-echo. # Argument $1 = message # Argument $2 = color { local default_msg="No message passed." # Doesn't really need to be a local variable. message=${1:-$default_msg} # Defaults to default message. color=${2:-$black} # Defaults to black, if not specified. echo -en "$color" echo -n "$message" tput sgr0 return } #------------------------------------------------------------------------------# tags=` wmiir read /tags` #list of tags nl=`wmiir read /tags | awk 'END { print NR }'` #number of tags ########## populate tagar ################## i=1 for ctag in $tags do tagar[$i]=$ctag #echo -n " $i.$ctag " i=`expr $i + 1` done ####### get tags for selected client ####### seltags=`wmiir read /view/sel/sel/tags | sed -e "s/+/ /g"` ###### populate choicear ################### for cseltag in $seltags do #echo $cseltag for i in `seq 1 $nl` do if [ "$cseltag" = "${tagar[$i]}" ]; then choicear[$i]=1 fi done done while (true) do clear for i in `seq 1 $nl`; do if [ "${choicear[$i]}" = "1" ]; then # echo -ne $red"$i.[${tagar[$i]}] "'\033[0m' cecho "$i.[${tagar[$i]}] " $red else # echo -n "$i. ${tagar[$i]} " cecho "$i. ${tagar[$i]} " $blue fi #tput sgr0 done echo; echo cecho "########## KEYS ############" $black; echo cecho "# 1..9 toggle tag #" $black; echo # cecho "# x exit without saving #" $black; echo cecho "# q save and exit #" $black; echo cecho "############################" $black; echo read -s -n1 ch case "$ch" in [1-9]) if [ "${choicear[$ch]}" = "1" ]; then choicear[$ch]=0 else choicear[$ch]=1 fi;; x) clear;exit;; q) #construct tags string for i in `seq 1 $nl` do if [ "${choicear[$i]}" = "1" ]; then if [ "$new_tags" = "" ]; then new_tags=${tagar[$i]} else new_tags=$new_tags+${tagar[$i]} fi fi done echo -n "The new tags for the selected client would be: " echo $new_tags exit;; esac done
_______________________________________________ [email protected] mailing list http://wmii.de/cgi-bin/mailman/listinfo/wmii
