如何自动更改壁纸?

如何自动更改壁纸?

我找到了一个指南,但不确定它是否有效或是否可以安全使用。该指南:http://www.linuxandubuntu.com/home/how-to-automatically-change-gnome-background-in-intervals-using-bash

我想问的是,这些介绍是否安全并且有效?如果不安全,还有其他解决方案吗?

我正在使用 Ubuntu 20.04 LTS

谢谢。

答案1

当我在 GNOME SHELL 3.36.6 中测试时,该脚本有效

[admin@ADMIN ~]$ gnome-shell --version
GNOME Shell 3.36.6
[admin@ADMIN ~]$ 

以下是我的文件下修改的内容$HOME/.profile

# start my custom script for setting random background wallpapers
if [ -f "$HOME/wp.sh" ] ; then
    bash $HOME/wp.sh &
fi

以下是我的文件下修改的内容$HOME/wp.sh

#!/bin/bash
# script to set random background wallpapers on my GNOME desktop
# set base path
export wallpaper_path=/home/admin/Pictures
shopt -s nullglob
# store all the image file names in wallpapers array
wallpapers=(
    "$wallpaper_path"/*.jpg
    "$wallpaper_path"/*.jpeg
    "$wallpaper_path"/*.png
    "$wallpaper_path"/*.bmp
    "$wallpaper_path"/*.svg
)
# get array size
wallpapers_size=${#wallpapers[*]}

# set wallpapers in incremental order
index=0
while [ $index -lt $wallpapers_size ]
do
    gsettings set org.gnome.desktop.background picture-uri "${wallpapers[$index]}"
    # index is maxing out, so reset it
    if [ $(($index+1)) -eq $wallpapers_size ]
    then
        index=0
    else
        index=$(($index + 1))
    fi
    # keep the wallpaper for the specified time
    sleep 1m
done

壁纸按预期每隔 1 分钟更换一次。

答案2

gsettings list-recursively org.gnome.desktop.background

检查当前设置

org.gnome.desktop.background color-shading-type 'solid'
org.gnome.desktop.background picture-opacity 100
org.gnome.desktop.background picture-options 'zoom'
org.gnome.desktop.background picture-uri 'file:///home/dragon/.config/variety/wallpaper/wallpaper-clock-cf2949fe1879b8c3ec551eca76b4f396.jpg'
org.gnome.desktop.background picture-uri-dark 'file:///home/dragon/.local/share/backgrounds/2022-12-19-00-32-40-wd-wallhaven-wallhaven-l3zmwy.jpg'
org.gnome.desktop.background primary-color '#000000000000'
org.gnome.desktop.background secondary-color '#000000000000'
org.gnome.desktop.background show-desktop-icons true

您可能会看到两个不同的壁纸文件位置。添加额外的重复行,它也会在暗模式下更改桌面背景

gsettings set org.gnome.desktop.background picture-uri-dark "${wallpapers[$index]}"

答案3

另一种方法是定义自定义 XML 文件并将其提供给壁纸设置。无需复杂的crontab东西。只需让标准壁纸应用程序发挥它的魔力。

这需要一个名为“Gnome tweaks”的工具来指向这个新创建的 XML 文件。

(附注:这也是 Shotwell 可以为您做的事情,但是,它会将文件复制到新位置,在我看来,这不是最佳位置......肖特韦尔网站

$> sudo apt install gnome-tweaks

然后创建一个 bash 脚本。该脚本可以放在你的~/bin文件夹中(例如/home/martin/bin/create-slideshow),这样在使用终端时可以从任何位置访问它:

  martin@ubuntu:~> create-slideshow

您还可以在文件中添加一个调用~/.profile,以便每次登录时运行它。(使用编辑器或仅运行下面的语句一次)。

  martin@ubuntu:~> echo '~/bin/create-slideshow' >> ~/.profile
# Change these parameters to change the location of your images and duration

FOLDERNAME=~/Pictures/Wallpapers/Slideshow
CONFIG_FILE=slideshow.xml
DURATION=30
TRANSITION_TIME=2

# Use a HEREDOC to create the first fixed part of the XML
cat << PREAMBLE > $CONFIG_FILE
<background>
  <starttime>
    <year>2000</year>
    <month>01</month>
    <day>01</day>
    <hour>00</hour>
    <minute>00</minute>
    <second>00</second>
  </starttime>
PREAMBLE
  
previousfile=""

for filename in $FOLDERNAME/*.{jpg,png,jpeg} ; do
  fullpath=$filename
  
  if [ -f "$fullpath" ] ; then
      # the next statement might help in some cases!
      # chmod a-w "$fullpath"
      
      if [ "$previousfile" != "" ]; then 
          echo "<transition>" >> $CONFIG_FILE
          echo "  <duration>$TRANSITION_TIME.00</duration>" >> $CONFIG_FILE
          echo "  <from>$previousfile</from>" >> $CONFIG_FILE
          echo "  <to>$fullpath</to>" >> $CONFIG_FILE
          echo "</transition>" >> $CONFIG_FILE
      fi 

      echo "<static>" >> $CONFIG_FILE
      echo "  <duration>$DURATION.00</duration>" >> $CONFIG_FILE
      echo "  <file>$fullpath</file>" >> $CONFIG_FILE
      echo "</static>" >> $CONFIG_FILE
      

      previousfile=$fullpath
  fi
done
echo "</background>" >> $CONFIG_FILE

将上述脚本的内容复制到文件夹后~/bin,使其可执行:

  martin@ubuntu:~> chmod u+x ~/bin/create-slideshow

可以使用前四个变量来修改脚本的行为。

然后打开 Gnome Tweak 工具。转到可以设置主题和背景的部分,使用文件选择器选择 XML,而不是图像文件。(抱歉,这里只有荷兰语 GUI,因此屏幕截图没什么用)。另请参阅说明这里在帮助 Ubuntu。

答案4

相关内容