Wayland または XWayland で動作するカラーピッカーはありますか?

Wayland または XWayland で動作するカラーピッカーはありますか?

gpick、gcolor2、gcolor3を試してみましたが、選ぶピクロムいずれも Wayland では動作しないようです。私は XWayland (3.22.x 以降のデフォルト) を介して GNOME 3.22.1 を搭載した Arch Linux 64 ビットを実行しています。色を選択するためだけに X セッションに変更したくありません。

これで成功した人はいますか?

答え1

厳しいWayland 用のスクリーンショット ツールで、次のことが可能です。

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

マウスで画面上の点を選択すると、次のような出力が生成されます。

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

答え2

gnome/wayalnd の場合は、dbus API を使用できます。

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

答え3

拡大するフォローの回答として、colorpickerGUI ピッカーを備えた という BASH スクリプトがあり、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]}"

使用例:

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

答え4

WaylandにはAzote壁紙マネージャーがあり、カラーピッカーが組み込まれています。 https://github.com/nwg-piotr/azote

以下も使用できます:

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

または、sway wm を使用している場合:

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

関連情報