36

White background color is harm to eyes. How to change pdf background color in evince? Now I use evince 3.4.0 in ubuntu 12.04 x64.

3
  • I suffer also from white background and I used to use xcalib below, but currently mostly I relay on KWin which offers invertion of colors for each window separately. That's why I use on most machines KDE as I have it out_of_the_box, just need to turn it in settings. Dec 1, 2015 at 22:24
  • I am only suggesting workarounds, but Zathura is another (really cool) pdf viewer, and its background is black. Otherwise, you could customize your global Ubuntu theme (for e.g copy the theme Ambiance from /usr/share/themes/Ambiance to $HOME/.themes/, and tweak the color definitions in gtk.css). Unfortunately, I don't know where are the specific variables for evince, so all your apps would then have a black background XD. Personally I'm anyway much happier with a totally dark theme, but it's matter of taste. Feb 7, 2017 at 22:40
  • After inverting the colors there are grey bars are left on both sides - you could get rid of them by just resizing the window to only show the inner inverted PDF content - alt-right mouse for the resizing shortcut, then alt-left mouse to move the window around. I think this is the simplest and most straightforward solution, provided your desktop background is dark/black.
    – fremon
    Dec 10, 2020 at 20:24

6 Answers 6

40

I am sure that you can invert the color but I am not sure whether you can use a different color of your choice as a background color.

To invert the color.

Goto: View -> Inverted Colors (Ctrl+I)

Hope this helps.

3
  • 1
    I want to change back color to others like light green. I think this is easy to implement for developer of evince. Sep 23, 2012 at 5:49
  • 3
    Yes it is very much possible. After your comment I just went through the evince source code and found this. ev-document-misc.c holds the inverted color section if (inverted_colors) cairo_set_source_rgb (cr, 0, 0, 0); else. So by changing this i think we can achieve our desired color but i haven't compiled and tested this. You can try your luck.
    – devav2
    Sep 23, 2012 at 6:15
  • 1
    Then how to change back color to light green. I am newbie. Sep 26, 2012 at 14:55
18

I have have been fighting this issue for quite a while now. The best solution I have come up with is to use the xcalib command via two easily accessible application launchers on my tool/app bar. I have named them "Screen Mode" and "Paper Mode".

With the help of xcalib I can activate on-the-fly two different screen configurations without profiles and other bloat. Note that xcalib is the smallest bit of software and won't take any space or memory as it passes the configurations to the display adapter and exits. You can forget about the heavy specialist software like argyll+dispcalgui etc.

Firstly install xcalib with:

sudo apt-get install xcalib

Then set your two launchers with these commands:

To set the "Paper Mode" use:

xcalib -red 1.7 1 64 -green 1.7 1 57 -blue 1.7 1 28 -alter

To (re)set back to "Screen Mode" use:

xcalib -clear

As you can probably tell I am adjusting the parameters per-channel and my effort was to produce a Kindle like result. Obviously you can and should adjust these according to your preferences and screens. Of course this adjusts the screen as a whole but, for me at least, this has been a blessing for those all white IDEs. It will take you a couple of minutes to get used to it, but you'll never go back. It's a true Eye-Saver!

The command usage is xcalib -ChannelName Gamma Brightness Contrast and are all separated with a single space. The -alter feeds the signal to the adapter. The -clear send a "Clear" message to the adapter to clear all adjustments back to normal.

IMPORTANT TIP: In order not to loose the blackness of letters always keep Brightness to 1 as shown above. Play around only with Gamma and Contrast. Gamma will produce a darker/lighter result and playing with the Contrast between channels will adjust the resulting color.

Another TIP: Set the "Paper Mode" shortcut to first reset and then set the color (e.g., "xcalib -clear && xcalib -red 1.7 1 64 -green 1.7 1 57 -blue 1.7 1 28 -alter"), so that if accidentally use it multiple times it does not change you display color to black.

I hope this will prove handy to many of you!

2
  • 2
    As I noticed that the 1.7 gamma was just about cracking the font anti-aliasing (as well as the fact that I used some really funny numbers above), a more appropriate command for "Paper Mode" would be... xcalib -red 1.5 0 65 -green 1.5 0 60 -blue 1.5 0 25 -alter
    – GRE2608
    Oct 28, 2012 at 18:53
  • At the time of writing xcalib is incompatible with Wayland (window renderer), since each process is only allowed to draw within its respective window.
    – Tijs Maas
    Sep 23, 2019 at 14:51
9

I found Okular as better pdf viewer. It let you change from GUI the background color and the font color to any value you want. i.e.

Setting -> Configure Okular -> Accessibility -> Change Color

For example, set :

  • Dark Color as font color
  • Light color as background color.

I had Okular version 0.16.5


In Okular version 1.9.3

Setting -> Configure Okular -> Accessibility

Enable the checkbox for Change Color

In "Color mode" select "Change Dark & Light Colors"

"Dark Color" i.e. (font color) to any light color you want e.g. White or light gray

"Light color" i.e. (background color) to dark color e.g. Black Or dark gray

3

Change the background color of evince to the light greed and protect your eyes

Config the compile environment and download source

sudo apt source evince

Change the source to your color, such as the light green(R:199,G:237,B:204) Edit the function ev_document_misc_invert_surface in file: libdocument/ev-document-misc.c at line 467

change

cairo_set_operator (cr, CAIRO_OPERATOR_DIFFERENCE);
cairo_set_source_rgb (cr, 1., 1., 1.);

to

cairo_set_operator (cr, CAIRO_OPERATOR_DARKEN);
cairo_set_source_rgb (cr, 0.8, 0.9098, 0.8117647);

Config and make and make install

cd evince
./configure --prefix=$YOUR-PLACE  --enable-nls --disable-scrollkeeper --disable-dbus --disable-debug --disable-tests --disable-nautilus --disable-thumbnailer --disable-previewer --disable-comics --without-keyring --without-gconf --without-gtk-unix-print
```

Then make, and I get the error:

Making all in synctex
make[3]: Entering directory '/home/luopeng/Downloads/evince-3.28.4/cut-n-paste/synctex'
  CC       libsynctex_la-synctex_parser.lo
  CC       libsynctex_la-synctex_parser_utils.lo
synctex_parser_utils.c:106:29: error: format string is not a string literal [-Werror,-Wformat-nonliteral]
        result += vfprintf(stderr, reason, arg);
                                   ^~~~~~
1 error generated.
Makefile:545: recipe for target 'libsynctex_la-synctex_parser_utils.lo' failed
make[3]: *** [libsynctex_la-synctex_parser_utils.lo] Error 1

Of course, fix it by:

#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wformat-nonliteral"
    result = fprintf(stderr,"SyncTeX ERROR: ");
    result += vfprintf(stderr, reason, arg);
    result += fprintf(stderr,"\n");
#pragma GCC diagnostic pop

In the version of Ubuntu 18.04, I found several errors as the above case and I fix them with the GCC ignored. (please add # before the pragma in the following code)

#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wformat-nonliteral"
  the code where the errors occur
#pragma GCC diagnostic pop

Then change the config in /usr/share/applications/evince.desktop

change Exec=$YOUR-Evince-PLACE/bin/evince %U

When click the view->Inverted Color, your background color will change to light green

Enjoy it!

2

Thanks for Evan's invitation. Here is what I did to achieve the light green background in Evince 2.30.3.

As mentioned in a thread(https://mail.gnome.org/archives/evince-list/2011-November/msg00015.html) posted by me several years ago, I replaced the source code from Line 327 to 329 of libdocument/ev-document-misc.c with the following snippet:

// make sure that we just turn the near "white" back ground to light green
if ((245 <= p[0] && p[0] <= 255) &&
    (245 <= p[1] && p[1] <= 255) &&
    (245 <= p[2] && p[2] <= 255)) {
    p[0] = 204; /* cc */
    p[1] = 232; /* e8 */
    p[2] = 207; /* cf */
}

Note that the code position may vary for different versions of Evince.

Then re-compile Evince:

$ ./configure --prefix=/usr --enable-nls --disable-scrollkeeper --disable-dbus --disable-debug --disable-tests --disable-nautilus --disable-thumbnailer --disable-previewer --disable-comics --without-keyring --without-gconf --without-gtk-unix-print
$ make

After compilation, DONOT run make install, because this may change your locale settings of Evince. Just backup the original /usr/lib/libevdocument.so.2.0.0, and replace it with the modified libdocument/.libs/libevdocument.so.2.0.0 manually.

Then re-launch Evince, open a .pdf file(or other supported formats, whatever), and use the "Inverted Color" option to change the background color into light green.

May this be helpful :)

1
  • 1
    it would be useful if you showed the code around your snippet. Otherwise it is not clear how to find the right place without spending too much time.
    – Elena
    May 5, 2016 at 9:47
1

I am also trying to change the background color of evince but have failed.

Probably another application qpdfview is useful to you. It can color all PDF documents with green background, including the scanned PDF documents, it is comforting your eyes.

Unfortunately, the edition installed from synaptic is not working to color the scanned PDF documents, but an edition installed with PPA is good for that. Just do the following commands.

sudo apt-add-repository ppa:b-eltzner/qpdfview
sudo apt-get update
sudo apt-get install qpdfview

You need to change the color parameter.

And as regarding to scanned PDF documents, you need to hit the button view-composition-darken with paper color, and it will be ok.

1
  • great! continuous scroll, multi page, change bg-color, all in this one
    – Jake
    Mar 17, 2022 at 4:29

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .