Gtk UI: Episode selector: Open context menu with keyboard
[gpodder.git] / README
blob629d6e262ef36422905c1f419fc3c047d26fc01e
2                           ___         _    _           ____
3                      __ _| _ \___  __| |__| |___ _ _  |__ /
4                     / _` |  _/ _ \/ _` / _` / -_) '_|  |_ \
5                     \__, |_| \___/\__,_\__,_\___|_|   |___/
6                     |___/
7                           Media aggregator and podcast client
9   ............................................................................
11              Copyright  2005-2013 Thomas Perl and the gPodder Team
14  [ LICENSE ]
16     gPodder is free software; you can redistribute it and/or modify
17     it under the terms of the GNU General Public License as published by
18     the Free Software Foundation; either version 3 of the License, or
19     (at your option) any later version.
21     gPodder is distributed in the hope that it will be useful,
22     but WITHOUT ANY WARRANTY; without even the implied warranty of
23     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
24     GNU General Public License for more details.
26     You should have received a copy of the GNU General Public License
27     along with this program. If not, see <http://www.gnu.org/licenses/>.
31  [ DEPENDENCIES ]
33     - Python 2.6 or newer              http://python.org/
34     - "sqlite3" Python module          (usually included with Python)
35     - Feedparser 5.1.2 or newer        http://code.google.com/p/feedparser/
36     - mygpoclient 1.7 or newer         http://thp.io/2010/mygpoclient/
37     - Python D-Bus bindings
39     gPodder might still work with Python 2.5, but you may need to
40     install the json module ("simplejson") manually. We reserve the
41     right to drop support for Python 2.5 in future point releases.
43     As an alternative to python-dbus on Mac OS X and Windows, you can use
44     the dummy (no-op) D-Bus module provided in "tools/fake-dbus-module/".
46     For quick testing, you can use the script tools/localdepends.py to
47     install local copies of feedparser and mygpoclient into "src/" from
48     PyPI. With this, you get a self-contained gPodder CLI/WebUI codebase.
51  [ GTK UI - ADDITIONAL DEPENDENCIES ]
53     - PyGTK 2.16 or newer              http://pygtk.org/
56  [ QML UI - ADDITIONAL DEPENDENCIES ]
58     - Qt 4.7.1 or newer                http://qt.nokia.com/
59     - PySide 1.0.8 or newer            http://www.pyside.org/
60     - Qt Mobility 1.2 or newer         http://qt.gitorious.org/qt-mobility
61     - Qt Quick Components              http://qt.gitorious.org/qt-components
62     - Sailfish Silica Components       https://sailfishos.org/sailfish-silica/
64     The QML UI depends on the QtMultimediaKit QML bindings for playing
65     back audio (libdeclarative-multimedia in Debian) and on the WebKit QML
66     bindings for Flattr integration (libqtwebkit-qmlwebkitplugin in Debian).
68     The QML UI now also depends on Qt Quick Components. On MeeGo 1.2 Harmattan,
69     these components are pre-installed. You can install them on your Desktop by
70     checking out the code from the qt-components Git repository and running the
71     "./configure" script with the "-meego" parameter (+ the usual make install).
73     You might also need to copy the theme from /usr/share/themes/blanco/ on a
74     MeeGo 1.2 Harmattan device to your development machine in order for all UI
75     elements to be displayed correctly. Alternatively, you can use the free
76     "darko" theme from: https://github.com/jpavelek/meego-handset-theme-darko
78     For running gPodder on Sailfish OS using Sailfish Silica Components, you
79     need to have Sailfish Silica installed. Right now, gPodder still depends on
80     qt-components even on Sailfish, but this is going to change soon once a
81     more mature version of Sailfish Silica is out.
84  [ OPTIONAL DEPENDENCIES ]
86     - Bluetooth file sending: gnome-obex-send or bluetooth-sendto
87     - HTML shownotes: python-webkit
88     - Flattr integration: python-webkit
89     - Size detection on Windows: PyWin32
90     - Native OS X support: ige-mac-integration
91     - MP3 Player Sync Support: python-eyed3 (< 0.7)
94  [ BUILD DEPENDENCIES ]
96     - help2man
97     - intltool
100  [ TEST DEPENDENCIES ]
102     - python-minimock
103     - python-coverage
105  [ TESTING ]
107     To run tests, use...
108         make unittest
110     To set a specific python binary set PYTHON:
111         PYTHON=python2 make unittest
113     Tests in gPodder are written in two different ways:
115        - doctests (see http://docs.python.org/2/library/doctest.html)
116        - unittests (see http://docs.python.org/2/library/unittest.html)
118     If you want to add doctests, simply write the doctest and make sure that
119     the module appears in "doctest_modules" in src/gpodder/unittests.py. For
120     example, the doctests in src/gpodder/util.py are added as 'util' (the
121     "gpodder" prefix must not be specified there).
123     If you want to add unit tests for a specific module (ex: gpodder.model),
124     you should add the tests as gpodder.test.model, or in other words:
126         The file       src/gpodder/model.py
127         is tested by   src/gpodder/test/model.py
129     After you've added the test, make sure that the module appears in
130     "test_modules" in src/gpodder/unittests.py - for the example above, the
131     unittests in src/gpodder/test/model.py are added as 'model'. For unit
132     tests, coverage reporting happens for the tested module (that's why the
133     test module name should mirror the module to be tested).
136  [ RUNNING AND INSTALLATION ]
138     To run gPodder from source, use..
140         bin/gpodder              for the Gtk+ UI
141         bin/gpodder --qml        for the QML UI
142         bin/gpo                  for the command-line interface
144     To install gPodder system-wide, use "make install". By default, this
145     will install *all* UIs and all translations. The following environment
146     variables are processed by setup.py:
148         LINGUAS                  space-separated list of languages to install
149         GPODDER_INSTALL_UIS      space-separated list of UIs to install
150         GPODDER_MANPATH_NO_SHARE if set, install manpages to $PREFIX/man/man1
152     See setup.py for a list of recognized UIs.
154     Example: Install the CLI and Gtk UI with German and Dutch translations:
156         export LINGUAS="de nl"
157         export GPODDER_INSTALL_UIS="cli gtk"
158         make install
160     The "make install" target also supports DESTDIR and PREFIX for installing
161     into an alternative root (default /) and prefix (default /usr):
163         make install DESTDIR=tmp/ PREFIX=/usr/local/
166  [ PYTHON 3 SUPPORT ]
168     The CLI version of gPodder (bin/gpo) and the QML UI are compatible with
169     Python 3 after converting the codebase with the 2to3 utility:
171       2to3 -w bin/* src share/gpodder/extensions
173     You will also need a copy of "mygpoclient" converted using 2to3 and
174     a copy of "feedparser" converted using 2to3 (see the feedparser README
175     for details on how to get it set up on Python 3, including sgmllib).
177     Please note that the Gtk UI is not compatible with Python 3 (it will
178     be once we migrate the codebase to Gtk3/GObject Introspection).
180     The QML UI has been tested with PySide (Git revision a90f3bc) and
181     Python 3.2.2 - you can use the PySide buildscripts to build PySide:
183         http://github.com/PySide/BuildScripts
185     As of February 2012, Python 3 support is still experimental. Please
186     report any bugs that you find to the gPodder bug tracker (see below).
189  [ PORTABLE MODE / ROAMING PROFILES ]
191     The run-time environment variable GPODDER_HOME is used to set
192     the location for storing the database and downloaded files.
194     This can be used for multiple configurations or to store the
195     download directory directly on a MP3 player or USB disk:
197         export GPODDER_HOME=/media/usbdisk/gpodder-data/
200  [ CHANGING THE DOWNLOAD DIRECTORY ]
202     The run-time environment variable GPODDER_DOWNLOAD_DIR is used to
203     set the location for storing the downloads only (independent of the
204     data directory GPODDER_HOME):
206         export GPODDER_DOWNLOAD_DIR=/media/BigDisk/Podcasts/
208     In this case, the database and settings will be stored in the default
209     location, with the downloads stored in /media/BigDisk/Podcasts/.
211     Another example would be to set both environment variables:
213         export GPODDER_HOME=~/.config/gpodder/
214         export GPODDER_DOWNLOAD_DIR=~/Podcasts/
216     This will store the database and settings files in ~/.config/gpodder/
217     and the downloads in ~/Podcasts/. If GPODDER_DOWNLOAD_DIR is not set,
218     $GPODDER_HOME/Downloads/ will be used if it is set.
221  [ LOGGING ]
223     By default, gPodder writes log files to $GPODDER_HOME/Logs/ and removes
224     them after a certain amount of times. To avoid this behavior, you can set
225     the environment variable GPODDER_WRITE_LOGS to "no", e.g:
227         export GPODDER_WRITE_LOGS=no
230  [ EXTENSIONS ]
232     Extensions are normally loaded from gPodder's "extensions/" folder (in
233     share/gpodder/extensions/) and from $GPODDER_HOME/Extensions/ - you can
234     override this by setting an environment variable:
236         export GPODDER_EXTENSIONS="/path/to/extension1.py extension2.py"
238     In addition to that, if you want to disable loading of all extensions,
239     you can do this by setting the following environment variable to a non-
240     empty value:
242         export GPODDER_DISABLE_EXTENSIONS=yes
244     If you want to report a bug, please try to disable all extensions and
245     check if the bug still appears to see if an extension causes the bug.
248  [ TRANSLATIONS ]
250     These instructions are mostly useful for the maintainer, but they are
251     documented here in case you want to update translations yourself:
253     To upload a changed translation template:
255         make messages       # update translations from source
256         make clean          # remove temporary files after "make messages"
257         tx push --source    # upload po/messages.pot to transifex.net
259     To download a translation that has been updated:
261         tx pull -l XX -f    # download po/XX.po from transifex.net
263     To generate Git commit commands for the translation updates:
265         python tools/i18n/generate_commits.py
267     The "tx" command is provided by the Transifex client (transifex-client
268     in Debian/Ubuntu) which can be obtained from:
270         http://help.transifex.com/features/client/
274  [ MORE INFORMATION ]
276     - Homepage                         http://gpodder.org/
277     - Bug tracker                      http://bugs.gpodder.org/
278     - Mailing list                     http://freelists.org/list/gpodder
279     - IRC channel                      #gpodder on irc.freenode.net
281   ............................................................................
282              Last updated: 2013-02-12 by Thomas Perl <thp.io/about>