Simple color picker that lets the user create harmonic palettes with ease.

Overview

epick

Build Status

Simple color picker that lets the user create harmonic palettes with ease.

Get it

You can checkout the web demo over here or get a native binary from the GitHub release page.

If you happen to use Arch Linux you can grab epick from AUR using your favorite package manager:

$ paru -S epick

Build

Install required libraries:

$ apt-get install libxcb-render0-dev libxcb-shape0-dev libxcb-xfixes0-dev 

To manually build epick you'll need the latest Rust with cargo. The build command is:

$ cargo build --release

Screenshot

Screenshot of UI

License

GPLv3

Comments
  • Zoom picker is unintuitive to use and/or buggy

    Zoom picker is unintuitive to use and/or buggy

    When I activate the zoom picker, I expect clicking somewhere to set the current color. Instead, the window I click on gets focused (causing epick to lose focus), and the color is not set. My second instinct is to use the color pick shortcut key (p), but that doesn't work if epick is not focused. When the zoom picker is activated, the zoom picker window gets the focus, so epick doesn't receive key events.

    Either clicking should set the color, and/or the color pick shortcut key should work when using the zoom picker, without having to click on the epick window first to focus it.

    System info: Linux X11

    opened by crumblingstatue 7
  • Shortcut key to set picked color to the one under cursor

    Shortcut key to set picked color to the one under cursor

    I couldn't find any such key.

    I would like something to the effect of

    if ctx.input().key_pressed(egui::Key::P) {
        self.picker.set_cur_color(self.display_picker.as_ref().unwrap().get_color_under_cursor().unwrap());
    }
    
    feature 
    opened by crumblingstatue 7
  • Custom color display formats

    Custom color display formats

    Let the user define custom color display formats. For example, when working on an egui project, the user could simply define an egui color format egui::Color32::from_rgb({r}, {g}, {b}), which then can be easily copied to the clipboard with a click.

    The design of the description language is yet to be decided, but I think a very simple basic language should be sufficient, maybe similar to the Rust format syntax.

    Good to have features:

    • [x] saveable across sessions
    • [x] support decimal/hex (maybe octal, etc?) in the format syntax.
    feature 
    opened by crumblingstatue 5
  • Revamp custom color formats

    Revamp custom color formats

    • Normal/custom formats can be selected for display/clipboard separately
    • Custom formats are selectable from the same list as normal ones
    • Dedicated window to overview and manage custom formats
    opened by crumblingstatue 4
  • Crash on start, return code 134

    Crash on start, return code 134

    Hi @wojciechkepka,

    Thanks for sharing your application. I installed it the first time, using Arch Linux, When trying to run I get the following message and the app returns with 134.

    [xcb] Unknown sequence number while processing queue
    [xcb] Most likely this is a multi-threaded client and XInitThreads has not been called
    [xcb] Aborting, sorry about that.
    epick: xcb_io.c:269: poll_for_event: Assertion `!xcb_xlib_threads_sequence_lost' failed.
    [1]    43368 abort (core dumped)  epick
    

    Tried both with and without running a composition manager, picom namely, got the same message and exit code. My window manager is dwm. Please let me know if there's more information I could provide to help debugging.

    Thank you

    upstream os-Linux 
    opened by slve 3
  • Dragging colours around causes a freeze

    Dragging colours around causes a freeze

    I've found that on my machine (Linux/X11) dragging a colour around to reorder it causes the whole application to become unresponsive. This happens on both native and web, premade and from source.

    This isn't an actual crash, there's no panic or logs left behind if running from terminal. It seems to act as if the drag event has stalled the UI - cursor remains in "drag" state, no repaints occur and the rest of the application is totally blocked.

    Please let me know if there's better information I could provide to help debug this. I find this tool very useful for exporting palettes and reordering them in epick UI before export is much nicer than any alternative.

    opened by atagen 2
  • Small improvements

    Small improvements

    • More consistent layout for color indicators
    • Option to auto copy picked color to clipboard when pressing P
    • Let rustfmt format a file

    Here is the new layout: image

    opened by crumblingstatue 1
  • "##" in front of hex codes in exported hex list

    I exported my saved colors and got the following in the .txt file :

    ##ff455e ##bbff45 ##8845ff ##45ffe5

    A single # in front of each color would be better in my opinion.

    bug 
    opened by Athanaze 1
  • Picker button position is dependent on color string before it

    Picker button position is dependent on color string before it

    This can make it hard to click, as demonstrated in this video

    https://user-images.githubusercontent.com/1521976/138553872-9dde54c5-0c63-418d-959a-4f731f631122.mp4

    opened by crumblingstatue 1
  • Add a way to scale the UI

    Add a way to scale the UI

    At this moment egui doesn't expose current monitor size so it is impossible (to my knowledge) to automatically scale thus requiring the user to manually adjust the slider in the settings. The UI scale persists throughout launches as it is saved along with the settings.

    Closes: #50

    opened by vv9k 0
  • Finish fixing zoom picker

    Finish fixing zoom picker

    This PR finally resolves UX issues with zoomed picker on X11 Linux. With current implementation, the main epick window doesn't loose focus when picking colors from other windows.

    I've tested on bspwm and KDE Plasma and both work well! :tada:

    Connected issue: #32

    opened by vv9k 0
  • Shortcut to clear all colors

    Shortcut to clear all colors

    There should be a shortcut to clear all colors that would open a popup asking if colors should be cleared. The same popup should be applied to the Clear colors button.

    opened by vv9k 0
  • Homebrew

    Homebrew

    I have added Homebrew support.

    Instructions for building:

    In /scripts/homebrew

    ./build_homebrew.sh
    

    This script will build the app with cargo and copy it to app/epick.app. Afterwards, epick.app is archived to a .tar.gz.

    The epick.app.tar.gz must then be uploaded somewhere so it can be downloaded, like to GitHub's Releases. When uploaded, copy the link to the file and run

    VERSION={CURRENT_VERSION} URL="{URL}" ./build_cask.sh > path/to/Casks/epick.rb
    

    Where CURRENT_VERSION is the current version of the app (e.g. 0.6.1) and URL is the url of the .tar.gz file.

    Now you will need a repo called homebrew-epick. You can copy mine: https://github.com/Jomy10/homebrew-epick.

    Lastly: replace path/to/Casks/epick.rb with the path to your local copy of the epick.rb of the homebrew-epick repo.

    Now just commit & push to GitHub and you should be able to install epick from Homebrew:

    brew tap vv9k/epick && brew install --cask epick
    
    opened by Jomy10 6
  • Native dialog not working

    Native dialog not working

    The dialog expects a full path to file. If it were to work in the current way with the second Name: input, the show_open_single_dir should be used without the extension filters.

    bug 
    opened by vv9k 0
Releases(0.9.0)
Owner
Wojciech Kępka
Wojciech Kępka
Fusion is a cross-platform App Dev ToolKit build on Rust . Fusion lets you create Beautiful and Fast apps for mobile and desktop platform.

Fusion is a cross-platform App Dev ToolKit build on Rust . Fusion lets you create Beautiful and Fast apps for mobile and desktop platform.

Fusion 1 Oct 19, 2021
🏪 Modern emoji picker popup for desktop, based on Emoji Mart, built with Tauri and Svelte

Emoji Mart desktop popup Modern emoji picker popup app for desktop, based on the amazing Emoji Mart web component. ?? Built as a popup: quick invocati

Vincent Emonet 10 Jul 3, 2023
Create virtual serial ports, connect them to physical serial ports, and create routes between them all.

Virtual Serial Port Router (vsp-router) Create virtual serial ports, connect them to physical serial ports, and create routes between them all. vsp-ro

Rob Donnelly 3 Nov 24, 2022
Searchbuddy is a browser extension that lets you chat with people that are searching for what you're searching for.

searchbuddy Make friends while searching! Searchbuddy is a browser extension that lets you chat with people that are searching for what you're searchi

Joseph Gerber 14 May 23, 2022
An opinionated, practical color management library for games and graphics.

colstodian An opinionated color management library built on top of kolor. Introduction colstodian is a practical color management library for games an

Gray Olson 27 Dec 7, 2022
A lean, minimal, and stable set of types for color interoperation between crates in Rust.

This library provides a lean, minimal, and stable set of types for color interoperation between crates in Rust. Its goal is to serve the same function that mint provides for (linear algebra) math types.

Gray Olson 16 Sep 21, 2022
Rust crate for creating filters with DirectX shaders. Includes Scale, Color conversion using DirectX api.

DxFilter Scale and ColorConversion done with DirectX filters. You can also create your own filters with the provided api. Crate contains various tools

null 4 Aug 13, 2022
Simple fake AWS Cognito User Pool API server for development.

Fakey Cognito ?? Homepage Simple fake AWS Cognito API server for development. ✅ Implemented features AdminXxx on User Pools API. Get Started # run wit

naokirin 4 Aug 30, 2022
A simple script (in Rust lang) to create HTML from SVD

A simple script to create HTML from an SVD file This is a simple script written in Rust language to create a single HTML file from an SVD file. It's r

Björn Quentin 14 Aug 22, 2022
PM-Tools - a simple Rust util to easily create server directories

PM-Tools PM-Tools is a simple Rust util to easily create server directories or plugins without the hassle of unzipping or creating directories Progres

null 2 Mar 19, 2022
Add nice user-facing diagnostics to your errors without being weird about it.

thisdiagnostic is a Rust library for adding rich diagnostic metadata to errors, for some really fancy and customizable error reporting!

Kat Marchán 14 Feb 2, 2022
A program written in Rust, that allows the user to find the current location of the International Space Station and see it on a map.

ISS Location ViewFinder A program written in Rust, that allows the user to find the current location of the International Space Station and see it on

Suvaditya Mukherjee 2 Nov 8, 2021
Take user input in Rust.

Take user input in Rust.

Kutay 0 Jan 25, 2022
Rust library to detect bots using a user-agent string

Rust library to detect bots using a user-agent string

Bryan Morgan 8 Dec 21, 2022
Mount portable directory as consistent user directory.

PortableDesktop Mount portable directory as consistent user directory. PortableDesktopCli help PortableDesktopCli [options] <Target Path> <Link Path>

Kerwin Bryant 3 May 8, 2023
Minimal, flexible & user-friendly X and Wayland tiling window manager with rust

SSWM Minimal, flexible & user-friendly X and Wayland tiling window manager but with rust. Feel free to open issues and make pull requests. [Overview]

Linus Walker 19 Aug 28, 2023
Byte is a blazingly fast🚀 Discord Bot with a user-friendly design using twilight written in rust🦀.

Byte Byte is a blazingly fast?? Discord Bot with a user-friendly design using twilight written in rust??. How To Run There is a public version of the

TakoTheDev 3 Nov 15, 2023
File Tree Fuzzer allows you to create a pseudo-random directory hierarchy filled with some number of files.

FTZZ File Tree Fuzzer allows you to create a pseudo-random directory hierarchy filled with some number of files. Installation $ cargo +nightly install

Alex Saveau 22 Dec 28, 2022
Simple timer for your terminal

consoleTimer Simple timer that allows you to initiate countdown from N seconds. Usage: consoletimer [time in seconds] consoletimer [time in minutes]m

Arthur 20 Apr 4, 2022