The Cookie Machine - Click here to drag window

DUMMY TEXT - Real text set in assets/js/theCookieMachine.js

Views: 1,085β€…    Votes:  5β€…
Tags: unity   themes   window   colors  
Link: πŸ” See Original Answer on Ask Ubuntu πŸ”—

URL: https://askubuntu.com/q/1189575
Title: Different colors for active/inactive Unity window title bars?
ID: /2019/11/17/Different-colors-for-active_inactive-Unity-window-title-bars_
Created: November 17, 2019    Edited:  November 20, 2019
Upload: November 24, 2022    Layout:  post
TOC: false    Navigation:  true    Copy to clipboard:  false


Skip

Out of the box solution

There is a quick little trick pressing Alt+F7, jiggling your mouse and then press Left-Click on mouse when window is positioned back where you wanted it.

The disadvantage is time to manually realign window to it’s original coordinates. A better method involving a script assigned to shortcut key is described in the next section.


Top ToS Skip

Reveal active Window with Shortcut Key

This is an improved script over revealwindow2 documented in the next section. That script shrinks and expands the window which overtaxes browser windows that have to reformat the web page layouts.

This new script revealwindow3 can be assigned to a shortcut key so no matter where you are you know the active window:

reveal window3.gif

Top ToS Skip

revealwindow3 bash script

#!/bin/bash

# NAME: revealwindow3
# CALL: Best method is to call via hotkey.

# DESC: Reveal active window by moving it in circle on screen.
# PARM: Pare 1 override default # pixels for moving
#       For Ask Ubuntu Question:
#       https://askubuntu.com/questions/943147/different-colors-for-active-inactive-unity-window-title-bars

# DATE: November 19, 2019.

# NOTE: Enhancement to revealwindow2 which shrinks and expand sizes of window
#       which taxes browsers, etc. that have to reformat the window. Also cause
#       of epileptic like shock.

# Dependancy
command -v xdotool >/dev/null 2>&1 || { echo >&2 \
        "xdotool package required but it is not installed.  Aborting."; \
        exit 3; }

# Defaults

STEP_PIXELS=25
SLEEP=.025

if [[ "$#" -eq 1 ]] ; then
    [[ "$1" -lt 5 ]] || [[ "$1" -gt 1000 ]] && { \
        echo "STEP_PIXELS must be between 5 and 1000" ; exit 2; }
    STEP_PIXELS="$1"
fi

# Get Window Information
    WinID=$(xdotool getactivewindow)
  WinLeft=$(xwininfo -id "$WinID" | grep 'ute upper-left X:' | cut -d: -f2)
   WinTop=$(xwininfo -id "$WinID" | grep 'ute upper-left Y:' | cut -d: -f2)
#echo "Win Flds: $WinLeft x $WinTop x $WinWidth x $WinHeight"

# Array of steps
StepArr=( R R R R R D D D D L L L L L U U U U U )

CurrLeft=$(( WinLeft - (STEP_PIXELS *2) ))
[[ $CurrLeft -lt 0 ]] && CurrLeft=0
CurrTop=$(( WinTop - (STEP_PIXELS *3) ))
[[ $CurrTop -lt 0 ]] && CurrTop=0
          
function XdoMove () {
    local i
    i="$1"
    case "$1" in
    R)
        CurrLeft=$(( CurrLeft + STEP_PIXELS )) ;;
    D)
        CurrTop=$(( CurrTop + STEP_PIXELS )) ;;
    L)
        CurrLeft=$(( CurrLeft - STEP_PIXELS ))
        [[ $CurrLeft -lt 0 ]] && CurrLeft=0 ;;
    U)
        CurrTop=$(( CurrTop - STEP_PIXELS ))
        [[ $CurrTop -lt 0 ]] && CurrTop=0 ;;
    esac

    xdotool windowmove "$WinID" "$CurrLeft" "$CurrTop"
    sleep $SLEEP
}

xdotool windowmove "$WinID" "$CurrLeft" "$CurrTop"
for i in "${StepArr[@]}" ; do XdoMove "$i" ; done


# Restore original Window size and position just in case
xdotool windowmove "$WinID" "$WinLeft" "$WinTop"

sleep .1 # Need time for xorg to update itself.

# Compensate for Window refusing to move to top (Y) coordinate specified
   InfoTop=$(xwininfo -id "$WinID" | grep 'ute upper-left Y:' | cut -d: -f2)

if [[ $InfoTop -ne $WinTop ]] ; then
    Adjust=$((InfoTop - WinTop))
    AdjTop=$((WinTop - Adjust))
    xdotool windowmove "$WinID" "$WinLeft" "$AdjTop"
    echo "Top adjusted by: -$Adjust from: $WinTop to: $AdjTop"
fi


Top ToS Skip

A script to highlight active window

This method uses shortcut key. I used Ctrl+Alt+W because left pinky + left middle finger + left thumb is an easy combination. Assign the shortcut key to the script reavelwindow2.

revealwindow2.gif

The script shrinks the active window in 10 steps and then expands it in 5 steps. Originally I wrote the script using wmctrl but it wouldn’t work for me. So I used xdotool instead:

#!/bin/bash

# NAME: revealwindow2
# CALL: Best method is to call via hotkey.

# DESC: Shrink and expand size of active window.
#       For Ask Ubuntu Question:
#       https://askubuntu.com/questions/943147/different-colors-for-active-inactive-unity-window-title-bars

# DATE: November 17, 2019. Modified November 18, 2019.

# Dependancy
command -v xdotool >/dev/null 2>&1 || { echo >&2 \
        "xdotool package required but it is not installed.  Aborting."; \
        exit 3; }

# Get Window Information
    WinID=$(xdotool getactivewindow)
  WinLeft=$(xwininfo -id "$WinID" | grep 'ute upper-left X:' | cut -d: -f2)
   WinTop=$(xwininfo -id "$WinID" | grep 'ute upper-left Y:' | cut -d: -f2)
 WinWidth=$(xwininfo -id "$WinID" | grep 'Width:' | cut -d: -f2)
WinHeight=$(xwininfo -id "$WinID" | grep 'Height:' | cut -d: -f2)
#echo "Win Flds: $WinLeft x $WinTop x $WinWidth x $WinHeight"

WidthStep=$(( WinWidth / 10 ))
HeightStep=$(( WinHeight / 10 ))

function XdoResize () {
    local i
    i="$1"
    NewLeft=$(( i * WidthStep/2 + WinLeft ))
    NewTop=$(( i * HeightStep/2 + WinTop ))
    NewWidth=$(( WinWidth - ( i * WidthStep) ))
    NewHeight=$(( WinHeight - ( i * HeightStep) ))

    xdotool windowsize "$WinID" "$NewWidth" "$NewHeight"
    xdotool windowmove "$WinID" "$NewLeft" "$NewTop"
    sleep .012
}

# Shrink window with xdotool
for (( i=1; i<10; i++ )) ; do XdoResize $i ; done

# Expand window with xdotool
for (( i=5; i>0; i-- )) ; do XdoResize $i ; done

# Restore original Window size and position just in case
xdotool windowsize "$WinID" "$WinWidth" "$WinHeight"
xdotool windowmove "$WinID" "$WinLeft" "$WinTop"

sleep .1 # Need time for xorg to update itself.

# Compensate for Window refusing to move to top (Y) coordinate specified
   InfoTop=$(xwininfo -id "$WinID" | grep 'ute upper-left Y:' | cut -d: -f2)

if [[ $InfoTop -ne $WinTop ]] ; then
    Adjust=$((InfoTop - WinTop))
    AdjTop=$((WinTop - Adjust))
    xdotool windowmove "$WinID" "$WinLeft" "$AdjTop"
    echo "Top adjusted by: -$Adjust from: $WinTop to: $AdjTop"
fi

Some windows don’t allow resizing. In this case the Window will just move down to the right and then back up to the left. You still get the same visual clues which is the active window, just with different movements.

Top ToS
⇧ Grub wait time 10 seconds after editing to "0" in /etc/default/grub? How to automate the input of a password, in a custom batch file?  β‡©