eeiam.in 1.3KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. #!/bin/bash
  2. . __FFOOD_INIT__
  3. FFOOD_INIPATH="__FFOOD_INIPATH__"
  4. ffood import core
  5. ffood import recon
  6. #
  7. # self help
  8. #
  9. available_commands() {
  10. echo afk
  11. echo at
  12. echo back
  13. echo gone
  14. echo moving
  15. echo ooo
  16. echo wfh
  17. }
  18. usage() {
  19. cmd_hint=$(
  20. available_commands \
  21. | head -c -1 \
  22. | tr '\n' '|'
  23. )
  24. usage_is "$cmd_hint"
  25. }
  26. #
  27. # querying
  28. #
  29. familiars_at() {
  30. test -n "$1" || usagef "location"
  31. iniread -p iam.needing.at.$1 iam.ini
  32. iniread -p iam.needing.at.ANY iam.ini
  33. }
  34. where_i_am() {
  35. if=$(iniread -p iam.using.if iam.ini)
  36. gwmac=$(arp | grep "^gateway\\>.*\\<$if\$" | tr ' ' '\n' | grep :)
  37. iniread -p iam.seeing.gw.$gwmac iam.ini | grep . || echo OUT
  38. }
  39. #
  40. # subcommand handlers
  41. #
  42. i_am_afk() {
  43. mocp --pause
  44. slock
  45. }
  46. i_am_at() {
  47. where_i_am
  48. }
  49. i_am_back() {
  50. local f fbin
  51. for f in $(familiars_at $(where_i_am));
  52. do
  53. fbin=${f/ */}
  54. pids_matching $f || $f &
  55. done
  56. klist || urxvt -e kinit
  57. }
  58. i_am_gone() {
  59. kdestroy
  60. killall $(familiars_at $(where_i_am))
  61. i_am_afk
  62. i_am_back
  63. }
  64. i_am_moving() {
  65. die "not implemented" # hint: use zleep
  66. }
  67. i_am_ooo() {
  68. die "not implemented"
  69. }
  70. i_am_wfh() {
  71. die "not implemented"
  72. }
  73. cmd=$1
  74. test -n "$cmd" || usage
  75. available_commands | grep -qse ^$1 || usage
  76. i_am_$cmd