Compare commits
1
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
fc944d301f |
@@ -17,7 +17,6 @@ Supersonic.app
|
||||
Supersonic.AppDir/
|
||||
appimagetool-x86_64.AppImage
|
||||
tmp/
|
||||
build/
|
||||
|
||||
|
||||
# Test binary, built with `go test -c`
|
||||
|
||||
@@ -19,8 +19,6 @@ To build Supersonic from source, first clone the Git repo or download the source
|
||||
### Build
|
||||
* clone the repo, CD into the repo root, and run ``make build``
|
||||
* (note that the first build will take some time as it will download and build the UI library)
|
||||
* run ``make user-install`` to install for the current user (including a Wofi-compatible desktop entry), or ``sudo make install`` for a system-wide installation
|
||||
* use ``make user-uninstall`` or ``sudo make uninstall`` to remove the corresponding installation
|
||||
|
||||
### Generate installable .tar.xz bundle
|
||||
* install the ``fyne`` packaging tool ``go install fyne.io/fyne/v2/cmd/fyne@latest``
|
||||
|
||||
@@ -1,70 +1,5 @@
|
||||
GO ?= go
|
||||
PREFIX ?= /usr/local
|
||||
DESTDIR ?=
|
||||
BUILD_DIR ?= build
|
||||
APP_ID := io.github.dweymouth.supersonic
|
||||
BINARY_NAME := supersonic-desktop
|
||||
BINARY := $(BUILD_DIR)/$(BINARY_NAME)
|
||||
|
||||
BINDIR = $(DESTDIR)$(PREFIX)/bin
|
||||
DATADIR = $(DESTDIR)$(PREFIX)/share
|
||||
APPLICATIONSDIR = $(DATADIR)/applications
|
||||
ICONDIR = $(DATADIR)/icons/hicolor
|
||||
METAINFODIR = $(DATADIR)/metainfo
|
||||
|
||||
.PHONY: all build clean install install-bin install-desktop install-icons install-metainfo \
|
||||
user-install uninstall user-uninstall refresh-desktop-cache lint \
|
||||
package_macos bundledeps_macos_homebrew bundledeps_macos_macports \
|
||||
bundledeps_macos_highsierra zip_macos package_windows package_linux
|
||||
|
||||
all: build
|
||||
|
||||
build:
|
||||
mkdir -p "$(BUILD_DIR)"
|
||||
$(GO) build -tags migrated_fynedo -trimpath -o "$(BINARY)" .
|
||||
|
||||
clean:
|
||||
rm -f "$(BINARY)"
|
||||
rmdir "$(BUILD_DIR)" 2>/dev/null || true
|
||||
|
||||
install: build install-bin install-desktop install-icons install-metainfo refresh-desktop-cache
|
||||
|
||||
install-bin:
|
||||
install -Dm755 "$(BINARY)" "$(BINDIR)/$(BINARY_NAME)"
|
||||
|
||||
install-desktop:
|
||||
desktop-file-validate res/supersonic-desktop.desktop
|
||||
install -Dm644 res/supersonic-desktop.desktop "$(APPLICATIONSDIR)/$(APP_ID).desktop"
|
||||
|
||||
install-icons:
|
||||
install -Dm644 res/appicon-128.png "$(ICONDIR)/128x128/apps/$(APP_ID).png"
|
||||
install -Dm644 res/appicon-256.png "$(ICONDIR)/256x256/apps/$(APP_ID).png"
|
||||
install -Dm644 res/appicon-512.png "$(ICONDIR)/512x512/apps/$(APP_ID).png"
|
||||
|
||||
install-metainfo:
|
||||
install -Dm644 res/io.github.dweymouth.supersonic.appdata.xml "$(METAINFODIR)/$(APP_ID).metainfo.xml"
|
||||
|
||||
# Installs into ~/.local, which Wofi and other XDG launchers scan without root.
|
||||
user-install: PREFIX := $(HOME)/.local
|
||||
user-install: install
|
||||
|
||||
uninstall:
|
||||
rm -f "$(BINDIR)/$(BINARY_NAME)"
|
||||
rm -f "$(APPLICATIONSDIR)/$(APP_ID).desktop"
|
||||
rm -f "$(ICONDIR)/128x128/apps/$(APP_ID).png"
|
||||
rm -f "$(ICONDIR)/256x256/apps/$(APP_ID).png"
|
||||
rm -f "$(ICONDIR)/512x512/apps/$(APP_ID).png"
|
||||
rm -f "$(METAINFODIR)/$(APP_ID).metainfo.xml"
|
||||
$(MAKE) refresh-desktop-cache PREFIX="$(PREFIX)" DESTDIR="$(DESTDIR)"
|
||||
|
||||
user-uninstall: PREFIX := $(HOME)/.local
|
||||
user-uninstall: uninstall
|
||||
|
||||
refresh-desktop-cache:
|
||||
@if [ -z "$(DESTDIR)" ]; then \
|
||||
command -v update-desktop-database >/dev/null 2>&1 && update-desktop-database "$(PREFIX)/share/applications" || true; \
|
||||
command -v gtk-update-icon-cache >/dev/null 2>&1 && gtk-update-icon-cache -q -t -f "$(PREFIX)/share/icons/hicolor" || true; \
|
||||
fi
|
||||
go build -tags migrated_fynedo
|
||||
|
||||
# dylibbundler doesn't seem to pick up on the Python framework dependency,
|
||||
# so the last 3 cmds move it over manually. This is a bit fragile though
|
||||
@@ -95,5 +30,6 @@ package_windows:
|
||||
package_linux:
|
||||
fyne package -os linux -tags migrated_fynedo
|
||||
|
||||
.PHONY: lint
|
||||
lint:
|
||||
golangci-lint run
|
||||
|
||||
@@ -109,7 +109,7 @@ func (p *Player) Init(maxCacheMB int) error {
|
||||
m.SetOptionString("audio-display", "no")
|
||||
m.SetOptionString("gapless-audio", "weak")
|
||||
m.SetOptionString("prefetch-playlist", "yes")
|
||||
|
||||
m.SetOptionString("force-seekable", "yes")
|
||||
m.SetOptionString("terminal", "no")
|
||||
|
||||
// limit in-memory cache size
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
module github.com/dweymouth/supersonic
|
||||
|
||||
go 1.25.0
|
||||
go 1.24.0
|
||||
|
||||
require (
|
||||
fyne.io/fyne/v2 v2.7.2
|
||||
@@ -19,17 +19,17 @@ require (
|
||||
github.com/google/uuid v1.6.0
|
||||
github.com/hashicorp/go-retryablehttp v0.7.8
|
||||
github.com/hugolgst/rich-go v0.0.0-20240715122152-74618cc1ace2
|
||||
github.com/pelletier/go-toml/v2 v2.4.2
|
||||
github.com/pelletier/go-toml/v2 v2.4.3
|
||||
github.com/quarckster/go-mpris-server v1.0.3
|
||||
github.com/supersonic-app/fyne-lyrics v0.0.0-20250614151306-b1880a70a410
|
||||
github.com/supersonic-app/go-mpv v0.1.1-0.20250822102843-7a8cde5f5449
|
||||
github.com/supersonic-app/go-subsonic v0.0.0-20260416152144-7a5f505a273c
|
||||
github.com/supersonic-app/go-upnpcast v0.1.1-0.20260517163705-d76cd97c192f
|
||||
github.com/zalando/go-keyring v0.2.8
|
||||
golang.org/x/net v0.57.0
|
||||
golang.org/x/sys v0.47.0
|
||||
golang.org/x/term v0.45.0
|
||||
golang.org/x/text v0.40.0
|
||||
golang.org/x/net v0.50.0
|
||||
golang.org/x/sys v0.41.0
|
||||
golang.org/x/term v0.40.0
|
||||
golang.org/x/text v0.34.0
|
||||
)
|
||||
|
||||
require (
|
||||
|
||||
@@ -109,8 +109,8 @@ github.com/nicksnyder/go-i18n/v2 v2.6.1 h1:JDEJraFsQE17Dut9HFDHzCoAWGEQJom5s0TRd
|
||||
github.com/nicksnyder/go-i18n/v2 v2.6.1/go.mod h1:Vee0/9RD3Quc/NmwEjzzD7VTZ+Ir7QbXocrkhOzmUKA=
|
||||
github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e h1:fD57ERR4JtEqsWbfPhv4DMiApHyliiK5xCTNVSPiaAs=
|
||||
github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno=
|
||||
github.com/pelletier/go-toml/v2 v2.4.2 h1:M2fKKbmyvI+hGId/D0W64qDBMVhJnNR10O5gIbMc//Q=
|
||||
github.com/pelletier/go-toml/v2 v2.4.2/go.mod h1:2gIqNv+qfxSVS7cM2xJQKtLSTLUE9V8t9Stt+h56mCY=
|
||||
github.com/pelletier/go-toml/v2 v2.4.3 h1:GTRvJQutkOSftxIFD5xw9aepkYNuPWmVJpffdDPYVpY=
|
||||
github.com/pelletier/go-toml/v2 v2.4.3/go.mod h1:2gIqNv+qfxSVS7cM2xJQKtLSTLUE9V8t9Stt+h56mCY=
|
||||
github.com/pkg/profile v1.7.0 h1:hnbDkaNWPCLMO9wGLdBFTIZvzDrDfBM2072E1S9gJkA=
|
||||
github.com/pkg/profile v1.7.0/go.mod h1:8Uer0jas47ZQMJ7VD+OHknK4YDY07LPUC6dEvqDjvNo=
|
||||
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
|
||||
@@ -143,14 +143,14 @@ go.yaml.in/yaml/v3 v3.0.4 h1:tfq32ie2Jv2UxXFdLJdh3jXuOzWiL1fo0bu/FbuKpbc=
|
||||
go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg=
|
||||
golang.org/x/image v0.36.0 h1:Iknbfm1afbgtwPTmHnS2gTM/6PPZfH+z2EFuOkSbqwc=
|
||||
golang.org/x/image v0.36.0/go.mod h1:YsWD2TyyGKiIX1kZlu9QfKIsQ4nAAK9bdgdrIsE7xy4=
|
||||
golang.org/x/net v0.57.0 h1:K5+3DljvIuDG9/Jv9rvyMywYNFCQ9RSUY6OOTTkT+tE=
|
||||
golang.org/x/net v0.57.0/go.mod h1:KpXc8iv+r3XplLAG/f7Jsf9RPszJzdR0f58q9vGOuEU=
|
||||
golang.org/x/sys v0.47.0 h1:o7XGOvZQCADBQQ4Y7VNq2dRWQR7JmOUW8Kxx4ZsNgWs=
|
||||
golang.org/x/sys v0.47.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw=
|
||||
golang.org/x/term v0.45.0 h1:NwWyBmoJCbfTHpxrWoZ9C6/VxOf7ic219I8xZZFdrf0=
|
||||
golang.org/x/term v0.45.0/go.mod h1:9aqxs0blBcrm/n0L9QW0aRVD+ktan8ssZromtqJC43w=
|
||||
golang.org/x/text v0.40.0 h1:Ub2Z6/xjgF1WrYQz2nuITOEegKFtiIy+rieRJ5lHZKs=
|
||||
golang.org/x/text v0.40.0/go.mod h1:hpnzDAfGV753zIKo+wk3u1bVKCGPbrnF7+7LBF/UHVY=
|
||||
golang.org/x/net v0.50.0 h1:ucWh9eiCGyDR3vtzso0WMQinm2Dnt8cFMuQa9K33J60=
|
||||
golang.org/x/net v0.50.0/go.mod h1:UgoSli3F/pBgdJBHCTc+tp3gmrU4XswgGRgtnwWTfyM=
|
||||
golang.org/x/sys v0.41.0 h1:Ivj+2Cp/ylzLiEU89QhWblYnOE9zerudt9Ftecq2C6k=
|
||||
golang.org/x/sys v0.41.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks=
|
||||
golang.org/x/term v0.40.0 h1:36e4zGLqU4yhjlmxEaagx2KuYbJq3EwY8K943ZsHcvg=
|
||||
golang.org/x/term v0.40.0/go.mod h1:w2P8uVp06p2iyKKuvXIm7N/y0UCRt3UfJTfZ7oOpglM=
|
||||
golang.org/x/text v0.34.0 h1:oL/Qq0Kdaqxa1KbNeMKwQq0reLCCaFtqu2eNuSeNHbk=
|
||||
golang.org/x/text v0.34.0/go.mod h1:homfLqTYRFyVYemLBFl5GgL/DWEiH5wcsQ5gSh1yziA=
|
||||
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
||||
gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f h1:BLraFXnmrev5lT+xlilqcH8XK9/i0At2xKjWk4p6zsU=
|
||||
gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
||||
|
||||
@@ -5,8 +5,9 @@ Name=Supersonic
|
||||
GenericName=Music Player
|
||||
Comment=A lightweight cross-platform desktop client for Subsonic music servers
|
||||
Keywords=music;audio;player;subsonic;navidrome;streaming;
|
||||
Path=/usr/bin
|
||||
Exec=supersonic-desktop
|
||||
Terminal=false
|
||||
Icon=io.github.dweymouth.supersonic
|
||||
Icon=supersonic-desktop
|
||||
StartupWMClass=Supersonic
|
||||
Categories=Audio;AudioVideo;Music;Player;
|
||||
|
||||
Reference in New Issue
Block a user