| 1 | ||
| 1 | ||
| 1 | ||
| 1 | ||
| 1 |
For as long as I can remember idle states have always sucked on Linux. It's not uncommon for a system to not take and require a manual power down and boot, or for some processes to end up in a defunct state. And the configuration for this is very fragmented.
Why is it like this?
We have too many different kinds of responses to an idle state, potentially trying to happen at the same time, managed by multiple menus.
We have screen saving, where your display gets replaced and your DE panels get cleared. We have screen locking where your display manager is supposed to take over and let you back in. We have signals to the init system to change run levels and run a lot of scripts associated with changing between run levels. We have a write to a file in /sys/power to tell the CPU to stop working. We even potentially have the DE trying to do "session" management, where it tries to remember what applications were running and restart them the next time you log in.
That's too many things and too many systems all trying to change major state at the same time, and one of them is going to break while that's happening. And the UI and menus for this are inconsistent.
The solution. Do none of it. DEs should stop trying to do anything with idle management. I have a proposal for what should be the true unix-ism. Some unix-isms that have been noted are things like, one utility does one thing well. Another is, everything is a file. Another one in practice is, every command should have a lot of options. That kind of competes with the first one. I think the real golden one should be. If your application does more than one thing, whatever thing it doesn't do well, stop doing it. Not do it better. Stop doing it.
From what I can see, almost all DEs manage idle states very poorly. So DEs don't need to do it.
The second you stop doing it, here is what will happen. You've just created a new class of program. The idle manager.
It will be a very easy program to write. It might only do one of the above, or two, or all. Six different people could write six different varients that essencially do the same thing. And people would have meaningless flame wars over which are actually good while they only have 1% difference. But importantly, they will actually work, or get shit-ripped out of a system very quickly. The best ones would probably centralize all logging related to what idle features turned on successfully and when to make it easier to diagnose what really happened during a sequence of black screens.
Then, after competition produces something that actually works, the DEs can then incorporate it.
We should want to modularize things so that they each functionality can compete head to head. Having DEs compete is like politics. Because multiple factors are involved both can suck. There is little pressue to fix one thing that sucks if people still use the project because it does a couple things well. And because all of this software is free, competition doesn't work the same way it does in capitalism, where a monolithic system can have an incentive to making improvements. Competition in the OSS world works by adoption. It's more like evolution.
This is why I'm in favor of disintegrating everything in Linux. The people who manage package stability should not be doing your art work. The people who paint your desktop should not be managing your system state. The people who manage your themes should not be selecting a browser for you.
Once there are six variations in everything that does only one job, we can select the things that work well. That's evolution. That sets of things that work well can be wrapped up into a DE. That's about 80% of what happens. I'm saying it should be 100%. So a DE has no components that are tightly integrated to a degree you can't rip them out. No deep integrations. Linux has been getting really good I think because this has been the trend. But to make it really good, we have to rip out the last few hold ons. Parts of DEs that were coded 20 years ago. They maybe were good then, but don't match the higher state of Linux today. And because they exist there isn't space for small but really good applications to do that function.