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() {