Neste exemplo, vamos criar uma aplicação web mais complexa usando HTML, CSS e JavaScript para exibir as imagens contidas em **/usr/share/wallpapers/**
. Ao clicar em uma imagem, comandos do terminal serão executados para definir a imagem como papel de parede no KDE Plasma e no GNOME.
1. Crie um arquivo chamado **wallpapers.sh.htm**
com o seguinte conteúdo:
#!/bin/bash
echo "<!DOCTYPE html>"
echo "<html>"
echo "<head>"
echo "<title>Seletor de Papel de Parede</title>"
echo "<style>"
echo " body { font-family: Arial, sans-serif; }"
echo " .wallpapers { display: flex; flex-wrap: wrap; gap: 16px; }"
echo " .wallpaper { cursor: pointer; width: 200px; height: 112px; object-fit: cover; }"
echo "</style>"
echo "<script>"
echo " function setWallpaper(imagePath) {"
echo " fetch('set_wallpaper.run?image=' + encodeURIComponent(imagePath));"
echo " }"
echo "</script>"
echo "</head>"
echo "<body>"
echo "<h1>Selecione um papel de parede:</h1>"
echo "<div class='wallpapers'>"
for image in /usr/share/wallpapers/*.{jpg,png,jpeg}; do
[ -e "$image" ] || continue
echo "<img class='wallpaper' src='$image' alt='$image' onclick='setWallpaper(\"$image\")' />"
done
echo "</div>"
echo "</body>"
echo "</html>"
2. Crie um arquivo chamado **set_wallpaper.run**
com o seguinte conteúdo:
#!/bin/bash
# KDE Plasma
if [ "$(command -v qdbus)" ]; then
qdbus org.kde.plasmashell /PlasmaShell org.kde.PlasmaShell.evaluateScript "
var allDesktops = desktops();
for (i=0; i<allDesktops.length; i++) {
d = allDesktops[i];
d.wallpaperPlugin = 'org.kde.image';
d.currentConfigGroup = Array('Wallpaper', 'org.kde.image', 'General');
d.writeConfig('Image', '$image');
}
"
fi
# GNOME
if [ "$(command -v gsettings)" ]; then
gsettings set org.gnome.desktop.background picture-uri "file://$image"
fi
3. Torne o arquivo **set_wallpaper.run**
executável:
chmod +x set_wallpaper.run
4. Para executar o script no BigBashView, utilize o comando:
bigbashview wallpapers.sh.htm
Neste exemplo, o script **wallpapers.sh.htm**
cria uma página HTML com uma galeria de imagens que exibe as imagens contidas em **/usr/share/wallpapers/**
. Utilizamos CSS para estilizar a galeria e JavaScript para detectar quando uma imagem é clicada. Quando o usuário clica em uma imagem, a função **setWallpaper()**
é chamada com o caminho da imagem. Essa função faz uma requisição para o arquivo **set_wallpaper.run**
com o caminho da imagem como parâmetro.
O script **set_wallpaper.run**
verifica se o KDE Plasma ou o GNOME estão instalados no sistema e, em seguida, utiliza comandos apropriados para definir a imagem clicada como papel de parede.