GTK3

From GnuCash
Jump to: navigation, search

With version 3.0, GnuCash has upgraded to the GTK3 library from GTK2.

This page contains instructions on how to customize GTK3 appearance and behaviour.

For more background information about the location of the configuration files, see Configuration Locations.

Keyboard Shortcuts

Keyboard shortcuts can be assigned to actions in GnuCash application. A more detailed information is available on Keyboard Shortcuts.

To assign a custom shortcut, do the following:

With GnuCash *not running* open $GNC_DATA_HOME/Gnucash/accelerator-map in any text editor and find the line with the desired command, i.e. for double-line in the register view use

 ;(gtk_accel_path "<Actions>/GncPluginPageRegisterActions/ViewStyleDoubleLineAction" "")

If, for some reason, the line is missing in the accelerator-map file, simply copy the line above into the file. Remove the ';' at the beginning and insert whatever shortcut you like between the last set of double quotes. Save the file.

GNC_DATA_HOME defaults to:

Linux
$HOME/.local/share/gnucash
MacOS
$HOME/Library/Application Support/GnuCash
Windows
CSIDL_APPDATA\GnuCash, which can be referenced via %APPDATA%\GnuCash.
The %APPDATA% variable by default points to C:\Users\<userid>\AppData\Roaming.

The Ctrl key is referenced as <Primary>. For example, if you want to use Ctrl+2 for a shortcut, set the value to "<Primary>2".

The next time you open GnuCash, you will be able to use the shortcut key to trigger the desired functionality. The relevant menu item will reflect this fact by displaying the shortcut key next to the assigned action's name.

Bindings

Customizing key bindings is done by editing (or creating if needed) the file gtk-3.0.css in the GnuCash configuration directory. For Windows, this is %APPDATA%\GnuCash.

For example, to add a new binding so that the F11 key is bound to the copy-clipboard action and the F12 key is bound to the paste-clipboard action and existing keybindings for these actions remain unchanged, add something like this to gtk-3.0.css:

/* Bind F11 to Copy, F12 to Paste */
@binding-set F11CopyF12Paste
{
  bind "F11" { "copy-clipboard" () };
  bind "F12" { "paste-clipboard" () };
}

entry
{
  -gtk-key-bindings: F11CopyF12Paste;
}

Visual Styling

Unlike GTK2, as noted in bug 791823, the GTK theming tool is not being distributed with GTK3. This, due to the fact that GTK3 uses Cascading Style Sheets (CSS) for themes, is fairly easy to resolve by styling the GTK applications manually or using one of myriad available graphical themes. This is easily done by placing a custom CSS file at the correct location, depending on your system, or downloading and using a custom-made theme.

Manual Styling using CSS file

The comprehensive GTK+ CSS Overview, as it relates to GTK, is available at Gnome Developer web site.

Configuration tools
Various Linux distributions provide custom tools for managing themes. There is a nice overview of graphical tools available, depending on the desktop environment at archlinux.

A sample GnuCash CSS file can be found below:

For extra info, you can also check these low-level customizations:

Note that these contain the @ variables, as explained in the CSS customization overview, Colors section.

To precisely locate the UI elements for customization, you can use the GTK Inspector tool.

To customize the way GnuCash looks, create or modify an existing Cascading Style Sheets (CSS) file at the appropriate location. The correct location on different operating systems is explained in the following FAQ answer: FAQ#Q: Where can I find the GTK resource file? Note that, by default, no gtk-3.0.css file will be created by GnuCash application. Once you add the file, add the desired CSS rules or copy values from an existing theme. There are plenty of GTK3 theme resources caused by the fact that CSS is a widely-adopted standard for UI styling and many people are familiar with it.

Related wiki entries:

Custom GnuCash Styles

For register, you can use the the style as follows:

 *.register-primary {
   color: red;
 }

where

*.register-primary => primary (dark-background) lines
*.register-secondary => secondary (light-background) lines
cursor entry => the cell containing the cursor
*.register-foreground => setting the colour for this selector will paint all the register text in that colour.
*.register-cursor => the currently selected row in the register

Themes

You can use a predefined GTK3 theme. Note that applying a custom theme will affect all the gtk3-based applications on your system!

Short summary:

  1. download an appropriate gtk3 theme from www.gnome-look.org or other sites
  2. copy the theme into a directory where gtk3 looks for themes (see below)
  3. create or adjust a settings.ini file to instruct gtk3 to use this theme

Some sites which host custom GTK3 themes:

Below is a slightly longer explanation with platform dependent remarks:

1. Go to the gnome-look.org website

2. Click the "Gtk3 Themes" link (*not* the Gtk2 one)

3. Select a theme you like. Alternatively you can search for keywords (like "dark") in the top right corner and then filter on "Gtk3 Theme category".

4. If you have found a theme you like, download the proper file (in the files section of the theme page). Note depending on your operating system you may not be able to open all theme files. There are, for example, .deb archives which are specifically targeted at the Debian linux distribution and derivates such as Ubuntu. While Ubuntu and Debian users can install those themes via their package manager these themes are not useful for other platforms. Theme files ending with .zip, .tar.gz or tar.xz are likely installable on all platforms, although you may have to find a proper application to extract them. On Windows 7-Zip is a good candiate, linux users can probably extract the files directly from their file manager. Let's take the theme "Eye-friendly Dark RBC" as an example (it's not the best theme but it can serve as an example). The file to download is Eye-friendly-Dark-RBC.tar.gz.

5. Extract this file using an appropriate tool. This should give you a directory named Eye-friendly-Dark-RBC.

6. Move this directory to a location on your system that's parsed by gtk. This is platform dependent:

Linux
$HOME/.local/share/themes/
OS X
$HOME/.local/share/themes/
Windows
 %LOCALAPPDATA%\themes\

7. Next tell gtk to load this theme. Linux users can probably most easily do this by install the "Gnome Tweak Tool" on their platform and select the new theme there. The manual method is this: Create a file named "settings.ini" in the appropriate location. Again this depends on your platform:

Linux
$HOME/.config/gtk-3.0/
OS X
Either $HOME/.config/gtk-3.0/ (like on linux) or $HOME/Library/Application Support/Gnucash/config/gtk-3.0

I suspect the latter in this case because gnucash overrides the XDG_CONFIG_HOME environment variable on OS X

Windows
 %LOCALAPPDATA%\gtk-3.0\

The contents of this file should be

[Settings]
gtk-theme-name=Eye-friendly-Dark-RBC

And that's it. Note the name is the name of the directory as you put in the themes directory. The next time you start gnucash it should pick up this theme.

A few extra notes:

  • The default gtk3 theme is called "Adwaita"
  • On linux there's a second default theme called "Adwaita-dark" which should also give you a dark themed gnucash. Unfortunately this doesn't work on Windows.
  • If you're adventurous you can probably also play with customized icon themes which you find on the gnome-look.org website. These themes should be installed in the icons directory next ot the themese directory. And to activate them you can add gtk-icon-theme-name=<directory name> in settings.ini.
  • Another setting some of you will be interested in is gtk-font-name=<a font description>
for example
gtk-font-name=Abyssinica SIL Regular 10


Dark Themes

Due to the lack of a dark theme on Windows, a guide could be a ready-made custom theme to which GnuCash-specific style rules would be added.

Here is an example of a dark theme for GnuCash 3. Note that this is still a work in progress, though.

Ready-made Themes

Here are some ready-made themes that may apply well to GnuCash.

Font Size in Documents

Use the following style in your gtk-3.0.css file:

* {
  font: 14px arial, sans-serif;
}

This setting will adjust the fontsize, also of the register to 14 pixel.

The location of gtk-3.0.css on different systems is described in FAQ#Q: Where can I find the gtk resource file?.

Additional Links

  • Windows page contains some instructions on customization of visual appearance.