diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 47b37b95..3ed51fb5 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -23,7 +23,7 @@ jobs: - name: Install Dependencies run: | apt update - apt install -y desktop-file-utils gettext meson libaccountsservice-dev libgtk-4-dev libgee-0.8-dev libgranite-7-dev libadwaita-1-dev libxkbregistry-dev libjson-glib-dev libpolkit-gobject-1-dev libpwquality-dev valac + apt install -y desktop-file-utils gettext meson libaccountsservice-dev libgtk-4-dev libgee-0.8-dev libgranite-7-dev libadwaita-1-dev libxkbregistry-dev libjson-glib-dev libpantheon-wayland-1-dev libpolkit-gobject-1-dev libpwquality-dev valac - name: Build run: | meson build diff --git a/README.md b/README.md index 96bbb270..e62c347b 100644 --- a/README.md +++ b/README.md @@ -17,6 +17,7 @@ You'll need the following dependencies: * libgtk-4-dev * libadwaita-1-dev >= 1.4 * libjson-glib-dev +* libpantheon-wayland-1-dev * libpwquality-dev * libxkbregistry-dev * meson diff --git a/meson.build b/meson.build index 0c26efc1..f81866b4 100644 --- a/meson.build +++ b/meson.build @@ -17,12 +17,16 @@ glib_dep = dependency('glib-2.0', version: '>=2.74') gobject_dep = dependency('gobject-2.0') granite_dep = dependency('granite-7', version: '>=7.4.0') gtk_dep = dependency('gtk4') +gtk_wayland_dep = dependency('gtk4-wayland') +gtk_x11_dep = dependency('gtk4-x11') adw_dep = dependency('libadwaita-1', version: '>=1.4.0') json_glib_dep = dependency('json-glib-1.0') +pantheon_wayland_dep = dependency('pantheon-wayland-1') polkit_dep = dependency('polkit-gobject-1') posix_dep = meson.get_compiler('vala').find_library('posix') pwquality_dep = dependency('pwquality') xkbregistry_dep = dependency('xkbregistry') +x11_dep = dependency('x11') dependencies = [ accountservice_dep, @@ -31,12 +35,16 @@ dependencies = [ gobject_dep, granite_dep, gtk_dep, + gtk_wayland_dep, + gtk_x11_dep, adw_dep, json_glib_dep, + pantheon_wayland_dep, polkit_dep, posix_dep, pwquality_dep, xkbregistry_dep, + x11_dep ] subdir('po') diff --git a/src/MainWindow.vala b/src/MainWindow.vala index 3cfb32b2..2ff8ae41 100644 --- a/src/MainWindow.vala +++ b/src/MainWindow.vala @@ -17,7 +17,7 @@ * Authored by: Corentin Noël */ -public class Installer.MainWindow : Gtk.Window { +public class Installer.MainWindow : Gtk.Window, PantheonWayland.ExtendedBehavior { private Adw.NavigationView navigationview; private AccountView account_view; @@ -71,6 +71,30 @@ public class Installer.MainWindow : Gtk.Window { return Source.REMOVE; }); + + child.realize.connect (() => { + connect_to_shell (); + if (display is Gdk.Wayland.Display) { + make_centered (); + } else { + make_centered_x11 (); + } + }); + } + + private void make_centered_x11 () { + var display = Gdk.Display.get_default (); + if (display is Gdk.X11.Display) { + unowned var xdisplay = ((Gdk.X11.Display) display).get_xdisplay (); + + var window = ((Gdk.X11.Surface) get_surface ()).get_xid (); + + var prop = xdisplay.intern_atom ("_MUTTER_HINTS", false); + + var value = "centered=1"; + + xdisplay.change_property (window, prop, X.XA_STRING, 8, 0, (uchar[]) value, value.length); + } } /*