summaryrefslogtreecommitdiffstats
path: root/perl-install/bootsplash.pm
diff options
context:
space:
mode:
authorDexter Morgan <dmorgan@mageia.org>2011-06-02 20:51:35 +0000
committerDexter Morgan <dmorgan@mageia.org>2011-06-02 20:51:35 +0000
commita9b2bdafaf625d10aef2f476aa4014fd36c846bc (patch)
tree2364afc0ee6739b59a25c44d68c9f003bcaf03d9 /perl-install/bootsplash.pm
downloaddrakx-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.pm85
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;