WordPress Plugin und Theme Aktualisierung ausblenden



Benachrichtigungen über bestimmte Plugin oder Theme Aktualisierungen, die man nicht installieren möchte, lassen sich ausblenden. Und das nicht nur gänzlich, sondern auch festgelegte Versionen.

Die einfachste und schnellste Methode ist die Änderung der Versionsnummer in der Plugin-Haupt- bzw. Theme style.css-Datei. Davon ist aber abzuraten. Es ist nicht im Sinne des Entwicklers sein Quellcode zu manipulieren. Ausserdem kann eine spätere Verwirrung über die tatsächlich installierte Version entstehen. Eine Filterfunktion in einem eigenen Plugin zu schreiben ist die bessere Lösung. Das hier weiter unten als Beispiel vorgestellte PHP-Code kann als Ansatz für ein Plugin dienen.

Update ausblenden

Nach der Installation und Aktivierung eines Plugins oder Themes erscheint im Dashboard eine Benachrichtigung über die Aktualisierung auf die neuste Version, falls es eine gibt. WordPress durchsucht standardmäßig regelmäßig alle 12 Stunden die Repositories nach neueren Versionen. Findet er eine, wird diese als Benachrichtigung und Aufforderung zur Aktualisierung angezeigt.

akismet-update-notification-2
Benachrichtigung über eine Plugin Aktualisierung
twentyfifteen-update-notification-2
Benachrichtigung über eine Theme Aktualisierung

Möchte man aus irgendeinem Grund die Updates nicht installieren und darüber auch nicht mehr informiert werden, kann man die Nachricht dauerhaft rausfiltern und ausblenden. Man braucht dafür ein Plugin, das auf die Filter-Hooks site_transient_update_plugins und site_transient_update_themes zugreifft und die vorhandene Update-Informationen entfernt.

Update Filter Beispiel

Das hier aufgeführe Beispiel ist kein Plugin. Es demostriert die Filterfunktionen für Plugin und Theme Updates und dient als Ansatz für das eigene Plugin.

Filterfunktionen

In dem Verzeichnis /wp-content/themes/{aktivierter-theme-name}/inc erstellt man zwei neue Dateien: disable-upgrades.php und disable-upgrades.json.

In der disable-upgrades.php wird folgendes eigetragen (die Pfade zum Theme anpassen!):

<?php
/** WordPress plugin and theme Upgrade Deactivation */

if ( ! function_exists( 'plugins_api' ) ) {
      require_once( ABSPATH . 'wp-admin/includes/plugin-install.php' );
}

if ( ! function_exists( 'themes_api' ) ) {
      require_once( ABSPATH . 'wp-admin/includes/theme.php' );
}

/** Remove plugin update notifications */
function remove_plugin_update_notifications( $value ) {

	//var_dump($value); //show object structure
	
    if ( isset( $value ) && is_object( $value ) ) {
		// load disabled plugin upgrade versions from json file
		$string = file_get_contents( ABSPATH . 'wp-content/themes/seos-magazine-child/inc/disable-upgrades.json' );
		$obj_array = json_decode($string);
		if ( ! isset ( $obj_array->plugins )) {
			return $value;
		}
		$plugins = $obj_array->plugins;
		
		//disable plugin upgrade notifications
		foreach ( $plugins as $plugin ) {
			if ( isset( $value->response[ $plugin->file ] ) ) {
				
				/** Get last update version */
				$update_version = $value->response[$plugin->file]->new_version;

				/** Remove plugin update notification if listed */
				if ( in_array( "all", $plugin->disabled_versions ) || in_array( $update_version, $plugin->disabled_versions )) {
					unset( $value->response[ $plugin->file ] );
				}
			}
		}
    }

    return $value;
}
add_filter( 'site_transient_update_plugins', 'remove_plugin_update_notifications' );

/** Remove theme update notifications */
function remove_theme_update_notifications( $value ) {

	//var_dump($value); //show object structure
	
    if ( isset( $value ) && is_object( $value )) {
		// load disabled theme upgrade versions from json file
		$string = file_get_contents( ABSPATH . 'wp-content/themes/seos-magazine-child/inc/disable-upgrades.json' );
		$obj_array = json_decode($string);
		if ( !isset ( $obj_array->themes )) {
			return $value;
		}
		$themes = $obj_array->themes;
		
		//disable themes upgrade notifications
		foreach ( $themes as $theme ) {
			if ( isset( $value->response[ $theme->slug ] ) ) {

				/** Get last update version */
				$update_version = $value->response[$theme->slug]['new_version'];

				/** Remove theme update notification if listed */
				if ( in_array( "all", $theme->disabled_versions ) || in_array( $update_version, $theme->disabled_versions )) {
					unset( $value->response[ $theme->slug ] );
				}	
			}
		}
    }

    return $value;
}
add_filter( 'site_transient_update_themes', 'remove_theme_update_notifications' );
?>

Konfigurationsdatei

In der disable-upgrades.json-Datei werden die Plugin und Theme Versionen eingetragen, deren Aktualisierungsbenachrichigungen augeblendet werden sollen.

{
	"plugins": [
	
		{
			"slug":"loco-translate",
			"file":"loco-translate/loco.php",
			"disabled_versions":[ "all" ]
		},
		{
			"slug":"akismet",
			"file":"akismet/akismet.php",
			"disabled_versions":[ "4.1", "4.1.1" ]
		}
	],
	"themes": [
	
		{
			"slug":"twentyfifteen",
			"disabled_versions":[ "2.3" ]
		}
	]
}

Wird anstelle einer Versionsnummer der Wert all angegeben, werden alle zukunftigen Update-Benachrichtigungen ausgeblendet.

Das JSON-Hauptobjekt besteht aus zwei Objektarrays (plugins und themes). Die einzelnen Plugin- und Theme-Objekte enthalten ausser ihrer Hauptordnernamen (slug) und Dateipfad bei Plugins (file), einen disabled_versions-Array mit den unterdrückten Aktualisierungsbenachrichtigungen für die angegebenen Versionen. Nach der Ausführung werden sie nicht mehr angezeigt.

akismet-update-disabled-2
Keine Plugin-Aktualisierung auf bestimmte Version
twentyfifteen-update-disabled-2
Keine Theme-Aktualisierung auf bestimmte Version


admin.php ergänzen

Am Ende der Datei /wp-admin/includes/admin.php werden die Filterfunktionen eingebunden (Theme-Pfad anpassen!):

require_once(ABSPATH . 'wp-content/themes/seos-magazine-child/inc/disable-upgrades.php');

Diese Zeile wird nach einer WordPress-Aktualisierung überschrieben und entfernt. Aus diesem Grund ist es sinnvol ein eigenes Plugin zu erstellen, damit man sie nicht immer wieder neu eintragen muss.

$value-Hook-Objekt Struktur

Das von dem site_transient_update_plugins-Hook übergebene Objekt $value hat folgende Struktur:

object(stdClass)[5923]
  public 'last_checked' => int 1549198443
  public 'checked' => 
    array (size=6)
      'akismet/akismet.php' => string '4.1' (length=3)
      'hello.php' => string '1.7' (length=3)
      'loco-translate/loco.php' => string '2.2.0' (length=5)
      'theme-check/theme-check.php' => string '20160523.1' (length=10)
      'wordpress-importer/wordpress-importer.php' => string '0.6.4' (length=5)
      'wp-disable-update/wp-disable-update.php' => string '1.0.0' (length=5)
  public 'response' => 
    array (size=1)
      'akismet/akismet.php' => 
        object(stdClass)[5921]
          public 'id' => string 'w.org/plugins/akismet' (length=21)
          public 'slug' => string 'akismet' (length=7)
          public 'plugin' => string 'akismet/akismet.php' (length=19)
          public 'new_version' => string '4.1.1' (length=5)
          public 'url' => string 'https://wordpress.org/plugins/akismet/' (length=38)
          public 'package' => string 'https://downloads.wordpress.org/plugin/akismet.4.1.1.zip' (length=56)
          public 'icons' => 
            array (size=2)
			  '2x' => string 'https://ps.w.org/akismet/assets/icon-256x256.png?rev=969272' (length=59)
			  '1x' => string 'https://ps.w.org/akismet/assets/icon-128x128.png?rev=969272' (length=59)
          public 'banners' => 
            array (size=1)
              '1x' => string 'https://ps.w.org/akismet/assets/banner-772x250.jpg?rev=479904' (length=61)
          public 'banners_rtl' => 
            array (size=0)
              empty
          public 'tested' => string '5.0.3' (length=5)
          public 'requires_php' => boolean false
          public 'compatibility' => 
            object(stdClass)[5924]
              ...
  public 'translations' => 
    array (size=0)
      empty
  public 'no_update' => 
    array (size=4)
      'hello.php' => 
        object(stdClass)[5925]
          public 'id' => string 'w.org/plugins/hello-dolly' (length=25)
          public 'slug' => string 'hello-dolly' (length=11)
          public 'plugin' => string 'hello.php' (length=9)
          public 'new_version' => string '1.6' (length=3)
          public 'url' => string 'https://wordpress.org/plugins/hello-dolly/' (length=42)
          public 'package' => string 'https://downloads.wordpress.org/plugin/hello-dolly.1.6.zip' (length=58)
          public 'icons' => 
            array (size=2)
              '2x' => string 'https://ps.w.org/hello-dolly/assets/icon-256x256.jpg?rev=969907' (length=63)
              '1x' => string 'https://ps.w.org/hello-dolly/assets/icon-128x128.jpg?rev=969907' (length=63)
          public 'banners' => 
            array (size=1)
              '1x' => string 'https://ps.w.org/hello-dolly/assets/banner-772x250.png?rev=478342' (length=65)
          public 'banners_rtl' => 
            array (size=0)
              empty
      'loco-translate/loco.php' => 
        object(stdClass)[5926]
          public 'id' => string 'w.org/plugins/loco-translate' (length=28)
          public 'slug' => string 'loco-translate' (length=14)
          public 'plugin' => string 'loco-translate/loco.php' (length=23)
          public 'new_version' => string '2.2.0' (length=5)
          public 'url' => string 'https://wordpress.org/plugins/loco-translate/' (length=45)
          public 'package' => string 'https://downloads.wordpress.org/plugin/loco-translate.2.2.0.zip' (length=63)
          public 'icons' => 
            array (size=2)
              '2x' => string 'https://ps.w.org/loco-translate/assets/icon-256x256.png?rev=1000676' (length=67)
              '1x' => string 'https://ps.w.org/loco-translate/assets/icon-128x128.png?rev=1000676' (length=67)
          public 'banners' => 
            array (size=1)
              '1x' => string 'https://ps.w.org/loco-translate/assets/banner-772x250.jpg?rev=745046' (length=68)
          public 'banners_rtl' => 
            array (size=0)
              empty
      'theme-check/theme-check.php' => 
        object(stdClass)[5927]
          public 'id' => string 'w.org/plugins/theme-check' (length=25)
          public 'slug' => string 'theme-check' (length=11)
          public 'plugin' => string 'theme-check/theme-check.php' (length=27)
          public 'new_version' => string '20160523.1' (length=10)
          public 'url' => string 'https://wordpress.org/plugins/theme-check/' (length=42)
          public 'package' => string 'https://downloads.wordpress.org/plugin/theme-check.zip' (length=54)
          public 'icons' => 
            array (size=1)
              '1x' => string 'https://ps.w.org/theme-check/assets/icon-128x128.png?rev=972579' (length=63)
          public 'banners' => 
            array (size=2)
              '2x' => string 'https://ps.w.org/theme-check/assets/banner-1544x500.png?rev=904294' (length=66)
              '1x' => string 'https://ps.w.org/theme-check/assets/banner-772x250.png?rev=904294' (length=65)
          public 'banners_rtl' => 
            array (size=0)
              empty
      'wordpress-importer/wordpress-importer.php' => 
        object(stdClass)[5928]
          public 'id' => string 'w.org/plugins/wordpress-importer' (length=32)
          public 'slug' => string 'wordpress-importer' (length=18)
          public 'plugin' => string 'wordpress-importer/wordpress-importer.php' (length=41)
          public 'new_version' => string '0.6.4' (length=5)
          public 'url' => string 'https://wordpress.org/plugins/wordpress-importer/' (length=49)
          public 'package' => string 'https://downloads.wordpress.org/plugin/wordpress-importer.0.6.4.zip' (length=67)
          public 'icons' => 
            array (size=3)
              '2x' => string 'https://ps.w.org/wordpress-importer/assets/icon-256x256.png?rev=1908375' (length=71)
              '1x' => string 'https://ps.w.org/wordpress-importer/assets/icon.svg?rev=1908375' (length=63)
              'svg' => string 'https://ps.w.org/wordpress-importer/assets/icon.svg?rev=1908375' (length=63)
          public 'banners' => 
            array (size=1)
              '1x' => string 'https://ps.w.org/wordpress-importer/assets/banner-772x250.png?rev=547654' (length=72)
          public 'banners_rtl' => 
            array (size=0)
              empty
	  'wp-rollback/wp-rollback.php' => 
        object(stdClass)[6604]
          public 'id' => string 'w.org/plugins/wp-rollback' (length=25)
          public 'slug' => string 'wp-rollback' (length=11)
          public 'plugin' => string 'wp-rollback/wp-rollback.php' (length=27)
          public 'new_version' => string '1.6' (length=3)
          public 'url' => string 'https://wordpress.org/plugins/wp-rollback/' (length=42)
          public 'package' => string 'https://downloads.wordpress.org/plugin/wp-rollback.1.6.zip' (length=58)
          public 'icons' => 
            array (size=2)
              '2x' => string 'https://ps.w.org/wp-rollback/assets/icon-256x256.jpg?rev=1159170' (length=64)
              '1x' => string 'https://ps.w.org/wp-rollback/assets/icon-128x128.jpg?rev=1159170' (length=64)
          public 'banners' => 
            array (size=1)
              '1x' => string 'https://ps.w.org/wp-rollback/assets/banner-772x250.jpg?rev=1948781' (length=66)
          public 'banners_rtl' => 
            array (size=0)
              empty


Das site_transient_update_themes-Hook übergibt das $value-Objekt:

object(stdClass)[6636]
  public 'last_checked' => int 1549234654
  public 'checked' => 
    array (size=7)
      'bornholm' => string '1.1.2' (length=5)
      'seos-magazine-child' => string '1.0.0' (length=5)
      'seos-magazine' => string '1.2.2' (length=5)
      'ttut-society' => string '1.0.0' (length=5)
      'twentyfifteen' => string '2.2' (length=3)
      'twentyseventeen' => string '2.0' (length=3)
      'twentysixteen' => string '1.8' (length=3)
  public 'response' => 
    array (size=1)
      'twentyfifteen' => 
        array (size=4)
          'theme' => string 'twentyfifteen' (length=13)
          'new_version' => string '2.3' (length=3)
          'url' => string 'https://wordpress.org/themes/twentyfifteen/' (length=43)
          'package' => string 'https://downloads.wordpress.org/theme/twentyfifteen.2.3.zip' (length=59)
  public 'translations' => 
    array (size=0)
      empty

 


 

War diese Seite für dich informativ? Hat sie dir gefallen und geholfen?

Dann unterstütze die Weiterentwicklung mit einer kleinen Spende!

Die Spenden werden für die Lizenzen sowie neue Hard- und Software verwendet, die für weitere Projekte auf dieser Webseite eingesetzt werden. Die Werbung alleine deckt gerade mal die Server Kosten.

 




WordPress Plugin und Theme Update zurücksetzen



Es kommt manchmal vor, dass ein Plugin oder Theme Update Probleme verursacht, obwohl es als laut Autor kompatibel zu der aktuellen WordPress Version sein soll. Zerschossenes Layout, falsche Formatierung oder eine Inkompatibilität mit anderen Plugins sind die meisten Folgen.

Um diese Fehler zu beheben kann das Update rückgängig gemacht werden. Dazu gibt es zwei Möglichkeiten. Mit einem Plugin oder manuell.

Update mit einem Plugin zurücksetzen

Es gibt ein gutes Plugin zum Zurücksetzen der Plugin und Theme Updates auf eine ältere oder zum Aktualisieren auf eine neuere Version. Es heißt WP Rollback. Dieses Plugin hier zu beschreiben ist völlig überflüssig. Eine sehr gute Anleitung gibt es von Thomas Weichselbaumer auf seiner Webseite WordPress Theme und Plugin Updates rückgängig machen.

Update manuell zurücksetzen

Manuelles Zurücksetzen eines Plugins oder Themes ist nicht schwer. Es gleicht einer manuellen Installation. Man braucht dafür nur den FTP Zugang zu dem WordPress Installationsverzeichnis auf dem Server.

Ältere Version herunterladen

Plugin herunterladen

Über das Admin-Menü Plugins ⇒ Installierte Plugins bei dem betroffenen Plugin Details ansehen wählen.

Podamibe Custom User Gravatar-Details-ansehen
Details ansehen

Auf der Details-Seite den Link zur WordPress.org Plugin-Seite klicken.

Podamibe Custom User Gravatar-Details
Plugin Details

Auf der WordPress Plugin-Seite auf dem Reiter Details die Erweiterte Ansicht wählen.

Podamibe Custom User Gravatar-Website
WordPress Plugin Details-Seite

Ganz untern auf der folgenden Seite kann die gewünschte Version heruntergeladen werden.

Podamibe Custom User Gravatar-Website-Version_auswaehlen
Plugin-Version herunterladen

Optional kann man die WordPress Plugin-Repository http://plugins.svn.wordpress.org nach einer Version durchsuchen.

Theme herunterladen

Eine ältere Theme Vesion kann aus der WordPress Repository http://themes.svn.wordpress.org heruntergeladen werden.

Ältere Version installieren

Plugin installieren

Zuerst wird die aktuelle Version vom Server gelöscht. Den Plugin Ordner im /wp-content/plugins Verzeichnis komplett entfernen.

Die heruntergeladene ZIP-Datei entpacken und mit dem FTP-Client in das Plugin-Verzeichnis auf dem Server übertragen.

Im WordPress Admin unter Plugins ⇒ Installierte Plugins die hochgeladene Plugin-Version aktivieren.

Theme installieren

Das Theme im WordPress Admin unter Design ⇒ Themes zu einem anderen wechseln.

Die aktuelle Theme Version mit dem FTP-Client aus dem Server Verzeichnis /wp-content/themes löschen.

Die heruntergeladene Version hochladen.

Im WordPress Admin unter Design ⇒ Themes die hochgeladene Theme Version aktivieren.

 

WordPress Plugin und Theme Aktualisierung ausblenden

 


 

War diese Seite für dich informativ? Hat sie dir gefallen und geholfen?

Dann unterstütze die Weiterentwicklung mit einer kleinen Spende!

Die Spenden werden für die Lizenzen sowie neue Hard- und Software verwendet, die für weitere Projekte auf dieser Webseite eingesetzt werden. Die Werbung alleine deckt gerade mal die Server Kosten.

 




Boot Menü-Aussehen ändern

 




Das Boot-Menü von GRUB 2 kann auf eine einfache Weise grafisch verändert werden. Das langweilige Standardmenü wie hier bei Ubuntu

Ubuntu_GRUB_2_default_menu
Standard Boot Menü

kann mit einem schöneren, anspruchsvolleren Menü ersetzt werden. Wie zum Beispiel hier:

Ubuntu_GRUB_2_custom_menu
Benutzerdefiniertes Boot Menü

Um zu zeigen wie es geht, wird das oben gezeigte Beispiel basierend auf dem Glas-Theme von der ubuntuusers-Seite verwendet.



Anzeige

Vorbereitung

Zuerst muss sichergestellt werden dass der GRUB 2 und nicht der Vorgänger GRUB Legacy auf dem Rechner installiert ist.

$ grub-install -v

Alles ab Version 1.9x ist GRUB 2. Anderenfalls muss ein Upgrade her. Wie das geht ist hier beschrieben.

Ist GRUB 2 installiert, werden zuerst die Backups der Konfigurationsdateien erstellt. Sie befinden sich in der Datei /etc/default/grub bzw. in den Verzeichnissen /etc/grub.d und /boot/grub.

$ sudo cp /etc/default/grub /etc/default/grub.bkp
$ sudo cp -R /etc/grub.d /etc/grub.d.bkp
$ sudo cp -R /boot/grub /boot/grub.bkp

Theme hinzufügen

Als Nächstes muss das Boot-Menü-Theme Glas heruntergeladen werden.

Ein Themen-Ordner im /boot/grub Verzeichnis erstellen…

$ sudo mkdir /boot/grub/themes

…und die Glas-Theme-Archiv-Datei dorthin entpacken:

$ sudo tar -xvzf /home/{USER}/Downloads/glas_grub_theme.tar.gz -C /boot/grub/themes


Anzeige

Das Hintergrundbild aus dem Beispiel kann hier heruntergeladen werden. Natürlich kann auch ein anderes Bild genommen werden. Das Bild in den /boot/grub/themes/glas Ordner kopieren und in background.jpg umbenennen. Unterstützt werden PNG, JPG und TGA-Formate.

Das Theme-Verzeichnis enthält einen icons-Ordner, /boot/grub/themes/glas/icons. In diesem Ordner sind Icons abgelegt, die bei den Boot-Menüeinträgen angezeigt werden sollen. Die Namen der Icon-Dateien müssen mit den Menüeintrag-Klassennamen übereinstimmen, sonst werden sie nicht angezeigt.

Die Klassennamen findet man in der /boot/grub/grub.cfg-Datei. Sie beginnen mit menuentry oder submenu.

Zum Beispiel für den Ubuntu-Eintrag muss das Icon ubuntu.png heißen:

menuentry 'Ubuntu, with Linux 3.13.0-117-generic' --class ubuntu --class gnu-linux --class gnu --class os { ... }

für Windows 7 – windows.png:

menuentry "Windows 7 (loader) (on /dev/sdb1)" --class windows --class os { ... }

für zusammengefasste Menüeinträge – prev-linux.png:

submenu "Previous Linux versions" --class prev-linux { ... }

usw.

Allerdings besitzen nicht alle Einträge mindestens eine Klasse. Wie im Falle vom Memory Test:

menuentry "Memory test (memtest86+)" { ... }

Bei submenu-Einträgen ist es auch der Fall. In dem „Previous Linux versions“ – Beispiel oben wurde die Klasse nachträglich hinzugefügt.

Die Eintragung der Klassen soll aber nicht in der grub.cfg-Datei stattfinden. Diese Datei wird automatisch bei der Ausführung von update-grub erstellt und jede manuelle Änderung dieser Datei wird dabei überschrieben. Man sollte stattdessen die Dateien in dem Verzeichnis /etc/grub.d bearbeiten, welche die Informationen für die Erstellung der grub.cfg liefern. Die Dateien, besser gesagt Skripte in diesem Verzeichnis sind:

  • 00_header
  • 05_debian_theme
  • 10_linux
  • 20_linux_xen
  • 20_memtest86+
  • 30_os-prober
  • 30_uefi-firmware
  • 40_custom
  • 41_custom

Die genaue Beschreibung der Skripte von ubuntuusers.

Möchte man also ein Menüeintragicon für ein Memory Test hinzufügen, muss das Skript 20_memtest86+ bearbeitet werden.

$ sudo gedit /etc/grub.d/20_memtest86+

Hier sind zwei Memory Test – Menüeintrage definiert.

menuentry "Memory test (memtest86+)" { ... }
menuentry "Memory test (memtest86+, serial console 115200)" { ... }

Es ist sinnvoll sie in ein Hauptmenü zusammen zu fassen und das Icon dem Hauptmenü zuweisen (im Boot-Menü-Beispielbild oben sind sie einzeln aufgelistet).

submenu "Memory Tests" --class memtest {
menuentry "Memory test (memtest86+)" { ... }
menuentry "Memory test (memtest86+, serial console 115200)" { ... }
}

Optional kann man noch dem Skript 40_custom folgende zwei Zeilen hinzufügen, die zusätzliche Einträge für einen Neustart und das Herunterfahren erstellen:

menuentry "Restart" --class restart {reboot} 
menuentry "Shut Down" --class shutdown {halt}

GRUB konfigurieren

Die Darstellung des GRUB-Menüs wird über zwei Dateien gesteuert. Zu einem wird das Verhalten des Menüs über die /etc/default/grub und zum zweiten die Grafik über die /boot/grub/themes/glas/theme.txt eingestellt.

grub-Datei

$ sudo gedit /etc/default/grub

In dieser Datei sollen folgende Parameter angepasst werden:

GRUB_DEFAULT=saved
#GRUB_HIDDEN_TIMEOUT=0
GRUB_TIMEOUT=120
GRUB_GFXMODE=1280x1024
GRUB_GFXPAYLOAD_LINUX=keep
GRUB_THEME="/boot/grub/themes/glas/theme.txt"
GRUB_SAVEDEFAULT=true

GRUB_DEFAULT ist der markierte, ausgewählte Menüeintrag. Der Wert saved zusammen mit GRUB_SAVEDEFAULT=true speichert den zuletzt ausgewählten Menüeintrag und wählt ihn automatisch beim nächsten Start wieder aus.

GRUB_HIDDEN_TIMEOUT macht das Bootmenü unsichtbar und kann nur mit der gedrückten Umschalt-Taste während des Starts sichtbar gemacht werden. Die Angabe eines Sekunden-Ganzzahlenwertes verzögert den Startvorgang. Dieser Parameter soll auskommentiert bleiben.

GRUB_TIMEOUT verzögert den automatischen Start des zuletzt gewählten Menüeintrages und gibt dem Benutzer die Möglichkeit die Auswahl zu ändern.

GRUB_GFXMODE stellt die GRUB-Menü-Auflösung ein. Die Unterstützten Auflösungen können mit dem GRUB 2-Shell-Befehl vbeinfo ermittelt werden.

GRUB_GFXPAYLOAD_LINUX=keep behält die mit GRUB_GFXMODE eingestellte Schriftauflösung.

GRUB_THEME ist der Pfad zu der Theme-Konfigurationsdatei.

Die vorgenommenen Änderungen müssen nun in die grub.cfg-Konfigurationsdatei exportiert werden:

$ sudo update-grub

theme.txt-Datei

In dieser Konfigurationsdatei wird die grafische Darstellung des Bootmenüs eingestellt.

$ sudo gedit /boot/grub/themes/glas/theme.txt

Die folgenden Einstellungen anpassen.

Der Titel und das Hintergrundbild:

title-text: "GRUB 2 Boot Menu"
title-font: "Ubuntu Bold 50"
title-color: "white"
desktop-image: "background.jpg"

Der Fortschritt-Balken soll bei 25% der Bildschirmbreite beginnen, 50% des Bildschirmes breit, 25 Pixel hoch und 45 Pixel von unten platziert sein. Der Text mit der Größe von 14px in Rot wird innerhalb des Balkens angezeigt.

+ progress_bar {
    [...]
    left = 25%
    top = 100%-45
    height = 25
    width = 50%
    font = "DejaVu Sans Regular 14"
    text_color = "red"
    [...]
}

Das Bootmenü wird 30% von der Bildschirmoberkante, 25% von links, 50% breit und mit der Höhe von 560 Pixel angezeigt. Die einzelnen Menüeinträge sind 60 Pixel hoch mit 48 Pixel hohen Icons und 40 Pixel großem Text. Der Parameter menu_pixmap_style, der für den Menürahmen zuständig ist, soll auskommentiert werden. Somit wird der Rahmen nicht angezeigt. Ein 27 Pixel breiter Scroll-Balken soll angezeitg werden, wenn die Liste der Menüeinträge länger sein sollte.

+ boot_menu { 
    top = 30%
    left = 25%
    width = 50%
    height = 560
    item_font = "Ubuntu Condensed Regular 40"
    item_color = "white"
    selected_item_font = "Ubuntu Condensed Bold 40"
    icon_height = 48
    icon_width = 40
    item_height = 60
    item_padding = 0
    item_icon_space = 7
    item_spacing = 0
    selected_item_color = "white"
    selected_item_pixmap_style = "menu_bar_*.png"
    scrollbar = true
    scrollbar_frame = "scroll_frame_*.png"
    scrollbar_thumb = "scroll_thumb_s_*.png"
    #menu_pixmap_style = "box_*.png"
    scrollbar_width = 27
}

Nach dem Abspeichern der Datei kann der Rechner neu gestartet werden. Sollte die Bootmenü-Darstellung, abhängig von der Bildschirmgröße und -auflösung, nicht dem gewünschten Ergebnis entsprechen, die theme.txt-Datei nochmal anpassen. Das fertige Bootmenü sollte ungefähr so aussehen:

glas-boot-menu
GRUB 2 – Bootmenü mit Glas-Theme



Anzeige




 

War diese Seite für dich informativ? Hat sie dir gefallen und geholfen?

Dann unterstütze die Weiterentwicklung mit einer kleinen Spende!

Die Spenden werden für die Lizenzen sowie neue Hard- und Software verwendet, die für weitere Projekte auf dieser Webseite eingesetzt werden.