-
global/audio extended with toggles for spatial audio and device reassignment
-
new tool: typer (global/input/text)
-
new tool: mouse gestures (global/input/mouse/gesture)
-
crash log widget replaced with control IPC command "info /"
-
added preview image to workspace button hover
-
menu paths now have alt-clicks via m1+enter, TAB and right-click
-
file picker: item sensitive popup menu actions
-
much improved cursor handling and cursor tagging (DND)
-
added 'sticky' drag and drop option (input/mouse/stickydnd)
-
new tool: composition-window (global/tools/composition)
-
new path: global/settings/tools/reload for hot-reloading tools and widgets
-
new tool: osdkbd (global/input/osd)
-
split out target/open into target/open and target/open_tag
-
new path: display/displays/current/format for controlling output format selection (rgb565, 888, deep, hdr, ...)
-
target/video/colors: add option to switch/control client-preferred color palette for clients that support the feature
-
drag-resize in floating mode now has an 'silent' global option for using server-side selection, and a 'per-type' enable with tui default
-
display scanout and refresh preferences can be set (globally) through: global/display/variable_refresh and global/displays/.../direct_scanout
-
added a tile-bsp mode that adds new windows based on the highest-level tile with less than 2 children (/global/workspace/layout/tile_bsp)
-
statusbar / titlebar - added vertical layout
-
new path: global/input/keyboard/maps/platform added for platform translation controls (rmvo, ...)
-
new path: display/displays/current/orientation/flip_y,rotate_180
-
the browse/ path now supports basic user-defined namespaces
-
touch - added an empty (disable) classifier, exposed more profile values dynamically, option to hook profile picking on unknown device.
-
new tool - text to speech
-
flair - add background effect to HUD (darken, blur+vignette)
-
compact-mode for statusbar and titlebar (global/settings/titlebar,statusbar/compact)
-
expose bond-target between windows of the same state identifier
-
add m2- drag to cursortag (drag-share behaviour)
-
new path, global/workspace/import to retrieve a workspace from an inaccessible display
-
new path, target/clipboard/autopaste_on,off: autopaste messages added to the global clipboard
-
added option to pick terminal state machine priority
-
atypes/x11 - multiple choices for x11 client integration: sepaate 'wm as exclusive workspace', dynamic single client, extract specific toplevels
-
target/input/keyboard/send_keymap - extract current or factory-str platform keymap and send to client, useful for x11/wayland.
-
net tool: a12net, this adds tools/networking, open/a12_directory and settings/networking for working with arcan >= 0.6.3
-
tools/autolayouter: add the option to colorize side-columns scaled through the shader (simple/sidecol) from the high-contrast palette
minor:
-
migrate control IPC to asynch-i/o
-
statusbar cpath popcount incorrectly reset in some cases causing binding failures and visual glitches
-
overlay tool updated to respect statusbar size and side orientations
-
default HUD sort order split into two, one for browse/ and one for other paths
-
dropped 'simple' display mode in favor of the direct scanout control
-
added dracula/gruvbox/gruvbox-light colorschemes
-
color picking widget not shows tui- colorschemes
-
activation / type fixes for universal open/save
-
value-input cancel-out crash fixed
-
terminal hard coded colorscheme deprecated in favor of dynamic switching (/global/settings/terminal/colorscheme)
-
added font- size stepping control (/target/visual/font/step_size)
-
uiprim/bar - label dominant-axis positioning fixed
-
uiprim/lbar - helper text padding and background size increased
-
clipboard/url paste scripting error fixed
-
swapping from fullscreen workspace to a non fullscreen one and back should no longer lose the surface canvas
-
resource browser preview on-select triggers for mouse motion as well
-
added padding rules to hud widget borders, popups and other elements
-
navigation menu for binding timer or input now shows helper status text (widget/helper)
-
display helper widget now shows buffer mapping format (LDR, SDR, HDR)
-
client subwindows can now have requests for parent-relative position honored
-
reset or crash recovery should now restore active workspace index
-
resource browser spawned windows now track a playlist of similar items from the folder, adds /target/playlist and bindings to step with F1, F2, F3
-
paths for controlling window stacking in float mode, /target/window/select/to_front, /target/window/select/to_back
-
added breadth cap option for tiled modes (global/config/workspaces/tile/breadth_cap) when exceeded will try and find new fitting workspace for attaching window
-
universal open/save: Clients that announce support for global open/save via bchunk-hints now trigger the file browser accordingly.
-
display/share and target/share reworked: Display/region/ based sharing removed (except for snapshot/monitor) in favoring of a /target/share menu that consolidate all such options.
-
uiprim/sbar: statusbar custom button controls added, it is now possible to define alt-action (such as custom popup spawn) as well as drag-action.
-
workspace buttons now popup layout mode selector on altclick, and migrate window on drag-drop
-
uiprim/tbar: titlebar merge-to-status bar mode on select (if hidden) titlebar rclick now mappable (default, popup /target)
-
uiprim/popup: added basic popup component
-
target-launch: When activating global/target/launch to start a trusted application you can also supply an application tag. This helps automation as you can now specify that tag as part of /windows/by-tag etc. when there are no UUIDs or other values to take advantage of.
-
input/rotary added: This tool implements basic gestures, commands and mapping for rotary devices like the 'Surface Dial' and 'Griffin PowerMate'.
-
tools/extbtn added: Registers into global/settings/statusbar and adds option for external clients to connect and attach custom buttons. This deprecates the statusbar IPC in favor of solving this externally.
-
tools/autostart added: This tool allows a series of paths to be automatically run on startup.
-
tools/profile_picker added: This tool is the first step towards better initial configuration. It triggers on startup and installs UI schemas for default inputs, colors and security profiles.
-
triggers: added per-window option to bind multiple custom triggers on select, deselect and destroy
-
layout/tile: allow titlebar drag/drop as a mouse- triggered way to swap, m1 and m2 control swap, join as child or join as sibling. allow better gap controls.
-
layout/htab: added side column based tabbed layout mode
-
menu/hud: Cipharius added support for fuzzy-string matching to the HUD, switch it on by entering % and pick fuzzy_relevance as the sort method.
-
menu/devmaps: Custom menus/aliasmaps can now be built. These register in the menu root (/menus) and are intended for shortcut button grids, popup menus, radial menus and so on.
-
workspaces assignment: It is now possible to control which workspace new windows currently spawn at, see the /global/settings/workspaces/spawn path.
-
visual: Add soft shadow controls to windows, ui elements and statusbar
-
input/touch improvements: New gestures, 'tap', 'doubletap', 'idle_return', 'idle_enter'. improved relative mouse emulation to better handle click-select refactored some of the code to more easilly accomodate custom classifiers. Some device profile based values can now be changed through the path /global/input/touch. A classifier that forwards as basic touch events has been added.
-
first round of (non-text) icon management (caching, shared sets etc.) added
-
displays/current/zoom added: Bind to keyboard for zooming in/out around the mouse cursor position
-
new tool: streamdeck This allows external mini displays (touchbars etc.) to be hooked up and act as restricted input devices as well as custom widget mappings
-
new tool: todo This tool allows for simple tracking of todo tasks that integrate with the notification system, status bars and so on.
-
new tool: tracing This tool mixes the monitoring wm inspection parts of durden with the tracing facility in arcan to produce chrome://tracing friendly json logs.
Minor / Fixes:
-
global/settings/terminal/tpack added for temporarily forcing server-side text on for all new terminal windows (feature still experimental)
-
display resolution picker should now bias towards the highest refresh rate when there are multiple to chose from at the desired resolution
-
added controls to insert subwindows as new windows or relative to their parents, (global/settings/workspaces/tiled/subwindow=normal,child)
-
removed the 'alternate' window feature (used with wayland toplevels and terminal groups), the feature turned out way to complex and demanding in the way it was implemented.
-
float/minimize prefers client provided icon or canvas contents as statusbar icon rather than a longer text representation
-
added 'invert light' shader that retains most of hue while inverting dark/light colors
-
handover subsegment allocation now routes correctly
-
silent shutdown retains known window position and states, should recover properly when started back up.
-
region selection closure management reworked
-
more subsystems expose logging over the monitor ipc
-
/global/displays/color can be used to change the default clear color when there is no wallpaper. A single color background can also be generated through /global/workspace/background.
-
statusbar ws- button coloring now defaults to dynamic from hc palette
-
/windows/name added for individual explicit window addressing
-
started refactoring and splitting uiprim.lua
-
started refactoring and splitting tiler.lua
-
allow disabling meta-guard (rebinding) via /input/keyboard/meta_guard
-
gconf.lua split up into config.lua (keys) and gconf.lua (mgmt code)
-
/bindtarget=/some/path sets a 'consume on use' path that allows interactive menu paths like key and button bindings to be automated
-
target/window/move_fx/fy added for display- size relative move
-
firstrun.lua added to setup custom defaults on first run/config reset
-
added color picker widget
-
dropped the vr-viewer tool in favor of an upcoming way of allowing lwa clients that use the vr-subsystem so that safespaces can be used nested at minimal cost.
-
display backlight controls changed into a submenu, added options for stepping
-
generalized/cleaned up the external-listener implementation. fixing reliability and rate-limit misses.
-
multiple changes to display hotplug behavior / detection, fallback when edid fail after power cycle
-
added visual indicators to window drag-reorder in tiling mode
-
added dynamic statusbar buttons to control / reach other displays
-
HC-palette color changes (global/settings/visual/colors/palette) persist
-
input devices can be forgotten (global/input/all-devices/dev/forget=yes
-
better error reporting for init-script errors
-
number of fixes to drag-resize
-
tools/advfloat: window-to-background will now receive input when no window is selected.
-
tools/advfloat: autolayout now recurses when one pass didn't position all windows autolayout also got a hide/reveal mode
tools/vrviewer added 'vrviewer', an integrated 3D/VR tool that acts as a 3D desktop-within-the-desktop.
-
distr/durden: launcher- script for reasonable defaults for linux/BSDs with arcan on egl-dri (native) platform.
-
widgets/input: new widget (target/input activated) that presents client provided input labels as clickable options
-
widgets/notification: new widget (activated on any path) that flushes the currently queued set of notifications on HUD activation
-
widgets/icon: new widget (for UI button to emoji- unicode-subset mapping)
-
custom-crop: support cropping [t l d r] px from the canvas area
-
impostors: crop t- px and bind to a toggle-able titlebar
-
browser: add controls for preview-launch delay, and allow video previews
-
decorations: added controls to hide dynamic workspace buttons added per-window controls to override titlebar pattern added per-window controls to modify titlebar buttons added paths for border/titlebar primary colors
-
cursortagging: added (target/window/cursortag) as an option, experimental
-
mass-actions: the root node /windows can now be used to address collections of windows based on some property, such as name or type
Breaking:
-
statusbar visual config area changed to [px] from % point and order changed to [t l r d] to match other similar functions
-
target titlebar controls moved to its own group
- border settings moved to its own group (/global/settings/border)
-
control channel (ipc pipes) have switched to using a domain socket for both input and output
-
entire menu/browser system refactored to have a more shared codebase, this moves all paths to be explicit /global/path/to /target/path/to /browse/shared/
-
multiple menu functions moved around and regrouped, all toggle options have been merged into the YES/NO paths that have been extended with YES/NO/FLIP
-
mouse devices now get joined into one abstract label by default for binding, to revert back to the devid_subid setup, you can use /global/input/mouse/coalesce=false
Minor / Fixes:
-
activate GPU rescan on hotplug event
-
reworked multi-display state management / restoration / discovery
-
mouse should now work better with the HUD menu, particularly mouse-wheel, navigation button clicks and right-click to exit.
-
regression in hotplugging causing nil table member dereference on remove event with active listeners
-
input focus can be changed by explicit display path / name
-
reworked most sizing / positioning code to be less strict on client- driven resizing
-
per- target default decoration color overrides
- split border controls into float and other modes
-
expose target menu binding in recovery binding handler
-
expose input caret manipulation as part of basic bindings
-
system shutdown gets a silent option that doesn't tell clients to shut down, but rather to reconnect or migrate
-
add menu options to join 'n' windows to the left or right in tile mode as children of the selected window
-
added global/config/commit to make sure the current setings get saved immediately
- mouse/keyboard scripts are now switched to use the distribution default from arcan
-
more terminal controls exposed: blinkrate, cursor style
-
added controls for border color
-
display preset map now respects density and backlight
-
launch targets with the tag 'autorun' will be launched on startup
-
display orientation options are now explicit +- 90
- added target/video/advanced/override_size for testing client behavior at explicit sizes (combine with _block_resize)
-
Display region sharing now supports force-pushing into clients that can handle input segments.
-
target/video/advance/migrate - send a migrate request to a client, which may prompt a client to jump to a different connection point or display server instance.
-
shader subsystem - added a multi-pass effect format along with some initial effects (gaussian blur, CRT-lottes).
-
tools/advfloat - extended float layout mode capabilities: spawn control (draw2spawn) hide-to-statusbar cursor-action-region (see tools/advfloat/cregion.lua for definition) automatic relayouter grid-cell align
-
tools/overview - added a HUD- like workspace switcher
-
tools/flair - added a visual effects layers and some initial effects, e.g. clothy windows, the natural successor to wobbly windows.
-
terminal-group spawn-mode added, allows a connection primitive to be generated per terminal and clients which connect via this group share the same logical window tree slot.
-
Tui/terminal clients are now allowed to spawn additional tui subsegments. This match the new support in afsrv_terminal that allows the window to be cloned into a copy-window.
-
File browser now expose wild-card matching (asterisk), Lua patterns (%%) and sort-order modification (typing % lists options).
-
retain some window and workspace properties across script errors crashes and resets
-
menu navigation can now shows a helper description of the currently selected item
-
mode-sensitive titlebar icons - window titlebar icons can now be set to be activated only in certain modes
Minor:
-
Destroying a window in fullscreen mode now returns the workspace to the last known mode instead of forcing to tile.
-
Double-tap input-lock automatically unlocks if the locked window is closed
-
Double-tap input-lock without a selected windows is now a no-op
-
Float mode border drag sizing, cursorhint and positioning fixes
-
Float mode drag now respects statusbar- imposed boundaries
-
Float mode canvas-drag/resize option for self-decorated clients
-
improved (less broken) handling for wayland popups and subsurfaces
-
Step-resize keybinding now aligns to window- cell size (terminals)
-
statusbar can now be sized/padded to percentage of display output (config/statusbar/borderpad)
-
statusbar specific configuration moved to (config/statusbar) from (config/visual/bars/...)
-
statusbar number prefix on known workspaces and statusbar mode button can now be toggled on/off
-
add support for window canvas overlays, intended for wayland- toplevel windows and senseye translators
-
Now requires arcan >= 0.5.3.
-
Documentation Moved to a separate webpage, http://durden.arcan-fe.com
-
Client- defined mouse-cursor support.
-
Window slicing: target/window/slice allows mouse-selected subregion to (active->input forward or passive) bind a subregion of one window to a new window.
-
External clipboard manager support: external clients can be permitted to read and/or inject entries unto the clipboard. See global/config/system/clipboard-bridge.
-
Gamma controls: external clients can be permitted to set custom color/ and gamma/ lookup tables, either per window or globally. See target/video/advanced/color-gamma synch and global/config/system/gamma-bridge.
-
Filesystem-like IPC: the iopipes IPC path has been extended to allow ls, read, write and exec like navigation of the menu subsystem. This can be bound to a FUSE-wrapper to fully control durden from a terminal.
-
LED devices: added support for profile driven LED device control see devmaps/led/README.md or global/config/led
-
Input multicast : added support for input multicast groups. Enable per window via target/input/multicast. Keyboard input received will be forwarded to all children.
-
Statusbar: can now be set to 'HUD' mode, where it is only visible on the global/ or target/ menu HUDs. (config/visual/bars/statusbar(HUD)/...)
-
Tools/Autolayout improvements: can now disable titlebars on side-columns, and allow a different shader on side-columns (see global/config/tools/autolayouting)
-
Tools/Overlay: [new], can now take the contents of a window and add to a vertical column stack at left or right edge as scaled-down previews.
-
Target/Video/Advanced: allow per-window output density overrides.
-
Atypes/wayland/x11: new scaling mode, 'client' to allow the client to know about the max dimensions, but let it chose its own actual size within those constraints.
-
Window- relayout/resize animations for float/tile: disable/enable via config/visual/window animation speed
-
Dynamically switchable visual/action schemes (devmaps/schemes/README.md) that can be used to set a global, per-display, per workspace or per window scheme of fonts and other configuration presets.
Minor:
- (arcan > 0.5.2) allow GPU- authentication controls
- Split mouse cursors into sets.
- more consistent font/font-size switching when migrating across displays
- default-off display profiles for vive/psvr
- per window font override controls
- defer window attachment to reduce resize operations
- menu options for appl- switching (global/system/reset/...)
- hidden bind path for suspend-state toggle (target/state/...)
- menu path to reset workspace background (global/workspace/...)
- menu path for global/workspace/switch/last
- option to force bitmap font path for terminal
- a shader for luma (monochrome) - only mode
- atype- profile for wayland clients
- option to disable/block mouse (global/input/mouse/block)
- target menu path for set-x, set-y in float mode
- mouse button debounce timer support (global/inpput/mouse/debounce)
- expose backlight controls per display (global/display/displays/...)
- path for setting workspace background to a solid color
- Tools/pulldown: can now set a shadow/colored border
-
Tool: Added autolayouter
-
Tool: Added 3d-modelviewer, can remap contents of other windows unto a 3d-model.
-
Feature: OCR to Clipboard, access through global/display/region Requires tesseract- support in arcan encode frameserver
-
Cheatsheet Widget: Added path activation
-
Security/Safety: Added connection rate limiting
-
Performance: Added dedicated fullscreen mode