Hardware Handling
This page is an attempt to write down expected behaviors of the desktop wrt. to common hardware. Having this specified at some level of detail will help with both QA and development.
Keyboard
- Media keys: play/pause, stop, forward, back
- These should trigger the corresponding action in the currently open media player (rhythmbox or totem). If more than one media player is open, control goes to the one that is currently focused. If no media player has the focus, control goes to the one that most recently had the focus.
- expected X keysyms: XF86AudioPlay, XF86AudioStop, XF86AudioPrev, XF86AudioNext
- Volume Keys: Volume Up, Volume Down, Mute
- These should trigger the corresponding action in the currently open media player (rhythmbox or totem). If more than one media player is open, control goes to the one that is currently focused. If no media player has the focus, control goes to the one that most recently had the focus.
- Expected X keysyms: [Unknown]
- Power mgmt. keys: suspend, hibernate, power
- The suspend button should suspend the laptop
- The hibernate button should hibernate the laptop
- The power button should bring up a shutdown dialog. When the laptop is suspended, pressing the power button should resume it.
- These actions are controlled by GConf keys in /apps/gnome-power-manager/buttons
- expected X keysyms: XF86Sleep, XF86Suspend, XF86Hibernate
- Brightness up/down keys
- should bring up an on-screen display and control the brightness
- expected X keysyms XF86MonBrightnessUp, XF86MonBrightnessDown
- Display key (commonly Fn-F7)
- Should cycle through display configurations (only interesting with multiple displays)
- expected X keysym: XF86Display
- Lock screen key (Fn-F2)
- should lock the screen (same as the default keybinding for Control-Alt-L)
- expected X keysym: XF86ScreenSaver
- forward/back keys
- should do forward/back in web browsers
- expected X keysym: XF86Forward, XF86Back
- num lock key
- the num lock setting should persist across logout/login, this is controlled by the gconf key /desktop/gnome/peripherals/keyboard/remember_numlock_state, and the state is stored in /desktop/gnome/peripherals/keyboard/host-<hostname>/<display>/numlock_on
- Disable/Enable trackpoint (commonly Fn-F8)
- There is no X keysym for this, as virtually all laptops handle this in hardware. It's not yet clear whether we can get an event to track state though, which might be nice.
- regular keys
- the keyboard capplet should provide a matching keyboard layout
[What is a caplet? A link or explaination would be nice. -shillman]
Mouse
- Trackpoint (rubber-tipped pointing device typically found in the center of the keyboard)
- It should just work. Some laptops don't allow to use the trackpoint/touchpad and an external mouse at the same time, though.
- Touchpad
- Edge scrolling should be on by default on touchpads that support it
- Optionally, the touchpad can be disabled while using the keyboard. This is not turned on by default
- The touchpad can be configured in the mouse capplet
- Left-handedness
- Toggling handedness of the mouse should swap left/right buttons, but not affect touchpads
- This can be configured in the mouse capplet
- Acceleration
- TBD
Display
- Resolution
- LCDs and other fixed-format displays should default to the native resolution
- Variable-format displays (CRTs, projectors...) that define a preferred mode, should default to that preferred mode
- Variable-format displays that do not define a preferred mode should do... well, something sensible. Currently being designed.
- Can be configured in the display capplet
- Backlight
- Should get turned off after 10 minutes of idleness. This timeout can be configured in the power management preferences.
- Should get turned on after resume
- 3D
- is expected to work on some hardware:
- ATI: Rage 128; all Radeons up to and including R500 series (X + four digits); experimental support for R600
- Intel: All except i740 and Poulsbo
- NVIDIA: TODO fill me in
- Other: TODO fill me in
- DRI2 support is required for GLX and Xv to work correctly under a compositor, and is available on TODO fill me in.
- If hw-accelerated 3D is not available, the desktop effects capplet will refuse to turn desktop effects on
- If the required extensions for desktop effects are not available, the desktop effects capplet will refuse to turn desktop effects on.
- is expected to work on some hardware:
- External monitors
- When an external monitor is plugging in, it should be detected and turned on
- Currently only supported on Intel hardware
- When booting with multiple monitors, the default configuration is to place the monitors in a horizontal configuration (not cloning) if possible.
- "If possible": There is a maximum width limit on most hardware; if placing all the connected monitors horizontally adjacent would exceed this limit, fall back to cloning. TODO list the limits for common hardware.
- Display ordering should be as consistent as possible when using the same set of displays, and moving between display sets.
- The Fn-F7 key cycles between supported configurations (need details about the configurations)
- Potentially at least 'at work', 'at home', and 'on the go' configuration sets.
- Need at least to not surprise people when their screen real estate changes between locations (if you reduce screen real estate, make it possible to see everything that was previously opened, but also not overlap to an absurd extent. Increased screen real estate will probably be less of a big deal).
- Placement, rotation and resolution of monitors can be configured in the display capplet
- When an external monitor is plugging in, it should be detected and turned on
Power Management
- Closing the lid should trigger a suspend (always ?)
- It should not do anything if closed with AC power.
- Possibly, it should not do anything on close if there is an external monitor attached.
- Critically low battery should trigger a shutdown (after a warning message)
- Or a hibernate, if an option?
- Battery monitoring
- Status icon should display usefully accurate information about charge level and estimated battery life
- When becoming critically low, a warning should be displayed
- suspend/power button handling: see the keyboard section
- brightness control
- for brightness keys, see the keyboard section
- when on battery, the system should lower the brightness on its own (more detail needed)
- docking
- TBD
Networking
- wireless
- when wireless networks are available, but none has been configured to be automatically connected, you should get an information that networks are available
- wired
- a wired connection should be brought up by default, when logging in
- really? on login? I'd think on boot, myself.
- a wired connection should be brought up by default, when logging in
- broadband modem
- TBD
Sound
- The volume level should be 'reasonable' out of the box
- Not muted. Not deafening. And it should also not change for no apparent reason.
- A 'system-ready' sound is played when reaching the login screen after boot
- A login sound is played when logging in
- Media applications like rythmbox and totem should play sound without problems
- Websites that play music or video should play sound without problems
- Multiple applications can play sound at the same time, and the sound capplet lets you control their relative volume
- Headphones
- All headphone jacks should work out of the box.
- If a headphone is plugged in, external speakers should not produce sound. Only the headphone. (this should also be possible to modify, if desired)
- Microphone
- All microphone jacks should work out of the box, with no fiddling required.
- In the case that a microphone is muted by default, if a microphone is plugged in, it should be unmuted.
- if there is an internal microphone, recording should work without fiddling
- Headsets
- Headsets, both jack-based and USB, should work out of the box for both input and output.
- If a headset is plugged in, external speakers should not produce sound. Just the headset. See above about modification (it is possible that one would want sound to come from external speakers, but input to come from a headset, for example).
Removable media
- Audio CDs
- inserting an audio cd should bring up a dialog that offers (among other things) to run rhythmbox
- May also want it to offer to run software to create oggs from the CD
- Video DVDs
- inserting a video cd should bring up a dialog that offers to run totem
- Data CDs
- inserting a data cd should bring up a dialog that offers to mount the medium
- USB sticks [may be better to replace this with "USB storage" -shillman]
- inserting a usb stick should bring up a dialog that offers to mount the medium [I disagree; I think it should just mount it, with an option elsewhere to change the default setting. -shillman]
- Empty CDs
- inserting an empty cd should bring up a dialog that offers to run a cd burning application
- Storage devices (Firewire, USB; other options?) should be mounted, and have an option elsewhere to change this behavior.
Other Peripherals
- Cameras
- connecting a camera via usb should bring up a dialog that offers to run a photo management app [I disagree, and think the default should be to run the photo management app, with an option elsewhere to change this behavior, possibly to asking, possibly to multiple things so that the manipulation software can also be called. -shillman]
- Video cameras
- TBD
- Media Players
- connecting a media player should bring up a dialog that offers to run rhythmbox [Again, I think this should open it by default, and allow people to change the behavior if desired. -shillman]
- PDA
- iPhone should _not_ have the default camera behavior if there are photos available, and should just open the software that correctly handles iPhones in Linux (rhythmbox?). It should be possible to set it so that it does also open the photo manager, if desired.
- Palm should sync if the sync button has been pressed, and open the Palm software.
- others? Should there be a default PDA behavior?
- Printers
- Should detect the printer and set it up so that it's immediately useable. If there is only one connected directly (likely), set it as the default printer, as well. People are _very_ unlikely to connect a printer directly to a laptop if they don't want to be using it.
[Note: For the cameras, media players, and PDAs, I think if it only asks the first time what you want the default to be, having it ask is fine. If it's every time, that's just painful. This does, of course, presume that the user doesn't select that as the behavior! -shillman]
Other Hardware
- Bluetooth
- TBD
- Fingerprint reader
- TBD