{"id":22711610,"url":"https://github.com/polyfloyd/trollibox","last_synced_at":"2025-08-21T08:31:14.718Z","repository":{"id":1084206,"uuid":"37812254","full_name":"polyfloyd/trollibox","owner":"polyfloyd","description":"The hackerspace friendly music player web client","archived":false,"fork":false,"pushed_at":"2024-11-01T07:38:41.000Z","size":11185,"stargazers_count":43,"open_issues_count":6,"forks_count":3,"subscribers_count":1,"default_branch":"main","last_synced_at":"2024-12-10T13:07:30.785Z","etag":null,"topics":["hackerspace","logitech","mpd","music","player","webinterface"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/polyfloyd.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":"support/systemd/trollibox.service","governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2015-06-21T14:39:22.000Z","updated_at":"2024-10-10T00:09:07.000Z","dependencies_parsed_at":"2023-07-05T20:46:11.168Z","dependency_job_id":"f9cad011-34bf-4f1b-be2b-41d934243751","html_url":"https://github.com/polyfloyd/trollibox","commit_stats":{"total_commits":802,"total_committers":6,"mean_commits":"133.66666666666666","dds":0.2119700748129676,"last_synced_commit":"f410731f6f9d310f95dbfcafa4bd571826653f9f"},"previous_names":[],"tags_count":10,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/polyfloyd%2Ftrollibox","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/polyfloyd%2Ftrollibox/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/polyfloyd%2Ftrollibox/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/polyfloyd%2Ftrollibox/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/polyfloyd","download_url":"https://codeload.github.com/polyfloyd/trollibox/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":230501172,"owners_count":18236061,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["hackerspace","logitech","mpd","music","player","webinterface"],"created_at":"2024-12-10T13:07:33.934Z","updated_at":"2025-08-21T08:31:14.711Z","avatar_url":"https://github.com/polyfloyd.png","language":"Go","readme":"Trollibox\n=========\n\nThe hackerspace friendly ~~MPD~~ music player web client.\n\nFeatures:\n* Control multiple music players from one webinterface\n* Support for MPD\n* Support for Logitech SlimServer and SqueezeBoxes\n* Track art\n* Listen to web radio stations\n* Search-as-you-type for tracks with highlighting\n* File browser\n* Album browser\n* Queue random tracks when the playlist is empty.\n* Mobile device friendly\n* Free Open Source Software (GPLv3)\n\n## Installing\nYou can get the [latest pre-built binary](https://github.com/polyfloyd/trollibox/releases/latest)\nfrom the Github Releases.\n\n### Configuring\nCopy the [example configuration](config.example.yaml) to config.yaml, its\ndefault location. If you want to use a custom location for the config file, you\nshould inform Trollibox by using the `-conf` option. Like this:\n```sh\ntrollibox -conf /etc/trollibox.yaml\n```\n\nInside the configuration file, you will find some options you may need to change.\n\n### Hacking\nClone the repository like you normally would. Make sure you have Go\u003e1.18 installed along with\nNodeJS/NPM.\n\nYou can start Trollibox with processes to automatically recompile the source like this:\n```\n$ make dev -j2\n```\n\n\n## For Users\n\n### Hotkeys\n* `space`: toggle playback\n* `\u003e`: next track\n* `\u003c`: previous track\n* `+`: increase volume\n* `-`: decrease volume\n* `b`: seek backwards in the playing track\n* `f`: seek forwards in the playing track\n* `c`: clear the yet to be played part of the playlist\n* `1`: focus library search\n* `2`: focus album browser\n* `3`: focus genre/artist browser\n* `4`: focus file browser\n* `5`: focus streams library\n* `6`: focus auto queuer configuration\n* `7`: expand player\n\n### Queueing Tracks\nTracks may be queued from the browser page using one of the views. Click on a\ntrack to append it to the queue.\n\nAn asterisk will be displayed next to tracks that have been queued by users.\nThis feature originated at the [Bitlair Hackerspace](https://bitlair.nl/) where\ntracks should not be skipped when they are queued by users.\n\n### The Queuer\nIf the queue runs out of tracks, Trollibox will pick a random track from the\nlibrary and play it. The selection bias for tracks can be configured by setting\none or more rules on the Queuer page.\n\nSuch rules consist of simple expressions that evaluate to a boolean value. A\ntrack must pass all rules set for it to be eligible for playing.\n\nThe `equals` and `contains` operations are case insensitive.\n\nThe `matches` operation takes a regular expression in\n[Go's regexp format](https://golang.org/pkg/regexp/syntax/).\n\n### Streams\nTrollibox has support for HTTP streams. You can create a custom collection\nusing the Streams interface.\n\n### Searching\nThe search view allows you to search the whole library of the current player\nfor tracks whose artist, title or album attributes contain some keywords.\n\nSearching is case insensitive.\n\nA track must match all keywords in order to end up in the results.\n\nThe search string is split on each space, unless you escape it with a\nbackslash: `foo\\ bar`.\n\nYou can annotate the keywords in your query to search other fields,\nYou can limit a keyword to a single attribute by annotating them like this:\n```\nphotographer genre:trance\n```\nThe string `photographer` will be applied to the default attributes while the\ngenre must match \"trance\".\n\nAvailable attributes are:\n* uri\n* artist (default)\n* title (default)\n* genre\n* album (default)\n* albumartist\n* albumtrack\n* albumdisc\n\nYou can also use the `duration` attribute with relational operators to filter\non whether a track's length is less, greater than or equal to some reference\ninteger.\n```\nduration\u003c120\nduration\u003e120\nduration=120\n```\n\n## Q \u0026 A\n\n#### What does the asterisk next to queued tracks indicate?\nSee [Queueing Tracks](#queueing-tracks).\n\n#### Where is the button to update the library?\nThere isn't. Trollibox is only a browser/player. Managing the files of the\nlibrary is out of the scope of this project, which includes updating the\nplayer's database.\n\n#### How do I add stuff to the library?\nUsing whatever options the player you are using is giving you. Trollibox is\nonly a browser/player. You should manage your library in some other way.\n\n#### I can't see the player on my phone.\nThe player is hidden on small screens to preserve space. The player is\naccessible on a separate view for such devices.\n\n\n## Screenshots\n![Search for tracks](screenshots/1-search.png)\n\n![Browse by album](screenshots/2-albums.png)\n\n![Browse by genre and artist](screenshots/3-browse.png)\n\n![Browse the filesystem](screenshots/4-files.png)\n\n![Browse and add streams](screenshots/5-streams.png)\n\n![The Queuer](screenshots/6-queuer.png)\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpolyfloyd%2Ftrollibox","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpolyfloyd%2Ftrollibox","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpolyfloyd%2Ftrollibox/lists"}