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

{i} 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

{i} 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

in progress

epiphany

done

evince

done

gnome-calculator

done

gnome-contacts

done

gnome-dictionary

to do

gnome-disk-utility

done

gnome-font-viewer

done

gnome-screenshot

done

gnome-search-tool

to do

gnome-system-log

done

gnome-system-monitor

done

gnome-terminal

to do

gucharmap

to do

nautilus

done

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

ConsoleKit

not needed

dbus

not needed

gdm

not needed

NetworkManager

not needed

PackageKit

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

done

gnome-nettool

in progress

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

done

lightsoff

done

nautilus-sendto

not needed

nemiver

to do

orca

to do

polari

done

quadrapassel

done

rygel

not needed

seahorse

to do

swell-foop

done

tali

done

totem

done

vinagre

to do

Initiatives/GnomeGoals/HeaderBars (last edited 2015-11-20 11:19:40 by SébastienWilmet)