Giter Site home page Giter Site logo

swipswaps / mpd-touch-screen-gui Goto Github PK

View Code? Open in Web Editor NEW

This project forked from muesli4/mpd-touch-screen-gui

0.0 1.0 0.0 418 KB

A small MPD client that let's you view covers and has controls suitable for small touchscreens. It allows to browse the queue, search for songs and run as standalone application.

Makefile 1.43% C++ 57.92% M4 40.65%

mpd-touch-screen-gui's Introduction

Usage

This the frontend GUI application for my DIY HiFi system and digital audio streaming solution (based on Raspberry Pi 2B and HifiBerry AMP+) showing on an IL9341 LCD including a touch screen (with 320x240 resolution). It allows controlling a running MPD instance.

As the display lacks any hardware acceleration and is run from the framebuffer, the draw operations are largely reduced. I.e. there is no periodic rendering. The screen is updated when necessary.

Configuration

On the first run the program will install the default configuration file (usually in $HOME/.config/mpd-touch-screen-gui/program.conf and client.conf for the client). See client.conf and program.conf for the default configurations. There is quite a bit you can change that changes behavior and appearance of the application.

If you don't intend to run it on the same machine, you should set the MPD environment variables (i.e. MPD_HOST).

Features

  • Global button controls on the left side that are visible in every view. This allows basic playback controls and switching the view.
  • Several views that will be extended in the future:
    • Cover view that displays a cover or a replacement with song information. Swiping gestures allow control over the playback (left, right and press) and volume (up and down).
      cover swipe cover swipe text
    • A playlist view allows viewing and changing the song from the current playlist. Touch gestures allow scrolling throught the playlist vertically and horizontally. Longer swipes will scroll more.
      playlist
    • In the search view an on-screen keyboard is presented that allows to search for songs case-insensitive. The results may be browsed and played in the same manner as with the playlist view.
      search input search result
    • A final view allows shutting down and rebooting the machine.
      shutdown
  • A configurable UDP client allows basic UI controls (intended for use with an IR remote) in 6 directions (next and previous in x, y and natural order):
    > ./mpd-touch-screen-gui-send 
    Usage: ./mpd-touch-screen-gui-send CMD [SERVER [PORT]]
    CMD    - One of: l, r, u, d, n, p, a
    SERVER - Override config value for server.
    PORT   - Override config value for port.
    
    To use the UDP interface, it has to be activated in the program config. The protocol is very simple and consists just of the letters.

Requirements

  • SDL2_ttf (font rendering)
  • SDL2_image (cover image loading)
  • sdl2 (rendering)
  • libmpdclient (communication with MPD instance)
  • icu (sometimes named icu-uc / icu / libicu - use lower-case conversion for case insensitive search)
  • boost_filesystem
  • boost_system
  • boost_asio (UDP interface for remote navigation)
  • libwtk-sdl2 (widgets)
  • libconfig

Additional Build Requirements

These are only required on the host:

  • C++17 compiler such as gcc
  • pkg-config
  • autoconf & automake & libtool

Installation

mpd-touch-screen-gui uses autotools as build system:

  • autoreconf --install
  • ./configure
  • make
  • make install

Contact

If you find my code useful please let me know. I'm also interested in your use case, any suggestions, improvements or criticism. Cheers!

mpd-touch-screen-gui's People

Contributors

doronbehar avatar muesli4 avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.