1. Список говнокодов пользователя tetsuo

    Всего: 1

  2. bash / Говнокод #11548

    −117

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    49. 49
    50. 50
    51. 51
    52. 52
    53. 53
    54. 54
    55. 55
    56. 56
    57. 57
    58. 58
    59. 59
    60. 60
    61. 61
    62. 62
    #!/bin/dash -e
    
    fono="#DFAF8F"
    monato="#80AAD4"
    kvin="#DCA3A3"
    fino="#949494"
    
    
    enigo () {
      while read inc < "$FIFO"
      do
        rel=$(( $rel + $inc ))
        cal -m $( date +'%m %Y' -d "+$rel month" ) | filtrilo $rel
      done
    }
    
    
    filtrilo () {
      kura=$(date +%e)
    
      awk -v rel=$1 -v kura="$kura" -v fono=$fono \
          -v monato=$monato -v kvin=$kvin -v fino=$fino '
    
      BEGIN { nigra = "#000000" }
    
      function fg(koloro, text) { return sprintf("^fg(%s)%s^fg()", koloro, text) }
      function bg(koloro, text) { return sprintf("^bg(%s)%s^bg()", koloro, text) }
    
      function set(i,j, koloro) { for(k=i;k<=j;k++) $k = fg(koloro, $k) }
    
      NR == 1 { $1 = fg(monato,$1) }
      NR == 2 { set(1,5,kvin); set(6,7,fino) }
      NR > 2 && rel == 0 { sub( sprintf("%s\\>",kura), fg(nigra, bg(fono, kura)) ) }
    
      { print "  " $0 }'
    }
    
    
    eligo () {
      dimensioj=$( xdpyinfo | awk '$1 == "dimensions:" { print $2 }' )
      ekrano=${dimensioj%x*}
      menuo=170 # artifiko
      x=$(( $ekrano - $menuo ))
      y=20
    
      i="exec:echo  0 > $FIFO"
      n="exec:echo +1 > $FIFO"
      p="exec:echo -1 > $FIFO"
    
      agoj="onstart=uncollapse,grabkeys,grabmouse,$i;onexit=$i;\
    key_Escape=exit;key_q=exit;key_n=$n;key_p=$p;key_space=$n;key_BackSpace=$p;\
    button3=exit;button5=$n;button4=$p"
    
      exec dzen2 -l 7 -x $x -y $y -w $menuo -u -e "$agoj"
    }
    
    
    FIFO=${0%.sh}
    [ -p "$FIFO" ] || mkfifo "$FIFO"
    
    rel=0
    enigo | eligo

    Зачем это здесь? Смеха ради.
    Кстати в баше можно организовать bidirectional pipes? Никак не соображу.

    tetsuo, 07 Августа 2012

    Комментарии (10)