From cbf5c9a9d603db22ca752ecf8e34de43a850873a Mon Sep 17 00:00:00 2001 From: Mirko Date: Tue, 20 Sep 2022 22:21:41 +0200 Subject: [PATCH] 1.0.0 - rewrite from scratch - modularity thanks to customizable recipes --- README.md | 7 +- VERSION | 2 +- data/screenshot-1.png | Bin 24492 -> 26764 bytes data/screenshot-2.png | Bin 34782 -> 0 bytes debian/changelog | 7 +- meson.build | 2 +- recipe.json | 136 +++++++++++ .../{dialogs => defaults}/__init__.py | 0 vanilla_first_setup/defaults/meson.build | 10 + vanilla_first_setup/defaults/theme.py | 54 +++++ vanilla_first_setup/defaults/welcome.py | 93 ++++++++ .../{dialogs/prop_drivers.py => dialog.py} | 14 +- vanilla_first_setup/dialogs/meson.build | 10 - vanilla_first_setup/gtk/default-theme.ui | 60 +++++ vanilla_first_setup/gtk/default-welcome.ui | 27 +++ vanilla_first_setup/gtk/dialog-subsystem.ui | 36 --- .../gtk/{dialog-prop-nvidia.ui => dialog.ui} | 9 +- vanilla_first_setup/gtk/done.ui | 46 ++++ vanilla_first_setup/gtk/layout-preferences.ui | 42 ++++ vanilla_first_setup/gtk/layout-yes-no.ui | 60 +++++ vanilla_first_setup/gtk/progress.ui | 26 ++ vanilla_first_setup/gtk/window.ui | 34 ++- .../{models => layouts}/__init__.py | 0 vanilla_first_setup/layouts/meson.build | 10 + vanilla_first_setup/layouts/preferences.py | 68 ++++++ vanilla_first_setup/layouts/yes_no.py | 79 +++++++ vanilla_first_setup/main.py | 4 +- vanilla_first_setup/meson.build | 6 +- vanilla_first_setup/models/config.py | 73 ------ vanilla_first_setup/models/meson.build | 10 - vanilla_first_setup/models/preset.py | 8 - vanilla_first_setup/utils/apt.py | 58 ----- vanilla_first_setup/utils/builder.py | 95 ++++++++ vanilla_first_setup/utils/checks.py | 18 -- vanilla_first_setup/utils/configurator.py | 128 ---------- vanilla_first_setup/utils/flatpak.py | 38 --- vanilla_first_setup/utils/meson.build | 9 +- vanilla_first_setup/utils/parser.py | 62 +++++ vanilla_first_setup/utils/processor.py | 74 +++++- vanilla_first_setup/utils/recipe.py | 74 ++++++ vanilla_first_setup/utils/run_async.py | 5 +- vanilla_first_setup/utils/snap.py | 26 -- vanilla_first_setup/utils/welcome_langs.py | 36 --- .../vanilla-first-setup.gresource.xml | 11 +- vanilla_first_setup/views/__init__.py | 0 vanilla_first_setup/views/done.py | 54 +++++ vanilla_first_setup/views/meson.build | 10 + .../subsystem.py => views/progress.py} | 10 +- vanilla_first_setup/window.py | 223 ++++++------------ 49 files changed, 1209 insertions(+), 655 deletions(-) delete mode 100644 data/screenshot-2.png create mode 100644 recipe.json rename vanilla_first_setup/{dialogs => defaults}/__init__.py (100%) create mode 100644 vanilla_first_setup/defaults/meson.build create mode 100644 vanilla_first_setup/defaults/theme.py create mode 100644 vanilla_first_setup/defaults/welcome.py rename vanilla_first_setup/{dialogs/prop_drivers.py => dialog.py} (75%) delete mode 100644 vanilla_first_setup/dialogs/meson.build create mode 100644 vanilla_first_setup/gtk/default-theme.ui create mode 100644 vanilla_first_setup/gtk/default-welcome.ui delete mode 100644 vanilla_first_setup/gtk/dialog-subsystem.ui rename vanilla_first_setup/gtk/{dialog-prop-nvidia.ui => dialog.ui} (69%) create mode 100644 vanilla_first_setup/gtk/done.ui create mode 100644 vanilla_first_setup/gtk/layout-preferences.ui create mode 100644 vanilla_first_setup/gtk/layout-yes-no.ui create mode 100644 vanilla_first_setup/gtk/progress.ui rename vanilla_first_setup/{models => layouts}/__init__.py (100%) create mode 100644 vanilla_first_setup/layouts/meson.build create mode 100644 vanilla_first_setup/layouts/preferences.py create mode 100644 vanilla_first_setup/layouts/yes_no.py delete mode 100644 vanilla_first_setup/models/config.py delete mode 100644 vanilla_first_setup/models/meson.build delete mode 100644 vanilla_first_setup/models/preset.py delete mode 100644 vanilla_first_setup/utils/apt.py create mode 100644 vanilla_first_setup/utils/builder.py delete mode 100644 vanilla_first_setup/utils/checks.py delete mode 100644 vanilla_first_setup/utils/configurator.py delete mode 100644 vanilla_first_setup/utils/flatpak.py create mode 100644 vanilla_first_setup/utils/parser.py create mode 100644 vanilla_first_setup/utils/recipe.py delete mode 100644 vanilla_first_setup/utils/snap.py delete mode 100644 vanilla_first_setup/utils/welcome_langs.py create mode 100644 vanilla_first_setup/views/__init__.py create mode 100644 vanilla_first_setup/views/done.py create mode 100644 vanilla_first_setup/views/meson.build rename vanilla_first_setup/{dialogs/subsystem.py => views/progress.py} (84%) diff --git a/README.md b/README.md index 73537f5..821a987 100644 --- a/README.md +++ b/README.md @@ -29,4 +29,9 @@ sudo ninja -C build install ## Run ```bash vanilla-first-setup -``` \ No newline at end of file +``` + +### Using custom recipes +Place a new recipe in `/etc/vanilla-first-setup/recipe.json` or launch the +utility with the `VANILLA_CUSTOM_RECIPE` environment variable set to the path +of the recipe. diff --git a/VERSION b/VERSION index 82551ad..afaf360 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -0.1.9 \ No newline at end of file +1.0.0 \ No newline at end of file diff --git a/data/screenshot-1.png b/data/screenshot-1.png index 0cbb30e8b5338b47358b796a4c696f3356eb31f7..ef37e37b7673abcb9d09d59ebf4169bdc05ee435 100644 GIT binary patch literal 26764 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 NW^vOTf9ckve*kIZMezUt literal 24492 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 diff --git a/data/screenshot-2.png b/data/screenshot-2.png deleted file mode 100644 index d81dc871f1883913a0d1b63b675d4a59bb10a5b5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 34782 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 Mon, 05 Sep 2022 20:42:00 +0000 \ No newline at end of file + -- Mirko Brombin Thu, 20 Sep 2022 22:01:00 +0000 \ No newline at end of file diff --git a/meson.build b/meson.build index d40195f..b02af3c 100644 --- a/meson.build +++ b/meson.build @@ -1,5 +1,5 @@ project('io.github.vanilla-os.FirstSetup', - version: '0.1.9', + version: '1.0.0', meson_version: '>= 0.59.0', default_options: [ 'warning_level=2', 'werror=false', diff --git a/recipe.json b/recipe.json new file mode 100644 index 0000000..8714ddc --- /dev/null +++ b/recipe.json @@ -0,0 +1,136 @@ +{ + "log_file": "/etc/vanilla/first-setup.log", + "distro_name": "Vanilla OS", + "distro_logo": "io.github.vanilla-os.FirstSetup", + "steps": { + "welcome": { + "template": "welcome" + }, + "theme": { + "template": "theme" + }, + "packages": { + "template": "preferences", + "icon": "vanilla-package-symbolic", + "title": "Package Manager", + "description": "Choose one or more package managers to install", + "preferences": [ + { + "id": "flatpak", + "title": "Flatpak", + "subtitle": "Will also configure the Flathub repository.", + "default": true + }, + { + "id": "snap", + "title": "Snap", + "subtitle": "Uses the Snapcraft repository. Default in Ubuntu." + }, + { + "id": "appimage", + "title": "AppImage", + "subtitle": "Will install the necessary dependencies to run AppImages." + } + ], + "final": [ + { + "if": "flatpak", + "type": "command", + "commands": [ + "sudo apt install -y flatpak", + "flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo" + ] + }, + { + "if": "snap", + "type": "command", + "commands": ["sudo apt install -y snapd"] + }, + { + "if": "appimage", + "type": "command", + "commands": ["sudo apt install -y fuse2"] + } + ] + }, + "subsystem": { + "template": "yes-no", + "icon": "vanilla-container-terminal-symbolic", + "title": "Sub System", + "description": "Access a minimal mutable Ubuntu installation integrated with Vanilla OS.", + "buttons": { + "yes": "Enable", + "no": "Skip", + "info": { + "type": "text", + "title": "What is Sub System?", + "text": "The Sub-System is a container that allows you to install deb packages without altering the system. It is useful for installing software without having to enter in read-write mode.\n\nYou don't need to enter in the container to install packages, just use the apx command (wrapper around the apt inside the container) to install new programs and automatically make them available in your Vanilla OS installation.\n\nThis features uses distrobox as backend." + } + }, + "final": [ + { + "if": "subsystem", + "type": "command", + "commands": [ + "sudo apt install -y apx", + "curl -s https://raw.githubusercontent.com/89luca89/distrobox/main/install | sudo sh" + ] + } + ] + }, + "nvidia": { + "template": "yes-no", + "icon": "video-display-symbolic", + "title": "NVIDIA® Drivers", + "description": "Choose whether to install proprietary NVIDIA drivers for better compatibility and performance.", + "buttons": { + "yes": "Yes, install", + "no": "Skip", + "info": { + "type": "text", + "title": "About Proprietary Drivers", + "text": "A proprietary driver has private code that neither Vanilla OS nor Ubuntu developers can't review.\n\nSecurity and other updates are dependent on the driver vendor." + } + }, + "final": [ + { + "if": "nvidia", + "type": "command", + "commands": ["sudo ubuntu-drivers install --recommended"] + } + ] + }, + "extra": { + "template": "preferences", + "icon": "vanilla-puzzle-piece-symbolic", + "title": "Extra Settings", + "description": "The following are optional settings, leave them as they are if you don't know what they do.", + "preferences": [ + { + "id": "apport", + "title": "Apport", + "subtitle": "Apport is a crash reporting system that helps us improve the stability of the system." + } + ], + "final": [ + { + "if": "apport", + "type": "command", + "commands": [ + "sudo apt install -y apport", + "systemctl enable apport.service || true" + ] + }, + { + "if": "apport", + "condition": false, + "type": "command", + "commands": [ + "sudo apt remove -y apport", + "systemctl disable apport.service || true" + ] + } + ] + } + } +} \ No newline at end of file diff --git a/vanilla_first_setup/dialogs/__init__.py b/vanilla_first_setup/defaults/__init__.py similarity index 100% rename from vanilla_first_setup/dialogs/__init__.py rename to vanilla_first_setup/defaults/__init__.py diff --git a/vanilla_first_setup/defaults/meson.build b/vanilla_first_setup/defaults/meson.build new file mode 100644 index 0000000..569a130 --- /dev/null +++ b/vanilla_first_setup/defaults/meson.build @@ -0,0 +1,10 @@ +pkgdatadir = join_paths(get_option('prefix'), get_option('datadir'), meson.project_name()) +defaultsdir = join_paths(pkgdatadir, 'vanilla_first_setup/defaults') + +sources = [ + '__init__.py', + 'welcome.py', + 'theme.py', +] + +install_data(sources, install_dir: defaultsdir) \ No newline at end of file diff --git a/vanilla_first_setup/defaults/theme.py b/vanilla_first_setup/defaults/theme.py new file mode 100644 index 0000000..0423474 --- /dev/null +++ b/vanilla_first_setup/defaults/theme.py @@ -0,0 +1,54 @@ +# theme.py +# +# Copyright 2022 mirkobrombin +# +# 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 Foundationat version 3 of the License. +# +# 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, see . + +import time +from gi.repository import Gtk, Gio, GLib, Adw + + +@Gtk.Template(resource_path='/io/github/vanilla-os/FirstSetup/gtk/default-theme.ui') +class VanillaDefaultTheme(Gtk.Box): + __gtype_name__ = 'VanillaDefaultTheme' + + btn_next = Gtk.Template.Child() + btn_default = Gtk.Template.Child() + btn_dark = Gtk.Template.Child() + + def __init__(self, window, distro_info, key, step, **kwargs): + super().__init__(**kwargs) + self.__window = window + self.__distro_info = distro_info + self.__key = key + self.__step = step + + self.__build_ui() + + self.btn_next.connect("clicked", self.__window.next) + self.btn_default.connect('toggled', self.__set_theme, "light") + self.btn_dark.connect('toggled', self.__set_theme, "dark") + + def __build_ui(self): + self.btn_dark.set_group(self.btn_default) + + def __set_theme(self, widget, theme: str): + pref = "prefer-dark" if theme == "dark" else "default" + gtk = "Adwaita-dark" if theme == "dark" else "Adwaita" + Gio.Settings.new("org.gnome.desktop.interface").set_string( + "color-scheme", pref) + Gio.Settings.new("org.gnome.desktop.interface").set_string( + "gtk-theme", gtk) + + def get_finals(self): + return {} diff --git a/vanilla_first_setup/defaults/welcome.py b/vanilla_first_setup/defaults/welcome.py new file mode 100644 index 0000000..a1217fe --- /dev/null +++ b/vanilla_first_setup/defaults/welcome.py @@ -0,0 +1,93 @@ +# welcome.py +# +# Copyright 2022 mirkobrombin +# +# 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 Foundationat version 3 of the License. +# +# 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, see . + +import time +from gi.repository import Gtk, Gio, GLib, Adw + +from vanilla_first_setup.utils.run_async import RunAsync + + +@Gtk.Template(resource_path='/io/github/vanilla-os/FirstSetup/gtk/default-welcome.ui') +class VanillaDefaultWelcome(Adw.Bin): + __gtype_name__ = 'VanillaDefaultWelcome' + + btn_next = Gtk.Template.Child() + status_page = Gtk.Template.Child() + + welcome = [ + 'Welcome', + 'Benvenuto', + 'Bienvenido', + 'Bienvenue', + 'Willkommen', + 'Bem-vindo', + 'Добро пожаловать', + '欢迎', + 'ようこそ', + '환영합니다', + 'أهلا بك', + 'ברוך הבא', + 'Καλώς ήρθατε', + 'Hoşgeldiniz', + 'Welkom', + 'Witamy', + 'Välkommen', + 'Tervetuloa', + 'Vítejte', + 'Üdvözöljük', + 'Bun venit', + 'Vitajte', + 'Tere tulemast', + 'Sveiki atvykę', + 'Dobrodošli', + 'خوش آمدید', + 'आपका स्वागत है', + 'স্বাগতম', + 'வரவேற்கிறோம்', + 'స్వాగతం', + 'मुबारक हो', + 'સુસ્વાગત છે', + 'ಸುಸ್ವಾಗತ', + 'സ്വാഗതം' + ] + + def __init__(self, window, distro_info, key, step, **kwargs): + super().__init__(**kwargs) + self.__window = window + self.__distro_info = distro_info + self.__key = key + self.__step = step + + # animation start + self.__start_welcome_animation() + + # signals + self.btn_next.connect("clicked", self.__window.next) + + # set distro logo + self.status_page.set_icon_name(self.__distro_info["logo"]) + + def __start_welcome_animation(self): + def change_langs(): + while True: + for lang in self.welcome: + GLib.idle_add(self.status_page.set_title, lang) + time.sleep(1.2) + + RunAsync(change_langs, None) + + def get_finals(self): + return {} diff --git a/vanilla_first_setup/dialogs/prop_drivers.py b/vanilla_first_setup/dialog.py similarity index 75% rename from vanilla_first_setup/dialogs/prop_drivers.py rename to vanilla_first_setup/dialog.py index fa1cafe..660052a 100644 --- a/vanilla_first_setup/dialogs/prop_drivers.py +++ b/vanilla_first_setup/dialog.py @@ -1,4 +1,4 @@ -# prop_nvidia.py +# dialog.py # # Copyright 2022 mirkobrombin # @@ -17,10 +17,14 @@ from gi.repository import Gtk, Adw -@Gtk.Template(resource_path='/io/github/vanilla-os/FirstSetup/gtk/dialog-prop-nvidia.ui') -class ProprietaryDriverDialog(Adw.Window): - __gtype_name__ = 'ProprietaryDriverDialog' +@Gtk.Template(resource_path='/io/github/vanilla-os/FirstSetup/gtk/dialog.ui') +class VanillaDialog(Adw.Window): + __gtype_name__ = 'VanillaDialog' - def __init__(self, window, **kwargs): + label_text = Gtk.Template.Child() + + def __init__(self, window, title, text, **kwargs): super().__init__(**kwargs) self.set_transient_for(window) + self.set_title(title) + self.label_text.set_text(text) diff --git a/vanilla_first_setup/dialogs/meson.build b/vanilla_first_setup/dialogs/meson.build deleted file mode 100644 index 41ed659..0000000 --- a/vanilla_first_setup/dialogs/meson.build +++ /dev/null @@ -1,10 +0,0 @@ -pkgdatadir = join_paths(get_option('prefix'), get_option('datadir'), meson.project_name()) -dialogsdir = join_paths(pkgdatadir, 'vanilla_first_setup/dialogs') - -sources = [ - '__init__.py', - 'subsystem.py', - 'prop_drivers.py', -] - -install_data(sources, install_dir: dialogsdir) \ No newline at end of file diff --git a/vanilla_first_setup/gtk/default-theme.ui b/vanilla_first_setup/gtk/default-theme.ui new file mode 100644 index 0000000..a55d052 --- /dev/null +++ b/vanilla_first_setup/gtk/default-theme.ui @@ -0,0 +1,60 @@ + + + + + + \ No newline at end of file diff --git a/vanilla_first_setup/gtk/default-welcome.ui b/vanilla_first_setup/gtk/default-welcome.ui new file mode 100644 index 0000000..a5671f6 --- /dev/null +++ b/vanilla_first_setup/gtk/default-welcome.ui @@ -0,0 +1,27 @@ + + + + + + \ No newline at end of file diff --git a/vanilla_first_setup/gtk/dialog-subsystem.ui b/vanilla_first_setup/gtk/dialog-subsystem.ui deleted file mode 100644 index 665c00e..0000000 --- a/vanilla_first_setup/gtk/dialog-subsystem.ui +++ /dev/null @@ -1,36 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/vanilla_first_setup/gtk/dialog-prop-nvidia.ui b/vanilla_first_setup/gtk/dialog.ui similarity index 69% rename from vanilla_first_setup/gtk/dialog-prop-nvidia.ui rename to vanilla_first_setup/gtk/dialog.ui index e5e8d17..1369c89 100644 --- a/vanilla_first_setup/gtk/dialog-prop-nvidia.ui +++ b/vanilla_first_setup/gtk/dialog.ui @@ -2,8 +2,8 @@ -