Version in base suite: 20220131-1 Base version: debian-edu-artwork-legacy_20220131-1 Target version: debian-edu-artwork-legacy_20260916-1~deb13u1 Base file: /srv/ftp-master.debian.org/ftp/pool/main/d/debian-edu-artwork-legacy/debian-edu-artwork-legacy_20220131-1.dsc Target file: /srv/ftp-master.debian.org/policy/pool/main/d/debian-edu-artwork-legacy/debian-edu-artwork-legacy_20260916-1~deb13u1.dsc /srv/release.debian.org/tmp/N48d3h0tKj/debian-edu-artwork-legacy-20260916/art-spacefun/plymouth/password_dot.png |binary /srv/release.debian.org/tmp/N48d3h0tKj/debian-edu-artwork-legacy-20260916/art-spacefun/plymouth/password_field.png |binary debian-edu-artwork-legacy-20260916/art-spacefun/Makefile.am | 3 debian-edu-artwork-legacy-20260916/art-spacefun/arctica-greeter/34_arctica-greeter-theme-debian-edu-artwork-spacefun.gschema.override | 5 debian-edu-artwork-legacy-20260916/art-spacefun/arctica-greeter/Makefile.am | 5 debian-edu-artwork-legacy-20260916/art-spacefun/plymouth/debian-edu-spacefun.script | 297 +++++----- debian-edu-artwork-legacy-20260916/configure.ac | 1 debian-edu-artwork-legacy-20260916/debian/changelog | 91 +++ debian-edu-artwork-legacy-20260916/debian/compat | 1 debian-edu-artwork-legacy-20260916/debian/control | 29 debian-edu-artwork-legacy-20260916/debian/copyright | 7 debian-edu-artwork-legacy-20260916/debian/debian-edu-artwork-spacefun.docs | 2 debian-edu-artwork-legacy-20260916/debian/debian-edu-artwork-spacefun.install | 3 debian-edu-artwork-legacy-20260916/debian/debian-edu-artwork-spacefun.links | 2 debian-edu-artwork-legacy-20260916/debian/debian-edu-artwork-spacefun.postinst | 6 debian-edu-artwork-legacy-20260916/debian/debian-edu-artwork-spacefun.triggers | 2 debian-edu-artwork-legacy-20260916/debian/rules | 51 - debian-edu-artwork-legacy-20260916/debian/update-debian-edu-artwork-spacefun | 237 ++++--- debian-edu-artwork-legacy-20260916/debian/update-debian-edu-artwork-spacefun.8 | 15 19 files changed, 483 insertions(+), 274 deletions(-) dpkg-source: warning: cannot verify inline signature for /srv/release.debian.org/tmp/tmpl9thevnp/debian-edu-artwork-legacy_20220131-1.dsc: no acceptable signature found dpkg-source: warning: cannot verify inline signature for /srv/release.debian.org/tmp/tmpl9thevnp/debian-edu-artwork-legacy_20260916-1~deb13u1.dsc: no acceptable signature found diff -Nru debian-edu-artwork-legacy-20220131/art-spacefun/Makefile.am debian-edu-artwork-legacy-20260916/art-spacefun/Makefile.am --- debian-edu-artwork-legacy-20220131/art-spacefun/Makefile.am 2020-12-19 12:58:48.000000000 +0000 +++ debian-edu-artwork-legacy-20260916/art-spacefun/Makefile.am 2025-09-15 12:05:52.000000000 +0000 @@ -1,4 +1,5 @@ -SUBDIRS = desktop-base \ +SUBDIRS = arctica-greeter \ + desktop-base \ g-i \ gnome-shell \ plymouth diff -Nru debian-edu-artwork-legacy-20220131/art-spacefun/arctica-greeter/34_arctica-greeter-theme-debian-edu-artwork-spacefun.gschema.override debian-edu-artwork-legacy-20260916/art-spacefun/arctica-greeter/34_arctica-greeter-theme-debian-edu-artwork-spacefun.gschema.override --- debian-edu-artwork-legacy-20220131/art-spacefun/arctica-greeter/34_arctica-greeter-theme-debian-edu-artwork-spacefun.gschema.override 1970-01-01 00:00:00.000000000 +0000 +++ debian-edu-artwork-legacy-20260916/art-spacefun/arctica-greeter/34_arctica-greeter-theme-debian-edu-artwork-spacefun.gschema.override 2025-09-15 12:05:52.000000000 +0000 @@ -0,0 +1,5 @@ +[org.ArcticaProject.arctica-greeter] +# use the logo'ed background image for Debian Edu Spacefun theme +background='/usr/share/desktop-base/active-theme/login/background.svg' +# no logo required, the background image already contains a logo +logo='' diff -Nru debian-edu-artwork-legacy-20220131/art-spacefun/arctica-greeter/Makefile.am debian-edu-artwork-legacy-20260916/art-spacefun/arctica-greeter/Makefile.am --- debian-edu-artwork-legacy-20220131/art-spacefun/arctica-greeter/Makefile.am 1970-01-01 00:00:00.000000000 +0000 +++ debian-edu-artwork-legacy-20260916/art-spacefun/arctica-greeter/Makefile.am 2025-09-15 12:05:52.000000000 +0000 @@ -0,0 +1,5 @@ +install-data-local: + $(mkinstalldirs) $(DESTDIR)$(datadir)/arctica-greeter + $(mkinstalldirs) $(DESTDIR)$(datadir)/glib-2.0/schemas + $(INSTALL_DATA) 34_arctica-greeter-theme-debian-edu-artwork-spacefun.gschema.override \ + $(DESTDIR)$(datadir)/glib-2.0/schemas/34_arctica-greeter-theme-debian-edu-artwork-spacefun.gschema.override diff -Nru debian-edu-artwork-legacy-20220131/art-spacefun/plymouth/debian-edu-spacefun.script debian-edu-artwork-legacy-20260916/art-spacefun/plymouth/debian-edu-spacefun.script --- debian-edu-artwork-legacy-20220131/art-spacefun/plymouth/debian-edu-spacefun.script 2018-09-17 11:57:04.000000000 +0000 +++ debian-edu-artwork-legacy-20260916/art-spacefun/plymouth/debian-edu-spacefun.script 2026-09-16 21:38:42.000000000 +0000 @@ -1,22 +1,22 @@ # ubuntu-logo.script - boot splash plugin -# +# # Copyright (C) 2009 Canonical Ltd. -# +# # This program 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 2, or (at your option) # any later version. -# +# # This program 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 this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA # 02111-1307, USA. -# +# # Written by: Alberto Milone # # Based on the example provided with the "script plugin" written by: @@ -24,6 +24,7 @@ # # Lines theme scripting by Juliette Taka BELIN and Aurélien COUDERC +#------------------------------- Constants ----------------------------------------- bg_image = Image("background.png"); #------------------------------- Background ---------------------------------------- @@ -45,9 +46,23 @@ Window.GetY() + Window.GetHeight() / 2 - scaled_bg_image.GetHeight() / 2, -10000); +#------------------------------- Globals ------------------------------------------- +# are we currently prompting for a password? +prompt_active = 0; + +# Globals to share progress time / percent with intersted functions +progress_time = 0; +progress_pct = 0; + +# Variables for glow rotation animation +anim_status = "stopped"; +anim_iter = 0; + +#-----------------------------Text-image functions---------------------------- + # Set the text colour in (rgb / 256) text_colour.red = 1.0; -text_colour.green = 1.0; +text_colour.green = 1.0; text_colour.blue = 1.0; # Tinted text #988592 @@ -63,10 +78,9 @@ # Orange - #ff4012 - RGB 255 64 18 debugsprite = Sprite(); debugsprite_bottom = Sprite(); +debugsprite_bottom.SetPosition(0, (Window.GetHeight (0) - 20), 1); debugsprite_medium = Sprite(); - -# are we currently prompting for a password? -prompt_active = 0; +debugsprite_medium.SetPosition(0, (Window.GetHeight (0) - 100), 1); # General purpose function to create text fun WriteText (text, colour) { @@ -74,53 +88,71 @@ return image; } -fun ImageToText (text) { +fun ImageFromText (text) { image = WriteText (text, text_colour); return image; } -fun ImageToTintedText (text) { +fun ImageFromTintedText (text) { image = WriteText (text, tinted_text_colour); return image; } -fun ImageToActionText (text) { +fun ImageFromActionText (text) { image = WriteText (text, action_text_colour); return image; } fun Debug(text) { - debugsprite.SetImage(ImageToText (text)); + debugsprite.SetImage(ImageFromText (text)); } fun DebugBottom(text) { - debugsprite_bottom.SetImage(ImageToText (text)); - debugsprite_bottom.SetPosition(0, (Window.GetHeight (0) - 20), 1); + debugsprite_bottom.SetImage(ImageFromText (text)); } fun DebugMedium(text) { - debugsprite_medium.SetImage(ImageToText (text)); - debugsprite_medium.SetPosition(0, (Window.GetHeight (0) - 100), 1); + debugsprite_medium.SetImage(ImageFromText (text)); } +#Debug("Window.GetHeight(0) = " + Window.GetHeight(0)); fun TextYOffset() { local.y; local.text_height; local.min_height; - # Put the 1st line below the logo + some spacing - y = logo_sprite.GetY() + logo_image.GetHeight(); - #Debug("y = " + y); + # Put the 1st line below the logo + some spacing + # TODO position from lower edge + #y = logo_sprite.GetY() + logo.GetHeight(); + # Put the first line at the top third + y = 0.25*Window.GetHeight(); + + #Debug("y = " + y); text_height = first_line_height * 7.5; + # subtract Window.GetY() to show info also at smallest of dual screens + min_height = window_max.height - 2 * first_line_height - Window.GetY(); + #Debug("text_height=" + text_height + "; min_height=" + min_height); - min_height = Window.GetHeight(); if (y + text_height > min_height) y = min_height - text_height; return y; } + +#----------------------------- Screen/window setup --------------------------- +# Compute screen/image ratio and scale the background accordingly +window_max.width = Window.GetWidth(); +window_max.height = Window.GetHeight(); +screen_ratio = window_max.width / window_max.height; +small_dimension = Math.Min(window_max.width, window_max.height); +#Debug("Window.GetX():" + Window.GetX() + ", Window.GetY():" + Window.GetY()); +#Debug("Window is [" + window_max.width + ";" + window_max.height + "], ratio=" + screen_ratio); + + + + #------------------------------String functions------------------------------- # This is the equivalent for strstr() @@ -134,7 +166,7 @@ } start++; } - + return NULL; } @@ -149,7 +181,7 @@ for (index = beginning; ( ( (end == NULL) || (index <= end) ) && (String(source).CharAt(index)) ); index++) { local.destination += String(source).CharAt(index); } - + return local.destination; } @@ -203,16 +235,16 @@ password_field_filename = "password_field.png"; #} -message_notification[0].image = ImageToTintedText (""); -message_notification[1].image = ImageToTintedText (""); -fsck_notification.image = ImageToActionText (""); +message_notification[0].image = ImageFromTintedText (""); +message_notification[1].image = ImageFromTintedText (""); +fsck_notification.image = ImageFromActionText (""); status = "normal"; # use a fixed string with ascending and descending stems to calibrate the # bounding box for the first message, so the messages below don't move up # and down according to *their* height. -first_line_height = ImageToTintedText ("AfpqtM").GetHeight(); +first_line_height = ImageFromTintedText ("AfpqtM").GetHeight(); # if the user has a 640x480 or 800x600 display, we can't quite fit everything # (including passphrase prompts) with the target spacing, so scoot the text up @@ -234,13 +266,10 @@ #-----------------------------------------Progress Indicator-------------------------- # Implement in boot progress callback fun animate_progress_indicator (time, progress) { - # Start electrons animation at launch and every 3 seconds - if (global.progress_time == NULL || (time - global.progress_time) >= SECS_BETWEEN_ANIMS) { - global.progress_time = time; - global.anim_status = "start"; - } + progress_time = time; + progress_pct = progress; - # Debug ("global progress time =" + global.progress_time + " global anim status = " + global.anim_status + " progress = " + progress + ", time = " + time); + #Debug ("mode = " + Plymouth.GetMode() + ", progress_time = " + progress_time + ", progress_pct = " + progress_pct); } @@ -252,21 +281,21 @@ # message_label array # fun get_message_label (label, is_fake, is_action_line) { - # Debug("Get Label position"); + #Debug("Get Label position"); local.message_label; - + if (is_fake) # Create a fake label so as to get the y coordinate of # a standard-length label. - local.message_image = ImageToTintedText ("This is a fake message"); + local.message_image = ImageFromTintedText ("This is a fake message"); else - local.message_image = (is_action_line) && ImageToActionText (label) || ImageToTintedText (label); - + local.message_image = (is_action_line) && ImageFromActionText (label) || ImageFromTintedText (label); + message_label.width = message_image.GetWidth (); message_label.height = message_image.GetHeight (); # Center the line horizontally - message_label.x = Window.GetX () + Window.GetWidth () / 2 - message_label.width / 2; + message_label.x = (Window.GetWidth () - message_label.width) / 2; message_label.y = top_of_the_text; @@ -276,13 +305,13 @@ message_label.y = local.fsck_label.y + (first_line_height * 2); } - # Debug("action label x = " + message_label.x + " y = " + message_label.y ); + #Debug("action label x = " + message_label.x + " y = " + message_label.y ); # message_debug = "msg_x = " + message_label.x + " msg_y = " + message_label.y + # "msg_width = " + message_label.width + " msg_height = " + # message_label.height + " message = " + label; # Debug(message_debug); - + return message_label; } @@ -291,28 +320,28 @@ fun get_fsck_label (label, is_fake) { # Debug("Get Label position"); local.fsck_label = global.progress_label; - + if (is_fake) - fsck_label.image = ImageToTintedText ("This is a fake message"); + fsck_label.image = ImageFromTintedText ("This is a fake message"); else - fsck_label.image = ImageToTintedText (label); - + fsck_label.image = ImageFromTintedText (label); + fsck_label.width = fsck_label.image.GetWidth (); fsck_label.height = fsck_label.image.GetHeight (); - + # Centre the label horizontally - fsck_label.x = Window.GetX () + Window.GetWidth () / 2 - fsck_label.width / 2; - + fsck_label.x = (Window.GetWidth () - fsck_label.width) / 2; + local.first_label = get_message_label (label, 1, 0); - + # Place the label below the 1st message line fsck_label.y = local.first_label.y + local.first_label.height + (local.first_label.height / 2); - + # message_debug = "msg_x = " + fsck_label.x + " msg_y = " + fsck_label.y + # "msg_width = " + fsck_label.width + " msg_height = " + # fsck_label.height + " message = " + label; # Debug(message_debug); - + return fsck_label; } @@ -324,14 +353,14 @@ # NOTE: this is called when doing something like 'plymouth message "hello world"' # fun setup_message (message_text, x, y, z, index) { - # Debug("Message setup"); - global.message_notification[index].image = (index) && ImageToActionText (message_text) || ImageToTintedText (message_text); + #DebugMedium("Message setup: " + message_text); + global.message_notification[index].image = (index) && ImageFromActionText (message_text) || ImageFromTintedText (message_text); # Set up the text message, if any message_notification[index].x = x; message_notification[index].y = y; message_notification[index].z = z; - + message_notification[index].sprite = Sprite (); message_notification[index].sprite.SetImage (message_notification[index].image); message_notification[index].sprite.SetX (message_notification[index].x); @@ -358,12 +387,12 @@ # Debug("Message callback"); is_fake = 0; if (!message || (message == "")) is_fake = 1; - + local.substring = "keys:"; - + # Look for the "keys:" prefix local.keys = StringString(message, local.substring); - + local.is_action_line = (keys != NULL); #Debug("keys " + local.keys + " substring length = " + StringLength(local.substring)); @@ -371,10 +400,16 @@ if (keys != NULL) message = StringCopy (message, keys + StringLength(local.substring), NULL); + # Get the message without the "fsckd-cancel-msg" prefix as we don't support i18n + substring = "fsckd-cancel-msg:"; + keys = StringString(message, substring); + if (keys != NULL) + message = StringCopy(message, keys + StringLength(substring), NULL); + local.label.is_fake = is_fake; label = get_message_label(message, is_fake, is_action_line); label.z = 10000; - + setup_message (message, label.x, label.y, label.z, is_action_line); if (prompt_active && local.is_action_line) hide_message (is_action_line); @@ -388,36 +423,36 @@ # fun password_dialogue_setup (message_label) { - # Debug("Password dialog setup"); - + #Debug("Password dialog setup"); + local.entry; local.bullet_image; - + bullet_image = Image (password_dot_filename); entry.image = Image (password_field_filename); - + # Hide the normal labels prompt_active = 1; if (message_notification[1].sprite) hide_message (1); - + # Set the prompt label label = get_message_label(message_label, 0, 1); label.z = 10000; - + setup_message (message_label, label.x, label.y, label.z, 2); show_message (2); # Set up the text entry which contains the bullets entry.sprite = Sprite (); entry.sprite.SetImage (entry.image); - + # Centre the box horizontally - entry.x = Window.GetX () + Window.GetWidth () / 2 - entry.image.GetWidth () / 2; + entry.x = (Window.GetWidth () - entry.image.GetWidth ()) / 2; # Put the entry below the second label. - entry.y = message_notification[2].y + label.height; + entry.y = message_notification[2].y + label.height * 1.5; - # Debug ("entry x = " + entry.x + ", y = " + entry.y); + #DebugMedium("entry x = " + entry.x + ", y = " + entry.y); entry.z = 10000; entry.sprite.SetX (entry.x); entry.sprite.SetY (entry.y); @@ -427,7 +462,7 @@ } fun password_dialogue_opacity (opacity) { - # Debug("Password dialog opacity"); + #Debug("Setting password dialog opacity to " + opacity); global.password_dialogue.opacity = opacity; local = global.password_dialogue; @@ -435,7 +470,7 @@ # entry.sprite.SetOpacity (0.3); entry.sprite.SetOpacity (opacity); label.sprite.SetOpacity (opacity); - + if (bullets) { for (index = 0; bullets[index]; index++) { bullets[index].sprite.SetOpacity (opacity); @@ -447,8 +482,8 @@ # The callback function is called when the display should display a password dialogue. # First arg is prompt string, the second is the number of bullets. fun display_password_callback (prompt, bullets) { - # Debug("Password dialog setup"); - + #Debug("Password dialog setup"); + global.status = "password"; if (!global.password_dialogue) password_dialogue_setup(prompt); password_dialogue_opacity (1); @@ -458,10 +493,11 @@ password_dialogue.bullet_image.GetHeight () / 2; margin = bullet_width; spaces = Math.Int( (password_dialogue.entry.image.GetWidth () - (margin * 2)) / (bullet_width / 2 ) ); - # Debug ("spaces = " + spaces + ", bullets = " + bullets); + #DebugMedium ("spaces = " + spaces + ", bullets = " + bullets); bullets_area.width = margin + spaces * (bullet_width / 2); - bullets_area.x = Window.GetX () + Window.GetWidth () / 2 - bullets_area.width / 2; - # DebugBottom ("pwd_entry x = " + password_dialogue.entry.x + ", bullets_area.x = " + bullets_area.x + ", bullets_area.width = " + bullets_area.width); + bullets_area.x = (Window.GetWidth () - bullets_area.width) / 2; + #DebugBottom ("pwd_entry (x,y) = " + password_dialogue.entry.x + "," + password_dialogue.entry.y + # + "), bullets_area.x = " + bullets_area.x + ", bullets_area.width = " + bullets_area.width); if (bullets > spaces) bullets = spaces; for (index = 0; password_dialogue.bullets[index] || index < bullets; index++){ @@ -485,7 +521,7 @@ } } -Plymouth.SetDisplayPasswordFunction (display_password_callback); +Plymouth.SetDisplayPasswordFunction (display_password_callback); Plymouth.SetMessageFunction (message_callback); @@ -534,7 +570,7 @@ fun set_progress_label_opacity (opacity) { # the label progress_label.sprite.SetOpacity (opacity); - + # Make the slot available again when hiding the bar # So that another bar can take its place if (opacity == 0) { @@ -573,20 +609,20 @@ # This happens when only counter.total has changed. if (progress != NULL) { progress_label.progress = progress; - + #Debug("device " + progress_label.device + " progress " + progress); - + # If progress >= 100% hide the label and make it available again if (progress >= 100) { set_progress_label_opacity (0); - + # See if we any other fsck check is complete # and, if so, hide the progress bars and the labels on_fsck_completed (); - + return 0; } - } + } # Update progress label here # # FIXME: the queue logic from this theme should really be moved into mountall @@ -600,7 +636,7 @@ #progress_label.progress = progress; progress_label.sprite = Sprite (progress_label.image); - + # Set up the bar progress_label.sprite.SetPosition(progress_label.x, progress_label.y, 1); @@ -620,7 +656,7 @@ global.fsck_queue[0].device; global.fsck_queue[0].progress; global.fsck_queue.counter = 0; - global.fsck_queue.biggest_item = 0; + global.fsck_queue.biggest_item = 0; } fun clear_queue () { @@ -644,18 +680,18 @@ continue; } local.index = i; - + # Set device and progress global.fsck_queue[local.index].device = device; global.fsck_queue[local.index].progress = progress; - + # Increase the queue counter global.fsck_queue.counter++; - + # Update the max index of the array for iterations if (local.index > global.fsck_queue.biggest_item) global.fsck_queue.biggest_item = local.index; - + #DebugMedium ("Adding " + device + " at " + local.index); } @@ -674,7 +710,7 @@ fun on_queued_fsck_completed () { if (!is_queue_empty ()) return; - + # Hide the extra label, if any #if (progress_bar.extra_label.sprite) # progress_bar.extra_label.sprite.SetOpacity(0); @@ -688,7 +724,7 @@ # Decrease the queue counter global.fsck_queue.counter--; - + # See if there are other processes in the queue # if not, clear the extra_label on_queued_fsck_completed (); @@ -700,14 +736,14 @@ if (!is_progress_label_available ()) return; - + if (!is_queue_empty ()) return; - + # Hide the progress label if (progress_label.sprite) progress_label.sprite.SetOpacity (0); - + # Clear the queue clear_queue (); @@ -723,10 +759,10 @@ on_queued_fsck_completed (); return; } - + global.fsck_queue[index].device = device; global.fsck_queue[index].progress = progress; - + } # TODO: Move it to some function @@ -755,7 +791,7 @@ return; } - + if (device_has_progress_label (device)) { # Update the progress of the existing label update_progress_label (progress); @@ -766,11 +802,11 @@ # See if the progress_label is available if (progress_label.is_available) { - + # local.my_string = "available index " + local.available_index + " progress_bar counter is " + progress_bar.counter; # Debug(local.my_string); - - + + # If the fsck check for the device was in the queue, then # remove it from the queue if (local.queue_device_index >= 0) { @@ -780,18 +816,18 @@ # Increase the fsck counter increase_fsck_count (); } - + # local.my_string += local.message; #Debug("setting new label for device " + device + " progress " + progress); # Set up a new label for the check init_progress_label (device, status_string); update_progress_label (progress); - + } # If the progress_label is not available else { - + # If the fsck check for the device is already in the queue # just update its progress in the queue if (local.queue_device_index >= 0) { @@ -808,10 +844,10 @@ refresh_progress_label (); } - + } } - + # if (!is_queue_empty ()) { # DebugBottom("Extra label for "+ device); #} @@ -838,10 +874,10 @@ fun update_status_callback (status) { # Debug(status); if (!status) return; - + string_it = 0; update_strings[string_it] = ""; - + for (i=0; (String(status).CharAt(i) != ""); i++) { local.temp_char = String(status).CharAt(i); if (temp_char != ":") @@ -849,21 +885,21 @@ else update_strings[++string_it] = ""; } - + # my_string = update_strings[0] + " " + update_strings[1] + " " + update_strings[2]; # Debug(my_string); # Let's assume that we're dealing with these strings fsck:sda1:40 if ((string_it >= 2) && (update_strings[0] == "fsck")) { - + device = update_strings[1]; progress = update_strings[2]; status_string[0] = update_strings[3]; # "Checking disk %1$d of %2$d (%3$d %% complete)" if (!status_string[0]) status_string[0] = "Checking disk %1$d of %2$d (%3$d %% complete)"; - + if ((device != "") && (progress != "")) { progress = StringToInteger (progress); - + # Make sure that the fsck_queue is initialised if (!global.fsck_queue) init_queue (); @@ -874,15 +910,32 @@ # if (!global.progress_bar.extra_label.sprite) # create_extra_fsck_label (); - + # Keep track of the fsck check fsck_check (device, progress, status_string); } - + + } + + # systemd-fsckd pass fsckd::: + if (update_strings[0] == "fsckd") { + number_devices = StringToInteger(update_strings[1]); + + if (number_devices > 0) { + label = update_strings[3]; + + progress_label = get_fsck_label (label, 0); + progress_label.sprite = Sprite (progress_label.image); + progress_label.sprite.SetPosition(progress_label.x, progress_label.y, 1); + progress_label.sprite.SetOpacity (1); + } else { + if (progress_label.sprite) + progress_label.sprite.SetOpacity (0); + } } } -Plymouth.SetUpdateStatusFunction (update_status_callback); +Plymouth.SetUpdateStatusFunction (update_status_callback); #-----------------------------------------Display Question stuff ----------------------- # @@ -895,7 +948,8 @@ # time++; #} # -#Plymouth.SetDisplayQuestionFunction (display_question_callback); +#Plymouth.SetDisplayQuestionFunction (display_question_callback); + #-----------------------------------------Refresh stuff -------------------------------- @@ -918,8 +972,8 @@ if (global.anim_status == "running") { anim_done = 1; - for (i = 0; i < ELECTRONS_DISPLAYED; i++) { - if (anim_iter >= ellipses[i].anim.start_iter && anim_iter < ellipses[i].anim.stop_iter) { + for (i = 0; i < ELECTRONS_DISPLAYED; i++) { + if (anim_iter >= ellipses[i].anim.start_iter && anim_iter < ellipses[i].anim.stop_iter) { draw_electron(i); ellipses[i].anim.angle += ellipses[i].anim.angle_incr; @@ -995,10 +1049,11 @@ if (message_notification[2].sprite) hide_message(2); prompt_active = 0; } - - if (message_notification[1].sprite) show_message (1); - - + + if (message_notification[1].sprite) { + show_message (1); + } + } Plymouth.SetDisplayNormalFunction (display_normal_callback); @@ -1011,7 +1066,7 @@ fun quit_callback () { logo.sprite.SetOpacity (1); - switch_on_bullets (); + switch_on_bullets (); } Plymouth.SetQuitFunction(quit_callback); Binary files /srv/release.debian.org/tmp/O8T7cJ0HLg/debian-edu-artwork-legacy-20220131/art-spacefun/plymouth/password_dot.png and /srv/release.debian.org/tmp/N48d3h0tKj/debian-edu-artwork-legacy-20260916/art-spacefun/plymouth/password_dot.png differ Binary files /srv/release.debian.org/tmp/O8T7cJ0HLg/debian-edu-artwork-legacy-20220131/art-spacefun/plymouth/password_field.png and /srv/release.debian.org/tmp/N48d3h0tKj/debian-edu-artwork-legacy-20260916/art-spacefun/plymouth/password_field.png differ diff -Nru debian-edu-artwork-legacy-20220131/configure.ac debian-edu-artwork-legacy-20260916/configure.ac --- debian-edu-artwork-legacy-20220131/configure.ac 2020-12-19 12:58:58.000000000 +0000 +++ debian-edu-artwork-legacy-20260916/configure.ac 2025-09-15 12:05:52.000000000 +0000 @@ -26,6 +26,7 @@ AC_OUTPUT([ Makefile art-spacefun/Makefile +art-spacefun/arctica-greeter/Makefile art-spacefun/g-i/Makefile art-spacefun/gnome-shell/Makefile art-spacefun/desktop-base/Makefile diff -Nru debian-edu-artwork-legacy-20220131/debian/changelog debian-edu-artwork-legacy-20260916/debian/changelog --- debian-edu-artwork-legacy-20220131/debian/changelog 2022-01-31 12:45:54.000000000 +0000 +++ debian-edu-artwork-legacy-20260916/debian/changelog 2026-11-03 18:32:21.000000000 +0000 @@ -1,3 +1,94 @@ +debian-edu-artwork-legacy (20260916-1~deb13u1) trixie; urgency=medium + + * Release to trixie. + + -- Mike Gabriel Tue, 03 Nov 2026 19:32:21 +0100 + +debian-edu-artwork-legacy (20260916-1) unstable; urgency=medium + + [ Mike Gabriel ] + * debian/changelog: Typo fix in previous upload. + * debian/debian-edu-artwork-spacefun.links: + + Reference plymouth theme in d-e-a-spacefun themefolder via symlink. + + Make Plymouth theme description file 'debian-edu-spacefun.plymouth' also + known under 'debian-theme.plymouth' for the desktop-theme update- + alternative approach to work. + * debian/update-debian-edu-artwork-spacefun: + + Start using virtual Plymouth theme 'debian-theme'. + + Only install a theme if not yet installed and activate the theme by + actively setting it to installed. The last installed debian-edu- + artwork theme wins. + + Don't remove other debian-edu-artwork themes before configuring. Co- + installation shall be supported. + * debian/debian-edu-artwork-spacefun.{postinst,triggers}: + + Don't get triggered by changes in /etc/plymouth anymore, stop setting + plymouth theme when triggered. + * debian/control: + + Add to R: plymouth-label. + + Bump Standards-Version: to 4.7.4; drop R³: field; drop Priority: field. + + Add desktop-base to Pre-Depends:. We need all desktop-base alternatives + to be set up. + + Drop support for co-installing Debian Edu Artwork themes. Add B:/R: + relations to other debian-edu-artwork-* packages. + + [ Serhii Horichenko ] + * art-spacefun/plymouth/debian-edu-spacefun.script: + - Reorder variables and functions, fix password prompt. (Closes: #1147149). + - White-space cleanup. + - Add section to that initializes the screen/window setup. + - Add sections to enable systemd-fsckd in the script + - Move password field to 1/4 of screen height, adapt password field colors + to the theme's background image. + + -- Mike Gabriel Fri, 11 Sep 2026 21:03:40 +0200 + +debian-edu-artwork-legacy (20250915-3~deb13u1) trixie; urgency=medium + + * Release to trixie. + + -- Mike Gabriel Mon, 07 Sep 2026 14:12:17 +0200 + +debian-edu-artwork-legacy (20250915-3) unstable; urgency=medium + + * debian/debian-edu-artwork-spacefun.install: + + Re-add lost /usr/share/gnome-background-properties/. (Regression fix). + + -- Mike Gabriel Mon, 15 Sep 2025 14:28:09 +0200 + +debian-edu-artwork-legacy (20250915-2) unstable; urgency=medium + + * Integrate changes from NMU 20220131-1.1. + + -- Mike Gabriel Mon, 15 Sep 2025 14:19:25 +0200 + +debian-edu-artwork-legacy (20250915-1) unstable; urgency=medium + + * art-spacefun/arctica-greeter/34_arctica-greeter-theme-debian-edu-artwork- + spacefun.gschema.override: + + Add file. Hide the Debian (Edu) logo in arctica-greeter and use the + background.svg (instead of the background-nologo.svg). + * debian/debian-edu-artwork-spacefun.triggers: + + Add /usr/share/doc/debian-edu-artwork-spacefun to d-e-a-spacefun triggers. + * debian/update-debian-edu-artwork-spacefun*: + + Copy new script version from d-e-artwork src:pkg, also use their homepage + template. + * debian/{compat,control,rules}: + + Port to pure debhelper. + * debian/control: + + Bump Standards-Version: to 4.7.2. No changes needed. + * debian/copyright: + + Update copyright attributions. + + Update FSF mailing address. + + -- Mike Gabriel Mon, 15 Sep 2025 12:47:01 +0200 + +debian-edu-artwork-legacy (20220131-1.1) unstable; urgency=medium + + * Non-maintainer upload. + * Drop usage of CDBS + + -- Alexandre Detiste Mon, 08 Sep 2025 23:15:24 +0200 + debian-edu-artwork-legacy (20220131-1) unstable; urgency=medium * art-spacefun/desktop-base/grub-16x9.png: diff -Nru debian-edu-artwork-legacy-20220131/debian/compat debian-edu-artwork-legacy-20260916/debian/compat --- debian-edu-artwork-legacy-20220131/debian/compat 2018-09-17 11:57:04.000000000 +0000 +++ debian-edu-artwork-legacy-20260916/debian/compat 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -10 diff -Nru debian-edu-artwork-legacy-20220131/debian/control debian-edu-artwork-legacy-20260916/debian/control --- debian-edu-artwork-legacy-20220131/debian/control 2022-01-31 12:45:54.000000000 +0000 +++ debian-edu-artwork-legacy-20260916/debian/control 2026-11-03 18:31:53.000000000 +0000 @@ -1,30 +1,41 @@ Source: debian-edu-artwork-legacy Section: graphics -Priority: optional Maintainer: Debian Edu Developers Uploaders: Mike Gabriel , Build-Depends: advancecomp, - cdbs, - debhelper (>= 10), + debhelper-compat (= 13), imagemagick, inkscape, librsvg2-bin, optipng, rdfind, symlinks, - devscripts -Standards-Version: 4.6.0 -Rules-Requires-Root: no +Standards-Version: 4.7.4 Homepage: https://wiki.debian.org/DebianEdu/Teams/ArtWork -Vcs-Browser: https://salsa.debian.org/debian-edu/debian-edu-artwork-legacy/ +Vcs-Browser: https://salsa.debian.org/debian-edu/debian-edu-artwork-legacy Vcs-Git: https://salsa.debian.org/debian-edu/debian-edu-artwork-legacy.git Package: debian-edu-artwork-spacefun Architecture: all +Pre-Depends: ${misc:Pre-Depends}, + desktop-base, Depends: ${misc:Depends}, debian-edu-artwork, -Breaks: debian-edu-artwork (<< 0.46~) -Replaces: debian-edu-artwork (<< 0.46~) +Recommends: plymouth-label, +Breaks: debian-edu-artwork-buster, + debian-edu-artwork-futureprototype, + debian-edu-artwork-emerald, + debian-edu-artwork-homeworld, + debian-edu-artwork-ceratopsian, + debian-edu-artwork-softwaves, + debian-edu-artwork (<< 0.46~), +Replaces: debian-edu-artwork-buster, + debian-edu-artwork-futureprototype, + debian-edu-artwork-emerald, + debian-edu-artwork-homeworld, + debian-edu-artwork-ceratopsian, + debian-edu-artwork-softwaves, + debian-edu-artwork (<< 0.46~), Description: Debian Edu Spacefun (squeeze) themes and artwork The Debian Edu Artwork packages provide a collection of images, themes, wallpapers and splash screens for use with Debian Edu. diff -Nru debian-edu-artwork-legacy-20220131/debian/copyright debian-edu-artwork-legacy-20260916/debian/copyright --- debian-edu-artwork-legacy-20220131/debian/copyright 2018-09-17 11:57:14.000000000 +0000 +++ debian-edu-artwork-legacy-20260916/debian/copyright 2025-09-15 12:10:29.000000000 +0000 @@ -1,7 +1,7 @@ Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ Upstream-Name: Debian Edu Artwork Legacy Upstream-Contact: Debian Edu Developers -Source: https://salsa.debian.org/debian-edu/debian-edu/debian-edu-artwork-legacy.git/ +Source: https://salsa.debian.org/debian-edu/debian-edu/debian-edu-artwork-legacy.git/ Files: * Copyright: 2005-2014, Petter Reinholdtsen @@ -9,7 +9,8 @@ 2011, Andreas B. Mundt 2007-2014, Holger Levsen 2012-2014, Wolfgang Schweer - 2014, Mike Gabriel + 2025, Guido Berhörster + 2014-2025, Mike Gabriel License: GPL-2+ License: GPL-2+ @@ -25,7 +26,7 @@ . You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + Foundation, Inc., 31 Milk Street, # 960789, Boston, MA 02196, USA. . On Debian systems, the complete text of the GNU General Public License, can be found in /usr/share/common-licenses/GPL-2. diff -Nru debian-edu-artwork-legacy-20220131/debian/debian-edu-artwork-spacefun.docs debian-edu-artwork-legacy-20260916/debian/debian-edu-artwork-spacefun.docs --- debian-edu-artwork-legacy-20220131/debian/debian-edu-artwork-spacefun.docs 1970-01-01 00:00:00.000000000 +0000 +++ debian-edu-artwork-legacy-20260916/debian/debian-edu-artwork-spacefun.docs 2025-09-15 12:05:52.000000000 +0000 @@ -0,0 +1,2 @@ +AUTHORS +README.md diff -Nru debian-edu-artwork-legacy-20220131/debian/debian-edu-artwork-spacefun.install debian-edu-artwork-legacy-20260916/debian/debian-edu-artwork-spacefun.install --- debian-edu-artwork-legacy-20220131/debian/debian-edu-artwork-spacefun.install 2020-12-19 12:58:58.000000000 +0000 +++ debian-edu-artwork-legacy-20260916/debian/debian-edu-artwork-spacefun.install 2026-09-07 12:14:08.000000000 +0000 @@ -1,5 +1,6 @@ usr/share/desktop-base/debian-edu-spacefun-theme/ +usr/share/glib-2.0/schemas/ +usr/share/gnome-background-properties/ usr/share/pixmaps/debian-edu-spacefun* usr/share/plymouth/themes/debian-edu-spacefun/ debian/update-debian-edu-artwork-spacefun /usr/sbin/ -usr/share/gnome-background-properties/debian-edu-spacefun.xml diff -Nru debian-edu-artwork-legacy-20220131/debian/debian-edu-artwork-spacefun.links debian-edu-artwork-legacy-20260916/debian/debian-edu-artwork-spacefun.links --- debian-edu-artwork-legacy-20220131/debian/debian-edu-artwork-spacefun.links 2021-05-20 20:34:50.000000000 +0000 +++ debian-edu-artwork-legacy-20260916/debian/debian-edu-artwork-spacefun.links 2026-11-03 18:31:53.000000000 +0000 @@ -1,2 +1,4 @@ /usr/share/desktop-base/debian-edu-spacefun-theme/wallpaper /usr/share/desktop-base/debian-edu-spacefun-theme/lockscreen /usr/share/desktop-base/debian-edu-spacefun-theme/login/background.svg /usr/share/desktop-base/debian-edu-spacefun-theme/login/background-nologo.svg +/usr/share/plymouth/themes/debian-edu-spacefun /usr/share/desktop-base/debian-edu-spacefun-theme/plymouth +/usr/share/plymouth/themes/debian-edu-spacefun/debian-edu-spacefun.plymouth /usr/share/plymouth/themes/debian-edu-spacefun/debian-theme.plymouth diff -Nru debian-edu-artwork-legacy-20220131/debian/debian-edu-artwork-spacefun.postinst debian-edu-artwork-legacy-20260916/debian/debian-edu-artwork-spacefun.postinst --- debian-edu-artwork-legacy-20220131/debian/debian-edu-artwork-spacefun.postinst 2018-12-04 14:55:37.000000000 +0000 +++ debian-edu-artwork-legacy-20260916/debian/debian-edu-artwork-spacefun.postinst 2026-11-03 18:31:53.000000000 +0000 @@ -10,10 +10,4 @@ configure) update-debian-edu-artwork-$EDUTHEME configure ;; - triggered) - update-debian-edu-artwork-$EDUTHEME configure - if [ -f /etc/plymouth/plymouthd.conf ] && [ -f /etc/debian-edu/config ] && which plymouth-set-default-theme > /dev/null ; then - plymouth-set-default-theme -R debian-edu-${EDUTHEME} - fi - ;; esac diff -Nru debian-edu-artwork-legacy-20220131/debian/debian-edu-artwork-spacefun.triggers debian-edu-artwork-legacy-20260916/debian/debian-edu-artwork-spacefun.triggers --- debian-edu-artwork-legacy-20220131/debian/debian-edu-artwork-spacefun.triggers 2018-12-06 20:46:21.000000000 +0000 +++ debian-edu-artwork-legacy-20260916/debian/debian-edu-artwork-spacefun.triggers 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ -interest-noawait /usr/share/plasma/desktoptheme -interest-noawait /etc/plymouth diff -Nru debian-edu-artwork-legacy-20220131/debian/rules debian-edu-artwork-legacy-20260916/debian/rules --- debian-edu-artwork-legacy-20220131/debian/rules 2018-12-04 14:59:02.000000000 +0000 +++ debian-edu-artwork-legacy-20260916/debian/rules 2025-09-15 12:07:39.000000000 +0000 @@ -2,35 +2,26 @@ include /usr/share/dpkg/pkg-info.mk -PKD = $(word 1,$(abspath $(dir $(MAKEFILE_LIST)))) -PKG = $(DEB_SOURCE) -UVER = $(shell echo $(DEB_VERSION) | cut -d "-" -f1) - -include /usr/share/cdbs/1/class/autotools.mk -include /usr/share/cdbs/1/rules/autoreconf.mk -include /usr/share/cdbs/1/rules/debhelper.mk -include /usr/share/cdbs/1/rules/utils.mk - -DEB_DH_MAKESHLIBS_ARGS_ALL = -n -DEB_MAKE_INSTALL_TARGET = install DESTDIR=$(CURDIR)/debian/tmp -DEB_DH_BUILDDEB_ARGS = -- -Zxz -# don't ship empty upstream ChangeLog: -DEB_INSTALL_CHANGELOGS_ALL = - -pre-build:: - cp README.md README - -cleanbuilddir:: - rm -f README - -sbindir := /usr/sbin/ -install/debian-edu-artwork-spacefun:: - install -d debian/$(cdbs_curpkg)$(sbindir) - install debian/update-debian-edu-artwork-spacefun debian/$(cdbs_curpkg)$(sbindir) +%: + dh $@ + +override_dh_auto_build: + dh_auto_build --no-parallel + +override_dh_installchangelogs: + # don't ship empty upstream ChangeLog: + dh_installchangelogs -XNEWS -XChangeLog + +override_dh_makeshlibs: + dh_makeshlibs --no-scripts + +override_dh_auto_install: + dh_auto_install --destdir=debian/tmp new-upstream-version: clean - mkdir -p $(PKG)-$(UVER)/ - rsync -av --delete --exclude=debian/ --exclude=$(PKG)-$(UVER)/ * $(PKG)-$(UVER)/ - find "$(PKG)-$(UVER)" -xdev \( -type f -o -type l \) -print| sort \ - | tar -cJaf "../$(PKG)_$(UVER).orig.tar.xz" -T- --owner=root --group=root --mode=a+rX \ - && $(RM) -r "$(PKG)-$(UVER)" + mkdir -p $(DEB_SOURCE)-$(DEB_VERSION_UPSTREAM)/ + rsync -av --delete --exclude=debian/ --exclude=$(DEB_SOURCE)-$(DEB_VERSION_UPSTREAM)/ * \ + $(DEB_SOURCE)-$(DEB_VERSION_UPSTREAM)/ + find "$(DEB_SOURCE)-$(DEB_VERSION_UPSTREAM)" -xdev \( -type f -o -type l \) -print| sort \ + | tar -cJaf "../$(DEB_SOURCE)_$(DEB_VERSION_UPSTREAM).orig.tar.xz" -T- --owner=root --group=root --mode=a+rX \ + && $(RM) -r "$(DEB_SOURCE)-$(DEB_VERSION_UPSTREAM)" diff -Nru debian-edu-artwork-legacy-20220131/debian/update-debian-edu-artwork-spacefun debian-edu-artwork-legacy-20260916/debian/update-debian-edu-artwork-spacefun --- debian-edu-artwork-legacy-20220131/debian/update-debian-edu-artwork-spacefun 2021-05-20 20:34:50.000000000 +0000 +++ debian-edu-artwork-legacy-20260916/debian/update-debian-edu-artwork-spacefun 2026-11-03 18:31:53.000000000 +0000 @@ -1,36 +1,79 @@ #! /bin/sh set -e -EDUTHEME="spacefun" +THEMES="buster ceratopsian emerald homeworld softwaves spacefun" + +basename="$(basename "$0")" +edutheme="${basename}" +edutheme="${edutheme#update-debian-edu-artwork-}" + +if [ "${edutheme}" = "${basename}" ]; then + echo "${basename} script called directly, please call ${basename}- scripts (symlinks) instead." + exit 1 +fi + +check_alternative_installed() { + alt_name="$1" + alt_path="$2" + if update-alternatives --list "${alt_name}" | grep -q "${alt_path}"; then + # alternative already installed + return 0 + fi + # alternative not installed, yet + return 1 +} set_active_theme() { - update-alternatives --install \ - /usr/share/desktop-base/active-theme \ - desktop-theme \ - /usr/share/desktop-base/debian-edu-${EDUTHEME}-theme 60 + if ! check_alternative_installed desktop-theme /usr/share/desktop-base/debian-edu-${edutheme}-theme; then + update-alternatives --install \ + /usr/share/desktop-base/active-theme \ + desktop-theme \ + /usr/share/desktop-base/debian-edu-${edutheme}-theme 60 + fi + update-alternatives --set desktop-theme /usr/share/desktop-base/debian-edu-${edutheme}-theme } restore_active_theme() { update-alternatives --remove \ desktop-theme \ - /usr/share/desktop-base/debian-edu-${EDUTHEME}-theme + /usr/share/desktop-base/debian-edu-${edutheme}-theme } ## GRUB and PXE boot background change_grub_background() { - update-alternatives --install /usr/share/images/desktop-base/desktop-grub.png \ - desktop-grub \ - /usr/share/desktop-base/debian-edu-${EDUTHEME}-theme/grub/grub-4x3.png 40 \ - --slave /usr/share/desktop-base/grub_background.sh \ - desktop-grub.sh \ - /usr/share/desktop-base/debian-edu-${EDUTHEME}-theme/grub/grub_background.sh - update-alternatives --install /usr/share/images/desktop-base/desktop-grub.png \ - desktop-grub \ - /usr/share/desktop-base/debian-edu-${EDUTHEME}-theme/grub/grub-16x9.png 40 \ - --slave /usr/share/desktop-base/grub_background.sh \ - desktop-grub.sh \ - /usr/share/desktop-base/debian-edu-${EDUTHEME}-theme/grub/grub_background.sh - if which update-grub > /dev/null ; then + # Tie desktop-grub to the active-theme. + if check_alternative_installed desktop-grub /usr/share/desktop-base/active-theme/grub/grub-16x9.png; then + # prefer 16:9 grub theme (e.g. FullHD and friends) + update-alternatives --set desktop-grub /usr/share/desktop-base/active-theme/grub/grub-16x9.png + fi + + # Install all our desktop-grub variants as alternative options, if needed by the system's admin. + if ! check_alternative_installed desktop-grub /usr/share/desktop-base/debian-edu-${edutheme}-theme/grub/grub-4x3.png; then + update-alternatives --install /usr/share/images/desktop-base/desktop-grub.png \ + desktop-grub \ + /usr/share/desktop-base/debian-edu-${edutheme}-theme/grub/grub-4x3.png 40 \ + --slave /usr/share/desktop-base/grub_background.sh \ + desktop-grub.sh \ + /usr/share/desktop-base/debian-edu-${edutheme}-theme/grub/grub_background.sh + fi + if ! check_alternative_installed desktop-grub /usr/share/desktop-base/debian-edu-${edutheme}-theme/grub/grub-16x9.png; then + update-alternatives --install /usr/share/images/desktop-base/desktop-grub.png \ + desktop-grub \ + /usr/share/desktop-base/debian-edu-${edutheme}-theme/grub/grub-16x9.png 40 \ + --slave /usr/share/desktop-base/grub_background.sh \ + desktop-grub.sh \ + /usr/share/desktop-base/debian-edu-${edutheme}-theme/grub/grub_background.sh + fi + + # update the grub configuration + if command -v update-grub > /dev/null ; then + # We have seen situations where grub is installed at the end of an + # installation, but /boot/grub has not been created, yet, when running + # this postinst's script function code. + # + # This e.g. can be observed when installing debian-edu-router using FAI. + mkdir -p /boot/grub + sync update-grub || true fi @@ -38,120 +81,131 @@ restore_grub_background() { update-alternatives --remove desktop-grub \ - /usr/share/desktop-base/debian-edu-${EDUTHEME}-theme/grub/grub-4x3.png + /usr/share/desktop-base/debian-edu-${edutheme}-theme/grub/grub-4x3.png update-alternatives --remove desktop-grub \ - /usr/share/desktop-base/debian-edu-${EDUTHEME}-theme/grub/grub-16x9.png - if which update-grub > /dev/null ; then + /usr/share/desktop-base/debian-edu-${edutheme}-theme/grub/grub-16x9.png + + # update the grub configuration + if command -v update-grub > /dev/null ; then update-grub || true fi } ## Wallpaper change_desktop_background() { - update-alternatives --install \ - /usr/share/images/desktop-base/desktop-background \ - desktop-background \ - /usr/share/desktop-base/active-theme/wallpaper/contents/images/1920x1080.svg 70 - update-alternatives --install \ - /usr/share/images/desktop-base/desktop-background.xml \ - desktop-background.xml \ - /usr/share/desktop-base/active-theme/wallpaper/gnome-background.xml 50 - update-alternatives --install \ - /usr/share/images/desktop-base/desktop-background.xml \ - desktop-background.xml \ - /usr/share/desktop-base/debian-edu-${EDUTHEME}-theme/wallpaper/gnome-background.xml 50 - - for WALLPAPER in 1024x768.svg \ - 1280x720.svg \ - 1280x800.svg \ - 1280x1024.svg \ - 1600x1200.svg \ - 1920x1080.svg \ - 1920x1200.svg \ - 2560x1080.svg \ - 4096x2160.svg; do - update-alternatives --install \ - /usr/share/images/desktop-base/desktop-background \ - desktop-background \ - /usr/share/desktop-base/debian-edu-${EDUTHEME}-theme/wallpaper/contents/images/$WALLPAPER 50 + # Tie desktop-background to the active-theme. + if check_alternative_installed desktop-background /usr/share/desktop-base/active-theme/wallpaper/contents/images/1920x1080.svg; then + update-alternatives --set desktop-background /usr/share/desktop-base/active-theme/wallpaper/contents/images/1920x1080.svg + fi + # Install all our background wallpapers as alternative options, if needed by the system's admin. + for wallpaper in \ + "/usr/share/desktop-base/debian-edu-${edutheme}-theme/wallpaper/contents/images/"[0-9]*x*.svg; + do + if ! check_alternative_installed desktop-background "${wallpaper}"; then + update-alternatives --install \ + /usr/share/images/desktop-base/desktop-background \ + desktop-background \ + "${wallpaper}" 50 + fi done + + # Tie desktop-background.xml to the active-theme. + if check_alternative_installed desktop-background.xml /usr/share/desktop-base/active-theme/wallpaper/gnome-background.xml; then + update-alternatives --set desktop-background.xml /usr/share/desktop-base/active-theme/wallpaper/gnome-background.xml + fi + + # Install all our desktop-background.xml as alternative option, if needed by the system's admin. + if ! check_alternative_installed desktop-background.xml /usr/share/desktop-base/debian-edu-${edutheme}-theme/wallpaper/gnome-background.xml; then + update-alternatives --install \ + /usr/share/images/desktop-base/desktop-background.xml \ + desktop-background.xml \ + /usr/share/desktop-base/debian-edu-${edutheme}-theme/wallpaper/gnome-background.xml 50 + fi } restore_desktop_background() { update-alternatives --remove \ - desktop-background \ - /usr/share/desktop-base/active-theme/wallpaper/contents/images/1920x1080.svg - update-alternatives --remove \ desktop-background.xml \ - /usr/share/desktop-base/debian-edu-${EDUTHEME}-theme/wallpaper/gnome-background.xml + /usr/share/desktop-base/debian-edu-${edutheme}-theme/wallpaper/gnome-background.xml - for WALLPAPER in 1024x768.svg \ - 1280x720.svg \ - 1280x800.svg \ - 1280x1024.svg \ - 1600x1200.svg \ - 1920x1080.svg \ - 1920x1200.svg \ - 2560x1080.svg \ - 4096x2160.svg; do - update-alternatives --remove \ + for wallpaper in \ + "/usr/share/desktop-base/debian-edu-${edutheme}-theme/wallpaper/contents/images/"[0-9]*x*.svg; + do + update-alternatives --remove \ desktop-background \ - /usr/share/desktop-base/debian-edu-${EDUTHEME}-theme/wallpaper/contents/images/$WALLPAPER + "${wallpaper}" done } -## Wallpaper -compile_gschemas() { - if [ -d /usr/share/glib-2.0/schemas/ ] && [ -x /usr/bin/glib-compile-schemas ]; then - glib-compile-schemas /usr/share/glib-2.0/schemas/ - fi -} - ## Plymouth set_plymouth_theme() { - if [ -f /etc/plymouth/plymouthd.conf ] && [ -f /etc/debian-edu/config ] && which plymouth-set-default-theme > /dev/null ; then - plymouth-set-default-theme -R debian-edu-${EDUTHEME} || true + # In the old times, we violated Debian policy in Debian Edu and modified + # /etc/plymouth/plymouthd.conf via this function (see #1057815 and #856789). + # + # The policy violation has been mitigated by only modifying plymouthd.conf if + # the Debian system is a Debian Edu system. + # + # For some time now, Plymouth theming is half-supported desktop-base + # via update-alternatives. If proposed changes for desktop-base (#1148027) + # and plymouth (#1148087) land before the forky release, modifying + # /etc/plymouth/plymouthd.conf will not be necessary anymore to enable + # debian-edu-artwork*'s Plymouth theme, it will be co-activated via + # update-alternatives --config desktop-theme. + # + # However, until forky let's make sure Debian Edu systems start using + # the virtual 'debian-theme' Plymouth theme, so we enforce it by tweaking + # /etc/plymouth/plymouthd.conf via the plymouth-set-default-theme command + # (on Debian Edu systems only, of course). + # + # Once above desktop-base and plymouth bugs have been resolved, the + # set_plymouth_theme() and restore_plymouth_theme() functions can be dropped + # from this script. + if [ -f /etc/plymouth/plymouthd.conf ] && [ -f /etc/debian-edu/config ] && command -v plymouth-set-default-theme > /dev/null ; then + plymouth-set-default-theme -R debian-theme || true fi } restore_plymouth_theme() { - if [ -f /etc/plymouth/plymouthd.conf ] && which plymouth-set-default-theme > /dev/null ; then + if [ -f /etc/plymouth/plymouthd.conf ] && command -v plymouth-set-default-theme > /dev/null ; then plymouth-set-default-theme -R -r || true fi } ## Lockscreen set_lockscreen() { - update-alternatives --install \ - /usr/share/images/desktop-base/desktop-lockscreen.xml \ - desktop-lockscreen.xml \ - /usr/share/desktop-base/debian-edu-${EDUTHEME}-theme/lockscreen/gnome-background.xml 50 + # Tie desktop-lockscreen.xml to the active-theme. + if check_alternative_installed desktop-lockscreen.xml /usr/share/desktop-base/active-theme/lockscreen/gnome-background.xml; then + update-alternatives --set desktop-lockscreen.xml /usr/share/desktop-base/active-theme/lockscreen/gnome-background.xml + fi + + # Install all our desktop-lockscreen.xml as alternative option, if needed by the system's admin. + if ! check_alternative_installed desktop-lockscreen.xml /usr/share/desktop-base/debian-edu-${edutheme}-theme/lockscreen/gnome-background.xml; then + update-alternatives --install \ + /usr/share/images/desktop-base/desktop-lockscreen.xml \ + desktop-lockscreen.xml \ + /usr/share/desktop-base/debian-edu-${edutheme}-theme/lockscreen/gnome-background.xml 50 + fi } restore_lockscreen() { update-alternatives --remove \ desktop-lockscreen.xml \ - /usr/share/desktop-base/debian-edu-${EDUTHEME}-theme/lockscreen/gnome-background.xml + /usr/share/desktop-base/debian-edu-${edutheme}-theme/lockscreen/gnome-background.xml } +is_valid=false +for theme in $THEMES; do + if [ "${edutheme}" = "${theme}" ]; then + is_valid=true + fi +done +$is_valid || exit 1 + case "$1" in configure) - if [ -x /usr/sbin/update-debian-edu-artwork-homeworld ]; then - update-debian-edu-artwork-homeworld remove - fi - if [ -x /usr/sbin/update-debian-edu-artwork-buster ]; then - update-debian-edu-artwork-buster remove - fi - if [ -x /usr/sbin/update-debian-edu-artwork-lines ]; then - update-debian-edu-artwork-lines remove - fi - if [ -x /usr/sbin/update-debian-edu-artwork-softwaves ]; then - update-debian-edu-artwork-softwaves remove - fi set_active_theme change_grub_background change_desktop_background - compile_gschemas set_plymouth_theme set_lockscreen ;; @@ -159,7 +213,6 @@ restore_active_theme restore_grub_background restore_desktop_background - compile_gschemas restore_plymouth_theme restore_lockscreen ;; diff -Nru debian-edu-artwork-legacy-20220131/debian/update-debian-edu-artwork-spacefun.8 debian-edu-artwork-legacy-20260916/debian/update-debian-edu-artwork-spacefun.8 --- debian-edu-artwork-legacy-20220131/debian/update-debian-edu-artwork-spacefun.8 2020-12-19 12:58:58.000000000 +0000 +++ debian-edu-artwork-legacy-20260916/debian/update-debian-edu-artwork-spacefun.8 2025-09-15 12:07:17.000000000 +0000 @@ -5,9 +5,9 @@ \\$2 \(la\\$1\(ra\\$3 .. .if \n(.g .mso www.tmac -.TH update-debian-edu-artwork-spacefun 8 "June 2014" "Debian Edu" +.TH update-debian-edu-artwork-spacefun 8 "September 2025" "Debian Edu" .SH NAME -update-debian-edu-artwork-spacefun \- Enable/disable Debian Edu Spacefun themes system-wide +update-debian-edu-artwork-spacefun \- Enable/disable Debian Edu Spacefun theme system-wide .SH SYNOPSIS 'nh .fi @@ -24,15 +24,14 @@ .ad b 'hy .SH DESCRIPTION -\fBupdate-debian-edu-artwork-spacefun\fR \fIconfigure\fR enables the Debian Edu Spacefun theming (as shipped with Debian Edu squeeze) -system-wide (several login managers, KDE splash, KDE theme, background for all desktops, MATE theme and panel layout, -GRUB boot loader, etc.pp.). +\fBupdate-debian-edu-artwork-spacefun\fR \fIconfigure\fR enables the Debian Edu Spacefun theming (as shipped with Debian Edu Trixie) +system-wide (several login managers, KDE theme, background for all desktops, GRUB boot loader, etc. pp.). .PP \fBupdate-debian-edu-artwork-spacefun\fR \fIremove\fR disables the Debian Edu themes and switches back to Debian's default themes (from package \fIdesktop-base\fR). .SH "SEE ALSO" -\fBupdate-debian-edu-artwork-homeworld\fR, \fBupdate-debian-edu-artwork-buster\fR, \fBupdate-debian-edu-artwork-softwaves\fR +\fBupdate-debian-edu-artwork-ceratopsian\fR \fBupdate-debian-edu-artwork-emerald\fR \fBupdate-debian-edu-artwork-homeworld\fR \fBupdate-debian-edu-artwork-buster\fR \fBupdate-debian-edu-artwork-softwaves\fR .SH AUTHOR -This manual has been written by for the Debian Edu project by +This manual has been written for the Debian Edu project by -Mike Gabriel +Mike Gabriel