rufus icon indicating copy to clipboard operation
rufus copied to clipboard

Dark theme

Open rakleed opened this issue 5 years ago • 71 comments

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

rakleed avatar Feb 13 '20 19:02 rakleed

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

pbatard avatar Feb 14 '20 12:02 pbatard

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.

pbatard avatar Feb 14 '20 12:02 pbatard

😃

image

wefalltomorrow avatar Apr 28 '20 13:04 wefalltomorrow

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):

Image2

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...

pbatard avatar Apr 28 '20 14:04 pbatard

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.

wefalltomorrow avatar Apr 29 '20 01:04 wefalltomorrow

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 avatar May 11 '20 08:05 freakshow999

@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

wefalltomorrow avatar May 12 '20 00:05 wefalltomorrow

This might be useful: https://github.com/microsoft/ProjectReunion/issues/41#issue-622186032

AnuthaDev avatar Jun 11 '20 06:06 AnuthaDev

@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.

pbatard avatar Jun 11 '20 11:06 pbatard

I agree dark mode is needed, but a theme manager is not necessary. I think following system choice is the best option out there

MarcAnt01 avatar Jul 21 '20 09:07 MarcAnt01

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.

pbatard avatar Jul 21 '20 12:07 pbatard

Yeah, just saying that the idea of a theme manager is totally useless

MarcAnt01 avatar Jul 22 '20 18:07 MarcAnt01

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.

sukhchainn avatar Aug 18 '20 07:08 sukhchainn

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.

the-j0k3r avatar Jan 13 '21 10:01 the-j0k3r

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!!!

regdfvtr avatar Feb 27 '21 20:02 regdfvtr

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

MarcAnt01 avatar Feb 27 '21 20:02 MarcAnt01

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

AnuthaDev avatar May 21 '21 12:05 AnuthaDev

https://github.com/notepad-plus-plus/notepad-plus-plus/commit/5a3bf49c86acca8863a1be2fb12038f18c54594a

AnuthaDev avatar Jun 08 '21 06:06 AnuthaDev

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 avatar Jun 08 '21 12:06 pbatard

@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?

ysc3839 avatar Jun 08 '21 12:06 ysc3839

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 avatar Jun 08 '21 12:06 pbatard

@pbatard so are you planning on rewriting Rufus using WinUI?

MarcAnt01 avatar Jun 08 '21 12:06 MarcAnt01

@pbatard Can't we go all hacky and hardcode the colors used by explorer🤔🤔

AnuthaDev avatar Jun 08 '21 12:06 AnuthaDev

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 avatar Jun 08 '21 12:06 pbatard

@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.

ysc3839 avatar Jun 08 '21 12:06 ysc3839

Then, I definitely understand your point. It's better not to spend further time on some work that could be useless for the future👍🏻

MarcAnt01 avatar Jun 08 '21 12:06 MarcAnt01

@ysc3839, I'll take a look, thanks!

pbatard avatar Jun 08 '21 12:06 pbatard

@pbatard You can use https://github.com/nptr/msstyleEditor to see how those themes looks like, their name starts with DarkMode_. image And that's why you can't get the actual colour for button faces, because they are a whole image.

ysc3839 avatar Jun 08 '21 13:06 ysc3839

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.

yodaluca23 avatar Apr 11 '22 18:04 yodaluca23

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.

rasyidf avatar Apr 13 '22 15:04 rasyidf