diff options
author | Dexter Morgan <dmorgan@mageia.org> | 2011-06-02 20:51:35 +0000 |
---|---|---|
committer | Dexter Morgan <dmorgan@mageia.org> | 2011-06-02 20:51:35 +0000 |
commit | a9b2bdafaf625d10aef2f476aa4014fd36c846bc (patch) | |
tree | 2364afc0ee6739b59a25c44d68c9f003bcaf03d9 /perl-install/bootsplash.pm | |
download | drakx-backup-do-not-use-a9b2bdafaf625d10aef2f476aa4014fd36c846bc.tar drakx-backup-do-not-use-a9b2bdafaf625d10aef2f476aa4014fd36c846bc.tar.gz drakx-backup-do-not-use-a9b2bdafaf625d10aef2f476aa4014fd36c846bc.tar.bz2 drakx-backup-do-not-use-a9b2bdafaf625d10aef2f476aa4014fd36c846bc.tar.xz drakx-backup-do-not-use-a9b2bdafaf625d10aef2f476aa4014fd36c846bc.zip |
Branch for updates
Diffstat (limited to 'perl-install/bootsplash.pm')
-rw-r--r-- | perl-install/bootsplash.pm | 85 |
1 files changed, 85 insertions, 0 deletions
diff --git a/perl-install/bootsplash.pm b/perl-install/bootsplash.pm new file mode 100644 index 000000000..5539c0b98 --- /dev/null +++ b/perl-install/bootsplash.pm @@ -0,0 +1,85 @@ +package bootsplash; + +use common; +use Xconfig::resolution_and_depth; + + +my $themes_dir = "/usr/share/bootsplash/themes"; +my $themes_config_dir = "/etc/bootsplash/themes"; +my $sysconfig_file = "/etc/sysconfig/bootsplash"; +my $bootsplash_scripts = "/usr/share/bootsplash/scripts"; +my $default_theme = 'Mageialinux'; +our $default_thumbnail = '/usr/share/libDrakX/pixmaps/nosplash_thumb.png'; +our @resolutions = uniq(map { "$_->{X}x$_->{Y}" } Xconfig::resolution_and_depth::bios_vga_modes()); + +sub get_framebuffer_resolution() { + require bootloader; + require fsedit; + my $all_hds = fsedit::get_hds(); + fs::get_info_from_fstab($all_hds); + my $bootloader = bootloader::read($all_hds); + my $x_res = Xconfig::resolution_and_depth::from_bios($bootloader->{default_options}{vga}); + $x_res ? + ($x_res->{X} . 'x' . $x_res->{Y}, 1) : + (first(@resolutions), 0); +} + +sub themes_read_sysconfig { + my ($res) = @_; + my %theme = ( + name => $default_theme, + enabled => 1, + ); + if (-r $::prefix . $sysconfig_file) { + local $_; + foreach (cat_($::prefix . $sysconfig_file)) { + /^SPLASH=no/ and $theme{enabled} = 0; + /^THEME=(.*)/ && -f theme_get_image_for_resolution($1, $res) and $theme{name} = $1; + } + } + \%theme; +} + +sub theme_get_image_for_resolution { + my ($theme, $res) = @_; + $::prefix . $themes_dir . '/' . $theme . '/images/bootsplash-' . $res . ".jpg"; +} + +sub theme_get_config_for_resolution { + my ($theme, $res) = @_; + $::prefix . $themes_config_dir . '/' . $theme . '/config/bootsplash-' . $res . ".cfg"; +} + +sub theme_exists_for_resolution { + my ($theme, $res) = @_; + -f theme_get_image_for_resolution($theme, $res) && -f theme_get_config_for_resolution($theme, $res); +} + +sub themes_list() { + grep { !/^\./ && -d $::prefix . $themes_dir . '/' . $_ } sort(all($::prefix . $themes_dir)); +} + +sub themes_list_for_resolution { + my ($res) = @_; + grep { theme_exists_for_resolution($_, $res) } themes_list(); +} + +sub switch { + my ($theme) = @_; + if ($::testing) { + print "enabling bootsplash theme $theme\n"; + } else { + #- theme scripts will update SPLASH value in sysconfig file + system($::prefix . $bootsplash_scripts . '/switch-themes', $theme); + } +} + +sub remove() { + if ($::testing) { + print "disabling bootsplash theme\n"; + } else { + system($::prefix . $bootsplash_scripts . '/remove-theme'); + } +} + +1; |