Updates
This commit is contained in:
parent
c4abae5873
commit
63a5b2c940
13
.install/gtk.sh
Normal file
13
.install/gtk.sh
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
cat <<"EOF"
|
||||||
|
____ _____ _ __
|
||||||
|
/ ___|_ _| |/ /
|
||||||
|
| | _ | | | ' /
|
||||||
|
| |_| | | | | . \
|
||||||
|
\____| |_| |_|\_\
|
||||||
|
|
||||||
|
EOF
|
||||||
|
# Ask for confirmation
|
||||||
|
# Remove existing configuration
|
||||||
|
# Copy target files into .config
|
||||||
|
|
BIN
apps/ML4W_Welcome-x86_64.AppImage
Executable file
BIN
apps/ML4W_Welcome-x86_64.AppImage
Executable file
Binary file not shown.
@ -1,174 +0,0 @@
|
|||||||
# __ __ _ _ ___ __ _ _ _
|
|
||||||
# | \/ | | | || \ \ / / / \ | |__ ___ _ _| |_
|
|
||||||
# | |\/| | | | || |\ \ /\ / / / _ \ | '_ \ / _ \| | | | __|
|
|
||||||
# | | | | |__|__ _\ V V / / ___ \| |_) | (_) | |_| | |_
|
|
||||||
# |_| |_|_____| |_| \_/\_/ /_/ \_\_.__/ \___/ \__,_|\__|
|
|
||||||
|
|
||||||
import sys
|
|
||||||
import gi
|
|
||||||
import subprocess
|
|
||||||
import os
|
|
||||||
import threading
|
|
||||||
|
|
||||||
gi.require_version('Gtk', '4.0')
|
|
||||||
gi.require_version('Adw', '1')
|
|
||||||
|
|
||||||
from gi.repository import Gtk, Adw, Gio
|
|
||||||
from gi.repository import GLib
|
|
||||||
from gi.repository import GObject
|
|
||||||
|
|
||||||
|
|
||||||
# -----------------------------------------
|
|
||||||
# Define UI template
|
|
||||||
# -----------------------------------------
|
|
||||||
@Gtk.Template(filename='src/welcome.ui')
|
|
||||||
|
|
||||||
# -----------------------------------------
|
|
||||||
# Main Window
|
|
||||||
# -----------------------------------------
|
|
||||||
class MainWindow(Adw.ApplicationWindow):
|
|
||||||
__gtype_name__ = 'Ml4wWelcomeWindow'
|
|
||||||
|
|
||||||
# Get objects from template
|
|
||||||
ml4w_version = Gtk.Template.Child()
|
|
||||||
ml4w_logo = Gtk.Template.Child()
|
|
||||||
update_banner = Gtk.Template.Child()
|
|
||||||
|
|
||||||
def __init__(self, *args, **kwargs):
|
|
||||||
super().__init__(*args, **kwargs)
|
|
||||||
|
|
||||||
# -----------------------------------------
|
|
||||||
# Main App
|
|
||||||
# -----------------------------------------
|
|
||||||
class MyApp(Adw.Application):
|
|
||||||
|
|
||||||
# Path to home folder
|
|
||||||
homeFolder = os.path.expanduser('~')
|
|
||||||
current_version_name = ""
|
|
||||||
current_version_code = ""
|
|
||||||
|
|
||||||
def __init__(self, **kwargs):
|
|
||||||
super().__init__(application_id='com.ml4w.welcome',
|
|
||||||
flags=Gio.ApplicationFlags.DEFAULT_FLAGS)
|
|
||||||
self.create_action('quit', lambda *_: self.quit(), ['<primary>q'])
|
|
||||||
self.create_action('update', self.on_system_update)
|
|
||||||
self.create_action('cleanup', self.on_system_cleanup)
|
|
||||||
self.create_action('about', self.on_about)
|
|
||||||
self.create_action('settings', self.on_settings)
|
|
||||||
self.create_action('waybar_reload', self.on_waybar_reload)
|
|
||||||
self.create_action('keybindings', self.on_keybindings)
|
|
||||||
self.create_action('gitlab', self.on_gitlab)
|
|
||||||
self.create_action('youtube', self.on_youtube)
|
|
||||||
self.create_action('wallpaper', self.on_wallpaper)
|
|
||||||
self.create_action('waybartheme', self.on_waybartheme)
|
|
||||||
self.create_action('howtoupdate', self.on_howtoupdate)
|
|
||||||
|
|
||||||
def do_activate(self):
|
|
||||||
win = self.props.active_window
|
|
||||||
if not win:
|
|
||||||
win = MainWindow(application=self)
|
|
||||||
|
|
||||||
# Set ML4W logo
|
|
||||||
win.ml4w_logo.set_from_file("src/icon.png")
|
|
||||||
|
|
||||||
# Check dotfiles version
|
|
||||||
self.readDotfilesVersion(win)
|
|
||||||
|
|
||||||
# Force dark theme
|
|
||||||
self.changeTheme(win)
|
|
||||||
|
|
||||||
# Check for updates
|
|
||||||
self.checkForUpdates(win)
|
|
||||||
|
|
||||||
# Show Application Window
|
|
||||||
win.present()
|
|
||||||
|
|
||||||
def changeTheme(self,win):
|
|
||||||
app = win.get_application()
|
|
||||||
sm = app.get_style_manager()
|
|
||||||
sm.set_color_scheme(Adw.ColorScheme.PREFER_DARK)
|
|
||||||
|
|
||||||
def checkForUpdates(self,win):
|
|
||||||
try:
|
|
||||||
result = subprocess.run(["bash", self.homeFolder + "/dotfiles/.version/update.sh"], capture_output=True, text=True)
|
|
||||||
web_version = result.stdout.strip()
|
|
||||||
# print("Update " + web_version)
|
|
||||||
|
|
||||||
if (web_version == '0'):
|
|
||||||
# print("Show update banner")
|
|
||||||
win.update_banner.set_revealed(True)
|
|
||||||
except:
|
|
||||||
print("ERROR: Could not read the file /dotfiles/.version/update.sh")
|
|
||||||
|
|
||||||
def readDotfilesVersion(self,win):
|
|
||||||
try:
|
|
||||||
result = subprocess.run(["bash", self.homeFolder + "/dotfiles/.version/version.sh"], capture_output=True, text=True)
|
|
||||||
# print("Version " + result.stdout)
|
|
||||||
version = result.stdout
|
|
||||||
version_arr = version.split(" ")
|
|
||||||
self.current_version_name = version_arr[0]
|
|
||||||
self.current_version_code = version_arr[1]
|
|
||||||
win.ml4w_version.set_text("Version: " + self.current_version_name)
|
|
||||||
except:
|
|
||||||
print("ERROR: Could not read the file /dotfiles/.version/version.sh")
|
|
||||||
win.ml4w_version.set_text("")
|
|
||||||
|
|
||||||
def on_about(self, widget, _):
|
|
||||||
dialog = Adw.AboutWindow(
|
|
||||||
application_icon="application-x-executable",
|
|
||||||
application_name="ML4W Welcome",
|
|
||||||
developer_name="Stephan Raabe",
|
|
||||||
version="1.0.0",
|
|
||||||
website="https://gitlab.com/stephan-raabe/dotfiles",
|
|
||||||
issue_url="https://gitlab.com/stephan-raabe/dotfiles/-/issues",
|
|
||||||
support_url="https://gitlab.com/stephan-raabe/dotfiles/-/issues",
|
|
||||||
copyright="© 2024 Stephan Raabe",
|
|
||||||
license_type=Gtk.License.GPL_3_0_ONLY
|
|
||||||
)
|
|
||||||
dialog.present()
|
|
||||||
|
|
||||||
def on_settings(self, widget, _):
|
|
||||||
subprocess.Popen(["alacritty", "--class", "dotfiles-floating", "-e", self.homeFolder + "/dotfiles/hypr/start-settings.sh"])
|
|
||||||
|
|
||||||
def on_system_update(self, widget, _):
|
|
||||||
subprocess.Popen(["alacritty","-e", self.homeFolder + "/dotfiles/scripts/installupdates.sh"])
|
|
||||||
|
|
||||||
def on_system_cleanup(self, widget, _):
|
|
||||||
subprocess.Popen(["alacritty","-e", self.homeFolder + "/dotfiles/scripts/cleanup.sh"])
|
|
||||||
|
|
||||||
def on_waybar_reload(self, widget, _):
|
|
||||||
subprocess.Popen(["bash", self.homeFolder + "/dotfiles/waybar/launch.sh"])
|
|
||||||
|
|
||||||
def on_keybindings(self, widget, _):
|
|
||||||
subprocess.Popen(["bash", self.homeFolder + "/dotfiles/hypr/scripts/keybindings.sh"])
|
|
||||||
|
|
||||||
def on_gitlab(self, widget, _):
|
|
||||||
subprocess.run(["xdg-open", "https://gitlab.com/stephan-raabe/dotfiles"])
|
|
||||||
|
|
||||||
def on_howtoupdate(self, widget, _):
|
|
||||||
subprocess.run(["xdg-open", "https://gitlab.com/stephan-raabe/dotfiles#update-with-git"])
|
|
||||||
|
|
||||||
def on_youtube(self, widget, _):
|
|
||||||
subprocess.run(["xdg-open", "https://www.youtube.com/channel/UC0sUzmZ0CHvVCVrpRfGKZfw"])
|
|
||||||
|
|
||||||
def on_wallpaper(self, widget, _):
|
|
||||||
subprocess.Popen(["bash", self.homeFolder + "/dotfiles/hypr/scripts/wallpaper.sh","select"])
|
|
||||||
|
|
||||||
def on_waybartheme(self, widget, _):
|
|
||||||
subprocess.Popen(["bash", self.homeFolder + "/dotfiles/waybar/themeswitcher.sh"])
|
|
||||||
|
|
||||||
# Add Application actions
|
|
||||||
def create_action(self, name, callback, shortcuts=None):
|
|
||||||
action = Gio.SimpleAction.new(name, None)
|
|
||||||
action.connect("activate", callback)
|
|
||||||
self.add_action(action)
|
|
||||||
if shortcuts:
|
|
||||||
self.set_accels_for_action(f"app.{name}", shortcuts)
|
|
||||||
|
|
||||||
# -----------------------------------------
|
|
||||||
# Application Start
|
|
||||||
# -----------------------------------------
|
|
||||||
app = MyApp()
|
|
||||||
sm = app.get_style_manager()
|
|
||||||
sm.set_color_scheme(Adw.ColorScheme.PREFER_DARK)
|
|
||||||
app.run(sys.argv)
|
|
Binary file not shown.
Before Width: | Height: | Size: 4.7 KiB |
Binary file not shown.
Before Width: | Height: | Size: 19 KiB |
@ -1,257 +0,0 @@
|
|||||||
<?xml version='1.0' encoding='UTF-8'?>
|
|
||||||
<interface>
|
|
||||||
<requires lib="gtk" version="4.0"/>
|
|
||||||
<requires lib="Adw" version="1.0"/>
|
|
||||||
<template class="Ml4wWelcomeWindow" parent="AdwApplicationWindow">
|
|
||||||
|
|
||||||
<property name="title">ML4W Welcome</property>
|
|
||||||
<property name="default-width">700</property>
|
|
||||||
<property name="default-height">600</property>
|
|
||||||
|
|
||||||
<property name="content">
|
|
||||||
<object class="AdwToolbarView">
|
|
||||||
<child type="top">
|
|
||||||
|
|
||||||
<!-- Header -->
|
|
||||||
<object class="AdwHeaderBar">
|
|
||||||
|
|
||||||
<child type="start">
|
|
||||||
<object class="GtkMenuButton">
|
|
||||||
<property name="label">Settings</property>
|
|
||||||
<property name="menu-model">maintenance_menu</property>
|
|
||||||
</object>
|
|
||||||
</child>
|
|
||||||
|
|
||||||
<child type="end">
|
|
||||||
<object class="GtkMenuButton">
|
|
||||||
<property name="icon-name">open-menu-symbolic</property>
|
|
||||||
<property name="tooltip-text">Main Menu</property>
|
|
||||||
<property name="primary">true</property>
|
|
||||||
<property name="menu-model">window_menu</property>
|
|
||||||
</object>
|
|
||||||
</child>
|
|
||||||
|
|
||||||
</object>
|
|
||||||
<!-- Header -->
|
|
||||||
</child>
|
|
||||||
|
|
||||||
<property name="content">
|
|
||||||
|
|
||||||
<object class="GtkBox">
|
|
||||||
<property name="orientation">1</property>
|
|
||||||
|
|
||||||
<!-- Update Banner -->
|
|
||||||
<child>
|
|
||||||
<object class="AdwBanner" id="update_banner">
|
|
||||||
<property name="button-label" translatable="true">How to update</property>
|
|
||||||
<property name="title">An update for the dotfiles is available!</property>
|
|
||||||
<property name="revealed">false</property>
|
|
||||||
<property name="action-name">app.howtoupdate</property>
|
|
||||||
</object>
|
|
||||||
</child>
|
|
||||||
<!-- Update Banner -->
|
|
||||||
|
|
||||||
<child>
|
|
||||||
<object class="GtkBox">
|
|
||||||
<property name="margin-bottom">5</property>
|
|
||||||
<property name="margin-end">5</property>
|
|
||||||
<property name="margin-start">5</property>
|
|
||||||
<property name="margin-top">5</property>
|
|
||||||
<property name="valign">3</property>
|
|
||||||
<property name="halign">3</property>
|
|
||||||
<property name="orientation">vertical</property>
|
|
||||||
|
|
||||||
<!-- ML4W Logo -->
|
|
||||||
<child>
|
|
||||||
<object class="GtkImage" id="ml4w_logo">
|
|
||||||
<property name="name">logo</property>
|
|
||||||
<property name="pixel-size">150</property>
|
|
||||||
<property name="margin-bottom">30</property>
|
|
||||||
</object>
|
|
||||||
</child>
|
|
||||||
<!-- ML4W Logo -->
|
|
||||||
|
|
||||||
<!-- ML4W Headline -->
|
|
||||||
<child>
|
|
||||||
<object class="GtkLabel">
|
|
||||||
<property name="label">Welcome to ML4W dotfiles</property>
|
|
||||||
<style>
|
|
||||||
<class name="title-1"/>
|
|
||||||
</style>
|
|
||||||
</object>
|
|
||||||
</child>
|
|
||||||
<!-- ML4W Headline -->
|
|
||||||
|
|
||||||
<!-- ML4W Headline -->
|
|
||||||
<child>
|
|
||||||
<object class="GtkLabel" id="ml4w_version">
|
|
||||||
<property name="label">Version</property>
|
|
||||||
<property name="margin-bottom">30</property>
|
|
||||||
</object>
|
|
||||||
</child>
|
|
||||||
<!-- ML4W Headline -->
|
|
||||||
|
|
||||||
<!-- Shortcut Terminal -->
|
|
||||||
<child>
|
|
||||||
<object class="GtkBox">
|
|
||||||
<property name="margin-bottom">6</property>
|
|
||||||
<child>
|
|
||||||
<object class="GtkShortcutsShortcut">
|
|
||||||
<property name="accelerator"><SUPER>Return</property>
|
|
||||||
<property name="margin-start">12</property>
|
|
||||||
</object>
|
|
||||||
</child>
|
|
||||||
<child>
|
|
||||||
<object class="GtkLabel">
|
|
||||||
<property name="label" translatable="true">to open the terminal</property>
|
|
||||||
</object>
|
|
||||||
</child>
|
|
||||||
</object>
|
|
||||||
</child>
|
|
||||||
<!-- Shortcut Terminal -->
|
|
||||||
|
|
||||||
<!-- Shortcut Browser -->
|
|
||||||
<child>
|
|
||||||
<object class="GtkBox">
|
|
||||||
<property name="margin-bottom">6</property>
|
|
||||||
<child>
|
|
||||||
<object class="GtkShortcutsShortcut">
|
|
||||||
<property name="accelerator"><SUPER>B</property>
|
|
||||||
<property name="margin-start">12</property>
|
|
||||||
</object>
|
|
||||||
</child>
|
|
||||||
<child>
|
|
||||||
<object class="GtkLabel">
|
|
||||||
<property name="label" translatable="true">to open the browser</property>
|
|
||||||
</object>
|
|
||||||
</child>
|
|
||||||
</object>
|
|
||||||
</child>
|
|
||||||
<!-- Shortcut Browser -->
|
|
||||||
|
|
||||||
<!-- Shortcut Launcher -->
|
|
||||||
<child>
|
|
||||||
<object class="GtkBox">
|
|
||||||
<property name="margin-bottom">6</property>
|
|
||||||
<child>
|
|
||||||
<object class="GtkShortcutsShortcut">
|
|
||||||
<property name="accelerator"><Ctrl><SUPER>Return</property>
|
|
||||||
<property name="margin-start">12</property>
|
|
||||||
</object>
|
|
||||||
</child>
|
|
||||||
<child>
|
|
||||||
<object class="GtkLabel">
|
|
||||||
<property name="label" translatable="true">to open the application launcher</property>
|
|
||||||
</object>
|
|
||||||
</child>
|
|
||||||
</object>
|
|
||||||
</child>
|
|
||||||
<!-- Shortcut Launcher -->
|
|
||||||
|
|
||||||
<!-- Shortcut Settings -->
|
|
||||||
<child>
|
|
||||||
<object class="GtkBox">
|
|
||||||
<property name="margin-bottom">6</property>
|
|
||||||
<child>
|
|
||||||
<object class="GtkShortcutsShortcut">
|
|
||||||
<property name="accelerator"><SUPER><Ctrl>S</property>
|
|
||||||
<property name="margin-start">12</property>
|
|
||||||
</object>
|
|
||||||
</child>
|
|
||||||
<child>
|
|
||||||
<object class="GtkLabel">
|
|
||||||
<property name="label" translatable="true">to open Hyprland settings script</property>
|
|
||||||
</object>
|
|
||||||
</child>
|
|
||||||
</object>
|
|
||||||
</child>
|
|
||||||
<!-- Shortcut Settings -->
|
|
||||||
|
|
||||||
<!-- Shortcut Button -->
|
|
||||||
<child>
|
|
||||||
<object class="GtkButton">
|
|
||||||
<property name="margin-top">30</property>
|
|
||||||
<property name="hexpand">False</property>
|
|
||||||
<property name="valign">3</property>
|
|
||||||
<property name="halign">3</property>
|
|
||||||
<property name="label">All keybindings</property>
|
|
||||||
<property name="action-name">app.keybindings</property>
|
|
||||||
</object>
|
|
||||||
</child>
|
|
||||||
<!-- Shortcut Buttons -->
|
|
||||||
|
|
||||||
</object>
|
|
||||||
</child>
|
|
||||||
</object>
|
|
||||||
|
|
||||||
</property>
|
|
||||||
</object>
|
|
||||||
</property>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<!-- Menu Main -->
|
|
||||||
<menu id="window_menu">
|
|
||||||
|
|
||||||
<section>
|
|
||||||
<item>
|
|
||||||
<attribute name="label">ML4W GitLab</attribute>
|
|
||||||
<attribute name="action">app.gitlab</attribute>
|
|
||||||
</item>
|
|
||||||
<item>
|
|
||||||
<attribute name="label">ML4W YouTube Channel</attribute>
|
|
||||||
<attribute name="action">app.youtube</attribute>
|
|
||||||
</item>
|
|
||||||
</section>
|
|
||||||
|
|
||||||
<section>
|
|
||||||
<item>
|
|
||||||
<attribute name="label">About</attribute>
|
|
||||||
<attribute name="action">app.about</attribute>
|
|
||||||
</item>
|
|
||||||
<item>
|
|
||||||
<attribute name="label">Exit</attribute>
|
|
||||||
<attribute name="action">app.quit</attribute>
|
|
||||||
</item>
|
|
||||||
</section>
|
|
||||||
|
|
||||||
</menu>
|
|
||||||
<!-- Menu Main -->
|
|
||||||
|
|
||||||
<!-- Menu Maintenance -->
|
|
||||||
<menu id="maintenance_menu">
|
|
||||||
<section>
|
|
||||||
<item>
|
|
||||||
<attribute name="label">Update Wallpaper</attribute>
|
|
||||||
<attribute name="action">app.wallpaper</attribute>
|
|
||||||
</item>
|
|
||||||
<item>
|
|
||||||
<attribute name="label">Change Waybar Theme</attribute>
|
|
||||||
<attribute name="action">app.waybartheme</attribute>
|
|
||||||
</item>
|
|
||||||
</section>
|
|
||||||
<section>
|
|
||||||
<item>
|
|
||||||
<attribute name="label">Hyprland Settings</attribute>
|
|
||||||
<attribute name="action">app.settings</attribute>
|
|
||||||
</item>
|
|
||||||
</section>
|
|
||||||
<section>
|
|
||||||
<item>
|
|
||||||
<attribute name="label">Update your system</attribute>
|
|
||||||
<attribute name="action">app.update</attribute>
|
|
||||||
</item>
|
|
||||||
<item>
|
|
||||||
<attribute name="label">Cleanup your system</attribute>
|
|
||||||
<attribute name="action">app.cleanup</attribute>
|
|
||||||
</item>
|
|
||||||
</section>
|
|
||||||
<section>
|
|
||||||
<item>
|
|
||||||
<attribute name="label">Reload Waybar</attribute>
|
|
||||||
<attribute name="action">app.waybar_reload</attribute>
|
|
||||||
</item>
|
|
||||||
</section>
|
|
||||||
</menu>
|
|
||||||
<!-- Menu Maintenance -->
|
|
||||||
|
|
||||||
</interface>
|
|
@ -76,6 +76,7 @@ fi
|
|||||||
if [[ $profile == *"Qtile"* ]]; then
|
if [[ $profile == *"Qtile"* ]]; then
|
||||||
source .install/qtile-dotfiles.sh
|
source .install/qtile-dotfiles.sh
|
||||||
fi
|
fi
|
||||||
|
source .install/gtk.sh
|
||||||
source .install/bashrc.sh
|
source .install/bashrc.sh
|
||||||
source .install/monitor.sh
|
source .install/monitor.sh
|
||||||
source .install/cleanup.sh
|
source .install/cleanup.sh
|
||||||
|
@ -60,7 +60,7 @@
|
|||||||
|
|
||||||
// ML4W Welcome App
|
// ML4W Welcome App
|
||||||
"custom/ml4w-welcome": {
|
"custom/ml4w-welcome": {
|
||||||
"on-click": "cd ~/dotfiles/hypr/apps/ml4w-welcome; python ml4w-welcome.py",
|
"on-click": "~/dotfiles/apps/ML4W_Welcome-x86_64.AppImage",
|
||||||
"format": " ",
|
"format": " ",
|
||||||
"tooltip": false
|
"tooltip": false
|
||||||
},
|
},
|
||||||
|
Loading…
Reference in New Issue
Block a user