Repository: kageurufu/steamdeck_startup_animations
Branch: main
Commit: f911b20acfad
Files: 22
Total size: 6.6 KB
Directory structure:
gitextract_6pe7eui1/
├── README.md
├── deck_startup/
│ ├── deck_startup.3ds.webm
│ ├── deck_startup.64dd.webm
│ ├── deck_startup.dreamcast.webm
│ ├── deck_startup.ds.webm
│ ├── deck_startup.dsi.webm
│ ├── deck_startup.gamecube.webm
│ ├── deck_startup.gb.webm
│ ├── deck_startup.gba.webm
│ ├── deck_startup.gbc.webm
│ ├── deck_startup.ps1.webm
│ ├── deck_startup.ps2.webm
│ ├── deck_startup.ps4.webm
│ ├── deck_startup.switch.webm
│ ├── deck_startup.switchfirst.webm
│ ├── deck_startup.x360.webm
│ ├── deck_startup.xbone.webm
│ └── deck_startup.xbox.webm
├── install.sh
├── randomize_deck_startup.service
├── randomize_deck_startup.sh
└── uninstall.sh
================================================
FILE CONTENTS
================================================
================================================
FILE: README.md
================================================
# steamdeck_startup_animations
A collection of steamdeck startup animations, plus a script to randomize your startup on each boot
# So far, I've made boot animations from the following consoles:
* dreamcast
* ps1
* ps2
* ps4
* switch
* gamecube
* ps2
* switchfirst (first boot animation)
* switch (regular boot animation)
* xbox
* xbox 360
* xbox one
# Installation
```sh
curl -o - https://raw.githubusercontent.com/kageurufu/steamdeck_startup_animations/main/install.sh | bash -
```
If you're (justifiably) not a fan of `curl | bash`, you can run this:
```sh
mkdir -p "$HOME/homebrew"
mkdir -p "$HOME/.config/systemd/user"
git clone https://github.com/kageurufu/steamdeck_startup_animations "$HOME/homebrew/startup_animations"
ln -sf "$HOME/homebrew/startup_animations/randomize_deck_startup.service" "$HOME/.config/systemd/user/randomize_deck_startup.service"
systemctl --user daemon-reload
systemctl --user enable --now randomize_deck_startup.service
```
# Uninstallation
```sh
bash $HOME/homebrew/startup_animations/uninstall.sh
```
# Making an animation (somewhat advanced)
I used youtube-dl to grab the best video and audio tracks from youtube, and then ffmpeg to merge them, resizing down to fit the Deck's 1280x800 screen. Then I use `truncate` to make the file the right size.
This all does work on the steamdeck
### Getting the dependencies
```sh
python3 -m ensurepip
~/.local/bin/pip install --user youtube-dl
```
### Creating the animation
```sh
# Get ps1.webm and ps1.m4a. Your file extensions may differ here
~/.local/bin/youtube-dl -f bestvideo -o 'ps1.%(ext)s' https://www.youtube.com/watch?v=1JwbfIi5Uio
~/.local/bin/youtube-dl -f bestaudio -o 'ps1.%(ext)s' https://www.youtube.com/watch?v=1JwbfIi5Uio
# Convert the video from whatever input formats to a webm video in VP9 encoding, with vorbis encoded audio
ffmpeg -i ps1.webm -i ps1.m4a \
-map 0:v:0 -map 1:a:0 \
-filter:v "scale='min(1280,iw)':min'(800,ih)':force_original_aspect_ratio=decrease,pad=1280:800:(ow-iw)/2:(oh-ih)/2" \
-c:v vp9 \
-c:a libvorbis \
my_deck_startup_ps1.webm
# Make sure the generated file is less than 1840847B here
# Mine was `389670`, plenty small enough
stat -c '%s' my_deck_startup_ps1.webm
truncate -s 1840847 my_deck_startup_ps1.webm
```
The ffmpeg command is a bit confusing, so heres a breakdown
* `-i ps1.webm -i ps1.m4a`
Load both the video and audio files we downloaded.
* `-map 0:v:0 -map 1:a:0`
Only use the first video stream from the first file, and first audio stream from the second.
This prevents having multiple video or audio streams in the final file
* `-filter:v "scale='min(1280,iw)':min'(800,ih)':force_original_aspect_ratio=decrease,pad=1280:800:(ow-iw)/2:(oh-ih)/2"`
This is most confusing part, basically we're resizing the video to fit 1280x800
`min'(1280,iw)':min'(800,ih)'` ensures the target size is never upscaled
`force_original_aspect_ratio=decrease` scales to fit within a given size, keeping the original aspect ratio
`pad=1280:800:(ow-iw)/2:(oh-ih)/2` pad the video size to 1280:800, centering the original video. This is optional and I might not use it in the future
* `-c:v vp9 c:a libvorbis` Select our output VP9 / vorbis codecs
================================================
FILE: install.sh
================================================
#!/usr/bin/env bash
# Create required directories
echo ":: Creating required directories"
mkdir -p "$HOME/homebrew"
mkdir -p "$HOME/.config/systemd/user"
# Clone the startup animations repository
if [[ ! -d "$HOME/homebrew/startup_animations" ]]; then
echo ":: Installing to $HOME/homebrew/startup_animations"
git clone https://github.com/kageurufu/steamdeck_startup_animations "$HOME/homebrew/startup_animations"
cd "$HOME/homebrew/startup_animations"
else
echo ":: Updating $HOME/homebrew/startup_animations"
cd "$HOME/homebrew/startup_animations"
git pull
fi
# Install the service file
echo ":: Installing the startup service"
ln -sf "$HOME/homebrew/startup_animations/randomize_deck_startup.service" "$HOME/.config/systemd/user/randomize_deck_startup.service"
systemctl --user daemon-reload
systemctl --user enable --now randomize_deck_startup.service
================================================
FILE: randomize_deck_startup.service
================================================
[Unit]
Description=Randomize deck_startup.webm after boot
[Install]
WantedBy=default.target
[Service]
Type=oneshot
WorkingDirectory=/home/deck/homebrew/startup_animations
# ExecStartPre=/bin/sleep 30
ExecStart=/home/deck/homebrew/startup_animations/randomize_deck_startup.sh
================================================
FILE: randomize_deck_startup.sh
================================================
#!/usr/bin/env bash
Color_Off='\033[0m' # Text Reset
# Regular Colors
Black='\033[0;30m' # Black
Red='\033[0;31m' # Red
Green='\033[0;32m' # Green
Yellow='\033[0;33m' # Yellow
Blue='\033[0;34m' # Blue
Purple='\033[0;35m' # Purple
Cyan='\033[0;36m' # Cyan
White='\033[0;37m' # White
msg() {
echo -e ":: ${*}$Color_Off"
}
msg2() {
echo -e "$Red!!$Color_Off ${*}$Color_Off"
}
DECK_UIOVERRIDES="/home/deck/.steam/root/config/uioverrides"
DECK_UIOVERRIDES_MOVIES="${DECK_UIOVERRIDES}/movies"
DECK_UIOVERRIDES_STARTUP="${DECK_UIOVERRIDES_MOVIES}/deck_startup.webm"
restore_backup() {
DECK_STARTUP_FILE="/home/deck/.steam/steam/steamui/movies/deck_startup.webm"
DECK_STARTUP_STOCK_MD5="4ee82f478313cf74010fc22501b40729"
if [[ -f "$DECK_STARTUP_FILE.backup" ]]; then
checksum="$(md5sum "$DECK_STARTUP_FILE" | cut -d ' ' -f 1)"
if [[ "$checksum" != "$DECK_STARTUP_STOCK_MD5" ]]; then
rm "$DECK_STARTUP_FILE"
mv "$DECK_STARTUP_FILE.backup" "$DECK_STARTUP_FILE"
fi
rm "$DECK_STARTUP_FILE.backup"
fi
}
list_animations() {
find deck_startup/ -type f -iname '*.webm' -print0
}
random_animation() {
mapfile -d $'\0' animations < <(list_animations)
echo "${animations[$RANDOM % ${#animations[@]}]}"
}
restore_backup
animation="$(random_animation)"
msg "Using $animation"
mkdir -p "${DECK_UIOVERRIDES_MOVIES}"
ln -f "$animation" "$DECK_UIOVERRIDES_STARTUP"
================================================
FILE: uninstall.sh
================================================
#!/usr/bin/env bash
if [[ -e "$HOME/.config/systemd/user/randomize_deck_startup.service" ]]; then
echo ":: Removing the boot service"
systemctl --user disable randomize_deck_startup.service
rm "$HOME/.config/systemd/user/randomize_deck_startup.service"
fi
if [[ -f "$HOME/.steam/steam/steamui/movies/deck_startup.webm.backup" ]]; then
echo ":: Restoring deck_startup.webm.backup"
rm "$HOME/.steam/steam/steamui/movies/deck_startup.webm"
mv "$HOME/.steam/steam/steamui/movies/deck_startup.webm.backup" "$HOME/.steam/steam/steamui/movies/deck_startup.webm"
fi
if [[ -L "$HOME/.steam/root/config/uioverrides/movies/deck_startup.webm" ]]; then
rm "$HOME/.steam/root/config/uioverrides/movies/deck_startup.webm"
fi
if [[ -e "$HOME/homebrew/startup_animations" ]]; then
echo ":: Deleting the startup_animations directory"
rm -rf "$HOME/homebrew/startup_animations"
fi
gitextract_6pe7eui1/ ├── README.md ├── deck_startup/ │ ├── deck_startup.3ds.webm │ ├── deck_startup.64dd.webm │ ├── deck_startup.dreamcast.webm │ ├── deck_startup.ds.webm │ ├── deck_startup.dsi.webm │ ├── deck_startup.gamecube.webm │ ├── deck_startup.gb.webm │ ├── deck_startup.gba.webm │ ├── deck_startup.gbc.webm │ ├── deck_startup.ps1.webm │ ├── deck_startup.ps2.webm │ ├── deck_startup.ps4.webm │ ├── deck_startup.switch.webm │ ├── deck_startup.switchfirst.webm │ ├── deck_startup.x360.webm │ ├── deck_startup.xbone.webm │ └── deck_startup.xbox.webm ├── install.sh ├── randomize_deck_startup.service ├── randomize_deck_startup.sh └── uninstall.sh
Condensed preview — 22 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (7K chars).
[
{
"path": "README.md",
"chars": 3255,
"preview": "# steamdeck_startup_animations\nA collection of steamdeck startup animations, plus a script to randomize your startup on "
},
{
"path": "install.sh",
"chars": 872,
"preview": "#!/usr/bin/env bash\n\n# Create required directories\necho \":: Creating required directories\"\nmkdir -p \"$HOME/homebrew\"\nmkd"
},
{
"path": "randomize_deck_startup.service",
"chars": 277,
"preview": "[Unit]\nDescription=Randomize deck_startup.webm after boot\n\n[Install]\nWantedBy=default.target\n\n[Service]\nType=oneshot\nWor"
},
{
"path": "randomize_deck_startup.sh",
"chars": 1463,
"preview": "#!/usr/bin/env bash\n\nColor_Off='\\033[0m' # Text Reset\n\n# Regular Colors\nBlack='\\033[0;30m' # Black\nRed='\\03"
},
{
"path": "uninstall.sh",
"chars": 885,
"preview": "#!/usr/bin/env bash\n\nif [[ -e \"$HOME/.config/systemd/user/randomize_deck_startup.service\" ]]; then\n echo \":: Removing t"
}
]
// ... and 17 more files (download for full content)
About this extraction
This page contains the full source code of the kageurufu/steamdeck_startup_animations GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 22 files (6.6 KB), approximately 2.4k tokens. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.