37

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.

waterloo2005
  • 2,057

6 Answers6

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.

devav2
  • 37,290
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!

Olli
  • 9,129
GRE2608
  • 181
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!

luoares
  • 31
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

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.

David Foerster
  • 36,890
  • 56
  • 97
  • 151