Repository navigation
SwineWM 0.2.0
Sway configs that real people have: criteria and window rules, marks,
swap, sticky, resize, outputs, include and config error notifications,
plus the swinemenu launcher (see the roadmap in
doc/project_summary.md). The multi-monitor
features (output … mode|position|transform, workspace … output,
move workspace to output, hot-plug) are covered by unit tests but not
yet tested on a real multi-monitor setup; reports are welcome.
Added
swinemenu, a small launcher in the spirit of wofi/wmenu and the new
default$menu(Win+d): lists the Start menu's apps and Store apps
(--show drun), programs on PATH (--show run) or lines from standard
input (--dmenu), remembers what you pick, and takes the bar's colours
and font. swinewm starts the choice, so Store apps work as the shell.
Flow Launcher or any other launcher can still be set as$menu.- IPC
get_bar_config, as in sway: the bar's position, height, font and
colours, computed from the Waybarstyle.css. - Store apps start as the shell:
exec shell:AppsFolder\<AppUserModelID>
uses the documentedIApplicationActivationManagerinstead of the shell
namespace, which fails with "Class not registered" without Explorer.
Get-StartAppsin PowerShell lists the IDs, e.g.
bindsym $mod+c exec shell:AppsFolder\AnthropicPBC.Claude_fnn82j28hfe8t!Claude. swinewm --set-autostart/--unset-autostart(experimental): start
swinewm at logon next to Explorer, which stays the shell behind it with
its taskbar hidden (explorer_taskbar autohide, now in the default
config; no effect as the shell). In first tests Explorer still took many
key combinations;--set-shellremains the supported mode.- Criteria:
[app_id=… class=… title=… …] <commands>,for_window,
assignandno_focus, as in sway, with a built-in regular-expression
engine. On Windowsapp_idis the executable's file name (matched
ignoring case) andclassthe window class; see the token table in
doc/compatibility.md. mark,unmark,swap container with …,sticky,
rename workspace … to …,move … to mark,focus prev|next [sibling]
and the IPCget_marksrequest, as in sway.resizeis now a port of sway's:grow/shrinktowards an edge
(up/down/left/right),resize set, and<n> px or <m> ppt.- Outputs:
workspace <name> output …andworkspace <name> gaps …,
move workspace to output …; workspaces return to their monitor when
it is plugged back in, as in sway. Monitors can be named by their model
(output "DELL U2720Q" …). output … mode|position|transformchange Windows' display settings
for as long as swinewm runs (restored on exit, after a crash and with
--recover).includetakes wildcards (include config.d/*), as in sway.- Config errors are shown as a notification (swinewm's swaynag), on start
and on reload. doc/linux-users.md: Windows for Linux users (where things are,
shells, package managers, getting unstuck when swinewm is the shell).
Fixed
exec "C:\path with spaces\App.lnk"failed: sway's rule removes the
quotes of a single quoted argument, and the path was then split at its
first space. A command line that names an existing file is now opened as
a whole (this also made swinemenu's Start menu entries do nothing).- Store apps did not start from swinemenu: the activation manager is now
created withCLSCTX_ALL(as PowerShell does) instead of only as a local
server, a failed Store appexecreports failure (with the AppUserModelID
in the log), and swinemenu then tries to start the app itself. - Floating dialogs that were only partly on-screen could keep their bad
position; new dialogs are now centered unless the whole window fits on a
monitor. - As the shell, swinewm now answers programs that ask where the taskbar
is (SHAppBarMessage(ABM_GETTASKBARPOS), which went unanswered without
Explorer). - Windows that are mostly off every monitor (less than half visible) are
moved back on screen: a floating window that moves itself away is
centred again, and other windows (dialogs swinewm does not tile, such as
Windows 11's "Open with", which centres itself on the screen's corner
without Explorer as the shell) are centred on the nearest monitor.
Windows parked far away on purpose (at -32000) and windows being dragged
are left alone; each such move is logged with the window's class and
program. The "Open with" dialog still shows no app list as the shell
(seedoc/compatibility.md). tools/list-windows.batandtools/move-foreground.bat: scripts for
reporting windows that swinewm handles badly;tools/launch-store-app.bat
tests ways of starting Store apps.- A two-part version tag (
0.1) was not recognised, so its build was
versioned after the previous tag; it now means0.1.0. - The release job failed when the release had already been created on
GitHub; it now attaches the MSI and zip to it.