Putting a window “aside”…
by clem 32

I had a great idea (it happens sometimes), I explained it to the team and all I got was this lou.. heh.. all I got were round eyes and blank expressions :)

I was watching E3 the other day while trying to do some work on the computer and I realized how tedious it was to try and watch something while doing other things. The windows I opened were getting in the way of my video, I couldn’t maximize things… when switching to my VM and DEV workspaces I’d lose sight of my video… basically, if I wanted to watch E3 I had to stop working. A couple of years ago, that would have been fine, but now that we’re designing not only the desktop but also the window manager, I thought that just wasn’t good enough.

I told myself this:

If I want to do some work with my computer and I need to keep an eye on something on the “side”, I should be very well able to. It should be trivial for me to do it and I shouldn’t be needing to connect a second monitor to my computer to do that.

And then I started thinking on how to solve that in Cinnamon… and there’s many ways to do it… from the crazy idea to let people compose “views” out of multiple workspaces they can place and resize on the screen, to a very simple static side tray that you could pull from the side like you pull your top bar in an Android phone and in which you could place a window of your choice.

How it’s done is less of a concern though right now, the important thing for me is to be able to watch my videos or to place my IRC client on the side, out of the way of my work, but somewhere it’s always visible. Whether we achieve this with a plugin like Expo/Scale, with a side view, with a new dimension or with extra features and abilities implemented around the current paradigms…

I’ll continue to talk to the team and try to sell that use-case, and then we’ll think of the pros and cons and various ways to do it.

This is still just an idea right now.  As always your feedback is very welcome.

p5rn7vb

32 thoughts on “Putting a window “aside”…

  1. Reply Wando Jun 12, 2013 11:45

    Great Idea. Good way to work on multitasking.

  2. Reply Stijn Jun 12, 2013 12:05

    How about having the option to set a window to be always on top, has mouse and keyboard event pass trough to the underlying window and that becomes transparent when you hover your mouse over it? This way the ‘aside-window’ is always visible but you can still interact with a maximized ‘work-window’.

    • Reply clem Jun 12, 2013 14:46

      That solves the problem only partially. We also talked about making windows semi-transparent when something is running full screen and other windows are brought back on top using alt-tab… but although it makes things a bit better it’s still in the way of what you’re doing.

      • Reply Stijn Jun 12, 2013 15:26

        That’s true, but the windows will need to go *somewhere*. I see three possible approaches:
        - Windows go side-by-side, nothing gets in the way of your ‘work-window’ but you cannot maximize it. (you can already do this)
        - The ‘aside-window’ goes on top of the ‘work-window’. This way the ‘work-window’ can be maximized but the ‘aside-window’ will get in the way (visually). There already is a stay-on-top functionality, but in order to keep full interactivity with the ‘work-window’ a system simmilar to what I discribed above would have to be implemented.
        I think that if you keep the ‘aside-window’ small and place it over a relatively empty region (e.g. bottom-right when writing code) it won’t get too much in your way.
        - Use dual monitors. Best of both worlds but you would need to connect a second monitor and that’s not what this article is about.

  3. Reply Ilan Jun 12, 2013 12:59

    I was dealing with the same thing this weekend; wanting to keep an eye on football while developing full screen. I ended up switching back and forth between workspaces. Personally I think an alwaysontop function for windows (maybe by super clicking) would be the most flexible option compared to a dedicated drawer window.

    • Reply clem Jun 12, 2013 14:47

      Always on top is already there.. it’s cool, but it’s not enough.

      • Reply Ilan Jun 12, 2013 20:06

        Well then you need some kind of vertical separator. Where you split the workspace into two or more sections where windows can’t move out of.

  4. Reply Mani Jun 12, 2013 13:40

    It doesn’t solve your problem but goes in the same direction: Multitasking

    I am often working with many related programms at the same time to write protokolls. This means i am using writer (with always on active workspace) on screen number one and calc on screen number two. Then i often need the internet for research -> firefox on screen number two. This way i can switch the workspaces and can use firefox as a information-source and switch back to use calc as one.

    But then i need a third programm (origin pro (a statistics programm)) and i need this to work together with calc, from where i get the data for the statistics.
    -> OriginPro has to be on screen number one.

    I know there is the possibility to swich the programms by but it would be much more elegant if there would be the possibility to swich workspaces per screen, so that screen1 and screen2 have independent workspaces.

    It is a feature i dreem since years and hope you like the idea (although i am pretty shure that it would be very hard to implement)

    • Reply clem Jun 12, 2013 14:54

      Interesting idea. For people with multiple screens there’s a lot of things we can do to improve how Cinnamon works and that’s pretty good.

  5. Reply Mani Jun 12, 2013 13:42

    edit:

    Paragraph 2 end:
    while writer is still available

    paragraph 4: programms by alt tab

  6. Reply dd Jun 12, 2013 14:23

    Isn’t this same as the ‘always on top’ feature present in many audio-video players. I think ‘Media player classic’ on windows has this option. You might have seen a ‘board pin’ like icon in the title-bar of some programs which lets them stay on top even if some other window is active at the time.

    Implementing this as a board pin icon would let the pinned windows be placed anywhere on screen rather than being limited to a side tray.

    • Reply clem Jun 12, 2013 14:52

      No, it’s not just a matter of other windows getting on top of the video… (and yes, always-on-top is there in Muffin), it’s also a matter of them getting underneath it. I can make VLC always-on-top and I can also make it show on all-workspaces.. but it’s still in the way. Basically for it not to impact my work it would need to be outside the boundaries that are available to other windows (we call that struts) and it basically means the video needs to be outside my workspace :)

      • Reply Nica Mlg Jun 26, 2013 02:30

        Hi!

        I’m currently using xfce, since I think it’s the most configurable DM (aside KDE, perhaps… but I’m working on a netbook here… :D) (off-topic: I’d love to have the flexibility od xfce plus the visual effects and interface of cinnamon… )

        Well, what I do propose is to create a window type like the notification “bubble”: it stays on top, but it also becomes transparent on mouseover. I could be like that, whenever the keyboard cursor or the poiner cursor get near or below that window type, it gets a (default=80%) transparency…

  7. Reply dd Jun 12, 2013 14:27

    …if you use vlc to watch the videos, then your problem is already solved ;)

  8. Reply mhn Jun 12, 2013 15:57

    Maybe by taking a tiling-window-manager approach ? (the “always visible” window would resize / move itself automagically to get a % of the free screen space)

  9. Reply easy82 Jun 12, 2013 19:28

    I’ve got an idea: an applet that tiles all the visible windows on the current workspace. It’d be just a button on the panel (or it could be activated by a hotkey). By pressing it you’d enter or exit tiled mode. In tiled mode, all the opened windows on the workspace would be equally tiled on the screen. And here comes the twist: to make it even more confortable to manage tiles this way, their borders could be attached to each other, so by resizing a window you’d actually resize its neighbours too. And a bonus idea: in tiled mode, you could swap windows by dragging and dropping them somewhere else in the layout. The only disadvantage is when a new window is created, the layout needs to be resized to make the new window fit in. Minimizing or maximizing a window would also mean resizing the layout structure.

    • Reply Mani Jun 13, 2013 14:11

      This sounds quite interesting, although i would like you to not implement it as an applet, instead you should implement it to cinnamon and make an optional applet to activate it (there are so many applets out there which only implement functionality i could implement with a shortcut and i don’t see any benefits by having one more button on panel…)

    • Reply Mani Jun 13, 2013 17:13

      I don’t think the tiled windows have to have the same size, that would look strange for odd numbers of windows.
      I’d prefer to have a good configuration possibility for default layouts,
      something like a settings page where you could select the number of windows (i’d say up to 10, i don’t think that there are many people out there who use more than 10 windows on one workspace) and set your default for this specific number in a similar way gtile tiles the windows.

  10. Reply nunol Jun 12, 2013 21:32

    I used to run “xrandr –output LVDS1 –scale 1.25×1.25″ to gain more screen area so I could have the video or some other small window without changing my usual work setup. For this purpose, compressing only one dimension is enough.

    Another option is if Cinnamon allowed for variable window width/height. Put the video in one corner and make the other window wrap around the video window.

  11. Reply rhy Jun 12, 2013 22:53

    Yes. Please do this! Thank you! Of course, I’m married to MATE, so it won’t matter if it ends up in cinnamon…. Sorry, MATE just works so damned well!!

  12. Reply Jones Jun 14, 2013 00:44

    One glaring issue is on smaller displays and resolutions would ruin any amazing concept because there is just not enough real estate to “dock” a comfortably viewable media player.

    To be brutally honest, however; if you are the type of user that can fill and utilize a full desktop without any possibility of always on top kind of solutions, then you might be the kind of user that should already own a portable mini usb lcd:

    http://www.amazon.com/s?ie=UTF8&page=1&rh=i%3Aaps%2Ck%3Ausb%20lcd%20monitor

    I love you, too :)

    Edit by Clem: That looks really cool. I still want a sideview in Cinnamon though, but these USB LCD monitors might be the ideal companions to the MintBox :)

  13. Reply Geoff Jun 14, 2013 04:33

    Put your vid in a corner, make it Always on top.

  14. Reply jediafr Jun 14, 2013 11:44

    Hi Clem,

    That is a very good idea that i solved with Compiz windows rules (in my configuration Mplayer is forced on lower right side of my desktop).
    I’m curious to see what you’ll come up with for this…

  15. Reply Andy Jun 14, 2013 15:30

    Fantastic idea. I’ve had a similar problem with video, though VLC has both an always on top* and a minimal interface option (ctrl+h), so I don’t have any problems when watching regular videos whilst working, but Youtube poses problems because of all the screen real-estate consumed by the browser window, and having to line up the Youtube window to closely match the browser window is a pain. I read that VLC can load Youtube videos, though I couldn’t get it working when I tried.

    I think that part of the problem is actually applications have generally got gigantic interfaces that sit unused and occupying space most of the time. Look at pidgin for example – title, menu, tab, room title & MOTD and finally the font options bar – absolutely huge at around 50% of the height of the minimal scaled window, and wasting precious vertical space. Firefox has similar problems with the default UI, though it can be compressed a bit by changing some options. If more programs had minimal interface options like VLC, my PC would be a tidier and nicer place to be.

    I don’t know if the large UIs are entirely a program thing or are partially caused by Mate, although Chrome, Opera and Sublime text all have quite compact interfaces compared to Firefox, Pidgin and Pluma, so I guess it’s probably just a design thing.

    Here are some ideas (similar to those already mentioned I guess?):
    1. Allow the user to snap windows to each other and have the windows become grouped so that it’s easy to resize them together. I guess this is kind of like a tiling window manager.
    2. Allow the user to snap windows to the screen edges. Might be nice in combination with 1.
    3. Allow the user to set up a view into a section of a window (drag a box on the window and that becomes the view, relative to the window), hide the window and display the content of the section in a small borderless window, taking and passing input into the program seamlessly. This sounds complicated and difficult, though it would allow the user to remove any unused UI and rearrange things *exactly* as wanted. The key would be making it actually useable and easy to set up though.

    Whatever you decide to do, please don’t make it too complicated. I trust the Mint team to do a good job though, since what you’ve done so far has been fantastic (though I’m actually a Mate user myself :) )

    *Mate also allows this with any window, which is an awesome feature!

  16. Reply samriggs Jun 14, 2013 18:31

    picture in picture great idea, like tv does.
    with resize options, top or bottom layer view, scroll up and down and close option.

    works for tv, it should work for computers, but computers can have more options.

  17. Reply Samuel Jun 16, 2013 05:50

    There could be another option alongside the current “Always on top” in the title bar right click menu. Something like “In reserved space”. When selected, the desktop area (all the screen except the panel) is subdivided in two. One side acts as it normally would (filled with lots of windows that can be maximised, moved etc.). The other side is filled with the specific window you chose to put there and no other windows should automatically appear when starting programs etc.

    *The user could combine it with “Always on visible workspace” if he wanted to.
    *Desktop background and panel are not altered or moved.
    *Boundary can be resized with mouse.
    *Window in reserved area always maximised (within the reserved area).

    A limitation is you might not need all the vertical space for one thing and would like to put two things there.

    That’s my idea. I can’t think of a use case for me at the moment but I have a flatmate (sadly, a Windows user) who always watches videos while doing work. I imagine such a thing could be quite handy.

  18. Reply Jumpwah Jun 16, 2013 15:14

    This is slightly off topic, but still somewhat relevant imo. This post reminds me of the difficulty I have just to glance at my conky. Usually my open windows cover up all my screen and I resort to always having an extra empty workspace I can quickly switch to for peaking at conky. (Ideally, the show desktop function should accomplish this, but none of the suggested answers found by googling seem to work now, must be a gnome3/muffin thing…).

    With regards to actual scenario written in the post, I just do what Geoff said, when I watch sport or some talk, I put the window in the top/bottom right corner (always on top + visible on all workspaces), and if it does get in the way, I just toggle shade quickly (double click window title). I like dd’s idea of having a draggable icon around the screen that acts like a tray icon of some sort.. But other than that, can’t really think of any other ways this can be achieved..

    Andy: I found something called youtube-viewer which I think streams youtube videos in your terminal buffer via mplayer, although not sure about that since I haven’t installed it yet. There’s also gtk-youtube-viewer if the cli version doesn’t stream.

    • Reply Mani Jun 17, 2013 10:56

      I am not shure if i understood your right, but show desktop has a shortcut:
      super (the windows button) + d (for desktop i think)

  19. Reply pd Jul 11, 2013 20:41

    Top idea. Sounds basically like a variation of the old Windows tiling. I’ve always thought, especially with new widescreen and multi-monitor setups, that we should be able assign a section of the screen – about two-thirds in size, offset to one side – to be the ‘maximize’ space. Any window in that space would ‘maximize’ only to that section. This would leave room for other applications to run smaller like you’ve suggested.

    In terms of how to do it, I’d suggest a snap-to-grid style scenario. When the user clicks on the title bar or a window and starts dragging it, perhaps with another key selected like the Ctrl key, or with the user having opted into this grid-snap mode, a grid would appear on the desktop. However it wouldn’t be simple box after box of the same size, like a normal grid, it would be a series of zones: the big two-thirds maximize zone and a few smaller zones on the other side.

    I agree the mechanism to activate the mode is not critical, it’s more the way the mode works. That said, a very natural way to activate the mode, would be to grab the window title with the mouse button held down, then to drag it in a rectangle loosely where the two-thirds section would be, or the smaller sections would be. That is a gesture that is very unique so it will rarely be confused with any others.

  20. Reply ant Aug 11, 2013 23:45

    I suggest making it so that there is an extra button alongside the minimize, maximize and close ones on a window to “lock” it in place, This would be more noticeable and usable than a hot-key. Any other windows opened could then fill the remaining space.

Leave a Reply