我用堆栈交换中的随机代码将其破解我希望有人能真正编写脚本来查看它,并让我知道我还需要对它做什么。
这个脚本的目标,
- 查看文件夹(或递归子文件夹(中的*.webm文件
- 随便挑一个
- 将文件复制并重命名为硬编码的名称和位置(Steam Deck的自定义启动动画文件夹(
脚本的另一个目标是,在@reboot/或系统正常运行时间+x上作为cron作业运行(需要测试steamdeck如何处理@reboot-chron作业(,以便每次steamdeckboot时,它都会更改为引导动画的随机集合
#!/usr/bin/env bash
shopt -s nullglob
files=(*.webm)
shopt -u nullglob
if [[ ${#files[@]} -eq 0 ]]; then
echo "No matching files!"
exit
fi
file=${files[$((RANDOM % ${#files[@]}))]}
cp "$file" ~/.local/share/Steam/steamui/overrides/movies/deck_startup.webm
end
我想有一个硬盘位置来存储引导动画(~/.local/bootanimations(
提前感谢,这显然超出了我的技能水平(我确信我的脚本是错误的(,但我正在边学习边学习,所以为我分解它并向我指出我需要查看的资源是非常非常受欢迎的
编辑:根据反馈更新,以更加清晰并删除代码中的冗余
第2版:使用systemd用户计时器而不是cron,以下的解决方案
turn on user timer
-------------------------
systemctl --user enable rba.timer
-------------------------
/home/deck/.config/systemd/user/rba.timer
-------------------------
[Unit]
Description=Random Boot Animation Timer
[Timer]
OnBootSec=5min
[Install]
WantedBy=timers.target
-------------------------
/home/deck/.config/systemd/user/rba.service
-------------------------
[Unit]
Description=service for timer
[Service]
Type=simple
ExecStart=/home/user/.config/systemd/user/rba.sh
-------------------------
/home/deck/.config/systemd/user/rba.sh
-------------------------
#!/usr/bin/env bash
shopt -s nullglob
files=(/home/deck/.local/bootanimations/*.webm)
shopt -u nullglob
if [[ ${#files[@]} -eq 0 ]]; then
echo "No matching files!"
exit
fi
file=${files[$((RANDOM % ${#files[@]}))]}
cp "$file" ~/.local/share/Steam/steamui/overrides/movies/deck_startup.webm
目标是专门使用计时器还是在启动时激活?目前还不清楚你这样做是否是为了学习计时器。
如果只是在启动时工作,请将其添加到您的服务文件中:
[Install]
WantedBy=default.target
如果你想在Steam Deck切换到桌面模式时运行服务,你可以添加:
[Install]
WantedBy=default.target
WantedBy=graphical-session.target
此外,如果在.service文件中包含上述内容,则不必将.service文档放在.config/systemd/[…]位置。当您systemctl --user enable /path/to/rba.service
时,它将自动为预期目标在正确的systemd文件夹中创建正确的符号链接。systemctl --user disable rba.service
将为您删除符号链接。
在我自己的代码中,我还没有将graphical-session.target添加到主分支中,但如果你想查看我的随机化器系统,请告诉我。你的目标似乎是学习更多,而不仅仅是完成它,不想通过爆破链接来超越它。
这是我用来学习如何构建.service单元文件的内容:https://wiki.archlinux.org/title/systemd
此外,还有一些一般性建议。您可以创建一个指向uioverrides/movies/deck_startup.webm位置的符号链接,而不是完整的cp。这样你就不会真正移动文件,你的视频文件可以准确地留在原地!