summaryrefslogtreecommitdiff
path: root/gui-libs/wayfire-plugins-custom/wayfire-plugins-custom-0.1.0-r25.ebuild
blob: 84b34fb5fd0f5a3b204fa38f35aa1102a543b1bb (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
# Copyright 2026 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
# r21 (::personal): QoL find-pointer module on the r20 sources.
# r22 (::personal): QoL clipboard-keys module (Super+C/V copy and paste in every app).
# r23 (::personal): QoL hold-super, raise-on-release and open-here modules.
# r24 (::personal): QoL batch 7: clipboard-keys keeps each copy, so it still pastes after its app quits.
# r25 (::personal): QoL raise-on-release: after a drag, the window you drop on keeps focus.

EAPI=8
inherit meson

DESCRIPTION="Independent custom Wayfire plugins for window actions, Show Desktop, workspace backgrounds, the screensaver, finding the pointer, clipboard keys, holding Super for shortcuts, raise on release and opening windows where you work"
HOMEPAGE="https://www.hedronfire.com/"
SRC_URI="https://www.hedronfire.com/distfiles/wayfire-plugins-custom-0.1.0-r20.tar.xz"
S="${WORKDIR}/wayfire-plugins-custom-0.1.0-r20"
LICENSE="MIT"
SLOT="0"
KEYWORDS="~amd64"
IUSE="+window-actions +panel-desktop +workspace-backgrounds +screensaver +find-pointer +clipboard-keys +hold-super +raise-on-release +open-here test"
REQUIRED_USE="|| ( window-actions panel-desktop workspace-backgrounds screensaver find-pointer clipboard-keys hold-super raise-on-release open-here )"
RESTRICT="mirror !test? ( test )"

RDEPEND="
	>=gui-wm/wayfire-0.11.0-r19:0=
	gui-libs/wf-config:=
	gui-libs/wlroots:0.20=
	workspace-backgrounds? ( >=gui-wm/wayfire-0.11.0-r29:0= x11-libs/cairo x11-libs/gdk-pixbuf:2 )
	screensaver? ( >=gui-wm/wayfire-0.11.0-r73:0= )
	!<gui-apps/wayfire-panel-0.1.0-r7
	!<gui-apps/wayfire-dock-0.1.1-r5
	!<gui-apps/wayfire-settings-0.1.4-r3
	!<gui-apps/wayfire-session-0.1.11-r3
"
DEPEND="${RDEPEND}
	workspace-backgrounds? ( dev-cpp/nlohmann_json )
	window-actions? ( dev-cpp/nlohmann_json )
"
BDEPEND="virtual/pkgconfig"

PATCHES=(
	"${FILESDIR}/${PN}-0.1.0-qol-1.patch"
	"${FILESDIR}/${PN}-0.1.0-qol-2.patch"
	"${FILESDIR}/${PN}-0.1.0-qol-3.patch"
	"${FILESDIR}/${PN}-0.1.0-qol-4.patch"
	"${FILESDIR}/${PN}-0.1.0-qol-5.patch"
	"${FILESDIR}/${PN}-0.1.0-qol-6.patch"
	"${FILESDIR}/${PN}-0.1.0-qol-7.patch"
)

src_configure() {
	local emesonargs=(
		$(meson_use window-actions)
		$(meson_use panel-desktop)
		$(meson_use workspace-backgrounds)
		$(meson_use screensaver)
		$(meson_use find-pointer)
		$(meson_use clipboard-keys)
		$(meson_use hold-super)
		$(meson_use raise-on-release)
		$(meson_use open-here)
		-Dworkspace-backgrounds-test-api=false
		$(meson_use test tests)
	)
	meson_src_configure
}

src_install() {
	meson_src_install
	# meson installs package docs under ${PN}; Gentoo keeps them under ${PF}.
	if [[ -d ${ED}/usr/share/doc/${PN} ]]; then
		mkdir -p "${ED}/usr/share/doc/${PF}" || die
		mv "${ED}/usr/share/doc/${PN}"/* "${ED}/usr/share/doc/${PF}/" || die
		rmdir "${ED}/usr/share/doc/${PN}" || die
	fi
	dodoc README.md ORIGINS.json
	local plugin
	for plugin in window-actions panel-desktop workspace-backgrounds screensaver find-pointer clipboard-keys hold-super raise-on-release open-here; do
		if use "${plugin}"; then
			docinto "plugins/${plugin}"
			dodoc "plugins/${plugin}/README.md" "plugins/${plugin}/LICENSE"
		fi
	done
}

pkg_postinst() {
	elog "Workspace backgrounds: start the matching Wayfire, enable workspace-backgrounds and ipc, then open WCM Displays → Backgrounds."
	elog "Load plugins by bare name; versioned library paths are no longer installed."
	elog "Select modules with USE flags; enable them separately in Wayfire. Drag snapping is configured in Move."
	if use screensaver; then
		elog "Screensaver: add screensaver to [core] plugins (/usr/libexec/live-wallpaper/migrate"
		elog "does this when coming from ambient-background). Settings: WCM -> Screensaver."
	fi
	if use find-pointer; then
		elog "Find the pointer: add find-pointer to [core] plugins ('pyr defaults --apply' does it),"
		elog "then press Ctrl twice."
	fi
	if use clipboard-keys; then
		elog "Copy and paste everywhere: add clipboard-keys to [core] plugins ('pyr defaults --apply'"
		elog "does it), log out and back in, then use Super+C and Super+V in any app. Terminals"
		elog "get Ctrl+Shift+C/V; list another terminal's app id in [clipboard-keys] terminals."
	fi
	if use hold-super; then
		elog "Hold Super for the shortcuts: add hold-super to [core] plugins ('pyr defaults --apply'"
		elog "does it), log out and back in, then hold Super alone for a moment."
	fi
	if use raise-on-release; then
		elog "Raise on release: add raise-on-release to [core] plugins and take BTN_LEFT out of"
		elog "core/focus_buttons ('pyr defaults --apply' does both where focus_buttons is Wayfire's default)."
	fi
	if use open-here; then
		elog "Open here: add open-here to [core] plugins ('pyr defaults --apply' does it) and log in again;"
		elog "new windows then open on the monitor under the pointer, at their app's last size."
	fi
	if use window-actions; then
		elog "The window-state plugin is now window-actions (libwindow-actions.so). In wayfire.ini,"
		elog "replace window-state with window-actions in [core] plugins and delete any"
		elog "[window-state] section, then log out and back in so the panel, dock and session"
		elog "daemon reconnect. Activity placements now live in the session daemon's"
		elog "activities.json; ~/.local/state/wayfire/layouts.db* is no longer used and can be deleted."
	fi
}