You want to hack on Exaile? Rock on! The documentation for getting started isn't as complete as we'd like (please help us improve it!), but this should help you on your way:
Because Exaile is written in Python, if you can run Exaile on your machine, then you can easily modify the source code and run that too. The Exaile developers mostly run Exaile directly from the git checkout, without installing Exaile:
git clone https://github.com/exaile/exaile.git
cd exaile
# On Linux, Mac OS X or *BSD:
./exaile
# On Windows:
exaile.bat
If that works, then you're ready to go! If not, you need to install Exaile's various dependencies:
On Ubuntu 16.04 following apt-get command should install most of the needed dependencies:
sudo apt-get install \
python3-mutagen \
python3-gi \
python3-gi-cairo \
python3-dbus \
gir1.2-gtk-3.0 \
gir1.2-gstreamer-1.0 \
gir1.2-gst-plugins-base-1.0 \
gstreamer1.0-plugins-base \
gstreamer1.0-plugins-good \
gstreamer1.0-plugins-ugly \
gstreamer1.0-plugins-bad
First, install msys2. Then, open the MinGW32 shell window (look in the Start Menu for it), and run this monster (it may take awhile):
pacman -S \
mingw-w64-i686-python3-gobject \
mingw-w64-i686-python3-cairo \
mingw-w64-i686-python3-pip \
mingw-w64-i686-python3-bsddb3 \
mingw-w64-i686-gtk3 \
mingw-w64-i686-gdk-pixbuf2 \
mingw-w64-i686-gstreamer \
mingw-w64-i686-gst-plugins-base \
mingw-w64-i686-gst-plugins-good \
mingw-w64-i686-gst-plugins-bad \
mingw-w64-i686-gst-libav \
mingw-w64-i686-gst-plugins-ugly
Once that is complete, you'll want to install mutagen:
python3 -m pip install mutagen
And then you should be able to launch Exaile from the msys2 console:
cd exaile
python3 exaile_win.py
The Python GTK3 GStreamer SDK repo can be used to install an appropriate environment for OSX, and has instructions for setting it up:
See the PyGObject Getting Started documentation for getting the core PyGObject stuff installed. Once you get that working, then you just need to use the appropriate package manager to install GStreamer and things should be good to go.
Once you get pygobject working, you will also want to install mutagen via pip:
python -m pip install mutagen
Exaile is built upon Python, PyGObject, Gtk+, and GStreamer. Here is a bunch of documentation that you will find useful when working with these frameworks:
- Python 3
- PyGObject
- Python GI API Reference
- Python GTK+3 Tutorial
- ABI/API tracker for tracking incompatible changes in C/C++ ABI and API
Glade is what we use to edit the 'ui' xml files that describe our UI layout.
Warning
Glade historically has been very prone to crashing, so when using it save your work often!
I've found recent versions of Github's Atom editor to be very useful for Python
development, I recommend installing the autocomplete-python
and
linter-pyflakes
packages.
Pydev can be a bit tricky to set up correctly, see its documentation for details.
- Ensure you add the correct python interpreter in the project settings
- Add the root of the repository as a source directory
If you have pytest installed, then you can just run:
make test