Twitcher behaviour and show desktop functionality

Hello everybody. So I came back to Haiku, like I do every few months/years, and this time things are looking promising enough to motivate me to try to use the system as much as possible, report bugs and send small patches (which I’ve been doing). Kudos to you all.

One thing I really can’t get used to is window management. I find myself lost every time, not knowing where my windows are. I’ve probably been too many years in Windows, even when I’ve been using Linux on a semi regular basis since 2006 or so. Two things I’m missing the most at the moment, two things I rely on heavily when on Windows:

  1. ALT-TAB functionality. I can’t get used to “short TAB press to switch windows directly, long press to bring Twitcher up”. I’d just prefer Twitcher to come up as soon as I press TAB. I also don’t really like to have windows grouped by app and having to press the arrow keys to select the window I’m trying to bring up. If I have say two or three Pe or Terminal Windows, ALT-TAB quickly becomes useless for me.
  2. Show desktop shortcut (WIN+D on Windows): I use this in two situations. One is when (don’t laugh) I like to put some order to things in my head. If I have many windows open, I find convenient to minimize them all and open the one I need to “start all over”, but I know this one is very personal. The other is when I need to click an icon on the desktop to open an app, folder or document. Having things on the desktop for quick access becomes pointless if there’s no way to minimize all open windows to click them fast.

Is there currently a way two get around these two things in Haiku (or a config option that I didn’t see)? Obviously not wanting to change the default behaviour to anyone, but it would be nice to have and I’d be willing to help writing this functionality if needed.

Cheers to all.

1 Like

On Haiku you use ctrl-tab instead :grinning:

I don’t think there is a direct intree way to hide all apps at the moment, I think that would be quite usefull though

Oh sorry, I forgot to say, I have configured the keys in Windows mode, so it’s actually ALT-TAB for me. I’m seeing Twitcher and everything… it’s just that I don’t like the “short press vs long press” and the windows grouped by app. I’m more of a TAB-TAB-TAB till I find what I want person.

Use more Alt+F1 to Alt+F4 to switch Workspace!?

Welcome back - again - then, @jsteinaker! :slight_smile:

First off, I think Twitcher is indeed up for a little revamp. It’s practically identical to what BeOS had 20 years ago. OTOH, we’ve got used to it over the past 20 years as well, so changes need to be made carefully, or you’ll spook the old-timers…

As a reminder, the Userguide page on the Twitcher.

I think switching between the last two apps with a quick ALT+TAB will have to stay. Muscle-memory. And I dimmly remember Windows doing the same?

Here are a few changes that I’d like to see in Twitcher that may help:

  1. Bigger window and bigger icons. It’s still of a size adequate for 640x480 screens…
  2. Distinguish the app icons with no windows on the current workspace. Maybe by highlightling the background of the ones with windows on the current workspace.
  3. Show the list of open windows below the currently selected app. That way you see them all at one glance and don’t have to scroll though them one by one.
  4. Jump to the currently selected app/window as soon as it’s selected, practically a live preview of what’ll happen if you let go of the CTRL key.
  5. Also show a nice, big Workspaces replicant in the Twitcher window, so you can select a window directly or jump to a workspace.

That’s all I can come up with right now… :slight_smile:
I have to admit, that I seldom use the Twitcher window, more so the keyboard shortcuts. I find that I rather use the Deskbar in “Expando” mode.

A hide-all windows shortcut would be nice, though I personally haven’t missed that.

A few tips that make life in Haiku easier, though for people coming from other platforms it means changing your trained behaviour, which is always difficult…

  • Use workspaces. You have up to 32 and can spread out.
  • Embed the Worspaces applet as Replicant to the top-left of the Deskbar. That way it’ll peek through the tab-gap of windows in front of it and you can quickly change workspaces with the mouse (also possible with the mouse wheel).
  • Collect your ‘projects’ on separate workspaces: 1 for web browsing, 2 for your spreadsheet, 3 for the BeBook and Tracker windows with Haiku sample code, 4 for Tracker windows and editor windows with your C++ project, etc.
  • If you need a clean slate, don’t minimize all windows, just switch to an emtpy workspace.
  • Make the Deskbar wider. Use the “Application expander” and “Auto-raise” from its preferences.

I never use Twitcher myself. My ways to manage apps and windows are similar to what Humdinger says:

  • Use Deskbar vertically with the expander on and “expand new applications” enabled, and also slightly larger app icons. Then you always have a full list of windows accessible on the screen and can reach any of them in a single click.
  • Use workspaces to spread your windows. Usually I have one workspace with chat and web stuff, one with code editors and terminals. Then I use the tabs inside the browser, terminal, and code editor (vim in my case) so I don’t have that many windows open. I have 4 extra workspaces to put extra stuff in. Since I use only 6 workspaces, I don’t really need the replicant at all, I can remember what’s where quite easily.
  • With the default shortcuts mode, I can very easily use ALT+F1 to ALT+F6 to very easily switch between workspaces. In fact I use this so often that I have now configured all my Windows and Linux machines to work in the same way. I think when using CTRL as the shortcut trigger, this will be less convenient to reach, however.

That being said, if you prefer using Twitcher, indeed it probably could do with some improvements. Patches welcome, I guess?

Windows likely does “short press vs long press”, but with an imperceptibly short duration threshold.

Thank you for all your detailed replies. Indeed, I might start trying to make some small patches for Twitcher (always optional, not changing the default behaviour) and see what happens.

@Parnikkapore I don’t know if what you’re saying is true, but you gave me a great idea about how to implement this (by giving an option to change the threshold). I personally never noticed it but it might be that my fingers are not that sensitive (?).

@humdinger thank you for the tips, Deskbar was already expanded thanks to a previous suggestion I read from you, and I liked the idea of the workspace applet in that position. I think it just comes down to what you’re used to, y’all seem to be pretty organized and when I open a new window I probably won’t take the time to move it to a different workspace. I know you could use rules in some window managers in Linux (like open all terminal windows on workspace X) so I’ll have a proper look at this. Agree with your top 3 points, not sure about the 4th (I think it might distract me), don’t have a formed opinion on the 5th.

@pulkomandy thanks for this and for helping on every other question that I have :slight_smile:

Honestly, this doesn’t seem like a functionality that should get options… Personally I don’t use twitcher at all, but this is mainly because after twoish years of using Haiku I still don’t understand it, I can’t figure out how to bring it up consistently and the window order for the quick switch feels completely random to me.

I also use the expand all categories by default for deskbar, I honestly have no idea why this is an option or why it defaults to off, deskbar seems useless without this.
(I would like if the mini oneline mode would support this, the ommision feels random… would be nice for one netbook I have with linited screen space)

As for changing the treshold for an option, please don’t add such a thing. KDE has lots of these “specify how many ms activation delay” options and they don’t make any sense to users. We should probably use if anything preset options, or better yet find a solution that does not require this at all.

These are not my words but summarize my motivations perfectly. Yeah I agree with you that too many options are confusing, but for testing I might just change the threeshold in the code to try with it feels like, and I don’t even need to think about coding. Then we can discuss if we can/need to do changes (probably a setting “enable/disable quick switch with CTRL-TAB” will be enough).

If the current behavior is bad, let’s remove it, not have yet another “I want the old broken way” switch.

Also I think Axeld had started work on something that could be an alternative to Twitcher, the code is in git here:

It wasn’t really useful yet, but you can check the description in the first commit messages there and maybe try to build it and see if it is a good starting point for a complete replacement to Twitcher.

The way it works is:

  • hold the control key
  • move the mouse to the top/bottom of the screen to get a list of windows in the current app
  • move the mouse to the left/right to get a list of other apps
  • clicking an app or window will bring it to front

The idea was to add some more features to it, possible allow to put any replicants in these areas as well?

You can move windows after opening them in several ways. Personally I usually do it by using the ALT+Fx shortcuts while moving the window. You can also do ALT+SHIFT+Fx to go to workspace x and bring the current active window with you.

re: switcher: I’m pretty sure the main audience for Ctrl-tab is the people who prefer to keep their hands on the keyboard rather then reach for the mouse, but don’t quote me on that.


Can I put a version of Deskbar under non-packaged or something to try changes? Deskbar is restarted as soon as is it killed so it seems I can’t run it from anywhere. For those willing to take a look, the relevant time values seem to be under TSwitchManager::MainEntry in src/apps/deskbar/Switcher.cpp.

Stop it with launch_roster, after that you can launch it manually.

Hello! You can mimic this functionality, using a little application available in HaikuDepot, named “MinimizeAll”. Using the PreferencesShortcuts option, you can create a keyboard shortcut that call to that program:

For example:

Hope this helps!


While I see this is documented in the User Guide (which I probably don’t praise enough!), it seems like all these window management tips might be worth making their way into some other kind of guide. After all, most people just look at the User Guide for something particular and do not read it cover-to-cover… (Maybe the User Guide page just deserves some more examples.)

I agree that current Twitcher behavior is not really intuitive, and I would be very much in favor of a revamp of some sort.

Perhaps now that we have tab-group windows (stack and tile), it makes less sense for Twitcher to be application-based by default and instead go to be window-based, with some option (hold some extra key? etc.) to group things in Twitcher by application instead of by window-stack. That might solve most concerns listed here?

One thing I don’t undertand is, what’s the advantage of not showing the twitcher inmediatly when doing a fast press-and-release?
Avoiding some waste of ram and processing power?
Avoiding some delay due to some drawing innefficiency or the like?
Not having to suffer the irritation of seeing it appear for a fraction of a second?
In my opinion it will be way more intuitive if it showed always.

These things do come up in the Quick Tour - Twitcher, S&T, move&resize, workspaces. Of course the info there isn’t complete, or it’ll be more or less a copy of the User Guide page. There are, however, links to the User Guide for more information.

Displaying either S&T’ed groups or apps+windows would be inconvenient, because you’ll always use a mix.

I’d suggest to keep the apps+windows, but add S&T’ed groups as a collection of their icons - all placed to one end of the Twitcher window. If we wanted to get fancy, we can add your extra key to filter only S&T’ed groups ('G) or apps+windows (‘A’).

However, those S&T’ed groups may be difficult to distinguish, when you have several grouped projects that all involve e.g. Browser+Tracker+Editor+Terminal.

I tried a couple of changes the other day, before smoke started to come from the laptop I use Haiku on (true story!).

What @Handmaus says is a matter of changing the value of a constant (timeout) in the code. One line. It is way better this way in my opinion, because you still get a “quick switch” functionality, even if Twitcher is shown for a fraction of a second. This is the way Windows behaves and while I hate Windows for other things I think they got this right. I’m not sure if the “quick switch” (i.e. without Twitcher opening, on a quick keypress) as done now have different functionality, as if the order of the windows changes in some way. Probably @humdinger can explain this better and tell if functionality will be missed if we make this change (I need to get a new laptop to try for myself first). If we come to an agreement, this is the simplest one to do.

@waddlesplash I’m with you on Twitcher being window based, but I haven’t considered tabs so this is definitely trickier.

Also, I changed some values to make Twitcher bigger and wow, it makes a lot of difference (and Haiku icons are beautiful and you really get to appreciate them). This is another “simple” one, it might take some time to fix the icon animations, window position and basically making sure that Twitcher behaves the same way as it does now for everyone, but I think even I can tackle this job given some time.