¿Existe un selector de color que funcione con Wayland o XWayland?

¿Existe un selector de color que funcione con Wayland o XWayland?

Probé gpick, gcolor2, gcolor3,elegir,picroy ninguno de ellos parece funcionar con Wayland. Estoy ejecutando Arch Linux de 64 bits con GNOME 3.22.1 a través de XWayland (predeterminado desde 3.22.x). No quiero cambiar a una sesión X solo para elegir un color.

¿Alguien tuvo éxito con esto?

Respuesta1

severoes una herramienta de captura de pantalla para Wayland que puede hacer eso:

grim -g "$(slurp -p)" -t ppm - | convert - -format '%[pixel:p{0,0}]' txt:-

Después de seleccionar un punto en la pantalla con el mouse, se produce un resultado como este:

# ImageMagick pixel enumeration: 1,1,65535,srgb
0,0: (40,85,119)  #285577  srgb(40,85,119)

Respuesta2

Para gnome/wayalnd puedes usar la API de dbus:

gdbus call --session --dest org.gnome.Shell.Screenshot --object-path /org/gnome/Shell/Screenshot --method org.gnome.Shell.Screenshot.PickColor

Respuesta3

Ampliando@sigmasdLa respuesta es que tengo este script BASH llamado colorpickerque tiene un selector de GUI y funciona para Wayland/Ubuntu 22.04:

#!/bin/bash

# Get the gdbus output
output=$(gdbus call --session --dest org.gnome.Shell.Screenshot --object-path /org/gnome/Shell/Screenshot --method org.gnome.Shell.Screenshot.PickColor)
colors=($(echo $output | command grep -o "[0-9\.]*"))

# Convert to 255-based RGB format
for ((i = 0; i < ${#colors[@]}; i++)); do
    colors[$i]=$(printf '%.0f' $(echo "${colors[$i]} * 255" | bc))
done

echo   "RGB: ${colors[0]} ${colors[1]} ${colors[2]}"
printf "HEX: #%02x%02x%02x\n" "${colors[0]}" "${colors[1]}" "${colors[2]}"

Uso de ejemplo:

./colorpicker
RGB: 255 255 255
HEX: #ffffff

Respuesta4

Hay un administrador de fondos de pantalla azote para wayland y tiene un selector de color incorporado. https://github.com/nwg-piotr/azote

También puedes usar:

sombrío -g "$(sorber -p)" -t ppm - | convertir - -formato '%[pixel:p{0,0}]' texto:-

o si estás usando sway wm:

swaynag -t advertencia -m "$(grim -g "$(slurp -p)" -t ppm - | convert - -format '%[pixel:p{0,0}]' txt:-)"

información relacionada