3

OLED panels are susceptible to burn-in. How can I make the taskbar/tray and quicklaunch icons/text (even if it makes the taskbar itself) darker? I know about the dark theme, but please understand that does not make the icons in the taskbar and quicklaunch bar darker, only the bar's background colour.

Please also note, I do NOT want to autohide the taskbar/tray, as I've heard a million people recommend that, but it's not for me.

16
  • Not an answer but you should read this: cnet.com/tech/home-entertainment/… Commented Nov 28, 2021 at 19:25
  • Is your taskbar always visible, or do you also occasionally game, watch movie, youtube, etc, where it goes full screen and the taskbar is not shown?
    – LPChip
    Commented Nov 28, 2021 at 19:34
  • @LPChip: Yes, sometimes I watch Youtube and play games which removes the task bar. But most of the time, like when I'm browsing or using Excel/Photoshop etc., it's visible.
    – Twinbee
    Commented Nov 28, 2021 at 21:07
  • To make icons in your taskbar darker, you'd need to edit them. Have you looked into modifying icons? Commented Nov 28, 2021 at 21:24
  • @music2myear: That sounds painful - there must be a simpler way than that.
    – Twinbee
    Commented Nov 28, 2021 at 21:28

4 Answers 4

1
+50

You can use the free AutoHotkey.

The following AutoHotkey script will cover the taskbar with a semi-transparent window that is click-through, but will hide it when a window becomes full-screen:

SysGet, Monitor, Monitor                   ; Get monitor dimensions
SysGet, WorkArea, MonitorWorkArea          ; Get monitor work-area without taskbar
dimtop := % WorkAreaBottom + 1             ; taskbar is assumed to start below the work-area
Gui Color, 0,0                             ; Black color
Gui -Caption +ToolWindow +E0x20            ; No title bar, No taskbar button, Transparent for clicks
Gui Show, X0 Y%dimtop% W%MonitorRight% H63 ; Create a semi-transparent cover window
WinGet ID, ID, A                           ; Get its HWND/handle ID
Winset AlwaysOnTop,ON,ahk_id %ID%          ; Keep it always on the top
WinSet Transparent,99,ahk_id %ID%          ; Transparency 99/256
SetTimer, coverIt, 500                     ; Repeat setting it to be on top of the taskbar
return

coverIt:
    WinGet style, Style, A                 ; Get active window style and dimensions
    WinGetPos ,,,winW,winH, A
    ; 0x800000 is WS_BORDER.
    ; 0x20000000 is WS_MINIMIZE.
    ; check no border and not minimized
    isfull := ((style & 0x20800000) = 0 and winH >= A_ScreenHeight and winW >= A_ScreenWidth)
    if (isfull) {
        WinHide, ahk_id %ID%
    } else {
        WinShow, ahk_id %ID%
        Winset AlwaysOnTop,ON,ahk_id %ID%      ; Ensure it is still on the top
    }
    return

After installing AutoHotKey, put the script in a .ahk file and double-click it to test. You may stop the script by right-click on the green H icon in the traybar and choosing Exit. To have it run on login, place it in the Startup group at C:\Users\USER-NAME\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup.

11
  • 2
    Wow what CAN'T AutoHotkey do? This looks great so far. I'll test it out over the next couple of days and see how well it goes. There's a small glitch where I can see the bar removes the transparency for less than a second sometimes when I left/right click some icons or click Switch to desktop, but it's fairly tolerable (maybe some way to temporarily make the bar bright again if the mouse cursor hovers over it and dark again when it's not?). One small correction, the 'transparency' number looks like it's out of 256 rather than as a percentage. I tried value 240, and that's near pitch black.
    – Twinbee
    Commented Dec 7, 2021 at 13:36
  • Another 'bug' I found. When I view things full screen (e.g: Youtube or Irfanview), the bottom portion of the screen is still dark. Any way to automatically turn it off in those cases, and back on again when out of full screen?
    – Twinbee
    Commented Dec 7, 2021 at 13:40
  • I fixed the comment about Transparency. For shortening the time when the taskbar is visible, reduce the number on the SetTimer command. The script can be made to be turned off and on by shortcut keys, as a solution for not interfering with full-screen windows - let me know if needed.
    – harrymc
    Commented Dec 7, 2021 at 14:43
  • Shortening the timer repeat length can make it flicker and may eat up GPU/CPU usage if it's running every tenth of a second or whatever. I assume there's no way for AHK to detect or even intercept full screen is in use and thus turn off automatically? A shortcut to turn on/off would be the next best thing I suppose.
    – Twinbee
    Commented Dec 7, 2021 at 15:19
  • 1
    Done. Increasing the bounty is not possible, except by setting an additional bounty.
    – harrymc
    Commented Dec 7, 2021 at 20:40
2

Just wanted to update the script provided by @harrymc and asked by @ccrez. You can find it on my website here.

I made so that the script deactivate if you're on your primary monitor in full screen but not if it is an app in a secondary monitor that is in full screen.

Goal

  1. Auto-dim the taskbar to prevent burn in.
  2. Keep the dimming when an app is opened in full-screen on a second monitor.
  3. Stop the dimming if an app is opened full-screen on the primary monitor.

Sources

Script

SysGet, Monitor, Monitor                   ; Get monitor dimensions
SysGet, WorkArea, MonitorWorkArea          ; Get monitor work-area without taskbar
dimtop := % WorkAreaBottom + 1             ; taskbar is assumed to start below the work-area
Gui Color, 0,0                             ; Black color
Gui -Caption +ToolWindow +E0x20            ; No title bar, No taskbar button, Transparent for clicks
Gui Show, X0 Y%dimtop% W%MonitorRight% H63 ; Create a semi-transparent cover window
WinGet ID, ID, A                           ; Get its HWND/handle ID
Winset AlwaysOnTop,ON,ahk_id %ID%          ; Keep it always on the top
WinSet Transparent,99,ahk_id %ID%          ; Transparency 99/256
SetTimer, coverIt, 500                     ; Repeat setting it to be on top of the taskbar
return

GetCurrentMonitor()
{
  SysGet, numberOfMonitors, MonitorCount
  WinGetPos, winX, winY, winWidth, winHeight, A
  winMidX := winX + winWidth / 2
  winMidY := winY + winHeight / 2
  Loop %numberOfMonitors%
  {
    SysGet, monArea, Monitor, %A_Index%
    if (winMidX > monAreaLeft && winMidX < monAreaRight && winMidY < monAreaBottom && winMidY > monAreaTop)
      return A_Index
  }
  SysGet, primaryMonitor, MonitorPrimary
  return "No Monitor Found"
}

coverIt:
    WinGet style, Style, A                 ; Get active window style and dimensions
    WinGetPos ,,,winW,winH, A
    ; 0x800000 is WS_BORDER.
    ; 0x20000000 is WS_MINIMIZE.
    ; check no border and not minimized
    isfull := ((style & 0x20800000) = 0 and winH >= A_ScreenHeight and winW >= A_ScreenWidth)
    isPrimaryMonitor := (GetCurrentMonitor() = 1)
    if (isfull and isPrimaryMonitor) {
        WinHide, ahk_id %ID%
    } else {
        WinShow, ahk_id %ID%
        Winset AlwaysOnTop,ON,ahk_id %ID%      ; Ensure it is still on the top
    }
    return
1

I took the script @harrymc provided and converted it for AutoHotkeys version 2. Had to add a try/catch block because in version 2 it would occasionally throw errors when opening the start menu. The catch block is empty, as there isn't anything to do in terms of error handling (just continue). There are probably better solutions to this, but it does work for me.

EDIT 13 MAY 2024: AUTOMATICALLY DETERMINE HEIGHT OF TASKBAR

; DIM TASKBAR FOR AUTOHOTKEYS V2
MonitorGet(, &MonitorLeft, &MonitorTop, &MonitorRight, &MonitorBottom)                   ; Get monitor dimensions
MonitorGetWorkArea(, &WorkAreaLeft, &WorkAreaTop, &WorkAreaRight, &WorkAreaBottom)          ; Get monitor work-area without taskbar
dimtop := WorkAreaBottom              ; taskbar is assumed to start below the work-area
dimheight := MonitorBottom - WorkAreaBottom ; determine height of taskbar
myGui := Gui()
myGui.BackColor := "0"                             ; Black color
myGui.Opt("-Caption +ToolWindow +E0x20")            ; No title bar, No taskbar button, Transparent for clicks
myGui.Show("X0 Y" . dimtop . " W" . MonitorRight . " H" . dimheight) ; Create a semi-transparent cover window
ID := WinGetID("A")                           ; Get its HWND/handle ID
WinSetAlwaysOnTop(1, "ahk_id " ID)          ; Keep it always on the top
WinSetTransparent(128, "ahk_id " ID)          ; Transparency 128/256 = 50%
SetTimer(coverIt,100)                     ; Repeat setting it to be on top of the taskbar
return

coverIt()
{
    try 
    {
        style := WinGetStyle("A")                 ; Get active window style and dimensions
        WinGetPos(, , &winW, &winH, "A")
        ; 0x800000 is WS_BORDER.
        ; 0x20000000 is WS_MINIMIZE.
        ; check no border and not minimized
        isfull := ((style & 0x20800000) = 0 and winH >= A_ScreenHeight and winW >= A_ScreenWidth)
        if (isfull) {
            WinHide("ahk_id " ID)
        } else {
            WinShow("ahk_id " ID)
            WinSetAlwaysOnTop(1, "ahk_id " ID)      ; Ensure it is still on the top
        }
    }
    catch 
    {
        ; NOOP
    }
    return
}
3
  • Cheers. I use a program called Linkbar which displays a remade "QuickLaunch", and I choose to have it shown on the left of the screen. It fills in a massive hole in functionality that Windows 11 has. Any chance the code can easily be adapted for that?
    – Twinbee
    Commented May 8 at 17:21
  • 1
    @Twinbee Assuming Linkbar is at full height, left side of the screen and deducted from what AutoHotkeys understands as WorkArea (as it does with the taskbar), try replacing the myGui.Show line above with: myGui.Show("X0 Y0 W" . WorkAreaLeft . " H" . dimtop) If Linkbar is not deducted from WorkArea, you will need to replace WorkAreaLeft with a fixed value, say 50. Quick explanation: myGui.Show("X10 Y20 W50 H100") would mean: draw window 10 pixels from the left 20 pixels from the top with width of 50 pixels height of 100 pixels
    – HELIX
    Commented May 12 at 22:19
  • That works almost perfectly - thankyou! The only problem I have is when I click on the desktop (or click the Show Desktop button at the very corner of the Windows screen), then it comes back to full brightness. Any way around that?
    – Twinbee
    Commented May 21 at 14:00
0

If you do not want to set the taskbar to auto-hide, so it appears only when your cursor is upon it, which is the simplest and most effective solution, then you might try third-party software, such as free Open-Shell Menu.

Open-Shell Menu lets you set the transparency and color of the taskbar and the color of the text, though the icons themselves do not appear to be affected. To do so, you'd need to find or to create a custom icon for each item in the Start Menu, and to modify the executable to change its own icon.

Open-Shell Menu taskbar settings

If you find erratic taskbar behavior an issue in auto-hide mode, try another third-party tool, such as Taskbar Activate or an alternative.

2
  • Thanks. I can confirm that OpenShell does not affect the icons unfortunately. For me, Auto-hiding is not desirable even in its most ideal state because it adds latency for when I want to quickly switch between windows (especially painful if I need to switch back and forth constantly). I tend to also hate slidey menus that drop down from webpages too.
    – Twinbee
    Commented Nov 28, 2021 at 22:38
  • 1
    @DanW, For me, Alt-Tab, or better yet, Windows-<n>, is far quicker for switching tasks. No need to take your eyes off the keyboard. Commented Nov 28, 2021 at 23:32

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .