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 <funderscore@postmarketos.org>
Part-of: <https://gitlab.postmarketos.org/postmarketOS/pmaports/-/merge_requests/8717>
This commit is contained in:
Ferass El Hafidi 2026-06-02 20:14:04 +00:00 committed by The Friendly Meow (merge) Bot
parent 4f39055f64
commit 20349f1073
No known key found for this signature in database
6 changed files with 435 additions and 0 deletions

View file

@ -0,0 +1,58 @@
# Reference: https://postmarketos.org/uipkg
maintainer="Ferass El Hafidi <funderscore@postmarketos.org>"
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
"

View file

@ -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";
}

View file

@ -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

View file

@ -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";
}

View file

@ -0,0 +1,5 @@
#!/bin/sh
rc-update add tinydm default
rc-update add elogind default
rc-update add networkmanager default

View file

@ -0,0 +1,3 @@
#!/bin/sh
tinydm-set-session -s /usr/share/xsessions/wmaker.desktop