GNOME Goal: Header Bars
Since 3.10, many applications have switched to use header bars rather than the traditional combination of titlebar, toolbar and menu bar. This has the advantage of reducing the amount of screen space used by window chrome, keeps the window close button available, and allows dynamic controls that change according to the view in the window.
This GNOME goal aims to make header bar usage consistant across GNOME applications. This is good for users, since it makes our UI predictable. It also reduces the amount of code inside apps, since header bar styling and layout is specified in gnome-themes-standard rather than in the app itself.
Guidelines
This goal is only relevant to applications.
Documentation for GtkHeaderBar
Design Guidelines
Header bars are an important part of the GNOME 3 application design patterns, and can be seen in many of the core GNOME applications (Files, Documents, Photos, Notes, Contacts, Web, etc). Check these out to see how they have implemented and designed their header bars.
To use a header bar, it is typicaly necessary to make other design changes to your application. In particular, header bars don't work with menu bars: if you have a menu bar, you will need to move your menus into an app menu, gear menus, context menus, or header bar buttons. For relatively simple applications, this shouldn't be a huge problem. However, more complex apps (eg. Evolution, Anjuta) will find it more difficult. These applications will only be able to transition to use a header bar after a more extensive redesign.
Guidelines for designing a header bar can be found in the (still rough) GNOME 3 HIG. If you are unsure about how to design your header bar, just ask on #gnome-design or add a bug to this page (you might also want to tag it with the ui-review keyword).
Design Guidelines for Games
Games are not like regular applications, and probably want to use header bars in a slightly different fashion. In general, games should not include any controls in their header bar other than those for controlling window state (in this sense, header bars for games are much like the old titlebars, possibly with the addition of a full screen button). For games, it is better to keep controls close to where play takes place.
A few mockups illustrate how header bars could be used for Mines and Tetravex. (It should be said that, long term, most games probably want to aim to be full screen only. This will require a lot of custom art work to be effective though.)
Comments before approval
Add your comments to this goal proposal here |
A GNOME goal should be small and non-controversial (see /../Proposals). Using an headerbar is a major redesign, and for big applications this is not a small task. Also, not all maintainers agree that an headerbar is better. (SĂ©bastienWilmet)
Status of this goal
Tip: If you choose to work on a module, create the bug report on the GNOME bugzilla for the relevant module, and make it block bug <<insert here a link to the tracker bug>>. This way people will know someone already works on it, and won't duplicate the work you're doing. |
Patch Status |
Markup |
todo |
<: #ff8080> todo |
patch |
<: #ffcc50> [[GnomeBug:xxxxx|patch]] |
done |
<: #80ff80> [[GnomeBug:xxxxx|done]] |
not needed |
<: #80ff80> not needed |
Above are the states and corresponding markup to update the modules state table below.
Tarball |
Status |
core |
|
at-spi2-core |
not needed |
at-spi2-atk |
not needed |
dconf |
not needed |
evolution-data-server |
not needed |
glib-networking |
not needed |
gnome-bluetooth |
not needed |
gnome-online-accounts |
not needed |
gnome-control-center |
done |
gnome-desktop |
not needed |
gnome-icon-theme |
not needed |
gnome-icon-theme-extras |
not needed |
gnome-icon-theme-symbolic |
not needed |
gnome-keyring |
not needed |
gnome-menus |
not needed |
gnome-packagekit |
wontfix - remaining UIs will be moved over to gnome-software |
gnome-power-manager |
done |
gnome-screensaver |
not needed |
gnome-session |
not needed |
gnome-settings-daemon |
not needed |
gnome-shell |
not needed |
gnome-themes-standard |
not needed |
gsettings-desktop-schemas |
not needed |
gvfs |
not needed |
mousetweaks |
not needed |
mutter |
not needed |
network-manager-applet |
not needed |
pulseaudio |
not needed |
telepathy-mission-control |
not needed |
core-utilities |
|
baobab |
done |
brasero |
to do |
empathy |
to do |
eog |
|
epiphany |
done |
evince |
done |
gnome-calculator |
|
gnome-contacts |
done |
gnome-dictionary |
to do |
gnome-disk-utility |
|
gnome-font-viewer |
done |
gnome-screenshot |
|
gnome-search-tool |
to do |
gnome-system-log |
done |
gnome-system-monitor |
done |
gnome-terminal |
|
gucharmap |
|
nautilus |
|
sushi |
not needed |
yelp |
done |
core-extras |
|
gnome-backgrounds |
not needed |
gnome-user-share |
not needed |
vino |
not needed |
gnome-user-docs |
not needed |
core-fallback |
|
GConf |
not needed |
gnome-panel |
not needed |
metacity |
not needed |
notification-daemon |
not needed |
core-os-services |
|
accountservice |
not needed |
avahi |
not needed |
not needed |
|
dbus |
not needed |
gdm |
not needed |
not needed |
|
not needed |
|
polkit |
not needed |
upower |
not needed |
core-deps |
|
atk |
not needed |
atkmm |
not needed |
cairo |
not needed |
cairomm |
not needed |
cantarell-fonts |
not needed |
caribou |
not needed |
clutter |
not needed |
clutter-gtk |
not needed |
clutter-gst |
not needed |
cogl |
not needed |
dbus-glib |
not needed |
dbus-python |
not needed |
desktop-file-utils |
not needed |
enchant |
not needed |
expat |
not needed |
farsight2 |
not needed |
folks |
not needed |
fontconfig |
not needed |
gamin |
not needed |
gnome-js-common |
not needed |
gtksourceview |
not needed |
gdk-pixbuf |
not needed |
gjs |
not needed |
glib |
not needed |
glibmm |
not needed |
gmime |
not needed |
gnome-doc-utils |
not needed |
gnome-video-effects |
not needed |
gnutls |
not needed |
gobject-introspection |
not needed |
gst-plugins-base |
not needed |
gst-plugins-good |
not needed |
gst-plugins-farsight |
not needed |
gstreamer |
not needed |
gtk+ |
not needed |
gtk-doc |
not needed |
gtkmm |
not needed |
gudev |
not needed |
hicolor-icon-theme |
not needed |
icon-naming-utils |
not needed |
iso-codes |
not needed |
itstool |
not needed |
intltool |
not needed |
java-gnome |
not needed |
js185 |
not needed |
json-glib |
not needed |
libatasmart |
not needed |
libcanberra |
not needed |
libchamplain |
not needed |
libcroco |
not needed |
libdaemon |
not needed |
libdiscid |
not needed |
libgpg-error |
not needed |
libgcrypt |
not needed |
libgee |
not needed |
libgdata |
not needed |
libgnome-keyring |
not needed |
libgnomekbd |
not needed |
libgsf |
not needed |
libgtop |
not needed |
libgweather |
not needed |
libical |
not needed |
libmusicbrainz |
not needed |
libnice |
not needed |
libnotify |
not needed |
liboauth |
not needed |
libpeas |
not needed |
libproxy |
not needed |
librest |
not needed |
librsvg |
not needed |
libsigc++2 |
not needed |
libsndfile |
not needed |
libsoup |
not needed |
libtasn1 |
not needed |
libwnck |
not needed |
libxklavier |
not needed |
libxml2 |
not needed |
libxslt |
not needed |
mm-common |
not needed |
nspr |
not needed |
nss |
not needed |
p11-kit |
not needed |
pango |
not needed |
pangomm |
not needed |
pixman |
not needed |
polkit-gnome |
not needed |
poppler |
not needed |
py2cairo |
not needed |
pygobject |
not needed |
rarian |
not needed |
seed |
not needed |
shared-mime-info |
not needed |
sound-theme-freedesktop |
not needed |
speex |
not needed |
sqlite3 |
not needed |
startup-notification |
not needed |
telepathy-glib |
not needed |
telepathy-logger |
not needed |
telepathy-farsight |
not needed |
totem-pl-parser |
not needed |
tracker |
not needed |
vala |
not needed |
vte |
not needed |
webkit |
not needed |
yelp-tools |
not needed |
yelp-xsl |
not needed |
zenity |
not needed |
libnl |
not needed |
lcms2 |
not needed |
colord |
not needed |
apps |
|
accerciser |
to do |
aislerot |
to do |
anjuta |
to do |
banshee |
to do |
bijiben |
done |
cheese |
done |
d-feet |
done |
devhelp |
done |
evolution |
to do |
file-roller |
done |
five-or-more |
done |
four-in-a-row |
done |
frogr |
to do |
gedit |
done |
ghex |
to do |
glade |
to do |
gnome-chess |
done |
gnome-clocks |
done |
gnome-color-manager |
not needed |
gnome-devel-docs |
not needed |
gnome-documents |
done |
gnome-klotski |
done |
gnome-mahjongg |
done |
gnome-maps |
done |
gnome-mines |
|
gnome-nettool |
|
gnome-nibbles |
done |
gnome-photos |
done |
gnome-robots |
done |
gnome-sudoku |
done |
gnome-tetravex |
done |
gnome-tweak-tool |
done |
gnome-weather |
done |
gtranslator |
to do |
iagno |
|
lightsoff |
done |
nautilus-sendto |
not needed |
nemiver |
to do |
orca |
to do |
polari |
done |
quadrapassel |
done |
rygel |
not needed |
seahorse |
|
swell-foop |
done |
tali |
done |
totem |
done |
vinagre |
to do |