Showing posts with label control-center. Show all posts
Showing posts with label control-center. Show all posts

Friday, 1 February 2013

Power management in GNOME 3.8

In the past couple of weeks, apart from reviewing very many patches for gnome-control-center (especially for new and re-designed panels), I've been working on updating the power management handling in GNOME.

Test suite

The first change is that we have a test suite (currently with 15 separate tests) to test interaction between gnome-settings-daemon's power management and various session and system components. This is thanks to Martin Pitt, and his work on python-dbusmock.

We'll try and add new tests as bug reports come in to avoid regressions, although some cases will remain untested because of limitations in our logging.

 All clear

Screensaver and backlight interaction

With gnome-shell becoming the sole screensaver (after the removal of fallback mode, and the obsoletion of gnome-screensaver), we've been able to streamline the code handling the various screen backlight power levels.

Your screen will now turn off as soon as the screensaver kicks in, moving your mouse in the screensaver will turn it back on for 20 seconds before turning off again, and when to dim (if you've chosen so) is dependent on whether you're on battery or not, and the default idle time (eg. if your screen turns off after 5 minutes of inactivity, the screen will dim after 4). This makes the behaviour more consistent, and predictable, compared to the mish-mash of settings we had before, where some delays were available for change in the UI, and others only through GSettings or gnome-tweak-tool.

Those constants are separate from the code, and exported to the test suite so they are flexible and can be changed if the behaviour doesn't exactly match what users are expecting.

The other change relating to that, is that the screen shield will now always pop down when the screensaver kicks in (thanks to Giovanni for the gnome-shell work). This doesn't mean that you'll have to enter your password each time, but only after the "lock delay" if you've set one.

We've also added a number of nice touches, like the screen turning back on for a short period when you plug or unplug your laptop, made sure that your laptop screen gets turned off and your session locked when closing the lid and turn off the backlight for machines where suspend causes the backlight to come back on temporarily (as seen on MacBooks).

Very very idle

We've also added a long-requested feature: the ability to force logout after a period of idle. This is useful in kiosk and computer lab situations, and is only available through GSettings. As we've added support for this feature (warning prior to logging out, with the screen turning on for a couple of seconds when the warning shows up), we've realised that the infrastructure is the same for automatic suspend/hibernate situation. This means I expect to change the default "long idle" behaviour to suspending. This will still be changeable in the Power preferences. This should land after 3.7.5, and don't worry, we'll make this change very visible in the release notes :)

*I* am not suspending by default

Inhibit

But you don't want to suspend, you really don't.

GNOME supports the draft FreeDesktop "Idle inhibition" specification, as implemented by KDE, which hopefully means that more third-party applications should start behaving better when playing back films, in presentation mode, or for large overnight downloads. This should hopefully get out of draft status before the GNOME 3.8 release.

We also have a gnome-session-inhibit tool available in gnome-session for your scripting needs.

Colophon
 
All the changes mentioned should be available in GNOME 3.7.5, and I will be available to take complaints at FOSDEM this week-end.

Friday, 21 December 2012

Settings news

GNOME 3.7.3 just got released earlier today, and includes some great new work. I won't be posting screenshots, because some of the UIs aren't final, and we'll be iterating until 3.8 is released (and it's my birthday ;).

Cleaning up

We've cleaned up gnome-settings-daemon plug-ins, and gnome-control-center panels, as well as removing the support code for GNOME Fallback, saving us around 10k lines of code.

gnome-control-center (now "Settings" in the UI) is faster to start, and gnome-settings-daemon require less code to write additional plug-ins.

New panels

3 new panels got added:

  • Search panel, to control the search output in gnome-shell, as well as control which directories and file types Tracker should index.
  • Notifications, to manage the notifications that will show up on your desktop. The filtering is done in gnome-shell itself, and would allow you to only show specific notifications in the lock screen for example. See Giovanni's post if your application uses notifications.
  • Privacy, which still requires quite a bit of work, would be the go-to place to ensure your identity isn't leaked on the network, or visible on your system. You can see how some of the features in the two aforementioned panels will also affect your privacy.
With the above panels merged, we're left with the re-design of the Power panel, which should mean the end of the "Screen & Brightness" panel (half of the settings went to the Privacy panel, the other half will go to the Power panel).

New backend features

First, users of Wacom tablets, you'll be happy to know there's now a button you can press to see, in an OSD, the current configuration of your tablet buttons. This feature has been long in the making, but the results are great. There's coverage for every tablet known to libwacom, and support for touchrings, touchstrips and modeswitch buttons. Select the button you want to use for the help in the Settings panel.

Secondly, we now support the draft "Idle Inhibition" specification from Freedesktop.org.

We also have some unfinished features.

The remote-display plugin will disable animations in the desktop when using the desktop over VNC or Spice.

And the cursor plugin will hide the mouse cursor until first used, or when using a touchscreen, similarly to what Windows 8 supports (it's the only system other than ours that supports both cursor pointers and touchscreens).

Those 2 plugins should hopefully be working by the time of the GNOME 3.8 release.

Until next time.

Wednesday, 23 May 2012

System Settings shell changes

 While Jon McCann made changes to the System Settings UI, I was busy implementing an animated notebook, to make the switch between panels, overview and search less jarring.



Video on YouTube.

Here's a list of what we fixed:

  • Avoid scrollbars at all costs on startup (made possible by some GTK+ sizing bug fixes)
  • Make the default window bigger, while supporting small displays (800x600 displays should now be usable)
  • Bigger icons to match the Shell's overview
  • Better layout of search results
  • Animated transitions between panels, overview and search results

Before


After

There will most likely be more tweaks of the UI between now and the GNOME 3.6 release, which I'll make sure to let you know about.

PS: Before you ask, we cannot animate window size changes. Hopefully this will be possible in the future.

Update: Fixed a double-negative. Also note that there are some differences between my screenshots and reality, like the separators, as my system wasn't fully updated.

Wednesday, 29 February 2012

Wacom tablets in GNOME 3.4 (part #2)

Since the last report, "mapping" has been the order of the day. We now have support for:

Display mapping

Not as pretty as mocked up, but it's functional. We hope to have the nicer version done for the next development cycle.

and

Button mapping

The button mapping will show you the actual keys, with translated names, for your device, instead of every possible combination of buttons which end up doing nothing.

We've also made a big number of layout changes and fixes, which means that the main window isn't as awkward as it used to be.

There are a number of features that unfortunately didn't make the cut, mostly due to the lack of support from the X.org drivers. Mode switching currently doesn't advertise the current mode by changing the LED, and the OLEDs that show the bindings for each key stand empty.

Friday, 27 January 2012

Wacom tablets in GNOME 3.4

Working from designs.


The cool stuff first

Cosimo Cecchi presents the updated Wacom settings

Go to YouTube directly if you can't see the video here.

A new arrival

As mentioned by Cosimo, we have a new library to help us implement the settings you saw: libwacom.

libwacom is there to give us metadata about tablets, whether or not they are connected to your system, the list of styli it supports, as well as information about the styli themselves. As you can see from the UI, it's pretty important that we know:

  • whether the tablet is builtin (so we know whether you can calibrate it)
  • which form factor it has
  • the list of styli it supports
  • for each stylus, its full name, the number of buttons, what it looks like
In the past, all this information was only available within the drivers (as comments), exported in different ways (sysfs attributes), non-machine readable in public documentation, or, worst of all, hidden in Wacom's internal drivers for OS X or Windows.

So if you have a Wacom tablet, send us a definition file for your tablet, so you can configure it with the impression that the software actually knows about your device.

Where's that configuration again

After knowing what each tablet had to offer, we had to have a way to match the definitions to XInput devices, assign settings per-tablet, and importantly, switch stylus configuration when the user switches stylus. This is done using the new GsdWacomDevice and GsdWacomStylus objects, shared between gnome-settings-daemon (which will apply the configuration) and gnome-control-center (which will set the configuration).

This also means we have a few debugging applications, such as list-wacom in gnome-settings-daemon, to show you the attached GsdWacomDevices, or test-wacom in gnome-control-center, to test display of particular tablets if you don't own them (this is the place where I spend a lot of time).

What's next

Peter Hutterer, my input buddy at Red Hat, who made the original Wacom panel for GNOME 3.2, and the first version of libwacom, is currently spending a lot of time on Multi-Touch, and fixing bugs I report in the Wacom driver.

Jason Gerecke, from Wacom, who did most of the initial work on calibration support, is working on the related display-mapping. This will allow choosing whether a tablet's working area is the whole desktop, or a single monitor when in multiple monitors are used.

For my part, after fixing the layout bugs that so annoy me in the settings panel, I'll be starting work on tablet button mapping. I look forward to making the LEDs on the tablet match up with the selected keyboard shortcut!

Many thanks to Cosimo and Monty for helping out with presenting the work, and doing the video.

Tuesday, 18 October 2011

Bluetooth panel merged

The Bluetooth panel was the last bad citizen in getting merged into gnome-control-center itself. It's now been integrated into gnome-control-center itself, using a very cleaned up libgnome-bluetooth.

Ready for GNOME 3.4! Please report any breakage.

Friday, 16 September 2011

OMG! I haz designed a bug fix!

In GNOME 3, we removed an option which got GNOME users hot under the collar (and gave the opportunity to the ones who weren't something to troll about): we removed the configuration option to select what happens when you close your laptop lid.

We started digging, and found out that the main reason for people wanting this feature was so that they could go from a table to another in the coffee shop, from their desk to the meeting room in the office, or a table to the next in the library, with the laptop lid closed, and your internet connection still on-going.

In that case, what's really needed is a way to disable suspending when you're moving the laptop. But having to dig in the settings would take too long anyway. And, apart from a number of tethered ones, users would live happily without that ability, so we wouldn't be adding this in the gnome-shell UI itself.

Let's add the button in a separate application. A single button isn't too interesting though. Let's make this more interesting!

Office Runner!

Testimonials

  • “this is the best thing ever”
  • “the most creative way I've heard of to solve a power management bug in a while”
  • “I expect people to spill their coffees over this”
What now?

The code is available in GNOME git, and we're just waiting to knock a few TODO items, and get a UI  review before releasing the first version. Patches welcome. Enjoy!

Thursday, 23 June 2011

Pretty, oh so pretty

There was a tiny problem with the Bluetooth panel has it was implemented in GNOME 3. There wasn't a way to rename the Bluetooth adapter. Well, there was a way, but it wasn't implemented, but it was there, in our minds.

We started by adding support to the Info panel to set a machine's pretty hostname, as implemented by systemd. Looks simple enough.


The next step was to make bluetoothd know about this file, and use it to name Bluetooth adapters, instead of crappy hostnames. And voila.


Implemented as it should be.

If you have applications where using a device's name (as opposed to the user's name) makes sense, please look into using the machine's pretty hostname.

If you want to test all this, packages will soon be trickling into Fedora 16 (aka Rawhide). All the patches are upstream, though the bluez patches are still pending.

Tuesday, 22 February 2011

Bluetooth panel

Nearly implemented in one evening (Friday evening, before the UI freeze), and a day (well, a long day, it's 4:30 AM).

The only thing not implemented is the hardest part, the "active" button, which needs to take into account whether there are Bluetooth devices at all, if one is the default and powered, and handle hardware killswitches as well as software ones (software-based airplane modes for example).

Yay, I can wiggle my mouse

As per usual, refer to the design documents for more information on the changes made.

Tuesday, 8 February 2011

The screen panel

Following on from the region panel, we now have an updated “Screen” panel for the control-center. Richard worked on the initial version (which you can see in older revisions of the control-center for GNOME 3), and I finished hooking it up this week.

Not much to say about this, except that the lock screen timeout preference now changes the underlying preferences for both “on AC” and “on battery”, as well as the idle time (which is used by a number of desktop components like your IM application).

I'm also very glad that we managed to get rid of the brightness levels based on whether on battery or mains power. This usually worked exactly as you didn't want it to. Now, just use your keyboard shortcuts for those instead of hoping to gouge somebody's eyes out every time you changed power source.

See also the design page for more information about the changes made.

Saturday, 5 February 2011

GNOME 3 Test Day

On Wednesday evening, Fedora Desktop hackers were frantically building GNOME 2.91.6 into rawhide, including a number of rebuilds against newer versions of GTK+, and beta testing Live CD images to make sure they were usable.

On Thursday morning (European time), ISO images were being uploaded by the our favourite QA insomniac. Quite a few people came to test the Live CD, and many bugs were filed.

There were plenty of questions about GNOME Shell itself, and some about the design decisions. So if you did try out one of the many GNOME 3 live CDs, and asked yourself the following questions, we'll try and provide some answers.

Q: The dash is broken, I can't add more than 13 favourites to it!?
A: It's known problem, which also fits into the dash resizing when you drag'n'drop new items to it.

Q: I can't read the full name of certain applications when searching for them in overview mode. Can I haz tooltips?
A: Tooltips, maybe not, but a solution is being worked on. Follow the discussion in this bug.

Q: I can't change my font size, really?
A: You can change it for the applications, in the Universal Access settings. For the shell, it's currently not possible, but it will get fixed.

Q: I don't like how hard it is to create workspaces. Is this the final design?
A: It's not. Owen has been working on implementing Jakub's video mockups. See this bug for all the links.

Q: I use 2 monitors, and GNOME Shell is very difficult to use. Is it going to get fixed in time?
A: Hopefully yes. There are two bugs you can monitor. One is about a bug when using two monitors (or at least, more prominent when using two monitors), the other about the plans for even better multi-screen support.

Q: How do I restart my computer?
A: Type "reboot" in a terminal? Unfortunate, but how to present it needs a bit of design work. Just adding another menu item in the system menu just muddles it.

Q: This is way slick. But the NetworkManager applet looks really out-of-place. Can you make it look cool?
A: Yes! System status legend Giovanni is on the case.

Q: My machine can't run GNOME Shell. What about the fallback mode?
A: It looks pretty sad at the moment. There's plenty of room for improvements here. Feel free to jump in if you want to help those not fortunate enough to be able to run GNOME Shell.

Also notable is the fact that plenty of bugs were filed, and quite a few fixed, that we are exercising the graphics drivers and finding bugs, and that despite some complaints (some of them constructive, but not always), GNOME 3 is looking better and even more usable than GNOME 2 by the day.

PS: We even had KDE make GNOME crash. Or close enough.

Friday, 28 January 2011

Region panel

Yesterday, I finished working on a UI cleanup for the “Region and Language” panel in the control-center. You can see the results below. I'm pretty happy with this, though quite a bit of work could still be done, like allowing users to install “language packs” (fonts, translations, dictionaries) from the language tab, or integrating input sources in the layouts tab.

The layout before the separator are used by other users on the system

My favourite layouts, with the new contextual items
(and sans keyboard model selection)

Wednesday, 26 January 2011

infra-red remotes in GNOME 3

gnome-lirc-properties has served its purpose. It will probably carry on working on GNOME 3 desktops, but you won't be happy when it drags in GTK+ 2.x Python bindings, HAL or doesn't integrate into the new control-center.

But things have changed since gnome-lirc-properties was first written, and the way to handle IR remotes has changed as well:
  • A large majority of receivers are now supported in the kernel using rc-core (né ir-core).
  • Some receivers aren't supported (iguanaIR amongst others), and some need porting from pure input drivers to rc-core. Some functionality for the ATI Remote Wonder remotes is also not supported by the new drivers. If you're interested in working on this, drop a mail to the LIRC list.
  • Mauro Chehab is making progress at propagating the key events from the kernel up to the stack to X11 applications. There's some patches in that direction on the Red Hat Bugzilla.
This means that:
  • Event delivery would still need a broker in the session, to get to unfocused applications. gnome-settings-daemon can step in that role (and step out of the way when the application is focused, so the app can bring context dependent behaviour). gnome-settings-daemon already handle some of the more common multimedia keys in its media-keys plugin.
  • The only configuration one would need to do is selecting the type of remote for the receiver, eventually tweaking the keymap for that remote.
So to write a replacement for gnome-lirc-properties that would fit into GNOME 3, one would need:
  • A way to enumerate receivers on the machine
  • A way to change the remote configuration (changing the keymap) for that receiver
  • Eventually a way to tweak the keymap
This could all be handled through a D-Bus version of ir-keytable. If Mauro's patches reach X.org mainstream, then a kernel/GNOME summer of code project could be had for this work. Best to start writing some kernel patches, or laying some code if you want to get a headstart.

PS: For completeness' sake, there are also "pure" input devices that are remotes that wouldn't be handled through this. Those would need to be blacklisted in the input layer, and handled through rc-core instead.

Tuesday, 5 October 2010

The new control-center and you

URI scheme handlers

In the past, handlers for specific URI schemes lived in GConf. This caused multiple problems:
  • it would cause problems when 2 applications tried to lay claim to the same URI schemes (say both Banshee and Rhythmbox wanted to handle the "itpc" scheme), because GConf would expect only one schema (thus one application) to handle a particular key.
  • when the key was set, by the preferred applications for example, the key would lack important information to make things like startup notification work (or even whether it works), the application name, icon, etc.
  • and for schemes where a desktop-wide modules (such as gnome-vfs, as listed above) would own the key, you'd still need to add a separate file to have the application added to the Preferred Applications control-center applet.
We now use mime-types for all this. If you wanted to handle the aforementioned "itpc" URI scheme, you'd just need to say you handle the "x-scheme-handler/itpc" mime-type. This also means you could easily switch between applications handling a URI scheme, as you would a filetype.

You can track the feature, and its usage in bug 631433.

Non-panels in the dog house

For GNOME 3.0, the control-center "capplets" got turned into panels in a new shell. In addition to porting your old preferences application to being a control-center panel (see gnome-bluetooth, gnome-media, gnome-power-manager and others for a show-and-tell), you'll need to make a few changes to your .desktop file.

You'll need to add the "X-GNOME-Settings-Panel" category. If your dialogue is a panel, but lacks this category, it will show up under "Other" in the shell. If your preferences are not a panel but you try to cheat, you'll get a warning, and be removed from the shell altogether.

Monday, 28 July 2008