commit b18596457f02693458cbc7c5a0c8e4af7a96d227 Author: eSh Date: Tue Aug 8 23:00:47 2023 +0200 add initial app diff --git a/settings-thumbnail.png b/settings-thumbnail.png new file mode 100644 index 0000000..48c4ea8 Binary files /dev/null and b/settings-thumbnail.png differ diff --git a/tromjaro-layout-switcher-thumb.png b/tromjaro-layout-switcher-thumb.png new file mode 100644 index 0000000..b86e793 Binary files /dev/null and b/tromjaro-layout-switcher-thumb.png differ diff --git a/tromjaro-theme-switcher-thumb.png b/tromjaro-theme-switcher-thumb.png new file mode 100644 index 0000000..c1f7e5a Binary files /dev/null and b/tromjaro-theme-switcher-thumb.png differ diff --git a/tromjaro-welcome.svg b/tromjaro-welcome.svg new file mode 100644 index 0000000..71cb51e --- /dev/null +++ b/tromjaro-welcome.svg @@ -0,0 +1,4808 @@ + + + + diff --git a/wallpapers-thumbnail.png b/wallpapers-thumbnail.png new file mode 100644 index 0000000..c41c2a1 Binary files /dev/null and b/wallpapers-thumbnail.png differ diff --git a/welcome.py b/welcome.py new file mode 100755 index 0000000..4fc3ba2 --- /dev/null +++ b/welcome.py @@ -0,0 +1,200 @@ +import gi +import subprocess +import sys +import os + +gi.require_version("Gtk", "3.0") +from gi.repository import Gtk, Gdk + +class WelcomeScreen(Gtk.Window): + def __init__(self): + Gtk.Window.__init__(self, title="TROMjaro Welcome") + + icon_path = "tromjaro-welcome.svg" + if os.path.exists(icon_path): + self.set_icon_from_file(icon_path) + else: + print("Error: Icon not found:", icon_path) + + self.set_border_width(10) + self.set_default_size(800, 600) + + self.pages = [ + {"title": "Welcome to TROMjaro", + "description": "TROMjaro is free and open source operating system which fights against the influences of trade!", + "image_path": "tromjaro-welcome-thumb.png", + "with_button": False}, + {"title": "Choose a Layout", + "description": "Make it morph into any shape you love!", + "image_path": "tromjaro-layout-switcher-thumb.png", + "with_button": True, + "button_text": "Open the Layout Switcher", + "button_handler": self.on_layout_switcher_button_clicked}, + {"title": "Choose a Theme", + "description": "Choose between the many variations of themes!", + "image_path": "tromjaro-theme-switcher-thumb.png", + "with_button": True, + "button_text": "Open the Theme Switcher", + "button_handler": self.on_theme_switcher_button_clicked}, + {"title": "Choose a Background", + "description": "Pick a cool background to go along with your theme!", + "image_path": "wallpapers-thumbnail.png", + "with_button": True, + "button_text": "Change the Wallpaper", + "button_handler": self.on_background_button_clicked}, + {"title": "Setup the Internet Content Blocker", + "description": "Setup your Operating System to block the pesky ads and trackers, system-wide.", + "image_path": "content-blocker-thumbnail.png", + "with_button": True, + "button_text": "Setup Internet Content Blocker", + "button_handler": self.on_content_blocker_button_clicked}, + {"title": "Settings Manager", + "description": "You will find all of the settings into one single place.", + "image_path": "settings-thumbnail.png", + "with_button": True, + "button_text": "Open Settings Manager", + "button_handler": self.on_settings_button_clicked}, + {"title": "Donation", + "description": "If you want to help for the cause of fighting the force of trade, please, consider a donation. Thank you!", + "image_path": "donation-thumb.png", + "with_button": True, + "button_text": "Donate", + "button_handler": self.on_donate_button_clicked}, + ] + + self.current_page = 0 + self.create_ui() + + def create_ui(self): + for child in self.get_children(): + self.remove(child) + + grid = Gtk.Grid() + grid.set_column_homogeneous(True) + grid.set_row_spacing(10) + + header_label = Gtk.Label(label=self.pages[self.current_page]["title"].upper()) + header_label.set_markup("{}".format(self.pages[self.current_page]["title"].upper())) + description_label = Gtk.Label(label=self.pages[self.current_page]["description"]) + + header_label.set_hexpand(True) + description_label.set_hexpand(True) + + grid.attach(header_label, 0, 0, 2, 1) + grid.attach(description_label, 0, 1, 2, 1) + + image_path = self.pages[self.current_page]["image_path"] + if image_path and os.path.exists(image_path): + image = Gtk.Image.new_from_file(image_path) + else: + print("Error: Image not found:", image_path) + image = Gtk.Image.new_from_icon_name("image-missing", Gtk.IconSize.DIALOG) + image.set_size_request(600, 400) + grid.attach(image, 0, 2, 2, 1) + + if self.pages[self.current_page]["with_button"]: + button_text = self.pages[self.current_page]["button_text"] + button_handler = self.pages[self.current_page]["button_handler"] + button = Gtk.Button(label=button_text.upper()) + button.set_size_request(60, -1) # Set fixed button width to 60px + button.set_name("accent_button") # Set the name of the button to "accent_button" + button.set_margin_top(20) + button.set_margin_bottom(20) + button.connect("clicked", button_handler) + grid.attach(button, 0, 3, 2, 1) + + if self.current_page > 0: + left_button = Gtk.Button(label="Previous") + left_button.set_size_request(60, -1) # Set fixed button width to 60px + left_button.set_halign(Gtk.Align.START) # Align the button to the left + left_button.set_margin_top(20) + left_button.set_margin_bottom(20) + left_button.connect("clicked", self.on_previous_button_clicked) + grid.attach(left_button, 0, 4, 1, 1) + + if self.current_page < len(self.pages) - 1: + right_button = Gtk.Button(label="Next") + right_button.set_size_request(60, -1) # Set fixed button width to 60px + right_button.set_halign(Gtk.Align.END) # Align the button to the right + right_button.set_margin_top(20) + right_button.set_margin_bottom(20) + right_button.connect("clicked", self.on_next_button_clicked) + grid.attach(right_button, 1, 4, 1, 1) + + if self.current_page == len(self.pages) - 1: + right_button = Gtk.Button(label="Finish") + right_button.connect("clicked", self.on_finish_button_clicked) + right_button.set_size_request(60, -1) # Set fixed button width to 60px + right_button.set_halign(Gtk.Align.END) # Align the button to the right + right_button.set_margin_top(20) + right_button.set_margin_bottom(20) + grid.attach(right_button, 1, 4, 1, 1) + + checkbox = Gtk.CheckButton(label="Open the Welcome Screen on every boot") + checkbox.set_active(True) + checkbox.connect("toggled", self.on_checkbox_toggled) + checkbox.set_halign(Gtk.Align.CENTER) + grid.attach(checkbox, 0, 5, 2, 1) + + # Set up CSS style provider for the accent button + css_provider = Gtk.CssProvider() + css_provider.load_from_data(b""" + button#accent_button { + background-color: @theme_selected_bg_color; + color: @theme_selected_fg_color; + border: none; + } + button#accent_button:hover { + background-color: @theme_selected_bg_color; + color: @theme_selected_fg_color; + border: none; + } + """) + + context = Gtk.StyleContext() + context.add_provider_for_screen(Gdk.Screen.get_default(), css_provider, Gtk.STYLE_PROVIDER_PRIORITY_APPLICATION) + + self.add(grid) + self.show_all() + + def on_previous_button_clicked(self, button): + if self.current_page > 0: + self.current_page -= 1 + self.create_ui() + + def on_layout_switcher_button_clicked(self, button): + subprocess.run(["tromjaro-layout-switcher"]) + + def on_theme_switcher_button_clicked(self, button): + subprocess.run(["tromjaro-theme-switcher"]) + + def on_background_button_clicked(self, button): + subprocess.run(["xfdesktop-settings"]) + + def on_content_blocker_button_clicked(self, button): + subprocess.run(["tblockg"]) + + def on_settings_button_clicked(self, button): + subprocess.run(["xfce4-settings-manager"]) + + def on_donate_button_clicked(self, button): + subprocess.run(["xdg-open", "https://www.tromsite.com/donate/"]) + + def on_checkbox_toggled(self, checkbox): + if checkbox.get_active(): + print("Welcome Screen will be opened on every boot.") + else: + print("Welcome Screen will not be opened on every boot.") + + def on_next_button_clicked(self, button): + if self.current_page < len(self.pages) - 1: + self.current_page += 1 + self.create_ui() + + def on_finish_button_clicked(self, button): + sys.exit(0) + +win = WelcomeScreen() +win.connect("destroy", Gtk.main_quit) +win.show_all() +Gtk.main()