|
|
7 months ago | |
|---|---|---|
| .gitignore | 7 months ago | |
| LICENSE | 2 years ago | |
| README.md | 2 years ago | |
| cJSON.c | 2 years ago | |
| cJSON.h | 2 years ago | |
| config.h | 2 years ago | |
| sksonic.c | 7 months ago |
sksonic is a simple TUI music player for subsonic compatible servers.
It only requires ffmpeg (and a subsonic server).
It follows the same design as ncmpcpp but features fewer options.
At this moment, it consists of only two panels:
To configure it, please edit the config.h file directly and re-compile.
The relevant fields are:
URL, PORT, USER, PWD, VERSION AND APP, where VERSION is the subsonic API version, typically 1.16, and APP is the name with which sksonic will identify in subsonic.
sksonic depends on ncurses and curl.
It can be compiled using: gcc sksonic.c -lncursesw -lcurl -o sksonic
It also depends on cJSON, which is included in the repository.
Keybindings can be modified by editing config.h
The default keybindings are:
UP, DOWN, LEFT and RIGHT arrows provide basic movement.gg moves to top.G moves to bottom.SPACE adds the highlighted Song the playlist.ENTER adds the highlighted Artist, Album or Song to the playlist and starts playing it.p toggles pause/play.r toggles repeat mode.x toggles shuffle mode.s stops.< plays the previous song in the playlist.> plays the next song in the playlist.2 moves to the playlist panel.q exits.UP and DOWN provide basic movement.gg moves to top.G moves to bottom.ENTER plays the selected song.d removes the selected song from the playlist.c clears the entire playlist (upon confirmation) and stop playback.1 moves to the music browser.r toggles repeat mode.x toggles shuffle mode.q exits.It is possible to modify the colors used in sksonic by editing colors[NUM_COLORS][2] in config.h
The default keybindings can be changed by editing keys[][2] in config.h
Available actions are listed in enum { play_pause, stop, next, previous, repeat, shuffle, quit, add, add_and_play, remove_one, remove_all, main_view, playlist_view, up, down, left, right, resize, bottom, top, chord };
To modify a keybinding, replace the desired key in the array, for instance, to switch from using p to toggle play-pause to using t,
you should replace {'p', play_pause}, with {'t', play_pause},
To create new bindings add new entries to the array.
Keybinding chors are separately defined in enum { chord_top }; and chords[][2]
The aspect of some elements in the UI can be modified by editing *appearance[5]
notify_cmdThe notify_cmd variable in config.h defines the program that sksonic should use to send notifications.
If notify_cmd is set to NULL, no notification will be displayed.
You can customize this variable to use any program that supports receiving notifications.
For example, you could set notify_cmd to notify-send.
To enable notifications, edit the notify_cmd field in config.h to specify the program you want to use.
The code in sksonic.c assumes notify-send style.
state_dumpThe state_dump variable in config.h specifies the file path where sksonic should save the current playback status.
If state_dump is set to NULL, no dump will be performed.
This variable allows you to save the app state about playback status to a file, which can be useful for processing the data with a custom script. However, note that writing a custom script is required to process the output data.
To enable dumping of playback status, edit the state_dump field in config.h to specify the file path where you want to save the status.
I have tested sksonic only with navidrome, although it should work with any subsonic compatible server.