Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/CI.yml
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ jobs:
uses: flatpak/flatpak-github-actions/flatpak-builder@v6
with:
bundle: cherrypick.flatpak
manifest-path: io.github.elly_code.cherrypick.yml
manifest-path: io.github.ellie_commons.cherrypick.yml
run-tests: true
repository-name: appcenter
repository-url: https://flatpak.elementary.io/repo.flatpakrepo
Expand Down
10 changes: 5 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,20 +3,20 @@
<img alt="An icon of an eyedropper with a rainbow circle in the background" src="data/icons/png/128.png">
<h1>Cherrypick</h1>
<h3>Cherry-pick colors on your screen</h3>
<span align="center"> <img class="center" src="https://github.com/elly-code/cherrypick/blob/main/data/screenshots/window-light.png" alt="A screenshot of a window with a side displaying options and the other a single solid color"></span>
<span align="center"> <img class="center" src="https://github.com/ellie-commons/cherrypick/blob/main/data/screenshots/window-light.png" alt="A screenshot of a window with a side displaying options and the other a single solid color"></span>
</div>

<a href="https://elementary.io">
<img src="https://elly-code.github.io/community-badge.svg" alt="Made for elementary OS">
<img src="https://ellie-commons.github.io/community-badge.svg" alt="Made for elementary OS">
</a>

## Installation

Cherrypick is designed and developed primarily for [elementary OS]. The latest stable release is available via AppCenter.

[![Get it on AppCenter](https://appcenter.elementary.io/badge.svg?new)](https://appcenter.elementary.io/io.github.elly_code.cherrypick)
[![Get it on AppCenter](https://appcenter.elementary.io/badge.svg?new)](https://appcenter.elementary.io/io.github.ellie_commons.cherrypick)

[<img src="https://flathub.org/assets/badges/flathub-badge-en.svg" width="160" alt="Download on Flathub">](https://flathub.org/apps/io.github.elly_code.cherrypick)
[<img src="https://flathub.org/assets/badges/flathub-badge-en.svg" width="160" alt="Download on Flathub">](https://flathub.org/apps/io.github.ellie_commons.cherrypick)



Expand All @@ -35,7 +35,7 @@ and run the following command:
### On elementary OS or with its appcenter remote installed

```bash
flatpak-builder --force-clean --user --install-deps-from=appcenter --install builddir ./io.github.elly_code.cherrypick.yml
flatpak-builder --force-clean --user --install-deps-from=appcenter --install builddir ./io.github.ellie_commons.cherrypick.yml
```

### On other systems:
Expand Down
25 changes: 25 additions & 0 deletions data/Application.css
Original file line number Diff line number Diff line change
@@ -1,6 +1,31 @@
/*
* Copyright (c) 2025-2026 Stella (teamcons on GitHub)
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public
* License as published by the Free Software Foundation; either
* version 3 of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public
* License along with this program; if not, write to the
* Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
* Boston, MA 02110-1301 USA
*/

.color-preview {
/* preview_color defined in code */
background-color: @preview_color;
box-shadow: inset 1px 0 0 0 shade(@preview_color, 1.07);
}

/* Devel builds get these. Libadwaita has that too, but we do not use it. */
window.devel {
border-style: solid;
border-width: 3px;
border-color: @warning_color;
}
6 changes: 3 additions & 3 deletions data/cherrypick.desktop.in → data/cherrypick.desktop.in.in
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@ GenericName=Color Picker
Comment=Pick colors on your screen
Categories=Graphics;Utility;

Icon=io.github.elly_code.cherrypick
Exec=io.github.elly_code.cherrypick
Icon=@APP_ID@
Exec=@APP_ID@
SingleMainWindow=true
Terminal=false
Keywords=Color;Pick;Eyedropper;Picker;
Expand All @@ -16,4 +16,4 @@ Actions=ImmediatelyPick;
[Desktop Action ImmediatelyPick]
Name=Pick a color
Icon=color-picker
Exec=io.github.elly_code.cherrypick --immediately-pick
Exec=@APP_ID@ --immediately-pick
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8" ?>
<gresources>
<gresource prefix="/io/github/elly_code/cherrypick">
<gresource prefix="@APP_PATH@">
<file alias="Application.css">Application.css</file>
</gresource>
</gresources>
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<schemalist>
<enum id="io.github.elly_code.cherrypick.format">
<enum id="@APP_ID@.format">
<value value="0" nick="hex"/>
<value value="1" nick="rgb"/>
<value value="2" nick="rgba"/>
Expand All @@ -9,7 +9,7 @@
<value value="5" nick="hsla"/>
</enum>

<schema path="/io/github/elly_code/cherrypick/" id="io.github.elly_code.cherrypick">
<schema path="@APP_PATH@" id="@APP_ID@">
<key name="color-history" type="as">
<!-- Setting default to some of the colors from elementary palette -->
<default>["rgba(237, 83, 83, 1)", "rgba(243, 115, 41, 1)", "rgba(249, 196, 64, 1)", "rgba(155, 219, 77, 1)", "rgba(165, 109, 226, 1)"]</default>
Expand All @@ -22,7 +22,7 @@
<summary>Color history</summary>
<description>The rgba values for saved snapshot</description>
</key>
<key name="color-format" enum="io.github.elly_code.cherrypick.format">
<key name="color-format" enum="@APP_ID@.format">
<default>"rgba"</default>
<summary>Color format</summary>
<description>Last selected color format</description>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<component type="desktop-application">
<id>io.github.elly_code.cherrypick</id>
<name>Cherrypick</name>
<id>@APP_ID@</id>
<name>@APP_NAME@</name>
<summary>Pick colors on your screen</summary>
<launchable type="desktop-id">io.github.elly_code.cherrypick.desktop</launchable>
<launchable type="desktop-id">@APP_ID@.desktop</launchable>
<metadata_license>CC-BY-4.0</metadata_license>
<project_license>GPL-3.0-or-later</project_license>

Expand All @@ -20,15 +20,15 @@
</description>

<provides>
<id>io.github.ellie_commons.cherrypick</id>
<binary>io.github.ellie_commons.cherrypick</binary>
<id>@ALTERNATE_ID@</id>
<binary>@ALTERNATE_ID@</binary>
</provides>
<replaces>
<id>io.github.ellie_commons.cherrypick</id>
<id>@ALTERNATE_ID@</id>
</replaces>

<content_rating type="oars-1.1"/>
<translation type="gettext" source_locale="en_GB">io.github.elly_code.cherrypick</translation>
<translation type="gettext">@GETTEXT_PACKAGE@</translation>
<recommends>
<control>pointing</control>
<control>touch</control>
Expand All @@ -37,24 +37,24 @@
<developer id="io.github.elly-code">
<name>PhoneyBadger + Stella and Charlie</name>
</developer>
<project_group>elly-code</project_group>
<project_group>ellie-commons</project_group>
<url type="homepage">https://github.com/elly-code/cherrypick</url>
<url type="bugtracker">https://github.com/elly-code/cherrypick/issues</url>
<url type="help">https://github.com/elly-code/cherrypick/issues</url>
<url type="donation">https://ko-fi.com/teamcons</url>
<url type="donation">https://ko-fi.com/teamcons/tip</url>
<url type="vcs-browser">https://github.com/elly-code/cherrypick</url>

<screenshots>
<screenshot type="default">
<caption>Cherrypick's main window</caption>
<image>
https://github.com/elly-code/cherrypick/blob/main/data/screenshots/window-light.png?raw=true
<image>https://raw.githubusercontent.com/elly-code/cherrypick/@APP_VERSION@/data/screenshots/window-light.png</image>
</image>
</screenshot>
<screenshot>
<caption>Main window with dark theme</caption>
<image>
https://github.com/elly-code/cherrypick/blob/main/data/screenshots/window-dark.png?raw=true
<image>https://raw.githubusercontent.com/elly-code/cherrypick/@APP_VERSION@/data/screenshots/window-dark.png</image>
</image>
</screenshot>
</screenshots>
Expand All @@ -65,6 +65,14 @@
</branding>

<releases>
<release date="2026-04-14" version="2.4.0">
<description>
<ul>
<li>Fixed broken translations</li>
<li>Update for german and french</li>
</ul>
</description>
</release>
<release date="2026-01-13" version="2.3.0">
<description>
<ul>
Expand Down Expand Up @@ -114,7 +122,7 @@
<li>App now works on ARM thanks to @ryonakano!</li>
<li>Add the ability to immediately pick and copy to clipboard</li>
<li>You can right-click on app icon and choose "Immediately pick"</li>
<li>Or set a keybind to "flatpak run io.elly_code.cherrypick --immediately-pick"</li>
<li>Or set a keybind to "flatpak run io.ellie_commons.cherrypick --immediately-pick"</li>
<li>Updated deprecated widgets</li>
<li>Minute tweaks by @ryonakano thanks again!</li>
</ul>
Expand All @@ -139,43 +147,5 @@
</ul>
</description>
</release>
<release date="2022-07-03" version="1.1.0">
<description>
<p>Add command line flag to open directly in color picking mode</p>
</description>
</release>
<release date="2022-06-18" version="1.0.4">
<description>
<ul>
<li>Fix layout bug when opening multiple instances</li>
<li>Make pick color button the default focused widget</li>
<li>Remove payment option from appcenter</li>
</ul>
</description>
</release>
<release date="2022-06-08" version="1.0.3">
<description>
<ul>
<li>Update to elementary platform 7</li>
<li>Minor change to app description</li>
</ul>
</description>
</release>
<release date="2022-05-30" version="1.0.2">
<description>
<p>Fix inaccuracies in metadata</p>
</description>
</release>
<release date="2022-05-29" version="1.0.1">
<description>
<p>Add stripe key</p>
</description>
</release>
<release date="2022-05-29" version="1.0.0">
<description>
<p>Initial release</p>
</description>
</release>
</releases>

</component>
116 changes: 88 additions & 28 deletions data/meson.build
Original file line number Diff line number Diff line change
@@ -1,37 +1,40 @@
# Install GSettings schema
install_data (
'cherrypick.gschema.xml',
install_dir: get_option('datadir') / 'glib-2.0' / 'schemas',
rename: meson.project_name() + '.gschema.xml'


gresource_conf = configuration_data()
gresource_conf.set('APP_PATH', app_path)
gresource_file = configure_file(
input: 'cherrypick.gresource.xml.in',
output: 'cherrypick.gresource.xml',
configuration: gresource_conf,
)

# Include the translations module
i18n = import('i18n')
gresource = gnome.compile_resources(
'gresource',
gresource_file,
source_dir: 'data'
)

# Set our translation domain
add_global_arguments('-DGETTEXT_PACKAGE="@0@"'.format (meson.project_name()), language:'c')

#Translate and install our .desktop file
i18n.merge_file(
input: 'cherrypick.desktop.in',
output: meson.project_name() + '.desktop',
po_dir: meson.project_source_root() / 'po',
type: 'desktop',
install: true,
install_dir: get_option('datadir') / 'applications'
gschema_conf = configuration_data()
gschema_conf.set('APP_ID', app_id)
gschema_conf.set('APP_PATH', app_path)
gschema_file = configure_file(
input: 'cherrypick.gschema.xml.in',
output: app_id + '.gschema.xml',
configuration: gschema_conf,
)

#Translate and install our .metainfo file
i18n.merge_file(
input: 'cherrypick.metainfo.xml.in',
output: meson.project_name() + '.metainfo.xml',
po_dir: meson.project_source_root() / 'po',
install: true,
install_dir: get_option('datadir') / 'metainfo'
install_data(
gschema_file,
install_dir: get_option('datadir') / 'glib-2.0' / 'schemas',
)

compile_schemas = find_program('glib-compile-schemas', required: false, disabler: true)
test('Validate schema file',
compile_schemas,
args: ['--strict', '--dry-run', meson.current_source_dir()],
)

# Compile and install custom css file
gnome = import('gnome')

#picker_resources = gnome.compile_resources(
# 'picker-resources',
Expand All @@ -47,12 +50,69 @@ foreach i : icon_sizes
install_data(
'icons' / 'png' / i + '.png',
install_dir: get_option('datadir') / 'icons' / 'hicolor' / i + 'x' + i / 'apps',
rename: meson.project_name() + '.png'
rename: app_id + '.png'
)
# HiDPI
install_data(
'icons' / 'png' / i + '@2x' + '.png',
install_dir: get_option('datadir') / 'icons' / 'hicolor' / i + 'x' + i + '@2' / 'apps',
rename: meson.project_name() + '.png'
rename: app_id + '.png'
)
endforeach


# Inject some variables into the desktop file before merging in the translations
desktop_conf = configuration_data()
desktop_conf.set('APP_NAME', app_name)
desktop_conf.set('APP_ID', app_id)
desktop_file_in = configure_file(
input: 'cherrypick.desktop.in.in',
output: app_id + '.desktop.in',
configuration: desktop_conf,
)

desktop_file = i18n.merge_file(
input: desktop_file_in,
output: app_id + '.desktop',
po_dir: meson.project_source_root() / 'po' / 'extra',
type: 'desktop',
install: true,
install_dir: get_option('datadir') / 'applications',
)


# Inject some variables into the metainfo file before merging in the translations
appstream_conf = configuration_data()
appstream_conf.set('APP_NAME', app_name)
appstream_conf.set('APP_ID', app_id)
appstream_conf.set('APP_VERSION', app_version)
appstream_conf.set('GETTEXT_PACKAGE', gettext_name)
appstream_conf.set('ALTERNATE_APP_ID', alternate_app_id)
appstream_file_in = configure_file(
input: 'cherrypick.metainfo.xml.in.in',
output: app_id + '.metainfo.xml.in',
configuration: appstream_conf,
)

appstream_file = i18n.merge_file(
input: appstream_file_in,
output: app_id + '.metainfo.xml',
po_dir: meson.project_source_root() / 'po' / 'extra',
type: 'xml',
install: true,
install_dir: get_option('datadir') / 'metainfo',
)



# Test definitions
desktop_utils = find_program('desktop-file-validate', required: false)
if desktop_utils.found()
test('Validate desktop file', desktop_utils, args: [desktop_file])
endif

appstreamcli = find_program('appstreamcli', required: false, disabler: true)
test('Validate appstream file',
appstreamcli,
args: ['validate', '--no-net', '--explain', appstream_file],
)
Loading
Loading