Em ambientes baseados em GNOME, no X11, a cor de fundo média do papel de parede pode ser obtida com
xprop -root | grep _GNOME_BACKGROUND_REPRESENTATIVE_COLORS
Ele fornece uma saída como
_GNOME_BACKGROUND_REPRESENTATIVE_COLORS(STRING) = "rgb(65,70,61)"
Este é o método que a Unity usou para fazer com que o painel e o inicializador tivessem a mesma cor do papel de parede.
No entanto, xprop
provavelmente não funciona no Wayland, e _GNOME_BACKGROUND_REPRESENTATIVE_COLORS
não funciona no KDE. Como obter essa cor em todos os ambientes?
Como obter cor de destaque em versões modernas do GNOME? E como fazer isso no KDE e outros DEs?
Quero usar essa cor para fazer com que um aplicativo tenha uma cor de fundo "camaleônica".
Você pode obter o caminho do papel de parede usando comandos como
gsettings get org.gnome.desktop.background picture-uri
(há comandos semelhantes para cinnamon e mate - veja o script bash abaixo).Para o KDE, o caminho do papel de parede é codificado no arquivo
$HOME/.config/plasma-org.kde.plasma.desktop-appletsrc
comoImage=/path/to/wallpaper/top/directory
ouImage=/path/to/wallpaper/file
.Depois de saber a localização do arquivo, use o imagemagick para convertê-lo em uma imagem de pixel redimensionada e obter a cor desse pixel.
O script bash a seguir faz o trabalho.
Declaração: Recebi ajuda do chatgpt para juntar tudo no script bash (usando as ideias que descrevi acima), mas testei e li o código para garantir que funciona.