summaryrefslogtreecommitdiff
path: root/README.md
blob: 334e681072dc6d316e4f4cd092bcbb8823b6ad17 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
[![build status](https://travis-ci.org/derf/feh.svg?branch=master)](https://travis-ci.org/derf/feh)

# feh
Imlib2 based image viewer
---

 * http://feh.finalrewind.org/
 * http://linuxbrit.co.uk/feh/
 * #feh on irc.oftc.net

Dependencies
---

 * Imlib2
 * libcurl (disable with make curl=0)
 * libpng
 * libX11
 * libXinerama (disable with make xinerama=0)

If built with exif=1:

 * libexif-dev
 * libexif12

Recommended
---

 * jpegtran  (supplied by the jpeg library, for lossless image rotation)
 * convert  (supplied by ImageMagick, can be used to load unsupported formats)

Installation
---

**For end users:**
```bash
$ make
$ sudo make install app=1
```

**For package maintainers and users who do not want feh to install its
icons into /usr/share:**
```bash
$ make
$ sudo make install
```

**Explanation:** feh ships some icons and an X11 desktop entry, which allow it to
be used from file managers, desktop menus and similar. However, installing
icons to /usr/local/share/... does not seem to work reliable in all cases.
Because of this, when using "make install app=1", feh will install its icons
to /usr/share/..., even though they technically belong into /usr/local.


ZSH Completion for feh is available [here](http://git.finalrewind.org/zsh/plain/etc/completions/_feh)

Make flags
----------

Flags can be used to control the build and installation process.

e.g.

```bash
make flag=bool
```
```bash
make install flag=bool
```
or
```bash
export flag=bool
make && make install
```

For example, `make xinerama=0 debug=1` will disable Xinerama support and produce a debug build.

Available flags are:

| Flag | Default value | Description |
| :--- | :---: | :--- |
| app  | 0 | install icons to /usr/share, regardless of `DESTDIR` and `PREFIX, and call gtk-update-icon-cache afterwards |
| cam  | 0 | install deprecated feh-cam und gen-cam-menu scripts |
| curl | 1 | use libcurl to view http:// and similar images |
| debug | 0 | debug build, enables `--debug` |
| exif | 0 | Builtin EXIF tag display support |
| help | 0 | include help text (refers to the manpage otherwise) |
| stat64 | 0 | Support CIFS shares from 64bit hosts on 32bit machines |
| verscmp | 1 | Support naturing sorting (`--version-sort`). Requires a GNU-compatible libc exposing `strverscmp` |
| xinerama | 1 | Support Xinerama/XRandR multiscreen setups |

So, by default **libcurl** and **Xinerama** are enabled, the rest is disabled.

Additionally, the standard variables `PREFIX` and `DESTDIR` are supported.

**PREFIX _(default: /usr)_** controls where the application and its data files
will be installed. It must be set both during `make` and `make install`.

**DESTDIR _(default: empty)_** sets the installation root during "make install". It
is mostly useful for package maintainers.

**Note:** config.mk is designed so that in most cases, you can set environment
variables instead of editing it. E.g.:

```bash
CFLAGS='-g -Os' make
```
```bash
export DESTDIR=/tmp/feh PREFIX=/usr
make && make install
```

Builtin EXIF support is maintained by Dennis Real, [here](https://github.com/reald/feh).


Testing (non-X)
---------------
```bash
$ make test
```

Requires **perl >= 5.10** with `Test::Command`. The tests are non-interactive and
work without X, so they can safely be run even on a headless buildserver.


Testing (X)
-----------

Requires
 * import (usually supplied by imagemagick)
 * perl >= 5.10 with GD, Test::More and X11::GUITest
 * twm
 * Xephyr

```bash
$ make test-x11
```

**_Be aware that this is quite experimental, so far the X-tests have only been
run on one machine. So they may or may not work for you._**