Sunday, February 20, 2011

GSoC: Mentors wanted! - Elegant display settings for presentations

I recently mentored some students during the Google Code In project. Now the preparations for Google Summer of Code have begun. Unfortunately I am not a hacker, I am a promo guy and I can't mentor here. Nevertheless I have some ideas for GSoC and I hope to scratch somebodies itch so she or he will mentor that idea. 

Idea 1: (More elegant) Display settings for presentations 

Application/component: Plasma

Brief explanation: The handling of multiple screens has continuously improved during the last releases. The handling of a stationary setting of two screens seems to be rather good. When it comes to presentation-mode with a projector I would be delighted to see even more elegance (simplicity).

Expected results: When doing presentations there is in general only one question to decide. The presentation mode:
  1. The same picture of both screens or 
  2. The notes on the notebook, the presentation on the projector. 
To 1: Autodetect the smallest max. resolution of the two displays. Instead of scaling the picture to full screen it would be nicer to keep the ration and leave some space blank on the left and right notebook screen.

To 2: Autodetect the max. resolution of each of the two displays and set those different resolutions. The panel, all the widgets and all the open windows should stay on the notebook screen. The projector screen shows only the wallpaper. It does not matter if the projector “screen” is located above or on the right or wherever of the notebook screen.

It would be very useful to link that dialog to the keyboard shortcut (e.g. Fn+F7) or to start it automatically when a projector is attached. (At the moment I have to start krandrtray from krunner first or have the symbol in the taskbar all the time. I am not sure if a new users could work that out in a couple of seconds.)

Save the display/plasma settings (esp. widget positions etc.) to restore them when the projector is detached. (Perhaps that could be solved with activities.)

Extra points: It is possible to save the standard settings. In a second step different screen setting profiles could be saved and loaded (like in powerdevil). Presentation-mode 1 and 2 could be such profiles and a user could modify them (e.g. projector on top or right) if it is necessary.

So what do you think. Is that scratching your itch? Can you imagine how cool this would be to have? At least for me as a presenter that would really rock.

6 comments:

t-fischer said...

The idea sounds definitely interesting.

I have the same problem and solved it with a small Bash script using xrandr:
http://dpaste.org/GC4E/

Nice aspects would be (1) notification about attached external screens (i.e. projectors) just like USB flash drives, showing the user several options as you proposed and (2) integration with Okular (i.e. Okular knows what screen the projector is attached to and show guidance information (e.g. time, thumbnail of next slide) to the presenter on the laptop's screen.

About coding: I am not a core KDE coder (no svn account), but I do some KDE programming on my own (KBibTeX, ...), so I could act as a secondary mentor if this is an option.

Dimitar said...

Hi,

It's good make some improvements in plasma regarding making of presentations, but most of your points are already implemented by plasma, krandr, others depend on the presentation software (e. g. okular), and still others IMHO are not what the user would expect. I'll try to make a positve/constructive critique of your suggestions :)
To "To 1.": I think this depends entirely on the presentation software and I think okular already does that. IMHO it wouldn't be a good decision to force that into plasma, but devs can say better.

To "To 2.": This is already implemented in plasma.

- A short cut can be defined using "global shortcuts"; automatic recognition of the available buttons would of course great and I think most of the available XSomeButton are bound automagically by KDE (though I had problems with the Calculator button on my HP ;) )

- The screen configuration window appears automatically when an external monitor or a beamer is attached to my laptop, and I always keep krandr running (it's part of my KDE session).

- IMHO profiles, similar to the PowerDevil's ones, would be very useful indeed, esp. with a predefined set of the most often used. It should be, however, decided what should be included as a configurable options, both in plasma and krandr.

I hope my comments are helpful :)

Greetings,
Dimitar

Thomas Thym (ungethym) said...

@Dimitar: Thanks for your comment. I trust you that some of the things are implemented under the hood. Perhaps it is not much work to do and not enough for a GSoC project. Therefore I discuss it here and are happy to get feedback. Neverthless I think that there is still room for improvment (according elegance). E.G. a UI with just two buttons to choose "Same content / different content on display") would be a great improvment. And yes, perhaps even I could map the right buttons to the proper action. But I would prefer to have it integrated because most people expect it to work without geeky configuration. And that is work, too, it has to be done by someone. Perhaps it's not enough for a GSoC, perhaps SoK?
Thanks again for your comments. I find them helpful (even when I not agree with each point).

toddrme2178 said...

I can tell you at the very least 2 is NOT implemented in plasma. First, whether your primary plasma containment appears on your laptop screen or the projector screen is really unpredictable. Second, what appears on the projector is your second (or first) containment for the current activity, which is not a blank wallpaper if you use a multi-monitor setup with your laptop.

So I think making the laptop work reliably with plasma would be a big benefit. I don't know enough about how plasma or X11 works to be sure, but due to the unreliability of the monitor layout and what is the primary monitor, this would probably need some way of tying containments to unique information about the monitor. It would also need to not interfere with people using a laptop with a multi-monitor setup, in which case people want an ordinary containment on their other screen.

That being said, I think there is a use-case for having widgets on the "presentation" containment (such as the blackboard containment for sketching stuff). So having a tool to configure a special presentation containment, similar to the dashboard containment, would probably be a good idea. Perhaps even having a specialized containment just for this that deals gracefully with radical changes in screen resolution and aspect ratio. It would probably not give you an option to add a panel, since there is no reason to have a panel on this desktop. However, if you have "only show windows from the current screen" set, and you minimize a window on the projector containment, you will lose it. There would need to be some way to deal with this.

Also, a lot of laptops have a button for switching displays. On windows this typically pops up a nice overlay on the screen (like the application switcher) that lets you select the layout you want (laptop only, projector only, clone, separate). Having a nice, plasma-themable version of this for KDE, perhaps with an optional desktop effect that shows live previews of the different layouts, would be good as a part of this project.

The project is also made more complicated by the fact that Nvidia, which has a lot of use in Linux, does not support randr and there is no indication it ever will. So you would need to implemented a separate backend for Nvidia cards. It would also be nice if it worked on windows, and wayland is coming up, so at least making it flexible enough that people can add new backends easily would be a good idea.

Thomas Thym (ungethym) said...

@toddrme2178: Nice comment. I see there would be enough to do. I hope somebody would care about that and push that forward.

Miška said...

Hi,

I had a little bit similar troubles - I wanted easy way to switch output of my laptop and in the end I came up with following script. It basically cycles between three modes - laptop only, maximum resolution on both displays (external monitor on the right) and monitor and laptop having the same resolution (biggest available on both) and displaying same workspace. It also has a hack for "database" of my monitors that reports wrong modes and it sets the background depending on resolution. Might need a few modifications to reflect your setup, but works really well for my and I have it mapped to Fn+F7 which is display button :-D