Merge pull request #1601 from tpikonen/desktopfile-dirs
[gpodder.git] / README.md
blob92b7a5acb5011d752bf3a6feb2d9ddc91cbd21dc
1           ___         _    _           ____
2      __ _| _ \___  __| |__| |___ _ _  |__ /
3     / _` |  _/ _ \/ _` / _` / -_) '_|  |_ \
4     \__, |_| \___/\__,_\__,_\___|_|   |___/
5     |___/
6             Media aggregator and podcast client
7 ___
9 Copyright  2005-2022 The gPodder Team
12 ## License
14 gPodder is free software; you can redistribute it and/or modify
15 it under the terms of the GNU General Public License as published by
16 the Free Software Foundation; either version 3 of the License, or
17 (at your option) any later version.
19 gPodder is distributed in the hope that it will be useful,
20 but WITHOUT ANY WARRANTY; without even the implied warranty of
21 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
22 GNU General Public License for more details.
24 You should have received a copy of the GNU General Public License
25 along with this program. If not, see <http://www.gnu.org/licenses/>.
27 ## Dependencies
29 - [Python 3.7](http://python.org/) or newer
30 - [Podcastparser](http://gpodder.org/podcastparser/) 0.6.0 or newer
31 - [mygpoclient](http://gpodder.org/mygpoclient/) 1.7 or newer
32 - [requests](https://requests.readthedocs.io) 2.24.0 or newer
33 - [dbus-python](http://dbus.freedesktop.org/doc/dbus-python/)
35 As an alternative to python-dbus on Mac OS X and Windows, you can use
36 the dummy (no-op) D-Bus module provided in "tools/fake-dbus-module/".
38 For quick testing, see [Run from Git](https://gpodder.github.io/docs/run-from-git.html)
39 to install dependencies.
42 ### GTK3 UI - Additional Dependencies
44 - [PyGObject](https://wiki.gnome.org/PyGObject) 3.22.0 or newer
45 - [GTK+3](https://www.gtk.org/) 3.16 or newer
48 ### Optional Dependencies
50 - Bluetooth file sending: gnome-obex-send or bluetooth-sendto
51 - Size detection on Windows: PyWin32
52 - Native OS X support: ige-mac-integration
53 - MP3 Player Sync Support: python-eyed3 (0.7 or newer)
54 - iPod Sync Support: libgpod (tested with 0.8.3)
55 - Clickable links in GTK UI show notes: html5lib
56 - HTML show notes: WebKit2 gobject bindings
57     (webkit2gtk, webkitgtk4 or gir1.2-webkit2-4.0 packages).
58 - Better Youtube support (> 15 entries in feeds, download audio-only): youtube_dl or yt-dlp
61 ### Build Dependencies
63 - help2man
64 - intltool
67 ### Test Dependencies
69 - python-minimock
70 - pytest
71 - pytest-httpserver
72 - pytest-cov
73 - desktop-file-utils
75 ## Testing
77 To run tests, use...
79     make unittest
81 To set a specific python binary set PYTHON:
83     PYTHON=python3 make unittest
85 Tests in gPodder are written in two different ways:
87 - [doctests](http://docs.python.org/3/library/doctest.html)
88 - [unittests](http://docs.python.org/3/library/unittest.html)
90 If you want to add doctests, simply write the doctest and make sure that
91 the module appears after `--doctest-modules` in `pytest.ini`. If you
92 add tests to any module in `src/gpodder` you have nothing to do.
94 If you want to add unit tests for a specific module (ex: gpodder.model),
95 you should add the tests as gpodder.test.model, or in other words:
97     The file:       src/gpodder/model.py
98     is tested by:   src/gpodder/test/model.py
100 After you've added the test, make sure that the module appears in
101 "test_modules" in src/gpodder/unittests.py - for the example above, the
102 unittests in src/gpodder/test/model.py are added as 'model'. For unit
103 tests, coverage reporting happens for the tested module (that's why the
104 test module name should mirror the module to be tested).
107 ## Running and Installation
109 To run gPodder from source, use..
111     bin/gpodder              # for the Gtk+ UI
112     bin/gpo                  # for the command-line interface
114 To install gPodder system-wide, use `make install`. By default, this
115 will install *all* UIs and all translations. The following environment
116 variables are processed by setup.py:
118     LINGUAS                  space-separated list of languages to install
119     GPODDER_INSTALL_UIS      space-separated list of UIs to install
120     GPODDER_MANPATH_NO_SHARE if set, install manpages to $PREFIX/man/man1
122 See setup.py for a list of recognized UIs.
124 Example: Install the CLI and Gtk UI with German and Dutch translations:
126     export LINGUAS="de nl"
127     export GPODDER_INSTALL_UIS="cli gtk"
128     make install
130 The "make install" target also supports DESTDIR and PREFIX for installing
131 into an alternative root (default /) and prefix (default /usr):
133     make install DESTDIR=tmp/ PREFIX=/usr/local/
135 [*Debian*](https://wiki.debian.org/Python#Deviations_from_upstream) and *Ubuntu* use `dist-packages`
136 instead of `site-packages` for third party installs, so you'll want something like:
138     sudo python3 setup.py install --root / --prefix /usr/local --optimize=1 --install-lib=/usr/local/lib/python3.10/dist-packages
140 In fact, first try running `python -c "import sys; print(sys.path)"` to check what is the exact path.
141 It depends on your version of python.
143 ## Portable Mode / Roaming Profiles
145 The run-time environment variable GPODDER_HOME is used to set
146 the location for storing the database and downloaded files.
148 This can be used for multiple configurations or to store the
149 download directory directly on a MP3 player or USB disk:
151     export GPODDER_HOME=/media/usbdisk/gpodder-data/
154 ## OS X Specific Notes
156 - default GPODDER_HOME="$HOME/Library/Application Support/gPodder"
157 - default GPODDER_DOWNLOAD_DIR="$HOME/Library/Application Support/gPodder/download"
159 These settings may be modified by editing the following file of the .app :
161     /Applications/gPodder.app/Contents/MacOSX/_launcher
163 Add and edit the following lines to alter the launch environment on OS X :
165     export GPODDER_HOME="$HOME/Library/Application Support/gPodder"
166     export GPODDER_DOWNLOAD_DIR="$HOME/Library/Application Support/gPodder/download"
169 ##  Changing the Download Directory
171 The run-time environment variable GPODDER_DOWNLOAD_DIR is used to
172 set the location for storing the downloads only (independent of the
173 data directory GPODDER_HOME):
175     export GPODDER_DOWNLOAD_DIR=/media/BigDisk/Podcasts/
177 In this case, the database and settings will be stored in the default
178 location, with the downloads stored in /media/BigDisk/Podcasts/.
180 Another example would be to set both environment variables:
182     export GPODDER_HOME=~/.config/gpodder/
183     export GPODDER_DOWNLOAD_DIR=~/Podcasts/
185 This will store the database and settings files in ~/.config/gpodder/
186 and the downloads in ~/Podcasts/. If GPODDER_DOWNLOAD_DIR is not set,
187 $GPODDER_HOME/Downloads/ will be used if it is set.
190 ## Logging
192 By default, gPodder writes log files to $GPODDER_HOME/Logs/ and removes
193 them after a certain amount of times. To avoid this behavior, you can set
194 the environment variable GPODDER_WRITE_LOGS to "no", e.g:
196     export GPODDER_WRITE_LOGS=no
199 ## Extensions
201 Extensions are normally loaded from gPodder's "extensions/" folder (in
202 share/gpodder/extensions/) and from $GPODDER_HOME/Extensions/ - you can
203 override this by setting an environment variable:
205     export GPODDER_EXTENSIONS="/path/to/extension1.py extension2.py"
207 In addition to that, if you want to disable loading of all extensions,
208 you can do this by setting the following environment variable to a non-
209 empty value:
211     export GPODDER_DISABLE_EXTENSIONS=yes
213 If you want to report a bug, please try to disable all extensions and
214 check if the bug still appears to see if an extension causes the bug.
217 ## More Information
219 - Homepage:                         http://gpodder.org/
220 - Bug tracker:                      https://github.com/gpodder/gpodder/issues
221 - Mailing list:                     http://freelists.org/list/gpodder
222 - IRC channel:                      #gpodder on irc.libera.chat