explorerplusplus icon indicating copy to clipboard operation
explorerplusplus copied to clipboard

Dark theme

Open 2E0PGS opened this issue 6 years ago • 130 comments

I think it would be awesome to have a dark theme.

Perhaps I will see what the codebase is like and what GUI framework it uses then make a pull-request adding the feature.

2E0PGS avatar Jun 05 '18 16:06 2E0PGS

The default theme just blends in with all other windows, making it very difficult to "see" boundaries. I am using Cubic Explorer (abandoned by developer) with one of about 8 themes. CE's downfall is it defaults to Favorites folder after sleep and hibernation, other wise it is more convenient than Explorer++.

bawldiggle avatar Jul 03 '18 08:07 bawldiggle

Is it possible to customize background color ? I have read the document and find nothing related.

victor23d avatar Nov 10 '18 11:11 victor23d

it would be amazing to have a dark theme. The light theme of even default explorer is way too bright

TeddJohnson avatar Dec 04 '18 03:12 TeddJohnson

I set everything dark, so having a dark theme for this program would be fantastic!

pbsinnett avatar Dec 18 '18 05:12 pbsinnett

There is a post on the forum asking for this feature as well. https://explorerplusplus.com/forum/viewtopic.php?f=4&t=2053

Sartek avatar Feb 04 '19 10:02 Sartek

From a bit of Googling, it seems there isn't a direct way of doing this in Win32 apps. You can get part of the way there by using the undocumented AllowDarkModeForWindow function (see https://stackoverflow.com/questions/53501268/win10-dark-theme-how-to-use-in-winapi) and setting the appropriate background and text colors.

With a few basic changes, this gives the following result:

explorer dark

That's not really a complete result, since the other parts of the interface would need to be updated as well, but it might be possible without too much effort.

derceg avatar Feb 06 '19 08:02 derceg

The reason I want a dark theme is at night if I am doing some work the bright white space can be harsh on my eyes. Even though it is an incomplete result it is still a big improvement. Might be worth having a box in settings that says something like "Experimental: Dark mode [X]"

Sartek avatar Feb 06 '19 09:02 Sartek

Some other implementation notes (since this doesn't really seem to be documented anywhere):

  • https://github.com/ysc3839/VCMPBrowser/blob/b83efe826abb7b2f7c4e82144c28811df4089612/DarkMode.h contains a functional implementation for dark mode.

  • In that file, AllowDarkModeForApp is called followed by FlushMenuThemes (which is the only reference I can find to that function).

  • When calling those functions within Explorer++, every menu becomes styled using the dark mode theme without any further work.

  • Those functions are seemingly not exported by name from uxtheme.dll. You can verify this by looking at the symbols exported by uxtheme.dll. To do this, open a Visual Studio command prompt and run:

    dumpbin /exports uxtheme.dll

    Ordinals 135 (AllowDarkModeForApp) and 136 (FlushMenuThemes) are listed as having no name.

  • If you obtain the symbols for uxtheme.dll (from the Microsoft symbol servers), you can verify that those ordinals map to functions with those names and signatures.

  • Because the functions are internal and undocumented, it's possible they'll be changed or removed in future. Would probably need to check for an exact Windows version number, as is done in the implementation referenced above.

derceg avatar Feb 06 '19 10:02 derceg

Example of dark mode style menu after calling AllowDarkModeForApp and FlushMenuThemes:

explorer dark mode menu

derceg avatar Feb 06 '19 10:02 derceg

How would I go about changing the background color?

mivanit avatar Feb 08 '19 03:02 mivanit

By using the application or by altering the code? There's no way to do it in the application at the moment. If you're looking at modifying the code, you can set the background color for the listview/treeview pretty simply.

derceg avatar Feb 08 '19 09:02 derceg

Some of the relevant changes are already in the application - specifically the code that allows you to set the background + text colors for the listview/treeview. You can test that out by going through the following steps:

  1. Copy the update_theme_colors folder into a "plugins" folder that's in the same directory as the Explorer++ executable.

  2. Run Explorer++ with plugin support enabled:

explorer++.exe --enable-plugins

The listview and treeview should then be styled in a similar way to what's shown above.

I haven't committed the other changes (involving the dark mode functions exposed by uxtheme.dll) anywhere, but the changes are minor and I could commit them on a branch.

derceg avatar Oct 17 '19 10:10 derceg

I spent ~20 mins fiddling around with the latest release on github until I tried the nightly version. If it wasn't already clear, only nightly supports the plugin system right now.

image Is there any way to fix these white lines that show up if you set view to Details and sort by Type?

Snuupy avatar Dec 07 '19 05:12 Snuupy

Is there any way to fix these white lines that show up if you set view to Details and sort by Type?

@Snuupy Tools - Options - Window tab - uncheck "Show gridlines in details view"

Is this what you are looking for?

WildByDesign avatar Dec 15 '19 14:12 WildByDesign

@WildByDesign Ooh, that fixed it. Thank you.

Snuupy avatar Dec 25 '19 04:12 Snuupy

Some of the relevant changes are already in the application - specifically the code that allows you to set the background + text colors for the listview/treeview. You can test that out by going through the following steps:

1. Copy the update_theme_colors folder into a "plugins" folder that's in the same directory as the Explorer++ executable.

2. Run Explorer++ with plugin support enabled:

explorer++.exe --enable-plugins

The listview and treeview should then be styled in a similar way to what's shown above.

I haven't committed the other changes (involving the dark mode functions exposed by uxtheme.dll) anywhere, but the changes are minor and I could commit them on a branch.

@derceg

I follow these instructions with build 1.4.0.1436 (64 bit) and it does not switch to dark mode. All I did was copy the 2 files from the plug/update_theme_colors folder into the root plugin folder and for good measure copied them in the same folder as the exe is in.

I am using the install version so I searched the register for the command line and it was already using --enable-plugins %1.

I am running windows 10 version 1909 OS build 18363.693

What am I missing. Thank you!

aborders75 avatar Mar 04 '20 17:03 aborders75

This is both the most commented on and most upvoted issue out of all your issues, it would be nice if this came to fruition.

gregk-git avatar Apr 30 '20 06:04 gregk-git

Would love this feature, please.

AlDollaz avatar May 12 '20 15:05 AlDollaz

How do I set it to Dark Mode? With all those commits above?

MasterDriverRex avatar Jun 10 '20 09:06 MasterDriverRex

explorer++.exe --enable-dark-mode

Some of the controls Windows offers have limited restyling capabilities, so I probably won't be able to update all of the controls the application uses. But still, I think the current work actually covers most of the application.

The command line option above should work on Windows 10 from 1809 onward, though I've only tested on 1909. I've also done some brief testing on 2004 and it seems to work ok there as well.

derceg avatar Jun 10 '20 10:06 derceg

explorer++.exe --enable-dark-mode

Some of the controls Windows offers have limited restyling capabilities, so I probably won't be able to update all of the controls the application uses. But still, I think the current work actually covers most of the application.

The command line option above should work on Windows 10 from 1809 onward, though I've only tested on 1909. I've also done some brief testing on 2004 and it seems to work ok there as well.

I tried this, on 1909, with both 1.4.0 beta and 1.3.5 (this one downloaded from the Explorer++ website), both x64. Result for 1.4.0 beta?

The following argument was not expected: --enable-dark-mode Run with --help for more information.

After checking with --help, only the following Options pop up:

-h,--help Print this help message and exit --clear-registry-settings Clear existing registry settings --enable-logging Enable logging --enable-plugins Enable the Lua plugin system --remove-as-default Excludes: --set-as-default Remove Explorer++ as the default file manager (requires administrator privileges) --set-as-default Excludes: --remove-as-default Set Explorer++ as the default file manager (requires administrator privileges) --language TEXT Allows you to select your desired language. Should be a two-letter language code (e.g. FR, RU, etc).

As for 1.3.5, it just opens the program; there are no Options or anything, not even --help.

MasterDriverRex avatar Jun 10 '20 10:06 MasterDriverRex

You need to download the latest build from Explorer++ AppVeyor page which is linked on Explorer++ Github page. After a handful of new commits come in, a new build is triggered and compiled on AppVeyor. I consider them like Nightly builds pretty much and use only those builds for the past year or so.

WildByDesign avatar Jun 10 '20 10:06 WildByDesign

You need to download the latest build from Explorer++ AppVeyor page which is linked on Explorer++ Github page. After a handful of new commits come in, a new build is triggered and compiled on AppVeyor. I consider them like Nightly builds pretty much and use only those builds for the past year or so.

That worked! Thank you!

MasterDriverRex avatar Jun 10 '20 10:06 MasterDriverRex

@derceg

So far this implementation of dark theme on Explorer++ is quite stunning and fantastic. I am really quite surprised with all of these recent changes. I greatly appreciate that you have continued developing Explorer++, share code as open source, and particularly thankful for this latest effort to bring dark theme to Explorer++ as well. Keep up the great work.

I think that once the dark theme code has settled, it would be great to push a Beta 2 release for those who are not as familiar with AppVeyor.

I just wanted to share what I have so far with the latest commits and running on latest Windows 10 (19041.329 / build 2004) and possibly share some feedback and suggestions.

explorerpp

  • The right side panel (listview) still shows scrollbars (horizontal and vertical) as light theme. The tree view side is showing correct dark theme scrollbars.

  • The X icon to "Hide the folder pane" is probably the main outstanding visual issue regarding your current implementation of dark theme. It seems to still have a light background of (f0f0f0) in dark mode and therefore stands out significantly. If you can't set dark mode to that section via API, possibly there is a more 'hacky' way to recolor that small section manually.

  • The menu bar is still showing as light theme, yet the drop down menus and all right-click menus correctly show dark theme.

Suggestion: Invert the 'Windows 10' icon theme included with Explorer++. By default, the 'Windows 10' icon theme included with Explorer++ are dark icons which look good with the default light theme but on dark theme need to be inverted to light icons. (my screenshot above is showing Color icon theme, not Windows 10 icon theme because it was too dark to see).

WildByDesign avatar Jun 10 '20 12:06 WildByDesign

For anyone looking for the AppVeyor link .

Click on the build you want to download and then open the "Artifacts" tab.

image

muscarina avatar Jul 04 '20 10:07 muscarina

@derceg Thank you for your continued efforts with your dark theme.

Is it possible to fix the double border lines around the different sections of the status bar?

Explorer++-StatusBar

I believe that it is a single border line in default mode. So if you could do either a single border for dark mode or even no border like in Windows Explorer, either would be greatly appreciated. This double border line in the status bar is the only thing left that really stands out to me.

Cheers!

WildByDesign avatar Jul 11 '20 02:07 WildByDesign

I have been playing around with Microsoft's brand new (https://github.com/microsoft/fluentui-system-icons) fluent system icons lately and converting them for use with Explorer++.

Example: Epp-fluentui-system-icons

I had to batch convert them from SVG to PNG using ImageMagick in which I also inverted the icons during the process. I compiled Explorer++ with the icons and the result was quite pleasing, I think.

Problem: It seems that, regardless, the smaller sized icons (16x16) seem to look really bad with the Dark theme. Whether it is with your inverted code within the program or me manually inverting all of these other icons, small (16x16) icons seem to look terrible in the toolbar using Dark theme. In that case, I just use large icons (24x24) in toolbar for the time being.

@derceg Do you want me to provide you with all of these (37) icons that I have picked out, renamed, and converted/inverted from Microsoft's fluent system icons repo?

My methods are much more manual and not at all programmatic like your abilities. I am happy to help and share if you would like.

WildByDesign avatar Jul 13 '20 14:07 WildByDesign

@derceg Do you want me to provide you with all of these (37) icons that I have picked out, renamed, and converted/inverted from Microsoft's fluent system icons repo?

Sure, that would be good. Having a wider set of icon themes overall would be good, I think.

derceg avatar Jul 15 '20 15:07 derceg

Can anyone tell me what I'm doing wrong here? I'm downloading explorerpp_x64.zip from "latest builds", extracting, then making a shortcut and adding the --enable-dark-mode command line switch.

Every time I try to run it, I get "Explorer++ has stopped working". Never been the best at following directions, so I'm hoping I'm doing something wrong because this looks cool as hell, and it'd suck if it isn't compatible with Win 8.1 or something.

narcolepticinsomniac avatar Jul 24 '20 09:07 narcolepticinsomniac

Damn. Thought this was a simple enough question to get a response, for sure.

narcolepticinsomniac avatar Jul 25 '20 22:07 narcolepticinsomniac