Existe um seletor de cores que funciona com Wayland ou XWayland?

Existe um seletor de cores que funciona com Wayland ou XWayland?

Eu tentei gpick, gcolor2, gcolor3,escolha,picrome nenhum deles parece funcionar com Wayland. Estou executando o Arch Linux de 64 bits com GNOME 3.22.1 através do XWayland (padrão desde 3.22.x). Não quero mudar para uma sessão X só para escolher uma cor.

Alguém teve sucesso com isso?

Responder1

sinistroé uma ferramenta de captura de tela para Wayland que é capaz de fazer isso:

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

Depois de selecionar um ponto na tela com o mouse, ele produz uma saída como esta:

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

Responder2

Para gnome/wayalnd você pode usar a API dbus:

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

Responder3

Expandindo@sigmasdresposta, eu tenho esse script BASH chamado colorpickerque possui um seletor de GUI e 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]}"

Exemplo de uso:

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

Responder4

Existe um gerenciador de papel de parede azote para wayland e possui um seletor de cores integrado https://github.com/nwg-piotr/azote

Além disso, você pode usar:

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

ou se você estiver usando o sway wm:

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

informação relacionada