From 20349f1073d86a5c60f46ca84c44f1f8895ab7a5 Mon Sep 17 00:00:00 2001 From: Ferass El Hafidi Date: Tue, 2 Jun 2026 20:14:04 +0000 Subject: [PATCH] main/postmarketos-ui-windowmaker: new aport Add WindowMaker as a new UI. Also add a WindowMaker pmOS theme and some configs for making it somewhat usable on mobile (though that is not a main goal of this UI package). Signed-off-by: Ferass El Hafidi Part-of: --- main/postmarketos-ui-windowmaker/APKBUILD | 58 ++++ main/postmarketos-ui-windowmaker/WindowMaker | 300 ++++++++++++++++++ main/postmarketos-ui-windowmaker/autostart.sh | 17 + .../postmarketOS.style | 52 +++ ...arketos-ui-windowmaker-openrc.post-install | 5 + .../postmarketos-ui-windowmaker.post-install | 3 + 6 files changed, 435 insertions(+) create mode 100644 main/postmarketos-ui-windowmaker/APKBUILD create mode 100644 main/postmarketos-ui-windowmaker/WindowMaker create mode 100644 main/postmarketos-ui-windowmaker/autostart.sh create mode 100644 main/postmarketos-ui-windowmaker/postmarketOS.style create mode 100644 main/postmarketos-ui-windowmaker/postmarketos-ui-windowmaker-openrc.post-install create mode 100644 main/postmarketos-ui-windowmaker/postmarketos-ui-windowmaker.post-install diff --git a/main/postmarketos-ui-windowmaker/APKBUILD b/main/postmarketos-ui-windowmaker/APKBUILD new file mode 100644 index 000000000..20dffde46 --- /dev/null +++ b/main/postmarketos-ui-windowmaker/APKBUILD @@ -0,0 +1,58 @@ +# Reference: https://postmarketos.org/uipkg +maintainer="Ferass El Hafidi " +pkgname=postmarketos-ui-windowmaker +pkgver=1 +pkgrel=0 +pkgdesc="(X11) Window manager inspired by the NeXTSTEP user interface (stylus recommended)" +url="https://www.windowmaker.org/" +arch="noarch" +license="GPL-3.0-or-later" +depends=" + dnsmasq + mesa-egl + postmarketos-artwork-wallpapers + postmarketos-base-ui + postmarketos-base-ui-audio + postmarketos-base-ui-networkmanager + st + tinydm + unclutter-xfixes + windowmaker + xorg-server + " +_pmb_recommends=" + arandr + netsurf + svkbd + " +install="$pkgname.post-install $pkgname-openrc.post-install" +source="autostart.sh postmarketOS.style WindowMaker" +replaces="windowmaker" +subpackages="$pkgname-openrc" +options="!check" # note: we should default to OpenRC and in addition support systemd + +package() { + install -Dm644 "$srcdir"/autostart.sh \ + -t "$pkgdir"/usr/share/WindowMaker + install -Dm644 "$srcdir"/postmarketOS.style \ + -t "$pkgdir"/usr/share/WindowMaker/Themes + + install -Dm644 "$srcdir"/WindowMaker \ + -t "$pkgdir"/etc/WindowMaker +} + +openrc() { + default_openrc + depends=" + networkmanager-openrc + openrc + tinydm-openrc + " + + mkdir -p "$subpkgdir" +} +sha512sums=" +82d2ecebf66741d20fbbdb5003ca8bcebd6511b389ce83c9e1a04b061ad368490489db98c1b0af17774551c26de3d922990fc6abbfeff5a17e2475880d051f5a autostart.sh +1d43e25bf81e0a87342a1ae292959d5c2536cd4b1bb4ccc7f3acf9245b9cce7a310803124a0b8698efc13dad4f73ba36419af8af8b06a81d67309e674c8e8536 postmarketOS.style +b9abcf5f5a426e0b23a025478a7601f632a4e23f8332f93933b32cc42b30036e5927c71c7a0d79df14515a266d599a5040dff851f9ca516fae46beb104850a67 WindowMaker +" diff --git a/main/postmarketos-ui-windowmaker/WindowMaker b/main/postmarketos-ui-windowmaker/WindowMaker new file mode 100644 index 000000000..f6b5b186f --- /dev/null +++ b/main/postmarketos-ui-windowmaker/WindowMaker @@ -0,0 +1,300 @@ +{ + ColormapSize = 4; + DisableDithering = NO; + IconSize = 96; + ModifierKey = Mod1; + FocusMode = manual; + NewStyle = new; + DisableDock = NO; + DisableClip = NO; + DisableDrawers = NO; + ClipMergedInDock = NO; + DisableMiniwindows = NO; + EnableWorkspacePager = NO; + IconPosition = blh; + IconificationStyle = Zoom; + DisableWSMouseActions = NO; + MouseLeftButtonAction = SelectWindows; + MouseMiddleButtonAction = OpenWindowListMenu; + MouseRightButtonAction = OpenApplicationsMenu; + MouseBackwardButtonAction = None; + MouseForwardButtonAction = None; + MouseWheelAction = None; + MouseWheelTiltAction = None; + PixmapPath = ( + "~/GNUstep/Library/WindowMaker/Pixmaps", + "~/GNUstep/Library/WindowMaker/Backgrounds", + "~/GNUstep/Library/WindowMaker/CachedPixmaps", + "~/pixmaps", + "/usr/share/WindowMaker/Pixmaps", + "/usr/share/WindowMaker/Backgrounds", + "/usr/share/pixmaps" + ); + IconPath = ( + "~/GNUstep/Library/Icons", + "~/GNUstep/Library/WindowMaker/Pixmaps", + "~/GNUstep/Library/WindowMaker/CachedPixmaps", + "~/pixmaps", + "/usr/share/WindowMaker/Icons", + "/usr/share/WindowMaker/Pixmaps", + "/usr/share/pixmaps" + ); + ColormapMode = auto; + AutoFocus = YES; + RaiseDelay = 0; + CirculateRaise = NO; + Superfluous = YES; + AdvanceToNewWorkspace = NO; + CycleWorkspaces = NO; + WorkspaceNameDisplayPosition = center; + WorkspaceBorder = None; + WorkspaceBorderSize = 0; + StickyIcons = NO; + SaveSessionOnExit = NO; + WrapMenus = NO; + ScrollableMenus = YES; + MenuScrollSpeed = fast; + IconSlideSpeed = fast; + ShadeSpeed = fast; + BounceAppIconsWhenUrgent = YES; + RaiseAppIconsWhenBouncing = NO; + DoNotMakeAppIconsBounce = NO; + DoubleClickTime = 250; + ClipAutoraiseDelay = 600; + ClipAutolowerDelay = 1000; + ClipAutoexpandDelay = 600; + ClipAutocollapseDelay = 1000; + WrapAppiconsInDock = YES; + AlignSubmenus = NO; + ViKeyMenus = NO; + OpenTransientOnOwnerWorkspace = NO; + WindowPlacement = auto; + IgnoreFocusClick = NO; + UseSaveUnders = NO; + OpaqueMove = YES; + OpaqueResize = NO; + OpaqueMoveResizeKeyboard = NO; + DisableAnimations = NO; + DontLinkWorkspaces = YES; + WindowSnapping = NO; + SnapEdgeDetect = 1; + SnapCornerDetect = 10; + SnapToTopMaximizesFullscreen = NO; + DragMaximizedWindow = Move; + MoveHalfMaximizedWindowsBetweenScreens = NO; + AlternativeHalfMaximized = NO; + PointerWithHalfMaxWindows = NO; + HighlightActiveApp = YES; + AutoArrangeIcons = NO; + NoWindowOverDock = NO; + NoWindowOverIcons = YES; + WindowPlaceOrigin = (64, 0); + ResizeDisplay = center; + MoveDisplay = floating; + DontConfirmKill = NO; + WindowTitleBalloons = YES; + MiniwindowTitleBalloons = NO; + MiniwindowPreviewBalloons = NO; + AppIconBalloons = NO; + HelpBalloons = NO; + EdgeResistance = 30; + ResizeIncrement = 0; + Attraction = NO; + DisableBlinking = NO; + SingleClickLaunch = NO; + StrictWindozeCycle = YES; + SwitchPanelOnlyOpen = NO; + MiniPreviewSize = 128; + IgnoreGtkHints = NO; + KeepDockOnPrimaryHead = NO; + MenuStyle = normal; + WidgetColor = (solid, gray); + WorkspaceSpecificBack = (); + WorkspaceBack = (solid, "rgb:50/50/75"); + SmoothWorkspaceBack = NO; + IconBack = (dgradient, "rgb:a6/a6/b6", "rgb:51/55/61"); + TitleJustify = center; + WindowTitleFont = "Sans:bold:pixelsize=22"; + WindowTitleExtendSpace = 0; + WindowTitleMinHeight = 0; + WindowTitleMaxHeight = 0x7fffffff; + MenuTitleExtendSpace = 0; + MenuTitleMinHeight = 0; + MenuTitleMaxHeight = 0x7fffffff; + MenuTextExtendSpace = 0; + MenuTitleFont = "Sans:bold:pixelsize=22"; + MenuTextFont = "Sans:pixelsize=22"; + IconTitleFont = "Sans:pixelsize=15"; + ClipTitleFont = "Sans:bold:pixelsize=10"; + ShowClipTitle = YES; + LargeDisplayFont = "Sans:pixelsize=28"; + HighlightColor = white; + HighlightTextColor = black; + ClipTitleColor = black; + CClipTitleColor = "rgb:61/61/61"; + FTitleColor = white; + PTitleColor = white; + UTitleColor = black; + FTitleBack = (solid, black); + PTitleBack = (solid, gray40); + UTitleBack = (solid, "rgb:aa/aa/aa"); + ResizebarBack = (solid, "rgb:aa/aa/aa"); + MenuTitleColor = white; + MenuTextColor = black; + MenuDisabledColor = gray50; + MenuTitleBack = (solid, black); + MenuTextBack = (solid, "rgb:aa/aa/aa"); + IconTitleColor = white; + IconTitleBack = black; + SwitchPanelImages = (swtile.png, swback.png, 30, 40); + ModifierKeyLabels = ("Shift+", "Control+", "Mod1+", "Mod2+", "Mod3+", "Mod4+", "Mod5+"); + FrameBorderWidth = 1; + FrameBorderColor = black; + FrameFocusedBorderColor = black; + FrameSelectedBorderColor = white; + WorkspaceMapBack = (solid, black); + RootMenuKey = XF86AudioLowerVolume; + WindowListKey = F11; + WindowMenuKey = "Control+Escape"; + DockRaiseLowerKey = None; + ClipRaiseLowerKey = None; + MiniaturizeKey = "Mod1+M"; + MinimizeAllKey = None; + HideKey = "Mod1+H"; + HideOthersKey = None; + MoveResizeKey = None; + CloseKey = None; + MaximizeKey = XF86AudioRaiseVolume; + VMaximizeKey = None; + HMaximizeKey = None; + LHMaximizeKey = None; + RHMaximizeKey = None; + THMaximizeKey = None; + BHMaximizeKey = None; + TLCMaximizeKey = None; + TRCMaximizeKey = None; + BLCMaximizeKey = None; + BRCMaximizeKey = None; + MaximusKey = None; + KeepOnTopKey = None; + KeepAtBottomKey = None; + OmnipresentKey = None; + RaiseKey = "Mod1+Up"; + LowerKey = "Mod1+Down"; + RaiseLowerKey = None; + ShadeKey = None; + SelectKey = None; + WorkspaceMapKey = None; + FocusNextKey = "Mod1+Tab"; + FocusPrevKey = "Mod1+Shift+Tab"; + GroupNextKey = None; + GroupPrevKey = None; + NextWorkspaceKey = "Mod1+Control+Right"; + PrevWorkspaceKey = "Mod1+Control+Left"; + LastWorkspaceKey = None; + NextWorkspaceLayerKey = None; + PrevWorkspaceLayerKey = None; + Workspace1Key = "Mod1+1"; + Workspace2Key = "Mod1+2"; + Workspace3Key = "Mod1+3"; + Workspace4Key = "Mod1+4"; + Workspace5Key = "Mod1+5"; + Workspace6Key = "Mod1+6"; + Workspace7Key = "Mod1+7"; + Workspace8Key = "Mod1+8"; + Workspace9Key = "Mod1+9"; + Workspace10Key = "Mod1+0"; + MoveToWorkspace1Key = None; + MoveToWorkspace2Key = None; + MoveToWorkspace3Key = None; + MoveToWorkspace4Key = None; + MoveToWorkspace5Key = None; + MoveToWorkspace6Key = None; + MoveToWorkspace7Key = None; + MoveToWorkspace8Key = None; + MoveToWorkspace9Key = None; + MoveToWorkspace10Key = None; + MoveToNextWorkspaceKey = None; + MoveToPrevWorkspaceKey = None; + MoveToLastWorkspaceKey = None; + MoveToNextWorkspaceLayerKey = None; + MoveToPrevWorkspaceLayerKey = None; + WindowShortcut1Key = None; + WindowShortcut2Key = None; + WindowShortcut3Key = None; + WindowShortcut4Key = None; + WindowShortcut5Key = None; + WindowShortcut6Key = None; + WindowShortcut7Key = None; + WindowShortcut8Key = None; + WindowShortcut9Key = None; + WindowShortcut10Key = None; + WindowRelaunchKey = None; + ScreenSwitchKey = None; + RunKey = None; + ExitKey = None; + ScreenCaptureKey = Print; + WindowCaptureKey = None; + PartialCaptureKey = None; + NormalCursor = (builtin, left_ptr); + ArrowCursor = (builtin, top_left_arrow); + MoveCursor = (builtin, fleur); + ResizeCursor = (builtin, sizing); + TopLeftResizeCursor = (builtin, top_left_corner); + TopRightResizeCursor = (builtin, top_right_corner); + BottomLeftResizeCursor = (builtin, bottom_left_corner); + BottomRightResizeCursor = (builtin, bottom_right_corner); + VerticalResizeCursor = (builtin, sb_v_double_arrow); + HorizontalResizeCursor = (builtin, sb_h_double_arrow); + WaitCursor = (builtin, watch); + QuestionCursor = (builtin, question_arrow); + TextCursor = (builtin, xterm); + SelectCursor = (builtin, cross); + DialogHistoryLines = 500; + CycleActiveHeadOnly = NO; + CycleIgnoreMinimized = NO; + + HorizontalResizeCursor = (builtin, sb_h_double_arrow); + HighlightColor = "#ffffff"; + FrameBorderColor = "#000000"; + MenuTitleExtendSpace = 0; + UTitleBack = (mvgradient, "#989aa6", "#a1b59f", "#899b86"); + VerticalResizeCursor = (builtin, sb_v_double_arrow); + FrameBorderWidth = 1; + NormalCursor = (builtin, left_ptr); + SelectCursor = (builtin, cross); + PTitleBack = (mhgradient, "#5a5c66", "rgb:70/72/7e", "rgb:45/47/4e"); + MoveCursor = (builtin, fleur); + MenuDisabledColor = "#999999"; + MenuTextBack = (mhgradient, "#384246", "#909090", "#4a6156"); + MenuStyle = normal; + IconBack = (mvgradient, "#666666", "#3a5551", "#5d8575"); + MenuTitleBack = (mvgradient, "#18191f", "#69a15b", "#2d6a4a"); + FTitleBack = (mvgradient, "#505075", "#40ac58", "#37664f"); + WindowTitleExtendSpace = 0; + ResizebarBack = (solid, "#989aa6"); + TopRightResizeCursor = (builtin, top_right_corner); + MenuTextColor = "#ffffff"; + TopLeftResizeCursor = (builtin, top_left_corner); + HighlightTextColor = "#000000"; + FrameSelectedBorderColor = "#ffffff"; + WaitCursor = (builtin, watch); + QuestionCursor = (builtin, question_arrow); + MenuTitleColor = "#ffffff"; + MenuTextExtendSpace = 0; + FTitleColor = "#ffffff"; + ArrowCursor = (builtin, top_left_arrow); + WorkspaceBack = (tpixmap, /usr/share/wallpapers/postmarketos.jpg, gray20); + BottomLeftResizeCursor = (builtin, bottom_left_corner); + FrameFocusedBorderColor = "#000000"; + BottomRightResizeCursor = (builtin, bottom_right_corner); + UTitleColor = "#333333"; + PTitleColor = "#ffffff"; + ResizeCursor = (builtin, sizing); + TextCursor = (builtin, xterm); + CClipTitleColor = "#999999"; + TitleJustify = left; + ClipTitleColor = "#ffffff"; + IconTitleBack = "#18191f"; + IconTitleColor = "#ffffff"; +} diff --git a/main/postmarketos-ui-windowmaker/autostart.sh b/main/postmarketos-ui-windowmaker/autostart.sh new file mode 100644 index 000000000..123957b18 --- /dev/null +++ b/main/postmarketos-ui-windowmaker/autostart.sh @@ -0,0 +1,17 @@ +#!/bin/sh +# +# WindowMaker will wait until this script finishes, so if you run any +# commands that take long to execute (like a xterm), put a ``&'' in the +# end of the command line. +# +# This file must be executable. +# + +# Start svkbd if installed and not already running +if command -v svkbd-mobile-intl && ! pgrep svkbd-mobile-intl; then + svkbd-mobile-intl & +fi + +if command -v unclutter-xfixes; then + unclutter-xfixes --start-hidden --hide-on-touch & +fi diff --git a/main/postmarketos-ui-windowmaker/postmarketOS.style b/main/postmarketos-ui-windowmaker/postmarketOS.style new file mode 100644 index 000000000..f58c13195 --- /dev/null +++ b/main/postmarketos-ui-windowmaker/postmarketOS.style @@ -0,0 +1,52 @@ +{ + IconSize = 96; + HorizontalResizeCursor = (builtin, sb_h_double_arrow); + HighlightColor = "#ffffff"; + FrameBorderColor = "#000000"; + MenuTitleExtendSpace = 0; + UTitleBack = (mvgradient, "#989aa6", "#a1b59f", "#899b86"); + VerticalResizeCursor = (builtin, sb_v_double_arrow); + FrameBorderWidth = 1; + NormalCursor = (builtin, left_ptr); + SelectCursor = (builtin, cross); + PTitleBack = (mhgradient, "#5a5c66", "rgb:70/72/7e", "rgb:45/47/4e"); + MoveCursor = (builtin, fleur); + MenuDisabledColor = "#999999"; + MenuTextBack = (mhgradient, "#384246", "#909090", "#4a6156"); + MenuStyle = normal; + IconBack = (mvgradient, "#666666", "#3a5551", "#5d8575"); + MenuTitleBack = (mvgradient, "#18191f", "#69a15b", "#2d6a4a"); + FTitleBack = (mvgradient, "#505075", "#40ac58", "#37664f"); + WindowTitleExtendSpace = 0; + ResizebarBack = (solid, "#989aa6"); + TopRightResizeCursor = (builtin, top_right_corner); + MenuTextColor = "#ffffff"; + TopLeftResizeCursor = (builtin, top_left_corner); + HighlightTextColor = "#000000"; + FrameSelectedBorderColor = "#ffffff"; + WaitCursor = (builtin, watch); + QuestionCursor = (builtin, question_arrow); + MenuTitleColor = "#ffffff"; + MenuTextExtendSpace = 0; + FTitleColor = "#ffffff"; + ArrowCursor = (builtin, top_left_arrow); + WorkspaceBack = (tpixmap, /usr/share/wallpapers/postmarketos.jpg, gray20); + BottomLeftResizeCursor = (builtin, bottom_left_corner); + FrameFocusedBorderColor = "#000000"; + BottomRightResizeCursor = (builtin, bottom_right_corner); + UTitleColor = "#333333"; + PTitleColor = "#ffffff"; + ResizeCursor = (builtin, sizing); + TextCursor = (builtin, xterm); + CClipTitleColor = "#999999"; + TitleJustify = left; + ClipTitleColor = "#ffffff"; + IconTitleBack = "#18191f"; + IconTitleColor = "#ffffff"; + WindowTitleFont = "Sans:bold:pixelsize=22"; + MenuTitleFont = "Sans:bold:pixelsize=22"; + MenuTextFont = "Sans:pixelsize=22"; + IconTitleFont = "Sans:pixelsize=15"; + ClipTitleFont = "Sans:bold:pixelsize=10"; + LargeDisplayFont = "Sans:pixelsize=28"; +} diff --git a/main/postmarketos-ui-windowmaker/postmarketos-ui-windowmaker-openrc.post-install b/main/postmarketos-ui-windowmaker/postmarketos-ui-windowmaker-openrc.post-install new file mode 100644 index 000000000..448db8b0e --- /dev/null +++ b/main/postmarketos-ui-windowmaker/postmarketos-ui-windowmaker-openrc.post-install @@ -0,0 +1,5 @@ +#!/bin/sh + +rc-update add tinydm default +rc-update add elogind default +rc-update add networkmanager default diff --git a/main/postmarketos-ui-windowmaker/postmarketos-ui-windowmaker.post-install b/main/postmarketos-ui-windowmaker/postmarketos-ui-windowmaker.post-install new file mode 100644 index 000000000..cf5911549 --- /dev/null +++ b/main/postmarketos-ui-windowmaker/postmarketos-ui-windowmaker.post-install @@ -0,0 +1,3 @@ +#!/bin/sh + +tinydm-set-session -s /usr/share/xsessions/wmaker.desktop