How to change color of font in grub menu?

Using applications, configuring, problems
Post Reply
Message
Author
scientist
Posts: 860
Joined: Sat 23 May 2015, 08:21

How to change color of font in grub menu?

#1 Post by scientist »

Apparently the writers of grub were rocket scientists. :-)

I simply want to change the default colors for the grub menu.

I am using Ubuntu_Mate.

I consulted the latest tutorials, but am having no luck in changing the colors.

Can some rocket scientist please help me ? :-)

Andy

File name -> 05_debian_theme

#!

Code: Select all

/bin/sh
set -e

# grub-mkconfig helper script.
# Copyright (C) 2010  Alexander Kurtz <kurtz.alex@googlemail.com>
#
# GRUB is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# GRUB is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with GRUB.  If not, see <http://www.gnu.org/licenses/>.

# Include the GRUB helper library for grub-mkconfig.
. /usr/share/grub/grub-mkconfig_lib

# We want to work in /boot/grub/ only.
test -d /boot/grub; cd /boot/grub

# Set the location of a possibly necessary cache file for the background image.
# NOTE: This MUST BE A DOTFILE to avoid confusing it with user-defined images.
BACKGROUND_CACHE=".background_cache"

set_default_theme(){
	case $GRUB_DISTRIBUTOR in
		Tanglu|Ubuntu|Kubuntu)
			# Set a monochromatic theme for Tanglu/Ubuntu.
			echo "${1}set menu_color_normal=white/blue"
			echo "${1}set menu_color_highlight=green/white"

			if [ -e /usr/share/plymouth/themes/default.grub ]; then
				sed "s/^/${1}/" /usr/share/plymouth/themes/default.grub
			fi
			# For plymouth backward compatiblity. Can be removed
			# after xenial.
			if [ -e /lib/plymouth/themes/default.grub ]; then
				sed "s/^/${1}/" /lib/plymouth/themes/default.grub
			fi
			;;
		*)
			# Set the traditional Debian blue theme.
			echo "${1}set menu_color_normal=white/blue"
			echo "${1}set menu_color_highlight=green/white"
			;;
	esac
}

module_available(){
	local module
	for module in "${1}.mod" */"${1}.mod"; do
		if [ -f "${module}" ]; then
			return 0
		fi
	done
	return 1
}

set_background_image(){
	# Step #1: Search all available output modes ...
	local output
	for output in ${GRUB_TERMINAL_OUTPUT}; do
		if [ "x$output" = "xgfxterm" ]; then
			break
		fi
	done

	# ... and check if we are able to display a background image at all.
	if ! [ "x${output}" = "xgfxterm" ]; then
		return 1
	fi

	# Step #2: Check if the specified background image exists.
	if ! [ -f "${1}" ]; then
		return 2
	fi

	# Step #3: Search the correct GRUB module for our background image.
	local reader
	case "${1}" in
		*.jpg|*.JPG|*.jpeg|*.JPEG) reader="jpeg";;
		*.png|*.PNG) reader="png";;
		*.tga|*.TGA) reader="tga";;
		*) return 3;; # Unknown image type.
	esac

	# Step #4: Check if the necessary GRUB module is available.
	if ! module_available "${reader}"; then
		return 4
	fi

	# Step #5: Check if GRUB can read the background image directly.
	# If so, we can remove the cache file (if any). Otherwise the backgound
	# image needs to be cached under /boot/grub/.
	if is_path_readable_by_grub "${1}"; then
		rm --force "${BACKGROUND_CACHE}.jpeg" \
			"${BACKGROUND_CACHE}.png" "${BACKGROUND_CACHE}.tga"
	elif cp "${1}" "${BACKGROUND_CACHE}.${reader}"; then
		set -- "${BACKGROUND_CACHE}.${reader}" "${2}" "${3}"
	else
		return 5
	fi

	# Step #6: Prepare GRUB to read the background image.
	if ! prepare_grub_to_access_device "`${grub_probe} --target=device "${1}"`"; then
		return 6
	fi

	# Step #7: Everything went fine, print out a message to stderr ...
	echo "Found background image: ${1}" >&2

	# ... and write our configuration snippet to stdout. Use the colors
	# desktop-base specified. If we're using a user-defined background, use
	# the default colors since we've got no idea how the image looks like.
	# If loading the background image fails, use the default theme.
	echo "insmod ${reader}"
	echo "if background_image `make_system_path_relative_to_its_root "${1}"`; then"
	
	echo " set color_normal=white/blue"
    echo " set menu_color_normal=yellow/black"
    echo " set menu_color_highlight=red/black"
		
	if [ -n "${2}" ]; then
		echo "  set color_normal=${2}"
	fi
	if [ -n "${3}" ]; then
		echo "  set color_highlight=${3}"
	fi
	if [ -z "${2}" ] && [ -z "${3}" ]; then
		echo "  true"
	fi
	echo "else"
	set_default_theme "  "
	echo "fi"
}

# Earlier versions of grub-pc copied the default background image to /boot/grub
# during postinst. Remove those obsolete images if they haven't been touched by
# the user. They are still available under /usr/share/images/desktop-base/ if
# desktop-base is installed.
while read checksum background; do
	if [ -f "${background}" ] && [ "x`sha1sum "${background}"`" = "x${checksum}  ${background}" ]; then
		echo "Removing old background image: ${background}" >&2
		rm "${background}"
	fi
done <<EOF
648ee65dd0c157a69b019a5372cbcfea4fc754a5  debian-blueish-wallpaper-640x480.png
0431e97a6c661084c59676c4baeeb8c2f602edb8  debian-blueish-wallpaper-640x480.png
968ecf6696c5638cfe80e8e70aba239526270864  debian-blueish-wallpaper-640x480.tga
11143e8c92a073401de0b0fd42d0c052af4ccd9b  moreblue-orbit-grub.png
d00d5e505ab63f2d53fa880bfac447e2d3bb197c  moreblue-orbit-grub.png
f5b12c1009ec0a3b029185f6b66cd0d7e5611019  moreblue-orbit-grub.png
EOF

# Include the configuration of desktop-base if available.
if [ -f "/usr/share/desktop-base/grub_background.sh" ]; then
	. "/usr/share/desktop-base/grub_background.sh"
fi

# First check whether the user has specified a background image explicitly.
# If so, try to use it. Don't try the other possibilities in that case
# (#608263).
if [ -n "${GRUB_BACKGROUND+x}" ]; then
	set_background_image "${GRUB_BACKGROUND}" || set_default_theme
	exit 0
fi

# Next search for pictures the user put into /boot/grub/ and use the first one.
for background in *.jpg *.JPG *.jpeg *.JPEG *.png *.PNG *.tga *.TGA; do
	if set_background_image "${background}"; then
		exit 0
	fi
done

# Next try to use the background image and colors specified by desktop-base.
if set_background_image "${WALLPAPER}" "${COLOR_NORMAL}" "${COLOR_HIGHLIGHT}"; then
	exit 0
fi

# If we haven't found a background image yet, use the default from desktop-base.
case $GRUB_DISTRIBUTOR in
	Ubuntu|Kubuntu)
		;;
	Tanglu)
		if set_background_image "/usr/share/images/grub/grub.png"; then
			exit 0
		fi
		;;
	*)
		if set_background_image "/usr/share/images/desktop-base/desktop-grub.png"; then
			exit 0
		fi
		;;
esac

# Finally, if all of the above fails, use the default theme.
set_default_theme
Thanks,
Andy


Slacko 6.3.0 FULL INSTALL
JWM
File Manager - Thunar

Sailor Enceladus
Posts: 1543
Joined: Mon 22 Feb 2016, 19:43

#2 Post by Sailor Enceladus »

Yes, grub is for rocket scientists. What kind of scientist are you, by the way? :lol:

I hated calculus, so I stick with grub4dos. It has color and backdrop at the top of menu.lst:
# menu.lst produced by grub4dosconfig-v1.9.1
color white/blue black/cyan white/black cyan/black
# splashimage=/hubble.xpm i915.modeset=0
timeout 10
default 0
You can change to grub4dos but booting Grub4dos Bootloader Config from a Puppy USB or CD. ;)

scientist
Posts: 860
Joined: Sat 23 May 2015, 08:21

#3 Post by scientist »

Sailor Enceladus wrote:Yes, grub is for rocket scientists. What kind of scientist are you, by the way? :lol:

I hated calculus, so I stick with grub4dos. It has color and backdrop at the top of menu.lst:
# menu.lst produced by grub4dosconfig-v1.9.1
color white/blue black/cyan white/black cyan/black
# splashimage=/hubble.xpm i915.modeset=0
timeout 10
default 0
You can change to grub4dos but booting Grub4dos Bootloader Config from a Puppy USB or CD. ;)
I am a retired chemist. (Though I majored in Microbiology)

I am using Ubuntu because all my hardware works with it. :-)
Gotta go with what works.

I admit that Puppy's menu.lst is a far more intelligent design.
Thanks,
Andy


Slacko 6.3.0 FULL INSTALL
JWM
File Manager - Thunar

Pelo

format 16x9 how to do ?

#4 Post by Pelo »

# menu.lst produced by grub4dosconfig-v1.9.1
color white/blue black/cyan white/black cyan/black
# splashimage=/hubble.xpm i915.modeset=0
timeout 10
default 0
On try , with splash joined. My screen is 1600x900. So image is garbled by distorsion.
Attachments
logo.jpg
image reduced to 16 colors
(39.48 KiB) Downloaded 194 times

User avatar
nic007
Posts: 3408
Joined: Sun 13 Nov 2011, 12:31
Location: Cradle of Humankind

Re: format 16x9 how to do ?

#5 Post by nic007 »

Pelo wrote:# menu.lst produced by grub4dosconfig-v1.9.1
color white/blue black/cyan white/black cyan/black
# splashimage=/hubble.xpm i915.modeset=0
timeout 10
default 0
On try , with splash joined. My screen is 1600x900. So image is garbled by distorsion.
I convert the resolution to 640x480 first and then change the colour depth to 16 colours. It takes a bit of effort to get a pic which displays reasonably well with 16 colours. I use this one
Attachments
Chameleon.jpg
(40.75 KiB) Downloaded 191 times

Pelo

enlarged as 1600x900 whan the menu appears

#6 Post by Pelo »

This step is ok for me, my difficulty is to prevent splash to be enlarged as 1600x900 whan the menu appears. It's not a real no go item, but i feel like a loser on that matter.

User avatar
bigpup
Posts: 13886
Joined: Sun 11 Oct 2009, 18:15
Location: S.C. USA

#7 Post by bigpup »

Maybe this will seem easier to follow:
http://www.thegeekstuff.com/2012/10/grub-splash-image/
The things they do not tell you, are usually the clue to solving the problem.
When I was a kid I wanted to be older.... This is not what I expected :shock:
YaPI(any iso installer)

Post Reply