diff --git a/README.md b/README.md
index 4283fb1..2f41099 100644
--- a/README.md
+++ b/README.md
@@ -97,6 +97,7 @@ The following projects and resources served as inspiration or were helpful durin
- [puregotk](https://codeberg.org/puregotk/puregotk) for making this project possible with only minimal CGO bindings
- [Plex](https://www.plex.tv/) for the media server platform
- [Dråfølin](https://drafolin.ch/) for the beautiful icon
+- [Phosphor Icons](https://phosphoricons.com) (MIT) for the macOS icon set
[license-shield]: https://img.shields.io/github/license/0SkillAllLuck/Scanline?style=for-the-badge
diff --git a/app/dialogs/preferences/player.go b/app/dialogs/preferences/player.go
index cc06323..19ce3fd 100644
--- a/app/dialogs/preferences/player.go
+++ b/app/dialogs/preferences/player.go
@@ -28,4 +28,4 @@ var playerPreferences = PreferencesPage(
preference.Experimental().BindAutoSkipCredits(&sr.Object, "active")
}),
).Title(gettext.Get("Player")),
-).Title(gettext.Get("Player")).IconName("play")
+).Title(gettext.Get("Player")).IconName("media-playback-start-symbolic")
diff --git a/assets/icons-darwin/LICENSE b/assets/icons-darwin/LICENSE
new file mode 100644
index 0000000..78c9810
--- /dev/null
+++ b/assets/icons-darwin/LICENSE
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2023 Phosphor Icons
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/assets/icons-darwin/actions/audio-speakers-symbolic.svg b/assets/icons-darwin/actions/audio-speakers-symbolic.svg
new file mode 100644
index 0000000..0696472
--- /dev/null
+++ b/assets/icons-darwin/actions/audio-speakers-symbolic.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/assets/icons-darwin/actions/audio-volume-high-symbolic.svg b/assets/icons-darwin/actions/audio-volume-high-symbolic.svg
new file mode 100644
index 0000000..3ec529e
--- /dev/null
+++ b/assets/icons-darwin/actions/audio-volume-high-symbolic.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/assets/icons-darwin/actions/audio-x-generic-symbolic.svg b/assets/icons-darwin/actions/audio-x-generic-symbolic.svg
new file mode 100644
index 0000000..fbf942b
--- /dev/null
+++ b/assets/icons-darwin/actions/audio-x-generic-symbolic.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/assets/icons-darwin/actions/avatar-default-symbolic.svg b/assets/icons-darwin/actions/avatar-default-symbolic.svg
new file mode 100644
index 0000000..cd7c86f
--- /dev/null
+++ b/assets/icons-darwin/actions/avatar-default-symbolic.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/assets/icons-darwin/actions/brush-symbolic.svg b/assets/icons-darwin/actions/brush-symbolic.svg
new file mode 100644
index 0000000..425af26
--- /dev/null
+++ b/assets/icons-darwin/actions/brush-symbolic.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/assets/icons-darwin/actions/camera-video-symbolic.svg b/assets/icons-darwin/actions/camera-video-symbolic.svg
new file mode 100644
index 0000000..3a0b408
--- /dev/null
+++ b/assets/icons-darwin/actions/camera-video-symbolic.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/assets/icons-darwin/actions/check-plain-symbolic.svg b/assets/icons-darwin/actions/check-plain-symbolic.svg
new file mode 100644
index 0000000..b25e997
--- /dev/null
+++ b/assets/icons-darwin/actions/check-plain-symbolic.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/assets/icons-darwin/actions/display-symbolic.svg b/assets/icons-darwin/actions/display-symbolic.svg
new file mode 100644
index 0000000..94a3b1c
--- /dev/null
+++ b/assets/icons-darwin/actions/display-symbolic.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/assets/icons-darwin/actions/emblem-system-symbolic.svg b/assets/icons-darwin/actions/emblem-system-symbolic.svg
new file mode 100644
index 0000000..d314f88
--- /dev/null
+++ b/assets/icons-darwin/actions/emblem-system-symbolic.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/assets/icons-darwin/actions/filmstrip-symbolic.svg b/assets/icons-darwin/actions/filmstrip-symbolic.svg
new file mode 100644
index 0000000..3a0b408
--- /dev/null
+++ b/assets/icons-darwin/actions/filmstrip-symbolic.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/assets/icons-darwin/actions/folder-symbolic.svg b/assets/icons-darwin/actions/folder-symbolic.svg
new file mode 100644
index 0000000..5e4fb24
--- /dev/null
+++ b/assets/icons-darwin/actions/folder-symbolic.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/assets/icons-darwin/actions/go-home-symbolic.svg b/assets/icons-darwin/actions/go-home-symbolic.svg
new file mode 100644
index 0000000..6346350
--- /dev/null
+++ b/assets/icons-darwin/actions/go-home-symbolic.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/assets/icons-darwin/actions/image-missing-symbolic.svg b/assets/icons-darwin/actions/image-missing-symbolic.svg
new file mode 100644
index 0000000..fbc41ad
--- /dev/null
+++ b/assets/icons-darwin/actions/image-missing-symbolic.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/assets/icons-darwin/actions/image-x-generic-symbolic.svg b/assets/icons-darwin/actions/image-x-generic-symbolic.svg
new file mode 100644
index 0000000..211e18c
--- /dev/null
+++ b/assets/icons-darwin/actions/image-x-generic-symbolic.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/assets/icons-darwin/actions/left-symbolic.svg b/assets/icons-darwin/actions/left-symbolic.svg
new file mode 100644
index 0000000..1540c60
--- /dev/null
+++ b/assets/icons-darwin/actions/left-symbolic.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/assets/icons-darwin/actions/list-add-symbolic.svg b/assets/icons-darwin/actions/list-add-symbolic.svg
new file mode 100644
index 0000000..bd65073
--- /dev/null
+++ b/assets/icons-darwin/actions/list-add-symbolic.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/assets/icons-darwin/actions/loupe-symbolic.svg b/assets/icons-darwin/actions/loupe-symbolic.svg
new file mode 100644
index 0000000..67b7d35
--- /dev/null
+++ b/assets/icons-darwin/actions/loupe-symbolic.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/assets/icons-darwin/actions/media-playback-pause-symbolic.svg b/assets/icons-darwin/actions/media-playback-pause-symbolic.svg
new file mode 100644
index 0000000..48de39b
--- /dev/null
+++ b/assets/icons-darwin/actions/media-playback-pause-symbolic.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/assets/icons-darwin/actions/media-playback-start-symbolic.svg b/assets/icons-darwin/actions/media-playback-start-symbolic.svg
new file mode 100644
index 0000000..9a395d4
--- /dev/null
+++ b/assets/icons-darwin/actions/media-playback-start-symbolic.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/assets/icons-darwin/actions/media-seek-backward-symbolic.svg b/assets/icons-darwin/actions/media-seek-backward-symbolic.svg
new file mode 100644
index 0000000..b14545f
--- /dev/null
+++ b/assets/icons-darwin/actions/media-seek-backward-symbolic.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/assets/icons-darwin/actions/media-seek-forward-symbolic.svg b/assets/icons-darwin/actions/media-seek-forward-symbolic.svg
new file mode 100644
index 0000000..18685da
--- /dev/null
+++ b/assets/icons-darwin/actions/media-seek-forward-symbolic.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/assets/icons-darwin/actions/media-skip-forward-symbolic.svg b/assets/icons-darwin/actions/media-skip-forward-symbolic.svg
new file mode 100644
index 0000000..ca4d7ff
--- /dev/null
+++ b/assets/icons-darwin/actions/media-skip-forward-symbolic.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/assets/icons-darwin/actions/package-x-generic-symbolic.svg b/assets/icons-darwin/actions/package-x-generic-symbolic.svg
new file mode 100644
index 0000000..da03b34
--- /dev/null
+++ b/assets/icons-darwin/actions/package-x-generic-symbolic.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/assets/icons-darwin/actions/people-symbolic.svg b/assets/icons-darwin/actions/people-symbolic.svg
new file mode 100644
index 0000000..7f7b6ca
--- /dev/null
+++ b/assets/icons-darwin/actions/people-symbolic.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/assets/icons-darwin/actions/right-symbolic.svg b/assets/icons-darwin/actions/right-symbolic.svg
new file mode 100644
index 0000000..bab5b02
--- /dev/null
+++ b/assets/icons-darwin/actions/right-symbolic.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/assets/icons-darwin/actions/science-symbolic.svg b/assets/icons-darwin/actions/science-symbolic.svg
new file mode 100644
index 0000000..d7d75d9
--- /dev/null
+++ b/assets/icons-darwin/actions/science-symbolic.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/assets/icons-darwin/actions/sentiment-dissatisfied-symbolic.svg b/assets/icons-darwin/actions/sentiment-dissatisfied-symbolic.svg
new file mode 100644
index 0000000..a3466bd
--- /dev/null
+++ b/assets/icons-darwin/actions/sentiment-dissatisfied-symbolic.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/assets/icons-darwin/actions/settings-symbolic.svg b/assets/icons-darwin/actions/settings-symbolic.svg
new file mode 100644
index 0000000..9a20171
--- /dev/null
+++ b/assets/icons-darwin/actions/settings-symbolic.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/assets/icons-darwin/actions/speedometer5-symbolic.svg b/assets/icons-darwin/actions/speedometer5-symbolic.svg
new file mode 100644
index 0000000..c9cf470
--- /dev/null
+++ b/assets/icons-darwin/actions/speedometer5-symbolic.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/assets/icons-darwin/actions/star-filled-symbolic.svg b/assets/icons-darwin/actions/star-filled-symbolic.svg
new file mode 100644
index 0000000..d6723c9
--- /dev/null
+++ b/assets/icons-darwin/actions/star-filled-symbolic.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/assets/icons-darwin/actions/starred-symbolic.svg b/assets/icons-darwin/actions/starred-symbolic.svg
new file mode 100644
index 0000000..1634157
--- /dev/null
+++ b/assets/icons-darwin/actions/starred-symbolic.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/assets/icons-darwin/actions/system-log-out-symbolic.svg b/assets/icons-darwin/actions/system-log-out-symbolic.svg
new file mode 100644
index 0000000..7bf5110
--- /dev/null
+++ b/assets/icons-darwin/actions/system-log-out-symbolic.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/assets/icons-darwin/actions/tv-symbolic.svg b/assets/icons-darwin/actions/tv-symbolic.svg
new file mode 100644
index 0000000..4f24a99
--- /dev/null
+++ b/assets/icons-darwin/actions/tv-symbolic.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/assets/icons-darwin/actions/view-fullscreen-symbolic.svg b/assets/icons-darwin/actions/view-fullscreen-symbolic.svg
new file mode 100644
index 0000000..120ee2f
--- /dev/null
+++ b/assets/icons-darwin/actions/view-fullscreen-symbolic.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/assets/icons-darwin/actions/view-refresh-symbolic.svg b/assets/icons-darwin/actions/view-refresh-symbolic.svg
new file mode 100644
index 0000000..978fd55
--- /dev/null
+++ b/assets/icons-darwin/actions/view-refresh-symbolic.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/assets/icons-darwin/actions/view-restore-symbolic.svg b/assets/icons-darwin/actions/view-restore-symbolic.svg
new file mode 100644
index 0000000..7ef865a
--- /dev/null
+++ b/assets/icons-darwin/actions/view-restore-symbolic.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/assets/icons-darwin/actions/window-close-symbolic.svg b/assets/icons-darwin/actions/window-close-symbolic.svg
new file mode 100644
index 0000000..62544a8
--- /dev/null
+++ b/assets/icons-darwin/actions/window-close-symbolic.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/assets/meta/icons-darwin.gresource b/assets/meta/icons-darwin.gresource
new file mode 100644
index 0000000..113271d
Binary files /dev/null and b/assets/meta/icons-darwin.gresource differ
diff --git a/assets/meta/icons-darwin.gresource.xml b/assets/meta/icons-darwin.gresource.xml
new file mode 100644
index 0000000..ffb7439
--- /dev/null
+++ b/assets/meta/icons-darwin.gresource.xml
@@ -0,0 +1,51 @@
+
+
+
+
+ actions/media-playback-start-symbolic.svg
+ actions/media-playback-pause-symbolic.svg
+ actions/media-seek-backward-symbolic.svg
+ actions/media-seek-forward-symbolic.svg
+ actions/media-skip-forward-symbolic.svg
+ actions/view-fullscreen-symbolic.svg
+ actions/view-restore-symbolic.svg
+ actions/window-close-symbolic.svg
+ actions/audio-volume-high-symbolic.svg
+ actions/emblem-system-symbolic.svg
+
+ actions/loupe-symbolic.svg
+ actions/left-symbolic.svg
+ actions/right-symbolic.svg
+ actions/go-home-symbolic.svg
+ actions/starred-symbolic.svg
+
+ actions/check-plain-symbolic.svg
+
+ actions/camera-video-symbolic.svg
+ actions/tv-symbolic.svg
+ actions/audio-x-generic-symbolic.svg
+ actions/image-x-generic-symbolic.svg
+ actions/folder-symbolic.svg
+
+ actions/settings-symbolic.svg
+ actions/science-symbolic.svg
+ actions/brush-symbolic.svg
+ actions/speedometer5-symbolic.svg
+
+ actions/list-add-symbolic.svg
+ actions/view-refresh-symbolic.svg
+ actions/system-log-out-symbolic.svg
+
+ actions/sentiment-dissatisfied-symbolic.svg
+ actions/image-missing-symbolic.svg
+ actions/avatar-default-symbolic.svg
+
+ actions/people-symbolic.svg
+ actions/star-filled-symbolic.svg
+
+ actions/display-symbolic.svg
+ actions/filmstrip-symbolic.svg
+ actions/audio-speakers-symbolic.svg
+ actions/package-x-generic-symbolic.svg
+
+
diff --git a/main.go b/main.go
index 0ff933f..3c06ce5 100644
--- a/main.go
+++ b/main.go
@@ -5,6 +5,7 @@ import (
"log"
"log/slog"
"os"
+ "runtime"
_ "github.com/0skillallluck/scanline/internal/features/macosfixes"
@@ -17,17 +18,19 @@ import (
//go:generate glib-compile-schemas ./assets/meta
//go:generate glib-compile-resources --sourcedir=./assets/icons --target=./assets/meta/icons.gresource ./assets/meta/icons.gresource.xml
+//go:generate glib-compile-resources --sourcedir=./assets/icons-darwin --target=./assets/meta/icons-darwin.gresource ./assets/meta/icons-darwin.gresource.xml
//go:generate scss ./assets/styles/style.scss ./assets/styles/style.css
//go:generate glib-compile-resources --sourcedir=./assets/styles --target=./assets/meta/styles.gresource ./assets/meta/styles.gresource.xml
//go:embed assets/meta/icons.gresource
-var IconResources []byte
+var iconBundleLinux []byte
+
+//go:embed assets/meta/icons-darwin.gresource
+var iconBundleDarwin []byte
//go:embed assets/meta/styles.gresource
var StyleResources []byte
-func init() {
-}
func init() {
slog.SetLogLoggerLevel(slog.LevelInfo)
if os.Getenv("SCANLINE_DEBUG") == "1" {
@@ -35,17 +38,24 @@ func init() {
go tracking.LogAliveObjects()
}
- // Register resources
- iconResources, err := gio.NewResourceFromData(glib.NewBytes(IconResources, uint(len(IconResources))))
- if err != nil {
- log.Panicln("Failed to create resources: ", err)
+ // Both bundles are embedded unconditionally so `go run main.go` works
+ // without picking up sibling files via build tags. The Linux bundle stays
+ // registered on Darwin so direct resource-path lookups (missing-album.svg,
+ // rating-source logos) still resolve. gio prepends to its registry, so
+ // the Darwin override registered last wins icon-name lookups.
+ registerResource(iconBundleLinux)
+ if runtime.GOOS == "darwin" {
+ registerResource(iconBundleDarwin)
}
- gio.ResourcesRegister(iconResources)
- styleResources, err := gio.NewResourceFromData(glib.NewBytes(StyleResources, uint(len(StyleResources))))
+ registerResource(StyleResources)
+}
+
+func registerResource(data []byte) {
+ res, err := gio.NewResourceFromData(glib.NewBytes(data, uint(len(data))))
if err != nil {
log.Panicln("Failed to create resources: ", err)
}
- gio.ResourcesRegister(styleResources)
+ gio.ResourcesRegister(res)
}
func main() {