Windows has always been single-user or a shaky-at-best multiuser OS. Fast User Switching was a nice idea, but it only works with the Welcome screen turned on. Why? Beats me. The server flavours support remote logins, but on WinXP, you can only login as the local logged in user, and it will steal the local console and leave it with a nice "This terminal is locked" message. Why? Beats me. Also, Microsoft has never provided a proper way for multiple virtual desktops. This powertoy they have shows/hides the windows, and thereby shuffles the taskbar every time you switch. If you recognize multiple instances of the same app by the order in which they were launched (as I do), this means you can't find your way around your open windows anymore. Also, each time you switch there's this visible hiding/showing going on, which is not only annoying to look at and causes shuffling of tasks, but it also creates a delay in the switching. Alex Ionescu told me using separate window stations instantly solves this problem, but M$ doesn't implement it. Why? Beats me.
All this can be done a lot better. Simply looking at *nix systems gives us a hint as to how to effectively do this. Boot up any Linux system, log in, and hit alt+f2. Voila, we see another login prompt. Log in as another user. Hit alt+f1. Voila, we are back to the console we logged in earlier. This goes all the way to f12. It just has a problem: I believe tty1 (alt+f1) to tty8 (alt+f8) are text-only, and 9 to 12 are reserved for X11 (the graphical subsystem). (Don't tie me down on this, it could also be 10-12; I haven't been on Linux for a few years now. ) This effectively means we have a lot of text consoles and only a few graphical ones. We solve this easily, if you switch to a new console from a text console, the login you see is a text login, if you switch from a graphical console, you see a graphical login.
Now, how do I envision all this? As I stated in my main UIdeas page, I intend to rely on the System key for hotkeys heavily. I also want to use the Security Panel for managing logins and consoles. Ctrl+alt+delete leads us to the security panel, but I also think we should provide a mouse-only way to access it. If you're remotely logged in via Terminal Services, you get this "Security" entry in the Start Menu, because you obviously can't use ctrl+alt+del remotely. I think this should be standard, for local logins as well. So. Security Panel. As far as I've heard this is a separate window station (that's why it still works when everything else has crashed), so it's all good. From the security panel, we see options to lock the console, log off, shut down, change password, etc. I want to be able to see all the local and remote consoles, who's logged in, since when, and an option to switch to them. User policies could define which users can see which users are logged in (users should be able to be "invisible" from, say, guests for instance. On a local console, any user can switch to any other local console, as long as it is not locked. Anne can switch to Joe's console, given that Joe has forgotten to lock his console. Joe can also switch to the Administrator console if he needs to install a program (unlike WinXP FUS, where you *must* enter a password every time). This behaviour should be able to be overridden by security policies. But hitting ctrl+alt+del and selecting a console all the time is far from convenient. So if we want to streamline this, we need some hotkeys. We can't borrow Linux's function keys, these are used by 3rd party apps. So my beloved system key comes into play. Sys+f1: switch to console 1. Sys+f2: switch to console 2. Remember that I stated that if you switch to a new (nonexisting) console from text mode, you get a text login, and vice versa in graphical mode? Hit the switch hotkey again from textmode, and you'll land in graphical mode. So if console 2 is textmode, and hit sys+f8 from console 2 to switch to console 8 (which doesn't exist), you get a text login on console 8. Hit sys+f8 again, and console 8 turns into a graphical login.
Todo: mockups for the above examples.
Back to mf's UIdeas