From e86753a92486328a9684288ff2f15bc9e6f1703e Mon Sep 17 00:00:00 2001 From: Marco Scardovi Date: Tue, 22 Jun 2021 15:16:31 +0200 Subject: x11-wm/phoc: new package phoc is a windows manager used for mobile devices like librem 5 and pinephone. It can be used on tablet too like pinetab. I will slowly add all the needed packages for phosh too (phosh is the interface). Package-Manager: Portage-3.0.20, Repoman-3.0.3 Signed-off-by: Marco Scardovi --- x11-wm/phoc/Manifest | 2 + .../0001-seat-Don-t-notify-on-key-release.patch | 27 +++++ ...t-touch-events-when-in-power-save-mode-or.patch | 112 +++++++++++++++++++++ x11-wm/phoc/metadata.xml | 8 ++ x11-wm/phoc/phoc-0.7.1.ebuild | 84 ++++++++++++++++ 5 files changed, 233 insertions(+) create mode 100644 x11-wm/phoc/Manifest create mode 100644 x11-wm/phoc/files/0001-seat-Don-t-notify-on-key-release.patch create mode 100644 x11-wm/phoc/files/0002-seat-inhibit-touch-events-when-in-power-save-mode-or.patch create mode 100644 x11-wm/phoc/metadata.xml create mode 100644 x11-wm/phoc/phoc-0.7.1.ebuild (limited to 'x11-wm') diff --git a/x11-wm/phoc/Manifest b/x11-wm/phoc/Manifest new file mode 100644 index 000000000..6019f26ab --- /dev/null +++ b/x11-wm/phoc/Manifest @@ -0,0 +1,2 @@ +DIST phoc-v0.7.1.tar.gz 143801 BLAKE2B 4db2fb40d2b85ee27d53a71b0dc158b3b37b47f9517bf5133958bc2328892aa8a54c679b5293efc4b3d84ccee04866471c729c4d77d9e903136bed3fe9e35030 SHA512 80869036c36837c2e260a8662aee975f86797c0a68a0a513d2d52b904d1ca44bcd93e8bee850c08a9b3b3395727e4e28085860750acd1b092349c7da6410c820 +DIST wlroots-0.12.0.tar.gz 476936 BLAKE2B 4129c87a148085f95f4cee6973308d79ab3f8b024247287a68dadd6729da8a5f8cc1e4ada63c15477a2c8e8258032440afe4a21a26f947143d17c87b0ca8a1a4 SHA512 560eae30932b777c1f07fb44592d5601c5d10ef74b31b6b9e4166a14caadab2bfa88d39282f159785d4c7f22f78d204f9bb7fab65d58afaf14b72a8486f9b415 diff --git a/x11-wm/phoc/files/0001-seat-Don-t-notify-on-key-release.patch b/x11-wm/phoc/files/0001-seat-Don-t-notify-on-key-release.patch new file mode 100644 index 000000000..a2928002b --- /dev/null +++ b/x11-wm/phoc/files/0001-seat-Don-t-notify-on-key-release.patch @@ -0,0 +1,27 @@ +From 63d8f9ceb0d2336db4276e717aabe427153b76bb Mon Sep 17 00:00:00 2001 +From: Arnaud Ferraris +Date: Sat, 6 Jun 2020 02:24:37 +0200 +Subject: [PATCH 1/2] seat: Don't notify on key release + +--- + src/seat.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/src/seat.c b/src/seat.c +index b04fed1..679a3f5 100644 +--- a/src/seat.c ++++ b/src/seat.c +@@ -30,8 +30,9 @@ static void handle_keyboard_key(struct wl_listener *listener, void *data) { + PhocKeyboard *keyboard = + wl_container_of(listener, keyboard, keyboard_key); + PhocDesktop *desktop = server->desktop; +- wlr_idle_notify_activity(desktop->idle, keyboard->seat->seat); + struct wlr_event_keyboard_key *event = data; ++ if (event->state == WLR_KEY_PRESSED) ++ wlr_idle_notify_activity(desktop->idle, keyboard->seat->seat); + phoc_keyboard_handle_key(keyboard, event); + } + +-- +2.26.2 + diff --git a/x11-wm/phoc/files/0002-seat-inhibit-touch-events-when-in-power-save-mode-or.patch b/x11-wm/phoc/files/0002-seat-inhibit-touch-events-when-in-power-save-mode-or.patch new file mode 100644 index 000000000..5f02f4aed --- /dev/null +++ b/x11-wm/phoc/files/0002-seat-inhibit-touch-events-when-in-power-save-mode-or.patch @@ -0,0 +1,112 @@ +From c6aeee2009a2ee4647fd74da0fc3bd87f61a70fd Mon Sep 17 00:00:00 2001 +From: Arnaud Ferraris +Date: Sat, 6 Jun 2020 02:52:10 +0200 +Subject: [PATCH 2/2] seat: inhibit touch events when in power save mode or + blank display + +--- + src/desktop.c | 2 ++ + src/output.c | 3 +++ + src/seat.c | 6 ++++++ + src/server.c | 1 + + src/server.h | 1 + + 5 files changed, 13 insertions(+) + +diff --git a/src/desktop.c b/src/desktop.c +index 8fbb98e..40b2492 100644 +--- a/src/desktop.c ++++ b/src/desktop.c +@@ -703,6 +703,7 @@ phoc_desktop_new (struct roots_config *c + void + phoc_desktop_toggle_output_blank (PhocDesktop *self) + { ++ PhocServer *server = phoc_server_get_default (); + PhocOutput *output; + + wl_list_for_each(output, &self->outputs, link) { +@@ -710,6 +711,7 @@ phoc_desktop_toggle_output_blank (PhocDe + + wlr_output_enable (output->wlr_output, enable); + wlr_output_commit (output->wlr_output); ++ server->active = enable; + if (enable) + phoc_output_damage_whole(output); + } +diff --git a/src/output.c b/src/output.c +index c03889f..045cbc0 100644 +--- a/src/output.c ++++ b/src/output.c +@@ -928,6 +928,7 @@ handle_output_manager_test (struct wl_li + void + phoc_output_handle_output_power_manager_set_mode (struct wl_listener *listener, void *data) + { ++ PhocServer *server = phoc_server_get_default (); + struct wlr_output_power_v1_set_mode_event *event = data; + PhocOutput *self; + bool enable = true; +@@ -951,6 +952,8 @@ phoc_output_handle_output_power_manager_ + if (enable == self->wlr_output->enabled) + return; + ++ server->active = enable; ++ + wlr_output_enable (self->wlr_output, enable); + if (!wlr_output_commit (self->wlr_output)) { + g_warning ("Failed to commit power mode change to %d for %p", enable, self); +diff --git a/src/seat.c b/src/seat.c +index 679a3f5..2a4c007 100644 +--- a/src/seat.c ++++ b/src/seat.c +@@ -178,6 +178,8 @@ static void handle_touch_down(struct wl_listener *listener, void *data) { + struct roots_cursor *cursor = + wl_container_of(listener, cursor, touch_down); + PhocDesktop *desktop = server->desktop; ++ if (!server->active) ++ return; + wlr_idle_notify_activity(desktop->idle, cursor->seat->seat); + struct wlr_event_touch_down *event = data; + roots_cursor_handle_touch_down(cursor, event); +@@ -188,6 +190,8 @@ static void handle_touch_up(struct wl_listener *listener, void *data) { + struct roots_cursor *cursor = + wl_container_of(listener, cursor, touch_up); + PhocDesktop *desktop = server->desktop; ++ if (!server->active) ++ return; + wlr_idle_notify_activity(desktop->idle, cursor->seat->seat); + struct wlr_event_touch_up *event = data; + roots_cursor_handle_touch_up(cursor, event); +@@ -198,6 +202,8 @@ static void handle_touch_motion(struct wl_listener *listener, void *data) { + struct roots_cursor *cursor = + wl_container_of(listener, cursor, touch_motion); + PhocDesktop *desktop = server->desktop; ++ if (!server->active) ++ return; + wlr_idle_notify_activity(desktop->idle, cursor->seat->seat); + struct wlr_event_touch_motion *event = data; + roots_cursor_handle_touch_motion(cursor, event); +diff --git a/src/server.c b/src/server.c +index 838841b..41452cf 100644 +--- a/src/server.c ++++ b/src/server.c +@@ -276,6 +276,7 @@ phoc_server_setup (PhocServer *self, const char *config_path, + phoc_startup_session (self); + + self->inited = TRUE; ++ self->active = TRUE; + return TRUE; + } + +diff --git a/src/server.h b/src/server.h +index 9501432..532b064 100644 +--- a/src/server.h ++++ b/src/server.h +@@ -37,6 +37,7 @@ struct _PhocServer { + PhocInput *input; + PhocServerDebugFlags debug_flags; + gboolean inited; ++ gboolean active; + + /* The session */ + gchar *session; +-- +2.26.2 diff --git a/x11-wm/phoc/metadata.xml b/x11-wm/phoc/metadata.xml new file mode 100644 index 000000000..144c8091c --- /dev/null +++ b/x11-wm/phoc/metadata.xml @@ -0,0 +1,8 @@ + + + + + marco@scardovi.com + Marco Scardovi + + diff --git a/x11-wm/phoc/phoc-0.7.1.ebuild b/x11-wm/phoc/phoc-0.7.1.ebuild new file mode 100644 index 000000000..4d5eaea51 --- /dev/null +++ b/x11-wm/phoc/phoc-0.7.1.ebuild @@ -0,0 +1,84 @@ +# Copyright 1999-2021 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=7 + +inherit vala meson gnome2-utils xdg + +MY_PV="v${PV}" +MY_P="${PN}-${MY_PV}" +# 0.13.0 does not work atm +WL_PV="0.12.0" +WL_P="wlroots-${WL_PV}" + +DESCRIPTION="Wlroots based Phone compositor" +HOMEPAGE="https://source.puri.sm/Librem5/phoc" + +# we don't use the version on gentoo because it breaks +# the phoc installation. we follow method used in archlinuxarm +SRC_URI=" + https://source.puri.sm/Librem5/phoc/-/archive/${MY_PV}/${MY_P}.tar.gz + https://github.com/swaywm/wlroots/releases/download/${WL_PV}/${WL_P}.tar.gz +" + +LICENSE="GPL-3" +SLOT="0" +KEYWORDS="~amd64 ~arm64" +IUSE="+introspection" + +DEPEND=" + dev-libs/glib + dev-libs/gobject-introspection + dev-libs/libinput + gnome-base/gnome-desktop + !gui-libs/wlroots + x11-libs/xcb-util + x11-libs/xcb-util-wm + x11-wm/mutter +" +RDEPEND="${DEPEND}" +BDEPEND=" + dev-util/ctags + dev-util/meson + virtual/pkgconfig + x11-base/xorg-server +" + +PATCHES=( + "${FILESDIR}/0001-seat-Don-t-notify-on-key-release.patch" + "${FILESDIR}/0002-seat-inhibit-touch-events-when-in-power-save-mode-or.patch" +) + +S="${WORKDIR}/${MY_P}" + +src_prepare() { + default + eapply_user + rm -r "${S}"/subprojects/wlroots || die + mv "${WORKDIR}/${WL_P}" "${S}"/subprojects/wlroots || die +} + +src_configure() { + local emesonargs=( + -Ddefault_library=shared + -Dtests=false + -Dwlroots:logind-provider=systemd + -Dwlroots:libseat=disabled + ) + meson_src_configure +} + +src_install() { + meson_src_install + dobin "${S}"/helpers/scale-to-fit +} + +pkg_postinst() { + xdg_pkg_postinst + gnome2_schemas_update +} + +pkg_postrm() { + xdg_pkg_postrm + gnome2_schemas_update +} -- cgit v1.2.3-65-gdbad