ltguillaume / redshift-tray

A no-frills GUI for the excellent Redshift, with some optional OS hotkeys
https://codeberg.org/ltguillaume/redshift-tray
GNU General Public License v3.0
61 stars 1 forks source link

Disable gamma change #7

Closed vietthedev closed 6 years ago

vietthedev commented 6 years ago

Hi,

Can you provide a way to disable gamma change? It messes up my color calibration.

ltguillaume commented 6 years ago

Do you mean that you want to use Redshift while keeping your gamma intact, or that you don't want to use Redshift at all?

Recently I added the switch to reset the gamma before applying the gamma calculated by Redshift, because otherwise the brightness adjustment didn't work properly (it added up causing really strange stuff). But I can make that switch optional.

If it's about not using Redshift at all, enable "Start disabled".

ltguillaume commented 6 years ago

If you meant the first issue, please try https://github.com/ltGuillaume/Redshift-Tray/releases/tag/1.6.7 If you use the brightness adjustment (Alt+PgUp/PgDwn), it will still reset the gamma, though.

vietthedev commented 6 years ago

Hmm... Let me describe my issue more clearly, not sure if it's related to gamma, though.

I want to use Redshift while keeping my color calibration.

colorcpl_2018-08-12_00-57-14

In 1.6.6 with Redshift disabled, it reset my calibration when launched and just did repeatedly after I clicked the reload calibration button.

In 1.6.7 which you just released, it resets the calibration when launched and doesn't do it again after I click the reload button. But a new problem arises, it resets the calibration after I toggle Redshift.

ltguillaume commented 6 years ago

Strange, it shouldn't do so, according to how Redshift itself works. Can you find a solution for this on the Github page of Redshift itself? If so, I'd be happy to implement it in Redshift Tray.

ltguillaume commented 6 years ago

Ah wait I get what's happening here, lemme check if I can fix it.

ltguillaume commented 6 years ago

@S-a-l-a-d Ok, so basically this is not properly supported by Redshift itself, so I've found a workaround. This workaround has two downsides:

The latter is because it calls a default Windows task that recalibrates your gamma settings (just like the button in your screenshot) right before Redshift applies its own changes. If you don't have an English Windows installation, please tell me if you can find the task Microsoft\Windows\WindowsColorSystem\Calibration Loader in the Scheduled Tasks, or the registry key HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Schedule\TaskCache\Tree\Microsoft\Windows\WindowsColorSystem\Calibration Loader.

  1. Before you download this one, be sure "Autorun" is unchecked, then close the current (official) version
  2. Download and extract rstray.exe in your default folder
  3. Run it
  4. Enable "Keep Windows Calibration"
  5. Try all modes, gamma and brightness options in Redshift Tray
  6. Please tell me it works :-P

rstray_calibrationtest2.zip (Small update, now rstray_calibrationtest2.zip)

vietthedev commented 6 years ago

It only works with the enabled state but not with others. Redshift Tray doesn't have to be run as Administrator here.

But hey, now I know why this happens, and I think you found out too. It's because of the "-x" parameter in the Restore() function (the purpose is to reset the changes made by Redshift, right?). The solution would be to simply load the calibration after running Redshift with that parameter.

Also, I don't think there needs to be that "Keep Windows Calibration" option as people who care about color would want to keep it, and those who don't would not be affected. So letting it always load the calibration won't hurt, will it?

ltguillaume commented 6 years ago

Sorry, but then you pretty much ignored all I've written down for you. Please read again and try again properly.

vietthedev commented 6 years ago

No, I didn't ignore it. What did I miss?

Enabled - the calibration is correctly loaded Forced - dunno because of the temperature change Paused - the calibration is reset and I have to reload manually Disabled - same as Paused Exit - same as Paused

Redshift Tray is run as administrator.

ltguillaume commented 6 years ago

It only works with the enabled state. Redshift Tray doesn't have to be run as Administrator here.

If Redshift Tray doesn't, it can't run the calibration tasks. If you have Keep Windows Calibration enabled, it should already be running elevated.

But hey, now I know why this happens. It's because of the "-x" parameter in the Restore() function (the purpose is to reset the changes made by Redshift, right?). The solution would be to simply load the calibration after running Redshift with that parameter.

I know, and that's what I'm doing now when Keep Windows Calibration is enabled.

Also, I don't think there needs to be that "Keep Windows Calibration" option as people who cares about color would want to keep it, and those who don't would not be affected. So letting it always load the calibration won't hurt, will it?

Keep Windows Calibration has obvious downsides and I've already explained them to you.

vietthedev commented 6 years ago

Alright.

I know, and that's what I'm doing now when Keep Windows Calibration is enabled.

Currently, the test build only reloads the calibration with Enabled mode. I think it is reasonable for Redshift Tray to do so with Paused and Disabled modes and when exiting.

ltguillaume commented 6 years ago

Yesss, you're right! I need to check for keepcalibration in two places, good catch! Please try this one: rstray-calibrationtest3.zip

vietthedev commented 6 years ago

It seems to work well now.

Thank you for your time ;)

ltguillaume commented 6 years ago

Cool! Now we have something new Redshift can't take care of on its own, very nice :-P

ltguillaume commented 6 years ago

@S-a-l-a-d Would you be so kind to check out this last test version, before I release it? The changes are minimal, but it's more efficient (if Keep Windows calibration is enabled, it doesn't run redshift -x anymore, just Windows' LoadCalibration task). I just need to be sure it doesn't introduce a timing problem.

rstray-calibrationtest4.zip

vietthedev commented 6 years ago

I tried changing the mode and the time and it works fine. Without -x it doesn't reset the calibration so there's also no flickering. I'm very happy with this.

vietthedev commented 6 years ago

If you're able to make it work without running redshift -x then I don't think running the Windows' task is needed.

ltguillaume commented 6 years ago

Without -x it doesn't reset the calibration so there's also no flickering. I'm very happy with this.

There is flickering when you use Alt+PgUp/PgDn or RAlt+PgUp/PgDn for brightness or gamma adjustment, resp.

If you're able to make it work without running redshift -x then I don't think running the Windows' task is needed.

Not true.

vietthedev commented 6 years ago

Okay. My bad :( We can close this now.

ltguillaume commented 6 years ago

Cool. Thanks for testing it so quickly!

https://github.com/ltGuillaume/Redshift-Tray/releases/tag/1.7.0

sergeevabc commented 5 years ago

Hmm, why there is no brightness setting (e.g. 90%) to start with? Original Redshift has a corresponding option (brightness=0.9) in redshift.confg.

ltguillaume commented 5 years ago

That's some ugly stuff to begin with, since you'll be limiting the output range. I hardly use it, especially since I can adjust my monitor backlight just as easily with https://clickmonitorddc.bplaced.net

sergeevabc commented 5 years ago

@ltGuillaume, there is a reason why software brightness control exists here, there and there (and even as a separate app) and sometimes is preferred over hardware-via-DCC. Reason is PWM flickering (1, 2) and humming (my case in particular) if hardware brightness is set below 100% (which is rarely acceptable for prolonged use, especially in poorly lit environments). So I set hardware brightness to 100% and then dim the screen. Indeed, this changes colors a bit, but it’s OK unless playing a movie or photo editing is involved. Currently RedshiftTray allows to control brightness it via hotkeys, but it always starts with 100% (because of -b 1). Let it be configurable.

ltguillaume commented 5 years ago

Ah that indeed is a good reason.

Question is... Should "pause" and "disable" reset the brightness or shouldn't it?

ltguillaume commented 5 years ago

Please try this one: rstray-1.7.1_brightness.zip

This version should handle brightness separately from gamma, i.e. it keeps the brightness, even when gamma adjustments are disabled/paused. This would be preferrable in your case, I think.

The last brightness setting is simply saved on exit and restored next time.

ltguillaume commented 5 years ago

@sergeevabc Tried it yet?

sergeevabc commented 5 years ago

@ltGuillaume, a tray indicator reports brightness percentage incorrectly, e.g. RedShiftTray starts with 90% (when brightness=0.9), yet tray reports 100%. As for keeping brightness when the app is paused or disabled, it is a brain teaser, indeed. For example, Flux resets both gamma and brightness when user disables the app for a while (“disable for a hour” = pause) or completely, however they forget to restore previously set brightness when the app becomes active again.

ltguillaume commented 5 years ago

I cannot reproduce. When I start with brightness = 90%, the tray reports 90% at start-up. Every time. What it currently does not do, is report the correct brightness on pause and disable (which is currently 100%). I was thinking about setting Redshift to 6500K + brightness, instead of completely quitting Redshift, when paused or disabled. I guess I can make it optional. Hang on.

ltguillaume commented 5 years ago

@sergeevabc This should do it. Check the "Keep brightness" option. It entails both "keep brightness when paused/disabled" and "keep brightness between sessions".

rstray_1.7.1_brightness2.zip

sergeevabc commented 5 years ago

@ltGuillaume,

ltguillaume commented 5 years ago

I've always seen the brightness setting as something to play with momentarily. This is how it has been implemented previously. That's why it didn't have a value in the .ini file. If you press Alt+Home, brightness is reset.

If you want to keep the previous value, enable "Keep brightness". After that, brightness will be saved to the .ini and restored when restarting. Also, it will apply brightness when paused/disabled.

If you do not check "Keep brightness", all behavior will be as the previous version.

sergeevabc commented 5 years ago

We have a miscommunication here. I do my best to convey the idea. Please, do not rush either.

Again, slower. There is .ini with user settings. They are applied upon launch. When I press “disable”, adjustments should be turned off, but not reset within *.ini. So when I press “enable”, my settings should be applied once again. That is, 90% brightness upon launch -> 100% brightness upon disable -> 90% brightness on enable.

Presently that emphasized part is not working as described.


About “Keeping brightness” option. When it is checked, I expect RedShiftTray to keep brightness level (e.g. 90%) upon pressing “pause” or “disable”. For example, it is 3200K and 90% and “keep brightness” is set, then I press “disable”, then it is 6500K and 90%. And when “Keeping brightness” is not checked, then it is 6500K and 100% in disabled state. (And restore brightness to *.ini setting, when is enabled again.)

ltguillaume commented 5 years ago

No, I did understand you. It's just not easy break previous behavior. What you're asking is to split the "Keep brightness" setting into "Keep brightsness when disabled" (optional) and to always keep the brightness value. Although I agree that only because there now is an actual brightness value in the .ini file, this behavior has now become more logical than the previous behavior, which was to treat brightness as a temporary setting (unless "Keep brightness" was set).

With your proposed behavior implemented, another thing comes up: how to handle brightness adjustments in paused/disabled mode when "Keep brightness when disabled" is checked/unchecked? As currently implemented (attached):

rstray_1.7.1-brightness3.zip

sergeevabc commented 5 years ago

@ltGuillaume, I’ve given it a try for a few days and it works without a flaw except for occasional double -r in redshift.exe -l xx.xxxx:yy.yyyy -t 5800:3800 -b 0.900000 -r -r -P when I sometimes observe running processes. Alas, I was not able to track what exact steps could reproduce the case.

ltguillaume commented 5 years ago

Thanks for being so thorough! :) Yeah, the double -r doesn't really matter, but it should be fixed in this one: rstray_1.7.1-brightness4.zip

sergeevabc commented 5 years ago

@ltGuillaume, AltGr+PgUp/Dn combos are supposed to control temperature, yet in my case they affect brightness (whereas Alt+PgUp/Dn are meant for that).

ltguillaume commented 5 years ago

@sergeevabc What's your keyboard layout?

sergeevabc commented 5 years ago

@ltGuillaume, meet the keyboard and its Windows settings.

ltguillaume commented 5 years ago

@sergeevabc Thanks! Please try v1.9.4: https://github.com/ltGuillaume/Redshift-Tray/releases/tag/1.9.4

sergeevabc commented 5 years ago

@ltGuillaume, works as expected now, thank you.