diff --git a/PKGBUILD b/PKGBUILD new file mode 100644 index 0000000..5e51859 --- /dev/null +++ b/PKGBUILD @@ -0,0 +1,76 @@ +# Maintainer: hodasemi +_pkgbase=breezy-desktop +pkgname="${_pkgbase}"-gnome +pkgver=0.1 +pkgrel=1 +pkgdesc="Breezy desktop - XR desktop" +arch=('x86_64') +url="https://github.com/wheaney/breezy-desktop" +license=('GPL-3.0') +makedepends=('ninja' 'meson' 'librsvg') +depends=('python' 'python-pydbus' 'gnome-shell' 'XRLinuxDriver-BreezyGNOME') +conflicts=("${_pkgbase}") +source=("git+${url}") +md5sums=(SKIP) + +_uuid="breezydesktop@xronlinux.com" + +build() { + cd ${_pkgbase} + + # init submodules (only required ones) + git submodule update --init --recursive modules/sombrero + git submodule update --init --recursive ui/modules/PyXRLinuxDriverIPC + + # build binaries + cd ui + meson setup build + cd build + meson compile + + # prepare extension + cd ../.. + unlink gnome/src/schemas/com.xronlinux.BreezyDesktop.gschema.xml + cp ui/data/com.xronlinux.BreezyDesktop.gschema.xml gnome/src/schemas/ + glib-compile-schemas --targetdir="gnome/src/schemas" "gnome/src/schemas" + + unlink gnome/src/textures/custom_banner.png + cp vulkan/custom_banner.png gnome/src/textures/ + + unlink gnome/src/textures/calibrating.png + cp modules/sombrero/calibrating.png gnome/src/textures/ + + unlink gnome/src/IMUAdjust.frag + cp modules/sombrero/IMUAdjust.frag gnome/src/ + + # create icon + rsvg-convert ui/data/icons/hicolor/scalable/apps/com.xronlinux.BreezyDesktop.svg -w 64 -h 64 -o ui/data/icons/hicolor/com.xronlinux.BreezyDesktop_64.png + rsvg-convert ui/data/icons/hicolor/scalable/apps/com.xronlinux.BreezyDesktop.svg -w 128 -h 128 -o ui/data/icons/hicolor/com.xronlinux.BreezyDesktop_128.png + rsvg-convert ui/data/icons/hicolor/scalable/apps/com.xronlinux.BreezyDesktop.svg -w 256 -h 256 -o ui/data/icons/hicolor/com.xronlinux.BreezyDesktop_256.png + rsvg-convert ui/data/icons/hicolor/scalable/apps/com.xronlinux.BreezyDesktop.svg -w 1024 -h 1024 -o ui/data/icons/hicolor/com.xronlinux.BreezyDesktop_1024.png +} + +package() { + # copy gnome extension + install -Dm755 ${_pkgbase}/ui/data/com.xronlinux.BreezyDesktop.gschema.xml "${pkgdir}"/usr/share/glib-2.0/schemas/com.xronlinux.BreezyDesktop.gschema.xml + + install -d "${pkgdir}/usr/share/gnome-shell/extensions/${_uuid}/" + cp -r ${_pkgbase}/gnome/src/* "${pkgdir}/usr/share/gnome-shell/extensions/${_uuid}/" + + # copy binaries + install -d "${pkgdir}"/usr/local/share/breezydesktop/breezydesktop/ + cp -r ${_pkgbase}/ui/src/*.py "${pkgdir}"/usr/local/share/breezydesktop/breezydesktop/ + install -Dm755 ${_pkgbase}/ui/modules/PyXRLinuxDriverIPC/xrdriveripc.py "${pkgdir}"/usr/local/share/breezydesktop/breezydesktop/xrdriveripc.py + + install -Dm755 ${_pkgbase}/ui/build/src/breezydesktop "${pkgdir}"/usr/bin/breezydesktop + + install -Dm755 ${_pkgbase}/ui/build/src/breezydesktop.gresource "${pkgdir}"/usr/local/share/breezydesktop/breezydesktop.gresource + install -Dm755 ${_pkgbase}/ui/build/data/com.xronlinux.BreezyDesktop.desktop "${pkgdir}"/usr/share/applications/com.xronlinux.BreezyDesktop.desktop + sed -i '/Exec/c\Exec=breezydesktop --skip-verification' "${pkgdir}"/usr/share/applications/com.xronlinux.BreezyDesktop.desktop + + install -Dm755 ${_pkgbase}/ui/data/icons/hicolor/com.xronlinux.BreezyDesktop_64.png "${pkgdir}"/usr/share/icons/hicolor/64x64/apps/com.xronlinux.BreezyDesktop.png + install -Dm755 ${_pkgbase}/ui/data/icons/hicolor/com.xronlinux.BreezyDesktop_128.png "${pkgdir}"/usr/share/icons/hicolor/128x128/apps/com.xronlinux.BreezyDesktop.png + install -Dm755 ${_pkgbase}/ui/data/icons/hicolor/com.xronlinux.BreezyDesktop_256.png "${pkgdir}"/usr/share/icons/hicolor/256x256/apps/com.xronlinux.BreezyDesktop.png + install -Dm755 ${_pkgbase}/ui/data/icons/hicolor/com.xronlinux.BreezyDesktop_1024.png "${pkgdir}"/usr/share/icons/hicolor/1024x1024/apps/com.xronlinux.BreezyDesktop.png +} + diff --git a/ui/src/main.py b/ui/src/main.py index a2a2281..8781f21 100644 --- a/ui/src/main.py +++ b/ui/src/main.py @@ -21,6 +21,7 @@ import gi import logging import os import sys +import argparse from logging.handlers import TimedRotatingFileHandler @@ -58,13 +59,14 @@ XRDriverIPC.set_instance(XRDriverIPC(logger)) class BreezydesktopApplication(Adw.Application): """The main application singleton class.""" - def __init__(self): + def __init__(self, skip_verification): super().__init__(application_id='com.xronlinux.BreezyDesktop', flags=Gio.ApplicationFlags.DEFAULT_FLAGS) self.create_action('quit', self.on_quit_action, ['q']) self.create_action('about', self.on_about_action) self.create_action('license', self.on_license_action) self.create_action('reset_driver', self.on_reset_driver_action) + self._skip_verification = skip_verification def do_activate(self): """Called when the application is activated. @@ -74,7 +76,7 @@ class BreezydesktopApplication(Adw.Application): """ win = self.props.active_window if not win: - win = BreezydesktopWindow(application=self) + win = BreezydesktopWindow(self._skip_verification, application=self) win.connect('close-request', lambda *_: self.on_quit_action()) win.connect('destroy', lambda *_: self.on_quit_action()) win.present() @@ -125,5 +127,9 @@ class BreezydesktopApplication(Adw.Application): def main(version): - app = BreezydesktopApplication() - return app.run(sys.argv) + parser = argparse.ArgumentParser() + parser.add_argument("-sv", "--skip-verification", action="store_true") + args = parser.parse_args() + + app = BreezydesktopApplication(args.skip_verification) + return app.run(None) diff --git a/ui/src/window.py b/ui/src/window.py index 2c4f45e..1b14066 100644 --- a/ui/src/window.py +++ b/ui/src/window.py @@ -37,7 +37,7 @@ class BreezydesktopWindow(Gtk.ApplicationWindow): license_action_needed_banner = Gtk.Template.Child() missing_breezy_features_banner = Gtk.Template.Child() - def __init__(self, **kwargs): + def __init__(self, skip_verification, **kwargs): super().__init__(**kwargs) self.state_manager = StateManager.get_instance() @@ -57,6 +57,8 @@ class BreezydesktopWindow(Gtk.ApplicationWindow): self._handle_state_update(self.state_manager, None) + self._skip_verification = skip_verification + self.connect("destroy", self._on_window_destroy) def _handle_state_update(self, state_manager, val): @@ -71,9 +73,11 @@ class BreezydesktopWindow(Gtk.ApplicationWindow): for child in self.main_content: self.main_content.remove(child) - if not verify_installation(): - self.main_content.append(self.failed_verification) - elif not self.state_manager.get_property('license-present'): + if not self._skip_verification: + if not verify_installation(): + self.main_content.append(self.failed_verification) + + if not self.state_manager.get_property('license-present'): self.main_content.append(self.no_license) elif not ExtensionsManager.get_instance().is_installed(): self.main_content.append(self.no_extension)