{"id":13441673,"url":"https://github.com/ebruck/radiotray-ng","last_synced_at":"2026-02-22T17:09:56.842Z","repository":{"id":37271373,"uuid":"81047462","full_name":"ebruck/radiotray-ng","owner":"ebruck","description":"An Internet radio player for Linux","archived":false,"fork":false,"pushed_at":"2025-11-01T17:46:18.000Z","size":1399,"stargazers_count":276,"open_issues_count":6,"forks_count":28,"subscribers_count":19,"default_branch":"master","last_synced_at":"2025-11-01T19:20:25.487Z","etag":null,"topics":["appindicator","debian","internet-radio-player","linux","ubuntu-desktop"],"latest_commit_sha":null,"homepage":"","language":"C++","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/ebruck.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"COPYING","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":"AUTHORS","dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2017-02-06T04:23:26.000Z","updated_at":"2025-11-01T17:46:22.000Z","dependencies_parsed_at":"2025-05-03T19:27:51.926Z","dependency_job_id":"d7831853-9dae-4732-9af4-9d9ede8c6b23","html_url":"https://github.com/ebruck/radiotray-ng","commit_stats":null,"previous_names":[],"tags_count":21,"template":false,"template_full_name":null,"purl":"pkg:github/ebruck/radiotray-ng","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ebruck%2Fradiotray-ng","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ebruck%2Fradiotray-ng/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ebruck%2Fradiotray-ng/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ebruck%2Fradiotray-ng/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ebruck","download_url":"https://codeload.github.com/ebruck/radiotray-ng/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ebruck%2Fradiotray-ng/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29719648,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-22T15:10:41.462Z","status":"ssl_error","status_checked_at":"2026-02-22T15:10:04.636Z","response_time":110,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["appindicator","debian","internet-radio-player","linux","ubuntu-desktop"],"created_at":"2024-07-31T03:01:36.755Z","updated_at":"2026-02-22T17:09:56.825Z","avatar_url":"https://github.com/ebruck.png","language":"C++","funding_links":[],"categories":["C++","Applications","Multimedia","应用"],"sub_categories":["Audio","Media Servers","音频"],"readme":"# Radiotray-NG: An Internet radio player for Linux #\n[![CircleCI](https://circleci.com/gh/ebruck/radiotray-ng/tree/master.svg?style=shield)](https://circleci.com/gh/ebruck/radiotray-ng/tree/master)\n\nIt became clear as one of the early contributors to the RadioTray project that it\nwas not getting the attention it required and was probably dead. A lot of the\ntechnologies it used had moved on to newer versions and the bugs started piling up.\nI did my best to help users, but a new start was required.\n\nThe version here is what I wanted out of RadioTray.\n\n## Radiotray-NG goals were: ##\n\n* Better gstreamer error handling and recovery.\n* Fix RadioTray's flawed bookmark format.\n* Build in the only RadioTray plugin that I felt I needed, which is a shutdown timer.\n* Per station/group notification icon support.\n* Better parsing of the stream meta data and optionally more stream info displayed.\n* A bit more attention to notification details and formatting.\n\n## Where Radiotray-NG is: ##\n\n* RadioTray functionality\n* Theme support\n* Debian packaging\n* Full AppIndicator support\n* No groups within groups by design to keep the interface clean.\n* Volume up/down support using mouse wheel (left/right can also be used)\n* Media key support\n* Dbus interface for controlling Radiotray-NG and accessing stream meta data\n* --play command line option for resuming playback\n\n**Icons:** [http://www.iconsplace.com/]\n**License:** Creative Commons Attribution-NoDerivs 3.0 Unported\n\n## Bugs: ##\n\n* Radiotray-NG's user-agent is created at compile time. Which means a binary created on 16.10 will report that even when run on 16.04.\n\n## Screenshots: ##\n\n![Screenshot](images/screenshot_1.png)\n![Screenshot](images/screenshot_7.png)\n![Screenshot](images/screenshot_2.png)\n![Screenshot](images/screenshot_3.png)\n![Screenshot](images/screenshot_4.png)\n![Screenshot](images/screenshot_6.png)\n![Screenshot](images/screenshot_5.png)\n\n\n## Config File ##\n\nA config (radiotray-ng.json) is created in your ~/.config/radiotray-ng directory with the following defaults:\n```\n{\n   \"bookmarks\" : \"~/.config/radiotray-ng/bookmarks.json\",\n   \"bookmark-editor\" : \"rtng-bookmark-editor\",\n   \"buffer-duration\" : 2,\n   \"buffer-size\" : 320000,\n   \"compact-menu\" : false,\n   \"debug-logging\" : false,\n   \"disable-logging\" : false,\n   \"file-monitor\" : true,\n   \"file-monitor-interval\" : 10,\n   \"invert-menu\" : false,\n   \"last-station\" : \"\",\n   \"last-station-group\" : \"\",\n   \"notification-verbose\" : true,\n   \"notifications\" : true,\n   \"sleep-timer\" : 30,\n   \"split-title\" : true,\n   \"track-info-copy\" : false,\n   \"ihr-title\" : true,\n   \"tag-info-in-label\" : false,\n   \"tag-info-in-label-len\" : 80,\n   \"tag-info-in-label-artist\": true,\n   \"tag-info-verbose\" : false,\n   \"volume-level\" : 100,\n   \"volume-step\" : 1,\n   \"volume-max-level\" : 200,\n   \"wrap-track-info\" : true,\n   \"wrap-track-info-len\" : 40,\n   \"media-key-mapping\" : false,\n   \"media-key-previous-station\" : \"Previous\",\n   \"media-key-next-station\" : \"Next\",\n   \"media-key-volume-up\" : \"\",\n   \"media-key-volume-down\" : \"\",\n   \"media-keys-old-dbus-name\" : false,\n   \"media-keys\" : true,\n   \"radiotray-ng-on\" : \"radiotray-ng-on\",\n   \"radiotray-ng-off\" : \"radiotray-ng-off\",\n   \"radiotray-ng-notification\" : \"radiotray-ng-notification\",\n   \"root-group-bottom-pos\" : true\n}\n```\n* **Installed config will only include commonly edited entries, all others are using default values shown above.**\n```\n                 bookmarks: location of bookmarks file\n           bookmark-editor: bookmark editor to launch\n               buffer-size: size of buffer in bytes\n           buffer-duration: number of seconds to buffer\n             compact-menu : enable/disable the use of menu separators\n             debug-logging: enable/disable verbose debug logging\n           disable-logging: enable/disable logging\n              file-monitor: enable/disable notification of bookmark file changes\n     file-monitor-interval: time in seconds to poll for bookmark file changes\n              invert-menu : menu rendered in reverse order\n      notification-verbose: more status information than normal\n             notifications: turns on/off notification messages\n               sleep-timer: value is in minutes\n               split-title: attempts to reformat the notification into title/artist\n                 ihr-title: extra parsing for iheartradio formatting (requires split-title)\n         tag-info-in-label: display title \u0026 artist next to icon\n     tag-info-in-label-len: maximum title \u0026 artist line length\n  tag-info-in-label-artist: include artist in icon label\n          tag-info-verbose: displays in the menu stream information such as bitrate etc.\n           track-info-copy: enable/disable track clicking to copy into clipboard\n               volume-step: value used to increment/decrement the volume level\n          volume-max-level: maximum volume level\n           wrap-track-info: enable/disable the wrapping of title \u0026 artist menu text\n       wrap-track-info-len: maximum title \u0026 artist line length\n                media-keys: enable/disable media keys\n         media-key-mapping: enable the mapping of media keys to volume up/down etc. (Previous, Next, Rewind, FastForward etc.)\nmedia-key-previous-station: media key to use for previous station within current group\n    media-key-next-station: media key to use for next station within current group\n       media-key-volume-up: media key to use for volume up\n     media-key-volume-down: media key to use for volume down\n  media-keys-old-dbus-name: force the use of old dbus name\n           radiotray-ng-on: installed theme icon name for \"on\" or path to image\n          radiotray-ng-off: installed theme icon name for \"off\" or path to image\n radiotray-ng-notification: installed theme icon name for \"notification\" or path to image\n     root-group-bottom-pos: render root group stations at bottom or top of menu\n\n```\n* Do not edit the config while Radiotray-NG is running or your changes will be lost.\n* No checks are made if a media key assignment collides with another action.\n\n## Bookmarks Format ##\n\nBookmarks are defined in the following JSON format:\n```\n[\n   {\n      \"group\" : \"group name 1\",\n      \"image\" : null,\n      \"stations\" : [\n         {\n            \"image\" : null,\n            \"name\" : \"station name\",\n            \"url\" : \"http://station/station.pls\"\n         },\n         ...\n        ]\n   },\n   {\n      \"group\" : \"group name 2\",\n      \"image\" : \"~/Dropbox/radiotray-ng/images/station.png\",\n      \"stations\" : [\n         {\n            \"image\" : null,\n            \"name\" : \"station name\",\n            \"url\" : \"http://station/station.pls\",\n            \"notifications\" : false\n         },\n         ...\n        ]\n   },\n   ...\n]\n```\nGroup with the name \"root\" is treated differently and is rendered at the base of the menu. A group's image specifies the notification icon to display and is inherited by all of the stations. A station with an image overrides the group image.\n\nUse the \"Preferences/Reload Bookmarks\" option to see your changes.\n\n\n## Convert RadioTray Bookmarks ##\n\nThe rt2rtng script will convert your RadioTray bookmarks.xml file. All groups within groups are moved to the root and any empty ones are removed. It's not a perfect conversion and will no doubt require some editing.\n\n```\n$ rt2rtng ~/.local/share/radiotray/bookmarks.xml \u003e bookmarks.json\n```\n\n\n## Bookmarks Editor ##\n\nThe Bookmarks Editor is a simple editor that enables management of your bookmarks file eliminating the need for manually editing the file. The editor will attempt to open the default bookmarks file on startup, but you can select to open another bookmarks file if desired. This provides you with the ability to manage multiple bookmark files.\n\nThe editor supports all of the typical editor operations including adding, editing and deleting of both groups and stations. Images are easily selected via standard browsing functionality. You can also arrange the groups and stations using simple drag-n-drop actions.\n\n* Use Radiotray-NG's reload bookmarks after saving your changes.\n\n## DBus Interface ##\n\n```\nAvailable commands:\n\n    get_bookmarks\n    get_config\n    get_player_state\n    play\n    play_station 'group' 'station'\n    play_url 'url'\n    previous_station\n    next_station\n    reload_bookmarks\n    set_volume 'level'\n    volume_down\n    volume_up\n    mute\n    stop\n    quit\n```\n```\nExample:\n\n$ qdbus com.github.radiotray_ng /com/github/radiotray_ng com.github.radiotray_ng.get_player_state\n{\n   \"artist\" : \"Suspense\",\n   \"bitrate\" : \"24 kb/s\",\n   \"codec\" : \"MPEG-1 Layer 3 (MP3)\",\n   \"group\" : \"Old Time Radio\",\n   \"image\" : \"radiotray-ng-notification\",\n   \"mute\" : false,\n   \"state\" : \"playing\",\n   \"station\" : \"AM 1710 Antioch OTR\",\n   \"title\" : \"Jul 15, 1948: Summer Night w/Ida Lupino\",\n   \"url\" : \"http://radio.macinmind.com/listen.m3u\",\n   \"volume\" : \"15\"\n}\n```\n\n## Install ##\n\nDownload a release or clone the repo and build the latest Debian package.\n\nhttps://github.com/ebruck/radiotray-ng/releases\n\nInstall Appindicator extension if not running Ubuntu.\n\nhttps://extensions.gnome.org/extension/615/appindicator-support/\n\n## Fedora Install ##\n```\n$ dnf install radiotray-ng\n```\n\n## To Build on Ubuntu: ##\n\nInstall these packages:\n```\nlsb-release libcurl4-openssl-dev libjsoncpp-dev libxdg-basedir-dev libnotify-dev libboost-filesystem-dev libgstreamer1.0-dev libboost-log-dev libboost-program-options-dev libgtk-3-dev libnotify-dev lsb-release libbsd-dev libglibmm-2.4-dev cmake\n```\n# For Ubuntu 23.10 and newer install:\n```\nlibayatana-appindicator3-dev libwxgtk3.2-dev\n```\n# For Ubuntu 22.04 install:\n```\nlibayatana-appindicator3-dev libwxgtk3.0-gtk3-dev libwxgtk3.0-gtk3-0v5\n```\n# Before ubuntu 22.04:\n```\nlibappindicator3-dev libwxgtk3.0-gtk3-dev libwxgtk3.0-gtk3-0v5\n```\n\n## Build Radiotray-NG \u0026 Debian Package ##\n```\n$ git clone https://github.com/ebruck/radiotray-ng.git\n$ cd radiotray-ng\n$ mkdir build\n$ cd build\n$ cmake .. -DCMAKE_BUILD_TYPE=Release\n$ make package\n$ sudo dpkg -i ./radiotray-ng_x.y.z_\u003cdistro\u003e_\u003ci386|amd64\u003e.deb\n$ sudo apt-get install -f\n```\n\n## Build Radiotray-NG + Tests \u0026 Debian Package ##\n```\n$ git clone https://github.com/ebruck/radiotray-ng.git\n$ cd radiotray-ng\n$ mkdir build\n$ cd build\n$ cmake .. -DBUILD_TESTS=ON -DCMAKE_BUILD_TYPE=Debug\n$ make package\n$ sudo dpkg -i ./radiotray-ng_x.y.z_\u003cdistro\u003e_\u003ci386|amd64\u003e.deb\n$ sudo apt-get install -f\n```\n\n## To Build on Fedora: ##\n\nInstall these packages:\n```\nredhat-lsb cmake libcurl-devel boost-devel wxGTK3-devel jsoncpp-devel gstreamer1-devel libxdg-basedir-devel libbsd-devel libappindicator-gtk3-devel libnotify-devel glibmm24-devel rpm-build\n```\n\n```\n$ git clone https://github.com/ebruck/radiotray-ng.git\n$ cd radiotray-ng\n$ mkdir build\n$ cd build\n$ cmake .. -DCMAKE_BUILD_TYPE=Release\n$ make package\n$ sudo dnf install ./radiotray-ng_x.y.z_\u003cdistro\u003e_\u003ci386|x86_64\u003e.rpm\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Februck%2Fradiotray-ng","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Februck%2Fradiotray-ng","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Februck%2Fradiotray-ng/lists"}