AlexanderPro / SmartSystemMenu

SmartSystemMenu extends system menu of all windows in the system
MIT License
1.96k stars 110 forks source link

[Request] Window color inversion(Forced dark mode) #74

Open superuser7777 opened 2 years ago

superuser7777 commented 2 years ago

Thank you for the great software! I changed from "Dialog Mate 2". There are two Requests.

1: Window color inversion(Forced dark mode) 2: Window dimmer

There are some applications that don't support dark mode. I think there is a great demand for being able to switch to dark mode on a window-by-window basis. Maybe, just the window dimmer is fine.

AlexanderPro commented 2 years ago

Could you send a link to "Dialog Mate 2" or such like software with dark mode on a window-by-window basis?

superuser7777 commented 2 years ago

Thanks for the reply. Sorry, I've been using it for years and didn't realize the name had changed.. ・performant-software/dm-2: Digital Mappa (DM for short)  https://github.com/performant-software/dm-2

such like software with dark mode on a window-by-window basis?

Yes, that's right. I looked on progsoft.net and alternativeto.net but could not find any software. If we can make it happen, it may be a first.

JungleJango commented 2 years ago

An interesting discussion about this subject to take notes is this issue opened here https://github.com/mlaily/NegativeScreen/issues/5 .It may be helpfull.

superuser7777 commented 2 years ago

I found a Window dimmer using AHK. It works as expected.


; Name: Dimmer box ; Description: Dim selected windows with an overlay box ; credits: Speedmaster, Skwire ; Topic: https://www.autohotkey.com/boards/viewtopic.php?f=6&t=78587 ; Sript version: 1.0 ; AHK Version: 1.1.24.03 (A32/U32/U64)

Dimmer_box_On:
winid:=""
    WinGetPos, X, Y, W, H, A
WinGet, winid,, A

if instr(idlist, winid) {
    for k, v in strsplit(idlist, "_") {
        if (v) {
                WinGetPos, X, Y, W, H, % "ahk_id " . v
                if w
                Gui, dim_%k% : Show, % "x" . x . "y" . y . "w" . w . "h" . h, Overlay
                else
                Gui, dim_%k% : Destroy
        }
    }
return
}

if instr(excludelist, winid)
return

if !winid
return

dimcount++

if winid
    idlist .= winid "_"

; thx Skwire
Gui, dim_%dimcount% : +Toolwindow -Caption +Lastfound +AlwaysOnTop
Gui, dim_%dimcount% : Color, black ; Change overlay colour here.
Gui, dim_%dimcount% : Show, % "x" . x . "y" . y . "w" . w . "h" . h, Overlay
GUI_ID := WinExist()

excludelist .= gui_id

WinSet, Transparent, 50       , % "ahk_id " . GUI_ID ; Change the numerical value for opaqueness amount.
WinSet, ExStyle    , +0x00000020, % "ahk_id " . GUI_ID ; Leave this value alone
Return

Dimmer_box_Off:
loop, % dimcount
Gui, dim_%a_index% : Destroy

idlist:=excludelist:=dimcount:=winid:=""

return