Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 16 Feb 2026 13:32:00 +0000
From:      Nicola Vitale <nivit@FreeBSD.org>
To:        ports-committers@FreeBSD.org, dev-commits-ports-all@FreeBSD.org, dev-commits-ports-main@FreeBSD.org
Subject:   git: d02f3365ccaf - main - audio/waves: Add new port
Message-ID:  <69931c50.41338.1d9227fc@gitrepo.freebsd.org>

index | next in thread | raw e-mail

The branch main has been updated by nivit:

URL: https://cgit.FreeBSD.org/ports/commit/?id=d02f3365ccaf637ab44085bbd2d16fe06e904eca

commit d02f3365ccaf637ab44085bbd2d16fe06e904eca
Author:     Nicola Vitale <nivit@FreeBSD.org>
AuthorDate: 2026-02-16 13:28:28 +0000
Commit:     Nicola Vitale <nivit@FreeBSD.org>
CommitDate: 2026-02-16 13:28:28 +0000

    audio/waves: Add new port
    
    Waves is a keyboard-driven terminal music player with Soulseek downloads,
    MusicBrainz tagging, Last.fm scrobbling, and radio mode.
    
    Features:
    
      - Browser: Browse music by Artist > Album > Track hierarchy
      - File Browser: Navigate filesystem with file/folder deletion
      - Playlists: Create, organize, and manage playlists with folder hierarchy
      - Favorites: Quick-access playlist with heart icon display
      - Playing Queue: Persistent queue with multi-selection, reordering, and
        undo/redo
      - Audio Playback: MP3, FLAC, OPUS/OGG, and M4A/AAC support with seeking
      - Album Art: Display album art in expanded player bar, auto-fetch during
        import
      - Full-Text Search: SQLite FTS5 search across library, files, and playlists
      - Download Manager: Search and download from Soulseek via slskd integration
      - Import System: MusicBrainz tagging, file renaming, and library integration
      - Last.fm Scrobbling: Track your listening history with offline queue support
      - Radio Mode: Endless playback with Last.fm similar artists and intelligent
        track selection
      - And more...
    
    https://github.com/llehouerou/waves
---
 audio/Makefile                                  |  1 +
 audio/waves/Makefile                            | 39 +++++++++++++++++++++++++
 audio/waves/distinfo                            |  5 ++++
 audio/waves/files/patch-internal_lastfm_auth.go | 11 +++++++
 audio/waves/files/pkg-message.in                | 12 ++++++++
 audio/waves/pkg-descr                           | 21 +++++++++++++
 6 files changed, 89 insertions(+)

diff --git a/audio/Makefile b/audio/Makefile
index 18650d1d0376..3935624289b3 100644
--- a/audio/Makefile
+++ b/audio/Makefile
@@ -847,6 +847,7 @@
     SUBDIR += waon
     SUBDIR += wasabi
     SUBDIR += wavbreaker
+    SUBDIR += waves
     SUBDIR += wavegain
     SUBDIR += wavetral
     SUBDIR += wavpack
diff --git a/audio/waves/Makefile b/audio/waves/Makefile
new file mode 100644
index 000000000000..f230b5992d26
--- /dev/null
+++ b/audio/waves/Makefile
@@ -0,0 +1,39 @@
+PORTNAME=	waves
+DISTVERSIONPREFIX=	v
+DISTVERSION=	0.1.41
+CATEGORIES=	audio
+
+MAINTAINER=	nivit@FreeBSD.org
+COMMENT=	Terminal music player with MusicBrainz tagging, and Last.fm scrobbling
+WWW=		https://github.com/llehouerou/waves
+
+LICENSE=	GPLv3
+LICENSE_FILE=	${WRKSRC}/LICENSE
+
+LIB_DEPENDS=	libasound.so:audio/alsa-lib
+RUN_DEPENDS=	ffmpeg:multimedia/ffmpeg \
+		xdg-open:devel/xdg-utils
+
+USES=		go:modules pkgconfig
+
+GO_MODULE=	github.com/llehouerou/waves
+
+SUB_FILES=	pkg-message
+
+PLIST_FILES=	bin/waves \
+		share/waves/config.example.toml
+
+PORTDOCS=	README.md
+
+OPTIONS_DEFINE=	DOCS
+
+post-install:
+		${MKDIR} ${STAGEDIR}${DATADIR}
+	        ${INSTALL_DATA} ${WRKSRC}/config.example.toml \
+		${STAGEDIR}${DATADIR}
+
+post-install-DOCS-on:
+	${MKDIR} ${STAGEDIR}${DOCSDIR}
+	${INSTALL_DATA} ${WRKSRC}/README.md ${STAGEDIR}${DOCSDIR}
+
+.include <bsd.port.mk>
diff --git a/audio/waves/distinfo b/audio/waves/distinfo
new file mode 100644
index 000000000000..c8a6188cbcb3
--- /dev/null
+++ b/audio/waves/distinfo
@@ -0,0 +1,5 @@
+TIMESTAMP = 1771234448
+SHA256 (go/audio_waves/waves-v0.1.41/v0.1.41.mod) = e201530a8efe1f32a067ec0e0a72695a36daf67e2b4ca5de414a30ccb373a2a2
+SIZE (go/audio_waves/waves-v0.1.41/v0.1.41.mod) = 3458
+SHA256 (go/audio_waves/waves-v0.1.41/v0.1.41.zip) = 01a4da8847604fdbcfe2ec6b6e1cd35204b8acd630795f60e766356d4a47226f
+SIZE (go/audio_waves/waves-v0.1.41/v0.1.41.zip) = 1810584
diff --git a/audio/waves/files/patch-internal_lastfm_auth.go b/audio/waves/files/patch-internal_lastfm_auth.go
new file mode 100644
index 000000000000..4e6fd7937cc8
--- /dev/null
+++ b/audio/waves/files/patch-internal_lastfm_auth.go
@@ -0,0 +1,11 @@
+--- internal/lastfm/auth.go.orig	1979-11-29 23:00:00 UTC
++++ internal/lastfm/auth.go
+@@ -108,6 +108,8 @@ func OpenBrowser(url string) error {
+ 	switch runtime.GOOS {
+ 	case "darwin":
+ 		cmd = exec.Command("open", url)
++	case "freebsd":
++		cmd = exec.Command("xdg-open", url)
+ 	case "linux":
+ 		cmd = exec.Command("xdg-open", url)
+ 	case "windows":
diff --git a/audio/waves/files/pkg-message.in b/audio/waves/files/pkg-message.in
new file mode 100644
index 000000000000..79d5d5f8761a
--- /dev/null
+++ b/audio/waves/files/pkg-message.in
@@ -0,0 +1,12 @@
+[
+{
+  type: install
+  message: <<EOM
+Before starting waves for the first time, run the following commands:
+
+  mkdir ~/.config/waves
+  cp %%DATADIR%%/config.example.toml ~/.config/waves/config.toml
+
+Then customize that config file.
+}
+]
diff --git a/audio/waves/pkg-descr b/audio/waves/pkg-descr
new file mode 100644
index 000000000000..2f8395146429
--- /dev/null
+++ b/audio/waves/pkg-descr
@@ -0,0 +1,21 @@
+Waves is a keyboard-driven terminal music player with Soulseek downloads,
+MusicBrainz tagging, Last.fm scrobbling, and radio mode.
+
+Features:
+
+  - Browser: Browse music by Artist > Album > Track hierarchy
+  - File Browser: Navigate filesystem with file/folder deletion
+  - Playlists: Create, organize, and manage playlists with folder hierarchy
+  - Favorites: Quick-access playlist with heart icon display
+  - Playing Queue: Persistent queue with multi-selection, reordering, and
+    undo/redo
+  - Audio Playback: MP3, FLAC, OPUS/OGG, and M4A/AAC support with seeking
+  - Album Art: Display album art in expanded player bar, auto-fetch during
+    import
+  - Full-Text Search: SQLite FTS5 search across library, files, and playlists
+  - Download Manager: Search and download from Soulseek via slskd integration
+  - Import System: MusicBrainz tagging, file renaming, and library integration
+  - Last.fm Scrobbling: Track your listening history with offline queue support
+  - Radio Mode: Endless playback with Last.fm similar artists and intelligent
+    track selection
+  - And more...


home | help

Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?69931c50.41338.1d9227fc>