first commit
Some checks are pending
spot-quality / ci-check (push) Waiting to run
spot-quality / shellcheck (push) Waiting to run

This commit is contained in:
Théo Barnouin 2024-11-13 16:41:51 +01:00
commit 15cf412840
255 changed files with 47845 additions and 0 deletions

BIN
data/appstream/1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

BIN
data/appstream/2.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 126 KiB

BIN
data/appstream/3.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 411 KiB

File diff suppressed because it is too large Load diff

After

Width:  |  Height:  |  Size: 42 KiB

View file

@ -0,0 +1,356 @@
<?xml version="1.0" encoding="UTF-8"?>
<component type="desktop-application">
<id>dev.alextren.Spot</id>
<url type="homepage">https://github.com/xou816/spot</url>
<name>Spot</name>
<summary>Listen to music on Spotify</summary>
<launchable type="desktop-id">dev.alextren.Spot.desktop</launchable>
<metadata_license>CC0-1.0</metadata_license>
<project_license>MIT</project_license>
<content_rating type="oars-1.1" />
<requires>
<display_length compare="ge">360</display_length>
</requires>
<recommends>
<control>keyboard</control>
<control>pointing</control>
<control>touch</control>
</recommends>
<!-- see https://puri.sm/posts/specify-form-factors-in-your-librem-5-apps/ -->
<custom>
<value key="Purism::form_factor">workstation</value>
<value key="Purism::form_factor">mobile</value>
</custom>
<description>
<p>
Listen to music on Spotify.
<b>Requires a premium account.</b>
</p>
<p>Current features:</p>
<ul>
<li>playback control (play/pause, prev/next, seeking)</li>
<li>play queue with shuffle option</li>
<li>selection mode: easily browse and select mutliple tracks to queue them</li>
<li>browse your saved albums and playlists</li>
<li>search albums and artists</li>
<li>view an artist's releases</li>
<li>view users' playlists</li>
<li>credentials management with Secret Service</li>
<li>MPRIS integration</li>
</ul>
</description>
<screenshots>
<screenshot>
<image>https://raw.githubusercontent.com/xou816/spot/master/data/appstream/1.png</image>
</screenshot>
<screenshot>
<image>https://raw.githubusercontent.com/xou816/spot/master/data/appstream/2.png</image>
</screenshot>
<screenshot>
<image>https://raw.githubusercontent.com/xou816/spot/master/data/appstream/3.png</image>
</screenshot>
</screenshots>
<release version="0.4.0" date="2023-02-24">
<description>
<p>
It's been a while, hasn't it? I'm back, but please allow everyone some time to work through the issues and pull requests :)
</p>
<ul>
<li>added an option for gapless playback (thanks @supremesnickers!)</li>
<li>fixed theme management (thanks @ctsk!)</li>
<li>fixed the behaviour of the "previous" button for consistency with other media players (thanks @SomewhereOutInSpace!)</li>
<li>the user will now be prompted to unlock the keyring if needed (thanks @rainDiX!)</li>
<li>added playlist creation and edition</li>
<li>more bug fixes</li>
</ul>
<p>
Thanks to all the contributors who are somehow still around :) If you feel like you've been unjustly forgotten from the AUTHORS or TRANSLATORS file, feel free to open a PR.
</p>
</description>
</release>
<release version="0.3.3" date="2022-03-29">
<description>
<p>
What's new:
</p>
<ul>
<li>login dialog now uses a password entry (thanks @Toorero!)</li>
<li>fix a startup crash with some locales</li>
</ul>
</description>
</release>
<release version="0.3.2" date="2022-03-27">
<description>
<p>
New features:
</p>
<ul>
<li>save tracks to library</li>
<li>basic Spotify URI handling (thanks @bbb651!)</li>
<li>settings dialog (thanks @sei0o!)</li>
<li>brand new icon (thanks @bertob!)</li>
<li>bug fixes</li>
</ul>
<p>
Thank you to everyone involved in this release!
</p>
</description>
</release>
<releases>
<release version="0.3.1" date="2022-01-23">
<description>
<p>Bugfix release:</p>
<ul>
<li>fix a startup crash with some locales (thanks @jakubiszon26!)</li>
<li>fix a crash when attempting to view some users' profile (thanks @juxuanu!)</li>
</ul>
</description>
</release>
<release version="0.3.0" date="2022-01-13">
<description>
<p>
There has been no release for a while, but this one packs quite a few features:
</p>
<ul>
<li>redesigned several parts of the application: headers, selection tools, library, album view... (thanks @jannuary!)</li>
<li>many, many, many more subtle design changes and tweaks still owed to @jannuary</li>
<li>playlists are now accessible from the sidebar (thanks @abegert!)</li>
<li>the album art is visible for individual songs, and the release year is visible for albums (thanks @abegert and @sei0o!)</li>
<li>volume control over MPRIS (thanks @Diegovsky!)</li>
<li>as always, updated translations for yet more languages; thanks to the many people involved on POEditor!</li>
</ul>
<p>
Thank you so much to everyone involved for this release, including those I could not mention. If you're willing to contribute, do not hesitate to seek advice from those trusted contributors, and be sure to direct your UX questions towards @jannuary (as long as they're fine with it!).
</p>
</description>
</release>
<release version="0.2.2" date="2021-11-10">
<description>
<p>Quick fix for a startup crash, sorry for the inconvenience. Thanks @xRMG412! </p>
</description>
</release>
<release version="0.2.1" date="2021-10-17">
<description>
<p>
What's new:
</p>
<ul>
<li>browse saved tracks from Spot</li>
<li>a status page is now displayed when no albums or playlists have been added (thanks @Diegovsky!)</li>
<li>change the access point port from GSettings; this should help users running Spot behind a firewall (thanks @sei0o!)</li>
<li>display a warning in the login dialog if Caps Lock is enabled (thanks @przebor!)</li>
<li>added Purism form-factor metadata; this should improve the discoverability of Spot (thanks @1peter10!), and generally improved the appstream metadata to match the updated guidelines</li>
<li>various bugfixes (clear credentials on auth failure, load all tracks for long albums...)</li>
</ul>
<p>Thank you to the many contributors to this release, as well as to all those contributing translations on POEditor!</p>
</description>
</release>
<release version="0.2.0" date="2021-08-24">
<description>
<p>
What's new:
</p>
<ul>
<li>ported app to GTK4 and libadwaita</li>
<li>MPRIS: handle shuffling and loop status</li>
<li>improved album size on small screens</li>
</ul>
</description>
</release>
<release version="0.1.16" date="2021-08-17">
<description>
<p>
What's new:
</p>
<ul>
<li>added a new album info modal with full release details (thanks TotalDarkness-NRF!)</li>
<li>improved player controls: added the ability to repeat a single track or the whole queue (thanks TotalDarkness-NRF!)</li>
<li>improved login credentials management: (re)use auth token when possible instead of always using email and password (thanks nn1ks!)</li>
<li>MPRIS fixes: raising the player is now properly implemented (thanks eladyn!)</li>
<li>...actually fix an issue with playlists not being modifiable when login in with email</li>
</ul>
<p>
Special thanks to TotalDarkness-NRF for contributing several major features for this version.
</p>
</description>
</release>
<release version="0.1.15" date="2021-06-30">
<description>
<p>
What's new:
</p>
<ul>
<li>ability to remove tracks from writable playlists</li>
<li>improved login error handling</li>
<li>fixed an issue with playlists not being modifiable when login in with email</li>
<li>MPRIS: the desktop entry for Spot is now properly referenced (thanks nicolasfella!)</li>
<li>quality: various clippy fixes (thanks nn1ks!)</li>
<li>new translations: Turkish, Indonesian and Brazilian Portuguese (thanks YusufOzmen01, cho2 and lucraraujo, as well as ondras12345 for the reviews!)</li>
<li></li>
</ul>
</description>
</release>
<release version="0.1.14" date="2021-05-09">
<description>
<p>
What's new:
</p>
<ul>
<li>long playlists are now handled (somewhat) properly, although this has some drawbacks (shuffling isn't so random...)</li>
<li>the MPRIS implementation now supports seeking, and should report the proper album art and album name; thanks Douile!</li>
<li>selection tools now allow adding to a playlist (not yet removing, though)</li>
<li>Russian translation</li>
</ul>
<p>
Thanks to all contributors, translators and bug reporters!
</p>
</description>
</release>
<release version="0.1.13" date="2021-04-12">
<description>
<p>
What's new:
</p>
<ul>
<li>new selection tools: move tracks up and down in queue, quickly select multiple tracks from current view...</li>
<li>touch and hold a song list (or right click) to enter selection mode</li>
<li>Portuguese translation</li>
<li>fixed session restoration requiring manually repeating last action after a long period of inactivity</li>
<li>fixed parsing for playlists with local tracks</li>
</ul>
</description>
</release>
<release version="0.1.12" date="2021-03-24">
<description>
<p>
What's new:
</p>
<ul>
<li>browse users' playlists by clicking on their name in playlists you follow (thanks a bunch, Douile!)</li>
<li>Catalan, Czech, Polish and Spanish translations; thanks to all the translators involved!</li>
<li>bug fixes</li>
</ul>
</description>
</release>
<release version="0.1.11" date="2021-03-17">
<description>
<p>
This release fixes the broken "Search" icon, and adds French, German and Dutch translations. Thanks to all translators for their contribution!
</p>
</description>
</release>
<release version="0.1.10" date="2021-03-13">
<description>
<p>
New features:
</p>
<ul>
<li>redesigned seekbar, login dialog and search (type from any screen to start a search)</li>
<li>song durations in playlist widgets (thanks realJavabot!)</li>
<li>play queue management (queue/dequeue/clear queue)</li>
<li>selection mode: enter selection mode to easily queue multiple tracks</li>
<li>keyboards shortcuts</li>
<li>various playback options through GSettings (no GUI yet)</li>
</ul>
</description>
</release>
<release version="0.1.9" date="2021-03-02">
<description>
<p>
New feature: contextual menus for songs are now available everywhere, allowing you to easily navigate to related artists or share tracks. Thanks Douile!
</p>
<p>
This release also includes numerous fixes, including a few crashes, performance issues, and most importantly playlists being truncated.
</p>
</description>
</release>
<release version="0.1.8" date="2021-02-20">
<description>
<p>
New feature: the main window can now be closed without stopping playback. Use Quit or Ctrl+Q to exit the app.
</p>
<p>
This release fixes numerous issues, including: main window being too large and too tall for phones, startup crash for playlist without images, "About" dialog not closing in qtile, keyboard navigation being broken in the login dialog. Special thanks to Douile for contributing fixes for many of these isssues!
</p>
</description>
</release>
<release version="0.1.7" date="2021-02-15">
<description>
<p>
Hotfix for a crash in search results
</p>
</description>
</release>
<release version="0.1.6" date="2021-02-15">
<description>
<p>
New features:
</p>
<ul>
<li>search results now include artists</li>
<li>albums can be saved and unsaved from the library</li>
</ul>
</description>
</release>
<release version="0.1.5" date="2021-02-11">
<description>
<p>
New features:
</p>
<ul>
<li>browse saved playlists</li>
<li>quick access to "Now playing"</li>
<li>artists top tracks</li>
<li>API token renewal</li>
</ul>
</description>
</release>
<release version="0.1.4" date="2021-02-04">
<description>
<p>
New features:
</p>
<ul>
<li>adaptive UI with libhandy</li>
</ul>
</description>
</release>
<release version="0.1.3" date="2021-01-31">
<description>
<p>
New features:
</p>
<ul>
<li>minimal MPRIS integration</li>
<li>"About" dialog</li>
</ul>
</description>
</release>
<release version="0.1.2" date="2021-01-25">
<description>
<p>
New features:
</p>
<ul>
<li>improved playlist widget, added menu to jump from "Now playing" to related albums</li>
<li>added in-app notifications for some errors</li>
</ul>
<p>Fixes:</p>
<ul>
<li>fixed an issue where songs would be skipped in a playlist when autoplaying</li>
<li>fixed character encoding in search queries</li>
</ul>
</description>
</release>
<release version="0.1.1" date="2021-01-17">
<description>
<p>Notables changes: symbolic icons everyhere (thanks gabmus!), shuffle play, logout</p>
</description>
</release>
<release version="0.1" date="2021-01-11">
<description>
<p>Initial release</p>
</description>
</release>
</releases>
</component>

View file

@ -0,0 +1,13 @@
[Desktop Entry]
Version=1.5
Name=Spot
Exec=spot %u
GenericName=Music Player
Icon=dev.alextren.Spot
Terminal=false
Type=Application
Categories=GTK;GNOME;Music;AudioVideo;
MimeType=x-scheme-handler/spotify;
StartupNotify=true
X-Purism-FormFactor=Workstation;Mobile;
SingleMainWindow=true

View file

@ -0,0 +1,56 @@
<?xml version="1.0" encoding="UTF-8"?>
<schemalist gettext-domain="spot">
<enum id="dev.alextren.Spot.AudioBackend">
<value value="0" nick="pulseaudio" />
<value value="1" nick="alsa" />
<value value="2" nick="gstreamer" />
</enum>
<enum id="dev.alextren.Spot.Bitrate">
<value value="0" nick="96" />
<value value="1" nick="160" />
<value value="2" nick="320" />
</enum>
<enum id="dev.alextren.Spot.ThemePref">
<value value="0" nick="light" />
<value value="1" nick="dark" />
<value value="2" nick="system" />
</enum>
<schema id="dev.alextren.Spot" path="/dev/alextren/Spot/">
<key name='theme-preference' enum='dev.alextren.Spot.ThemePref'>
<default>'system'</default>
<summary>The theme preference</summary>
</key>
<key name="window-width" type="i">
<default>1080</default>
<summary>The width of the window</summary>
</key>
<key name="window-height" type="i">
<default>720</default>
<summary>The height of the window</summary>
</key>
<key name="window-is-maximized" type="b">
<default>false</default>
<summary>A flag to enable maximized mode</summary>
</key>
<key name='player-bitrate' enum='dev.alextren.Spot.Bitrate'>
<default>'160'</default>
<summary>Songs bitrate (96, 160, 320kbps)</summary>
</key>
<key name='audio-backend' enum='dev.alextren.Spot.AudioBackend'>
<default>'pulseaudio'</default>
<summary>Audio backend</summary>
</key>
<key name="gapless-playback" type="b">
<default>true</default>
<summary>A flag to enable gap-less playback</summary>
</key>
<key name='alsa-device' type='s'>
<default>'default'</default>
<summary>Alsa device (if audio backend is 'alsa')</summary>
</key>
<key name='ap-port' type='u'>
<default>0</default>
<summary>Port to communicate with Spotify's server (access point). Setting to 0 (default) allows Spot to use servers running on any port.</summary>
</key>
</schema>
</schemalist>

View file

@ -0,0 +1,89 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg height="128px" viewBox="0 0 128 128" width="128px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<linearGradient id="a" gradientUnits="userSpaceOnUse">
<stop offset="0" stop-color="#3d3846"/>
<stop offset="0.5" stop-color="#77767b"/>
<stop offset="1" stop-color="#5e5c64"/>
</linearGradient>
<linearGradient id="b" x1="27.798828" x2="27.798828" xlink:href="#a" y1="70" y2="64"/>
<linearGradient id="c" gradientUnits="userSpaceOnUse" x1="28.000011" x2="100.000011" y1="58.749985" y2="58.749985">
<stop offset="0" stop-color="#3d3846"/>
<stop offset="0.5" stop-color="#9a9996"/>
<stop offset="1" stop-color="#5e5c64"/>
</linearGradient>
<linearGradient id="d" gradientTransform="matrix(0.5 -0.866025 0.866025 0.5 0 -172)" gradientUnits="userSpaceOnUse" x1="-232.630707" x2="-160.630707" y1="187.425629" y2="187.425629">
<stop offset="0" stop-color="#9a9996"/>
<stop offset="0.5" stop-color="#9a9996"/>
<stop offset="1" stop-color="#3d3846"/>
</linearGradient>
<linearGradient id="e" gradientTransform="matrix(-1.066666 0 0 -1.066666 132.266647 377.866577)" x1="34" x2="94" xlink:href="#a" y1="268" y2="268"/>
<linearGradient id="f" gradientTransform="matrix(1.066666 0 0 -1.066666 -12.799976 200.799957)" gradientUnits="userSpaceOnUse" x1="72" x2="72" y1="120" y2="88">
<stop offset="0" stop-color="#8ff0a4"/>
<stop offset="1" stop-color="#33d17a"/>
</linearGradient>
<linearGradient id="g" gradientUnits="userSpaceOnUse" x1="24.000004" x2="62.55785" y1="224.554276" y2="174.025513">
<stop offset="0" stop-color="#9a9996"/>
<stop offset="0.587814" stop-color="#c0bfbc"/>
<stop offset="1" stop-color="#9a9996"/>
</linearGradient>
<filter id="h" height="100%" width="100%" x="0%" y="0%">
<feColorMatrix in="SourceGraphic" type="matrix" values="0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0"/>
</filter>
<mask id="i">
<g filter="url(#h)">
<rect fill-opacity="0.3" height="128" width="128"/>
</g>
</mask>
<clipPath id="j">
<rect height="152" width="192"/>
</clipPath>
<path d="m 21 64 h 86 c 1.65625 0 3 1.34375 3 3 s -1.34375 3 -3 3 h -86 c -1.65625 0 -3 -1.34375 -3 -3 s 1.34375 -3 3 -3 z m 0 0" fill="url(#b)"/>
<path d="m 64 12 c -19.882812 0 -36 16.117188 -36 36 v 44 h 72 v -44 c 0 -19.882812 -16.117188 -36 -36 -36 z m 0 0" fill="url(#c)"/>
<path d="m 82 60.824219 c 17.21875 9.941406 23.117188 31.957031 13.175781 49.175781 c -9.941406 17.21875 -31.957031 23.117188 -49.175781 13.175781 c -17.21875 -9.941406 -23.117188 -31.957031 -13.175781 -49.175781 c 9.941406 -17.21875 31.957031 -23.117188 49.175781 -13.175781 z m 0 0" fill="url(#d)"/>
<path d="m 32 92 c 0 -17.671875 14.328125 -32 32 -32 s 32 14.328125 32 32 s -14.328125 32 -32 32 s -32 -14.328125 -32 -32 z m 0 0" fill="url(#e)"/>
<path d="m 64 113.332031 c -15.597656 -0.019531 -28.90625 -11.285156 -31.507812 -26.664062 c 2.601562 -15.378907 15.910156 -26.644531 31.507812 -26.667969 c 15.636719 0.019531 28.96875 11.339844 31.527344 26.765625 c -2.644532 15.347656 -15.953125 26.5625 -31.527344 26.566406 z m 0 0" fill="url(#f)"/>
<path d="m 24 244 v -30 c 0 -22.089844 17.910156 -40 40 -40 s 40 17.910156 40 40 v 30" fill="none" stroke="url(#g)" stroke-linecap="round" stroke-width="4" transform="matrix(1 0 0 1 0 -172)"/>
<g fill="#241f31">
<path d="m 65.5 20 c 0 0.828125 -0.671875 1.5 -1.5 1.5 s -1.5 -0.671875 -1.5 -1.5 s 0.671875 -1.5 1.5 -1.5 s 1.5 0.671875 1.5 1.5 z m 0 0"/>
<path d="m 59.167969 20.554688 c 0 0.828124 -0.671875 1.5 -1.5 1.5 s -1.5 -0.671876 -1.5 -1.5 c 0 -0.828126 0.671875 -1.5 1.5 -1.5 s 1.5 0.671874 1.5 1.5 z m 0 0"/>
<path d="m 52.9375 22.210938 c 0 0.832031 -0.625 1.5 -1.390625 1.5 c -0.769531 0 -1.394531 -0.667969 -1.394531 -1.5 c 0 -0.828126 0.625 -1.5 1.394531 -1.5 c 0.765625 0 1.390625 0.671874 1.390625 1.5 z m 0 0"/>
<path d="m 47.632812 24.605469 c 0 0.828125 -0.566406 1.5 -1.261718 1.5 c -0.699219 0 -1.261719 -0.671875 -1.261719 -1.5 s 0.5625 -1.5 1.261719 -1.5 c 0.695312 0 1.261718 0.671875 1.261718 1.5 z m 0 0"/>
<path d="m 43.167969 27.589844 c 0 0.828125 -0.574219 1.5 -1.28125 1.5 s -1.28125 -0.671875 -1.28125 -1.5 s 0.574219 -1.5 1.28125 -1.5 s 1.28125 0.671875 1.28125 1.5 z m 0 0"/>
<path d="m 39.304688 30.9375 c 0 0.828125 -0.511719 1.5 -1.144532 1.5 c -0.632812 0 -1.148437 -0.671875 -1.148437 -1.5 c 0 -0.832031 0.515625 -1.5 1.148437 -1.5 c 0.632813 0 1.144532 0.667969 1.144532 1.5 z m 0 0"/>
<path d="m 35.816406 34.984375 c 0 0.828125 -0.46875 1.5 -1.046875 1.5 s -1.046875 -0.671875 -1.046875 -1.5 s 0.46875 -1.5 1.046875 -1.5 s 1.046875 0.671875 1.046875 1.5 z m 0 0"/>
<path d="m 32.996094 39.222656 c 0 0.828125 -0.382813 1.5 -0.855469 1.5 s -0.855469 -0.671875 -0.855469 -1.5 c 0 -0.832031 0.382813 -1.5 0.855469 -1.5 s 0.855469 0.667969 0.855469 1.5 z m 0 0"/>
<path d="m 30.769531 43.972656 c 0 0.828125 -0.316406 1.5 -0.710937 1.5 c -0.394532 0 -0.710938 -0.671875 -0.710938 -1.5 s 0.316406 -1.5 0.710938 -1.5 c 0.394531 0 0.710937 0.671875 0.710937 1.5 z m 0 0"/>
<path d="m 29.226562 48.8125 c 0 0.828125 -0.230468 1.5 -0.507812 1.5 c -0.28125 0 -0.507812 -0.671875 -0.507812 -1.5 s 0.226562 -1.5 0.507812 -1.5 c 0.277344 0 0.507812 0.671875 0.507812 1.5 z m 0 0"/>
<path d="m 68.832031 20.554688 c 0 0.828124 0.671875 1.5 1.5 1.5 s 1.5 -0.671876 1.5 -1.5 c 0 -0.828126 -0.671875 -1.5 -1.5 -1.5 s -1.5 0.671874 -1.5 1.5 z m 0 0"/>
<path d="m 75.0625 22.210938 c 0 0.832031 0.625 1.5 1.390625 1.5 c 0.769531 0 1.394531 -0.667969 1.394531 -1.5 c 0 -0.828126 -0.625 -1.5 -1.394531 -1.5 c -0.765625 0 -1.390625 0.671874 -1.390625 1.5 z m 0 0"/>
<path d="m 80.367188 24.605469 c 0 0.828125 0.566406 1.5 1.261718 1.5 c 0.699219 0 1.261719 -0.671875 1.261719 -1.5 s -0.5625 -1.5 -1.261719 -1.5 c -0.695312 0 -1.261718 0.671875 -1.261718 1.5 z m 0 0"/>
<path d="m 84.832031 27.589844 c 0 0.828125 0.574219 1.5 1.28125 1.5 s 1.28125 -0.671875 1.28125 -1.5 s -0.574219 -1.5 -1.28125 -1.5 s -1.28125 0.671875 -1.28125 1.5 z m 0 0"/>
<path d="m 88.695312 30.9375 c 0 0.828125 0.511719 1.5 1.144532 1.5 c 0.632812 0 1.148437 -0.671875 1.148437 -1.5 c 0 -0.832031 -0.515625 -1.5 -1.148437 -1.5 c -0.632813 0 -1.144532 0.667969 -1.144532 1.5 z m 0 0"/>
<path d="m 92.183594 34.984375 c 0 0.828125 0.46875 1.5 1.046875 1.5 s 1.046875 -0.671875 1.046875 -1.5 s -0.46875 -1.5 -1.046875 -1.5 s -1.046875 0.671875 -1.046875 1.5 z m 0 0"/>
<path d="m 95.003906 39.222656 c 0 0.828125 0.382813 1.5 0.855469 1.5 s 0.855469 -0.671875 0.855469 -1.5 c 0 -0.832031 -0.382813 -1.5 -0.855469 -1.5 s -0.855469 0.667969 -0.855469 1.5 z m 0 0"/>
<path d="m 97.230469 43.972656 c 0 0.828125 0.316406 1.5 0.710937 1.5 c 0.394532 0 0.710938 -0.671875 0.710938 -1.5 s -0.316406 -1.5 -0.710938 -1.5 c -0.394531 0 -0.710937 0.671875 -0.710937 1.5 z m 0 0"/>
<path d="m 98.773438 48.8125 c 0 0.828125 0.230468 1.5 0.507812 1.5 c 0.28125 0 0.507812 -0.671875 0.507812 -1.5 s -0.226562 -1.5 -0.507812 -1.5 c -0.277344 0 -0.507812 0.671875 -0.507812 1.5 z m 0 0"/>
<path d="m 65.5 25 c 0 0.828125 -0.671875 1.5 -1.5 1.5 s -1.5 -0.671875 -1.5 -1.5 s 0.671875 -1.5 1.5 -1.5 s 1.5 0.671875 1.5 1.5 z m 0 0"/>
<path d="m 59.167969 25.554688 c 0 0.828124 -0.671875 1.5 -1.5 1.5 s -1.5 -0.671876 -1.5 -1.5 c 0 -0.828126 0.671875 -1.5 1.5 -1.5 s 1.5 0.671874 1.5 1.5 z m 0 0"/>
<path d="m 52.9375 27.210938 c 0 0.832031 -0.625 1.5 -1.390625 1.5 c -0.769531 0 -1.394531 -0.667969 -1.394531 -1.5 c 0 -0.828126 0.625 -1.5 1.394531 -1.5 c 0.765625 0 1.390625 0.671874 1.390625 1.5 z m 0 0"/>
<path d="m 47.632812 29.605469 c 0 0.828125 -0.566406 1.5 -1.261718 1.5 c -0.699219 0 -1.261719 -0.671875 -1.261719 -1.5 s 0.5625 -1.5 1.261719 -1.5 c 0.695312 0 1.261718 0.671875 1.261718 1.5 z m 0 0"/>
<path d="m 43.167969 32.589844 c 0 0.828125 -0.574219 1.5 -1.28125 1.5 s -1.28125 -0.671875 -1.28125 -1.5 s 0.574219 -1.5 1.28125 -1.5 s 1.28125 0.671875 1.28125 1.5 z m 0 0"/>
<path d="m 39.304688 35.9375 c 0 0.828125 -0.511719 1.5 -1.144532 1.5 c -0.632812 0 -1.148437 -0.671875 -1.148437 -1.5 c 0 -0.832031 0.515625 -1.5 1.148437 -1.5 c 0.632813 0 1.144532 0.667969 1.144532 1.5 z m 0 0"/>
<path d="m 35.816406 39.984375 c 0 0.828125 -0.46875 1.5 -1.046875 1.5 s -1.046875 -0.671875 -1.046875 -1.5 s 0.46875 -1.5 1.046875 -1.5 s 1.046875 0.671875 1.046875 1.5 z m 0 0"/>
<path d="m 32.996094 44.222656 c 0 0.828125 -0.382813 1.5 -0.855469 1.5 s -0.855469 -0.671875 -0.855469 -1.5 c 0 -0.832031 0.382813 -1.5 0.855469 -1.5 s 0.855469 0.667969 0.855469 1.5 z m 0 0"/>
<path d="m 30.769531 48.972656 c 0 0.828125 -0.316406 1.5 -0.710937 1.5 c -0.394532 0 -0.710938 -0.671875 -0.710938 -1.5 s 0.316406 -1.5 0.710938 -1.5 c 0.394531 0 0.710937 0.671875 0.710937 1.5 z m 0 0"/>
<path d="m 29.226562 53.8125 c 0 0.828125 -0.230468 1.5 -0.507812 1.5 c -0.28125 0 -0.507812 -0.671875 -0.507812 -1.5 s 0.226562 -1.5 0.507812 -1.5 c 0.277344 0 0.507812 0.671875 0.507812 1.5 z m 0 0"/>
<path d="m 68.832031 25.554688 c 0 0.828124 0.671875 1.5 1.5 1.5 s 1.5 -0.671876 1.5 -1.5 c 0 -0.828126 -0.671875 -1.5 -1.5 -1.5 s -1.5 0.671874 -1.5 1.5 z m 0 0"/>
<path d="m 75.0625 27.210938 c 0 0.832031 0.625 1.5 1.390625 1.5 c 0.769531 0 1.394531 -0.667969 1.394531 -1.5 c 0 -0.828126 -0.625 -1.5 -1.394531 -1.5 c -0.765625 0 -1.390625 0.671874 -1.390625 1.5 z m 0 0"/>
<path d="m 80.367188 29.605469 c 0 0.828125 0.566406 1.5 1.261718 1.5 c 0.699219 0 1.261719 -0.671875 1.261719 -1.5 s -0.5625 -1.5 -1.261719 -1.5 c -0.695312 0 -1.261718 0.671875 -1.261718 1.5 z m 0 0"/>
<path d="m 84.832031 32.589844 c 0 0.828125 0.574219 1.5 1.28125 1.5 s 1.28125 -0.671875 1.28125 -1.5 s -0.574219 -1.5 -1.28125 -1.5 s -1.28125 0.671875 -1.28125 1.5 z m 0 0"/>
<path d="m 88.695312 35.9375 c 0 0.828125 0.511719 1.5 1.144532 1.5 c 0.632812 0 1.148437 -0.671875 1.148437 -1.5 c 0 -0.832031 -0.515625 -1.5 -1.148437 -1.5 c -0.632813 0 -1.144532 0.667969 -1.144532 1.5 z m 0 0"/>
<path d="m 92.183594 39.984375 c 0 0.828125 0.46875 1.5 1.046875 1.5 s 1.046875 -0.671875 1.046875 -1.5 s -0.46875 -1.5 -1.046875 -1.5 s -1.046875 0.671875 -1.046875 1.5 z m 0 0"/>
<path d="m 95.003906 44.222656 c 0 0.828125 0.382813 1.5 0.855469 1.5 s 0.855469 -0.671875 0.855469 -1.5 c 0 -0.832031 -0.382813 -1.5 -0.855469 -1.5 s -0.855469 0.667969 -0.855469 1.5 z m 0 0"/>
<path d="m 97.230469 48.972656 c 0 0.828125 0.316406 1.5 0.710937 1.5 c 0.394532 0 0.710938 -0.671875 0.710938 -1.5 s -0.316406 -1.5 -0.710938 -1.5 c -0.394531 0 -0.710937 0.671875 -0.710937 1.5 z m 0 0"/>
<path d="m 98.773438 53.8125 c 0 0.828125 0.230468 1.5 0.507812 1.5 c 0.28125 0 0.507812 -0.671875 0.507812 -1.5 s -0.226562 -1.5 -0.507812 -1.5 c -0.277344 0 -0.507812 0.671875 -0.507812 1.5 z m 0 0"/>
</g>
<g clip-path="url(#j)" mask="url(#i)" transform="matrix(1 0 0 1 -8 -16)">
<path d="m 72 66 c -19.882812 0 -36 16.117188 -36 36 v 2 c 0 -19.882812 16.117188 -36 36 -36 s 36 16.117188 36 36 v -2 c 0 -19.882812 -16.117188 -36 -36 -36 z m 0 0" fill="#241f31"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 11 KiB

View file

@ -0,0 +1,21 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg height="16px" viewBox="0 0 16 16" width="16px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<filter id="a" height="100%" width="100%" x="0%" y="0%">
<feColorMatrix in="SourceGraphic" type="matrix" values="0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0"/>
</filter>
<mask id="b">
<g filter="url(#a)">
<rect fill-opacity="0.3" height="16" width="16"/>
</g>
</mask>
<clipPath id="c">
<rect height="152" width="192"/>
</clipPath>
<g clip-path="url(#c)" mask="url(#b)" transform="matrix(1 0 0 1 -168 -16)">
<path d="m 72 66 c -19.882812 0 -36 16.117188 -36 36 v 2 c 0 -19.882812 16.117188 -36 36 -36 s 36 16.117188 36 36 v -2 c 0 -19.882812 -16.117188 -36 -36 -36 z m 0 0" fill="#241f31"/>
</g>
<g fill="#241f31">
<path d="m 3 3.855469 l -2.84375 4.925781 c -0.2304688 0.398438 -0.09375 0.90625 0.304688 1.132812 l 7.941406 4.585938 l 4 -6.929688 l -4.402344 -2.542968 v 4.140625 c 0 1 -0.832031 1.832031 -1.828125 1.832031 h -1.339844 c -1 0 -1.832031 -0.832031 -1.832031 -1.832031 z m 10.269531 4.214843 l -4 6.929688 l 1.011719 0.585938 c 0.398438 0.230468 0.90625 0.09375 1.136719 -0.304688 l 3.167969 -5.492188 c 0.230468 -0.394531 0.09375 -0.902343 -0.304688 -1.132812 z m 0 0"/>
<path d="m 4.832031 0 c -0.460937 0 -0.832031 0.371094 -0.832031 0.832031 v 8.335938 c 0 0.460937 0.371094 0.832031 0.832031 0.832031 h 1.335938 c 0.460937 0 0.832031 -0.371094 0.832031 -0.832031 v -8.335938 c 0 -0.460937 -0.371094 -0.832031 -0.832031 -0.832031 z m 0.667969 7.5 c 0.277344 0 0.5 0.222656 0.5 0.5 s -0.222656 0.5 -0.5 0.5 s -0.5 -0.222656 -0.5 -0.5 s 0.222656 -0.5 0.5 -0.5 z m 0 0"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.7 KiB

31
data/meson.build Normal file
View file

@ -0,0 +1,31 @@
install_data('dev.alextren.Spot.desktop',
install_dir: get_option('datadir') / 'applications'
)
install_subdir('hicolor',
install_dir: get_option('datadir') / 'icons'
)
install_data('dev.alextren.Spot.appdata.xml',
install_dir: get_option('datadir') / 'appdata'
)
install_data('dev.alextren.Spot.gschema.xml',
install_dir: get_option('datadir') / 'glib-2.0/schemas'
)
compile_schemas = find_program('glib-compile-schemas', required: true)
if compile_schemas.found()
test('Validate schema file', compile_schemas,
args: ['--strict', '--dry-run', meson.current_source_dir()]
)
endif
appstream_util = find_program('appstream-util', required: false)
if appstream_util.found()
test(
'Validate appstream appdata',
appstream_util,
args: ['validate-relax', meson.current_source_dir() / 'dev.alextren.Spot.appdata.xml']
)
endif