rufus
rufus copied to clipboard
Dark theme
Checklist
- [x] I looked at https://github.com/pbatard/rufus/wiki/FAQ to see if my question has already been answered.
- [x] I performed a search in the issue tracker for similar issues using keywords relevant to my problem, such as the error message I got from the log.
- [x] I clicked the 'Log' button or pressed Ctrl-L in Rufus, and copy/pasted the log into the line that says
<FULL LOG>below. - [x] The log I am copying is the FULL log, starting with the line
Rufus version: x.y.z- I have NOT removed any part of it.
Additionally (if applicable):
- [ ] I ran a bad blocks check, by clicking Show advanced format options then Check device for bad blocks, and confirmed that my USB is not defective.
- [ ] I also tried one or more of the following:
- [ ] Using a different USB drive.
- [ ] Plugging the USB into a different port.
- [ ] Running Rufus on a different computer.
- [ ] If using an image, I clicked on the
(✓)button to compute the MD5, SHA1 and SHA256 checksums, which are therefore present in the log I copied. I confirmed, by performing an internet search, that these values match the ones from the official image.
Issue description
Please add a dark theme to the application. Because using your application at night or in dark rooms is very unpleasant because of the bright white background. Ideally, it would not be bad if the theme of the application matches the theme of the system.
Log
Rufus x86 v3.8.1580
Windows version: Windows 10 64-bit (Build 18363)
Syslinux versions: 4.07/2013-07-25, 6.03/2014-10-06
Grub versions: 0.4.6a, 2.04
System locale ID: 0x0409 (en-US)
Will use default UI locale 0x0409
SetLGP: Successfully set NoDriveTypeAutorun policy to 0x0000009E
Localization set to 'en-US'
Found USB 3.0 device 'SanDisk Extreme USB Device' (0781:5580)
1 device found
Disk type: FIXED, Disk size: 32 GB, Sector size: 512 bytes
Cylinders: 3814, Tracks per cylinder: 255, Sectors per track: 63
Partition type: GPT, NB Partitions: 2
Disk GUID: {030D783E-D755-4F13-B0DE-DC4CD198923F}
Max parts: 128, Start Offset: 17408, Usable = 31376672768 bytes
Partition 1:
Type: {EBD0A0A2-B9E5-4433-87C0-68B6B72699C7}
Name: 'Main Data Partition'
ID: {DE2B131C-7262-4342-AAB4-31DCCE44F22E}
Size: 29.2 GB (31374572544 bytes)
Start Sector: 2048, Attributes: 0x0000000000000000
Partition 2 (UEFI:NTFS):
Type: {EBD0A0A2-B9E5-4433-87C0-68B6B72699C7}
Name: 'UEFI:NTFS'
ID: {A2D082BE-05CD-49F3-9B5C-866508AAF678}
Size: 512 KB (524288 bytes)
Start Sector: 61280510, Attributes: 0x0000000000000000
I'm going to defer that one.
For one thing I'm not going to add a dark theme, or themes in general, because we're not dealing with a media player application here, so the ability to use custom themes is hardly something I want to spend time on when it is a limited resource.
On the other hand, yeah, it would be better if Rufus used the same default colors as the current Windows theme, but we're not using WPF, UWP or whatever the latest flavour of the day Microsoft decided to go with for their nth attempt at revamping GDI and try to coerce developers away from using perfectly functional C interfaces, so this is going to need some work, especially as we tried to future-proof our color picking for just that case, by using GetSysColor(), and Microsoft, for NO FRIGGING GOOD REASON, decided that GetSysColor() cannot be used to pick Dark Theme colours...
I'm also seeing worrying reports (same link as above) such as:
In the case of classic apps dark mode is problematic because basic Windows controls (buttons, labels, edit fields) do not support it.
Well, basic Windows controls are what Rufus uses, which means that, as opposed to what many people seem to think, adding Dark Theme support to Rufus is likely to require a lot of work for a feature that, when all things are considered, is a minor inconvenience at best (sorry, but your eyes are not going to start bleeding just because an app doesn't have a Dark Theme). As such, I'm going to defer this for now, which means it'll probably be years before I look at it, and, because Microsoft seems adamant about making the life of old-school UI developers miserable, with no guarantee whatsoever that it's ever going to be implemented.
→ Deferred
Oh, and as always, if someone is really annoyed by this and can produce a Pull Requests that adds the feature (but without making UI handling a lot messier than it already is), I'll be happy to apply it.
😃

I've had some of that for a while too (haven't bothered with the dropdown or status bar yet, since as I stated this isn't a high priority and I've had more important things to deal with):

I mean, why else do you think I bothered with this recently?
Hopefully, if you are trying your hand at it rather than just publishing a quick screenshot, you are realizing that there's a lot more to doing dark mode properly than people realize. For one thing, if you want to have colours for the progress bar that are consistent with the user's theme, rather than force ones you pick yourself, you probably found that Microsoft's GetImmersiveColorXXX() APIs are mysteriously missing some important values, such as the border for buttons and so on, which would really come handy...
So, again, for all the impatient folks who may be tempted to think that this is a 5 mins job, adding proper dark mode support is not as simple as a dropped screenshot may lead you to think. And also, this is a low priority issue, which means it's unlikely to happen fast, especially as I don't want to go for quick and dirty fix that would both be problematic to maintain and ignore Windows' allegedly officially way of picking theme colours...
I didn't change anything within Rufus, I have a 3rd party theme applied to Windows which trickles down to other applications such as Rufus, qBittorrent, Everything, etc.
I didn't change anything within Rufus, I have a 3rd party theme applied to Windows which trickles down to other applications such as Rufus, qBittorrent, Everything, etc.
Care to share the name of the program/theme?
@freakshow999 commented on 11 May 2020, 18:20 GMT+10:
I didn't change anything within Rufus, I have a 3rd party theme applied to Windows which trickles down to other applications such as Rufus, qBittorrent, Everything, etc.
Care to share the name of the program/theme?
Program to patch Windows to allow 3rd party themes: https://www.syssel.net/hoefs/software_uxtheme.php?lang=en
Theme I'm using: https://www.deviantart.com/kdr3w/art/Dev-825722799
This might be useful: https://github.com/microsoft/ProjectReunion/issues/41#issue-622186032
@AnuthaDev, that's what I'm using for the screenshot I posted above, but thanks.
Again, I am working on adding Dark Mode, but as you should understand, it's just not that high a priority.
I agree dark mode is needed, but a theme manager is not necessary. I think following system choice is the best option out there
I think following system choice is the best option out there
That's the plan. But, again, it's very low priority compared to other stuff. And it's not as simple to add as people think it is.
Yeah, just saying that the idea of a theme manager is totally useless
I would like to help in the making of dark mode, the dark mode rises. I'm looking for open source project that need help, please let me know where to start.
I would like to suggest that in this dark mode design, that colors (assignments) are sourced from a file in human readable format, that in turn could be loaded as internal/external resource to Rufus.
This way for the tweaker in everyone can replace the assigned default colors with their own or create preset theme colors that can be shared with other users.
A dark mode is not needed. Seriously, what is the point of dark mode of an app like this. It's like installing Windows Vista on Windows 10! Rufus is great but a dark mode is DEFINITL NOT NEEDED!!!
A dark mode is not needed. Seriously, what is the point of dark mode of an app like this. It's like installing Windows Vista on Windows 10! Rufus is great but a dark mode is DEFINITL NOT NEEDED!!!
And your point being? Seriously, if some people ask for a feature, just accept that even if you don't. Comments like yours just sound like flame to me
Slightly unrelated, but if someone wants to implement acrylic along with the dark theme, this should be helpful:
https://notes.yvt.jp/Desktop-Apps/Enabling-Backdrop-Blur
https://github.com/notepad-plus-plus/notepad-plus-plus/commit/5a3bf49c86acca8863a1be2fb12038f18c54594a
Yes, it must indeed be real nice when someone, who isn't the main developer, first announces that they are planning to work on Dark Mode for a project (so that the main dev can chime in and provide guidance if needed) and then, after a few weeks work, come back with a PR that the dev can apply... 😄
I'm afraid the code that N++ uses for Dark Mode is not that helpful for Rufus. And I don't really need it anyway, since I've been looking at what ProcessHacker does in that respect, which is more useful to me.
IIRC, the biggest issue I had, at the time I stopped the Dark Mode effort, was that there doesn't appear to exist a win32 API that allows you to get the actual colour for button faces, button borders, etc., when the default Windows dark mode theme (such as the one used by Explorer) is in effect. That's the reason why I bothered with this as one would have thought that, when listing all the Immersive theme colours, which is a very long list, Microsoft would have all the UI elements' individual component colours in there (Narrator: "They don't"). And at this stage, knowing that there is a UI redesign of Rufus planned down the line, that should hopefully use XAML and WinUI, it's difficult to see spending more time on pure win32 dark mode, when the chances are that it will come without having to do anything then...
@pbatard
was that there doesn't appear to exist a win32 API that allows you to get the actual colour for button faces, button borders, etc.
Can you explain why this is the biggest issue?
Because if you don't use the same dark theme as the system, people complain that what you are using doesn't match what they expect. And I've actually already seen people have some reservations about N++'s dark theme (though I'm not sure if that is linked to that).
The major problem when dealing with stuff as subjective as a dark theme is that, if you make any decision that deviates from what Microsoft uses, people will complain that you should have picked something different, that they like better. But by following Microsoft's theme exactly, I can avoid all the annoyances that come with individual accounting for taste.
@pbatard so are you planning on rewriting Rufus using WinUI?
@pbatard Can't we go all hacky and hardcode the colors used by explorer🤔🤔
so are you planning on rewriting Rufus using WinUI?
At this stage, yes, that is the plan. Knowing that plans can change, especially after I start looking at WinUI more closely. But going through a WinUI redesign could solve both the issues of dark mode and console Rufus version.
Can't we go all hacky and hardcode the colors used by explorer
They are not fixed. And therein lies the issue. They follow the colour theme set by the user.
Anyway, just like N++, I'll take a PR if you're willing to work on one... 😄
@pbatard But Microsoft doesn't use Immersive Color for Win32 controls dark mode. They just use a dark theme to render control. You can see my project https://github.com/ysc3839/win32-darkmode for example.
Then, I definitely understand your point. It's better not to spend further time on some work that could be useless for the future👍🏻
@ysc3839, I'll take a look, thanks!
@pbatard
You can use https://github.com/nptr/msstyleEditor to see how those themes looks like, their name starts with DarkMode_.
And that's why you can't get the actual colour for button faces, because they are a whole image.
So umm... just an idea... I don't know (I mean I think it would probably be easier to program...?) but couldn't you just make it invert the light mode Rufus when the system is in dark mode...? As in just put a High contrast filter over the Rufus interface... It should work fairly well as Rufus mostly just has blacks and whites anyways.
I mean I think it would probably be easier to program...?
I guess it isn't as easy as it seems with win32. 😢, if it's webapp then maybe yes.