The Minecraft Grub Theme Trio:
| > Minecraft Main Menu < | Minecraft World Selection Menu | Using both themes together |
|---|---|---|
There is also a Spanish translation now!
A Grub Theme in the style of Minecraft!

Note: grub vs grub2
- If you have a
/boot/grub2folder instead of a/boot/grubfolder , you need to adjust the file paths mentioned here and in theminegrub-update.servicefile- Also if you're not sure, run
grub-mkconfig -Vto check if you have grub version 2 (you should have)
git clone https://github.com/Lxtharia/minegrub-theme.git
./choose-background.sh # or just copy a custom image to minegrub/background.png
minegrub/backgrounds/. You can find some options in background_options/ but you can also use your own images.If you do not want to use the update script or if you always want to use the same background, you can use ./choose-background.sh or just copy a custom image to minegrub/background.png
Copy the folder to your boot partition: (for your interest: -ruv = recursive, update, verbose)
cd ./minegrub-theme
sudo cp -ruv ./minegrub /boot/grub/themes/
/etc/default/grub with your text editor and change/uncomment this line:GRUB_THEME=/boot/grub/themes/minegrub/theme.txt
sudo grub-mkconfig -o /boot/grub/grub.cfgConfiguration section if you want to auto-update the splash text, the background and the packages display after every bootsudo ./install_theme.sh
This is a minimal example
# flake.nix
{
inputs.minegrub-theme.url = "github:Lxtharia/minegrub-theme";
# ...
outputs = {nixpkgs, ...} @ inputs: {
nixosConfigurations.HOSTNAME = nixpkgs.lib.nixosSystem {
modules = [
./configuration.nix
inputs.minegrub-theme.nixosModules.default
];
};
}
}
# configuration.nix
{ pkgs, ... }: {
boot.loader.grub = {
minegrub-theme = {
enable = true;
splash = "100% Flakes!";
background = "background_options/1.8 - [Classic Minecraft].png";
boot-options-count = 4;
};
# ...
};
}
/boot/grub/themes/minegrub/theme.txtcp -r))theme.txt, so you should be able to easily change it to the correct value.The update_theme.py script chooses a random line from assets/splashes.txt and generates and replaces the logo.png which holds the splash text, as well as updates the amount of packages currently installed. It also randomly chooses a file from backgrounds/ (ignoring hidden files beginning with a dot) as the background image.
- Make sure fastfetch or neofetch is installed
- Make sure Python 3 (or an equivalent) and the Pillow python package are installed
- Install Pillow either with the python-pillow package from the AUR or with
sudo -H pip3 install pillow
- It's important to use sudo -H, because it needs to be available for the root user
- To add new splash texts simply edit ./minegrub/assets/splashes.txt and add them to the file.
- Put all backgrounds you want to randomly choose from in ./minegrub/backgrounds/. Hidden files (i.e. filenames beginning with a dot) will be ignored. You can also add your own images.
- If you want to get a specific splash and/or background for the next boot, run python update_theme.py [BACKGROUND_FILE [SPLASH]], e.g. python update_theme.py 'backgrounds/1.15 - [Buzzy Bees].png' 'Splashing!'
- Empty string parameters will be replaced by a random choice, e.g. python update_theme.py '' 'Splashing!' for a random background and the splash Splashing!.
python /boot/grub/themes/minegrub/update_theme.py (from anywhere) after boot using whatever method works for you./minegrub-SysVinit.sh under /etc/init.d as minecraft-grub then run update-rc.d minecraft-grub defaults as root privileges:sudo cp -v "./minegrub-SysVinit.sh" "/etc/init.d/minecraft-grub"
sudo chmod u+x "/etc/init.d/minecraft-grub" # Just to be sure the permissions are set correctly.
sudo update-rc.d minecraft-grub defaults
./minegrub-update.service to use /boot/grub2/ on line 5 if applicable./minegrub-update.service to /etc/systemd/systemsystemctl enable minegrub-update.servicesystemctl status minegrub-update.service for any errors (for example if pillow isn't installed in the correct scope)When in grub, pressing 'c' opens the grub console.
If you want that console to have a background you can specify GRUB_BACKGROUND=<path> in /etc/defaults/grub
Though this doesn't work if a theme is set, so you first need to change a line in a grub file. This can be done by running this pretty looking sed command:
# Create a backup of the file first
cp /etc/grub.d/00_header ./00_header.bak
# replace the elif in that line with an fi; if
sed --in-place -E 's/(.*)elif(.*"x\$GRUB_BACKGROUND" != x ] && [ -f "\$GRUB_BACKGROUND" ].*)/\1fi; if\2/' /etc/grub.d/00_header
Now you can set
GRUB_BACKGROUND="/boot/grub/themes/minegrub/dirt.png"
And don't forget to regenerate the grub.cfg :)
GRUB_TIMEOUT_STYLE in the defaults/grub file should be set to menu, so it immediately shows the menu (else you would need to press ESC and you dont want that)Font downloaded from https://www.fontspace.com/minecraft-font-f28180 and used for non commercial use.
$ claude mcp add minegrub-theme \
-- python -m otcore.mcp_server <graph>