From The Compiler, 8 Years ago, written in Bash.
Embed
  1. #!/bin/bash
  2.  
  3. getpadding() {
  4.         set -- $(herbstclient monitor_rect 0)
  5.         x_n=$1
  6.         y_n=$2
  7.         w_n=$3
  8.         h_n=$4
  9.         set -- $(herbstclient monitor_rect -p 0)
  10.         x_p=$1
  11.         y_p=$2
  12.         w_p=$3
  13.         h_p=$4
  14.  
  15.         pad_left=$x_p
  16.         pad_up=$y_p
  17.         pad_right=$((w_n - x_p - w_p))
  18.         pad_down=$((h_n - y_p - h_p))
  19. }
  20.  
  21. hide() {
  22.         echo -n '0' > ~/.cellwriter/fifo
  23.         herbstclient pad 0 "" "" 0 ""
  24. }
  25.  
  26. show() {
  27.         echo -n '1' > ~/.cellwriter/fifo
  28.         herbstclient pad 0 "" "" 110 ""
  29. }
  30.  
  31. launch() {
  32.         cellwriter --show-window --dock-window=2 &
  33.         herbstclient pad 0 "" "" 110 ""
  34. }
  35.  
  36. state() {
  37.         pgrep cellwriter >/dev/null 2>&1 || return 2
  38.         getpadding
  39.         (( $pad_down == 110 )) || return 0
  40.         (( $pad_down == 0 )) || return 1
  41. }
  42.  
  43. toggle() {
  44.                 state
  45.                 case $? in
  46.                         2) launch ;;
  47.                         1) hide ;;
  48.                         0) show ;;
  49.                 esac
  50. }
  51.  
  52. launchshow() {
  53.         state
  54.         if (( $? == 2 )); then
  55.                 launch
  56.         elif (( $? == 0 )); then
  57.                 show
  58.         fi
  59. }
  60.  
  61. kill() {
  62.         state
  63.         if (( $? != 2 )); then
  64.                 killall cellwriter
  65.                 herbstclient pad 0 "" "" 0 ""
  66.         fi
  67. }
  68.  
  69. case $1 in
  70.         hide) hide ;;
  71.         show) show ;;
  72.         launch) launch ;;
  73.         state) state ;;
  74.         toggle) toggle ;;
  75.         launchshow) launchshow ;;
  76.         kill) kill ;;
  77. esa