Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 5 Aug 2019 11:14:23 +0200
From:      Ralf Mardorf <ralf.mardorf@rocketmail.com>
To:        freebsd-questions@freebsd.org
Subject:   Re: thunderbird in German?
Message-ID:  <20190805111423.012d4fa3@archlinux>
In-Reply-To: <20190805110706.1b21e528@archlinux>
References:  <87o91bw4mx.fsf@toy.adminart.net> <20190731012754.3783a859.freebsd@edvax.de> <878ssc5v3x.fsf@toy.adminart.net> <20190802060356.eebda021.freebsd@edvax.de> <87tvaz8gkn.fsf@toy.adminart.net> <20190802213025.884985d57dbfd7bf20ae4cd5@sohara.org> <87lfw9bxeb.fsf@toy.adminart.net> <20190804093710.66948e68@archlinux> <20190805071120.c258204a.freebsd@edvax.de> <20190805110706.1b21e528@archlinux>

next in thread | previous in thread | raw e-mail | index | archive | help
Oops, the lines of the script were wrapped by accident.

[rocketmouse@archlinux ~]$ cat /usr/local/bin/window2unhide 
#!/bin/dash

# window2unhide 2017-08-25 Ralf Mardorf

# To configure window2unhide you could use /etc/profile.d/window2unhide.sh
#
# values of the wanted x and y position of the window
# export WINDOW2UNHIDE_X_POS=hold
# export WINDOW2UNHIDE_Y_POS=141
#
# delay required to ensure that a launched application's window is active
# export WINDOW2UNHIDE_SLEEP=1
#
# values to eliminate x and y drift of the window
#   this fix is needed for all windows
# export WINDOW2UNHIDE_X_FIX=2
# export WINDOW2UNHIDE_Y_FIX=54
#
# offset required to eliminate x and y drift of the window if x and/or y do/does not change
#   this offset is needed for windows that open under the top panel
#     but its unfavorable for windows that don't open under the top panel
# export WINDOW2UNHIDE_X_OFF=1
# export WINDOW2UNHIDE_Y_OFF=25

unhide_window ()
{
  # values of the wanted x and y position of the window
  case $WINDOW2UNHIDE_X_POS in
    ""|hold)
      WINDOW2UNHIDE_X_POS=$X
    ;;
  esac
  case $WINDOW2UNHIDE_Y_POS in
    "")
      WINDOW2UNHIDE_Y_POS=141
    ;;
    hold)
      WINDOW2UNHIDE_Y_POS=$Y
    ;;
  esac

  # value to eliminate x drift of the window
  case $WINDOW2UNHIDE_X_FIX in
    "")
      WINDOW2UNHIDE_X_FIX=2
    ;;
  esac

  # calculate value for x position of the window...
  case $WINDOW2UNHIDE_X_POS in
    $X) # ...if the x position doesn't change subtract the value to eliminate x drift and add an offset
      case $WINDOW2UNHIDE_X_OFF in
      "") 
        WINDOW2UNHIDE_X_OFF=1
      ;;
      esac
      X_POS=$(expr $WINDOW2UNHIDE_X_POS - $WINDOW2UNHIDE_X_FIX + $WINDOW2UNHIDE_X_OFF)
    ;;
    *) # ...if the x position does change subtract the value to eliminate x drift
      X_POS=$(expr $WINDOW2UNHIDE_X_POS - $WINDOW2UNHIDE_X_FIX)
    ;;
  esac

  # value to eliminate y drift of the window
  case $WINDOW2UNHIDE_Y_FIX in
    "")
      WINDOW2UNHIDE_Y_FIX=54
    ;;
  esac

  # calculate value for y position of the window...
  case $WINDOW2UNHIDE_Y_POS in
    $Y) # ...if the y position doesn't change subtract the value to eliminate y drift and add an offset
      case $WINDOW2UNHIDE_Y_OFF in
        "")
          WINDOW2UNHIDE_Y_OFF=25
        ;;
      esac
      Y_POS=$(expr $WINDOW2UNHIDE_Y_POS - $WINDOW2UNHIDE_Y_FIX + $WINDOW2UNHIDE_Y_OFF)
    ;;
    *) # ...if the x position does change subtract the value to eliminate x drift
      Y_POS=$(expr $WINDOW2UNHIDE_Y_POS - $WINDOW2UNHIDE_Y_FIX)
    ;;
  esac

  # move the window to new position
  wmctrl -i -r $WINDOW -b remove,maximized_vert,maximized_horz
  wmctrl -i -r $WINDOW -e "0,$X_POS,$Y_POS,$WIDTH,$HEIGHT"
}

case $1 in
  "") # unhide active window
    eval $(xdotool getwindowgeometry --shell $(xdotool getactivewindow))
    unhide_window
  ;;
  *)  # launch an application and unhide its window
    case $WINDOW2UNHIDE_SLEEP in
      "")
        WINDOW2UNHIDE_SLEEP=1
      ;;
    esac
    $@ &
    sleep $WINDOW2UNHIDE_SLEEP # ensure that the window of the launched application...
    eval $(xdotool getwindowgeometry --shell $(xdotool getactivewindow))
    wmctrl -l | grep $(printf '%x\n' $WINDOW) | grep -qi $1 # ...is the active window
    case $? in
      0)
        unhide_window
      ;;
    esac
  ;;
esac
exit



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20190805111423.012d4fa3>