Left is a tiling window manager written in rust for stability and performance.
The core of left is designed to do one thing and one thing well. Be a window
manager.
Because you probably want more than just a black screen LeftWM is built around
the concept of theming. With themes you can choose between different
bar/compositor/background/colors, whatever makes you happy.
LeftWM has been built from the very beginning to support multiple screens and
has been built around ultrawide monitors. You will see this with the default
key bindings.
pekwm-0.2.0
===========
Closed issues
-------------
* new windows fail to appear on fbpanel taskbar and pager,
regression introduced in 0.1.18.
* zombines during move resize, executing external commands
while moving a window did not collect all child processes.
* support _NET_REQUEST_FRAME_EXTENTS, improved EWMH compatability.
* Size specification was ignored on plain textures (except solid),
it is now read and can cause issues on themes that have incorrectly
specified them.
* Icon Autoproperty, it is now possible to set the _NET_WM_ICON
hint using the new property Icon. It will load the image from the icon
load path.
New
---
Crash Dialog, if pekwm crash a pekwm_dialog will appear and prompt
the user if pekwm should be restarted or quit. This avoids the X
server to shut down.
ImageMapped, it is now possible map colors in images during load
using a color map from the new ColorMaps section in the theme
file. This functionality allows for creating themes using less images
and plays well with the new theme variants functionality.
theme variants, using the ThemeVariant option in the Files
section allows for specifying variants of themes. Theme variants are
implemented by creating separate theme files in the theme directory
named theme-VARIANT.
pekwm_bg created, a background setting application integrated with
pekwm themes. pekwm_bg supports all textures pekwm supports so it is
possible to set solid colors, images and the new lines texture. Themes
have been extended with a background keyword that makes pekwm set the
background when the theme is loaded, images are loaded from the
backgrounds folder inside the theme. Background loading can be
disabled in the main configuraiton file.
pekwm_ctrl created, simple control command for pekwm that takes
a string formatted as a single action and asks pekwm to execute it.
pekwm_screenshot created, simple screenshot taking application
that outputs a PNG image.
pekwm_theme created, theme management tool for use with the
pekwm-theme-index, enabling the user to list, search, preview,
install and uninstall themes included in the index.
CurrHeadSelector option is now available in the Screen section of
the main configuration file. Controls how operations relative to the
current head, such as placement, select the active head. Cursor
selects the head the cursor is on, FocusedWindow considers the focused
window if any and then fall backs to the cursor position. Affected
operations include placement and position of CmdDialog, SearchDialog,
StatusWindow and focus toggle list.
Updated
-------
CfgDeny now support denying _ResizeInc_ making it possible to
ignore size increments for terminals and other applications.
CmdDialog no longer cache the list of available commands reducing
memory consumption and speeding up start at the cost of slower mapping
of the CmdDialog.
Debug action is included even if not compiling with DEBUG=ON. The
action allows for enabling and disabling of logging to file and
standard output. Default logging level is warning, and all messages
aimed towards end users such as theme errors are logged independent of
set level.
The initial log level can be controlled with the new --log-level
command line option.
Exec no longer use ``sh -c`` to run commands which will cause
incompatibilites depending on /bin/sh configuration, if shell
variables have been used or the command ends with &. ShellExec has
been added implementing the legacy behaviour.
SetGeometry now support specifying size and position in % of the
screen or active head.
Removed
-------
PDecor section in themes is no longer required, all Decor sections
in the top-level will be used if no PDecor section is found.
InputDialog is no longer possible to use as the decor name for
CmdDialog decorations in themes.
Change log:
4.16.1
======
- Catch more XErrors (#476, #486)
- Untile window before switching to fullscreen (#478)
- Allow interactive resizing with any keyboard modifier (#487)
- Do not prefer Xpresent on AMD/Radeon (#490)
- Use g_info/g_print instead of g_message for some message
- I18n: Update translation:
ast, be, be@tarask, cs, el, et, eu, fi, he, hr, hu, ie, pl, pt_BR, zh_TW.
4.16.0
======
- common: Avoid zero refresh rate for monitor
- hints: Protect against XError from XGetTransientFor()
- netwm: Allow above/below only for regular windows
- netwm: Mark splashscreen as transient for groups
- client: Complete client state even on different workspaces
- build: Increase GTK+ requirement to 3.22
- Add `cycle_minimized` option
- compositor: Release overlay window last
- compositor: Free GLX data when really using GLX
- compositor: Remove useless trace message
- compositor: Release current GLX context on teardown
- display: Remove custom XError handler
- compositor: Check for XError when adding windows
- compositor: Trap XErrors when disabling compositor
- main: Enable compositor by default
- compositor: Remove automatic redirect support
- main: Add short command line options
- main: Add debug command line option
- pixmap: Use a safer strncpy()
- settings: Fix compiler warning
- Remove useless autotools macros and Makefile targets
- Use --enable-debug=yes when compiling from git
- Revert "compositor: Do not damage on opaque region update"
- themes: Use smaller, lighter shadows
- compositor: Check if compositor is enabled
- compositor: Avoid XError when disabling compositor
- compositor: Warn for missing epoxy GL function
- netwm: Do not raise window if activate is set to none
- Remove GSourceFunc casts
- compositor: Fix build with older epoxy versions
- settings: Add 'Always on top' to the double click action
- Settings: Remove default alphabetical sorting of keyboard shortcuts
Closes: #451 (Disable initial sorting of keyboard shortcuts)
- compositor: Handle XFixes XError
- compositor: Add support for GL_ARB_sync
- compositor: Return early if a Present swap is pending
- debug: Fix build in debug mode
- compositor: Fix compilation issue with Xpresent
- compositor: Log fence and GLX swap time in debug mode
- compositor: Move fence sync to redraw_glx
- compositor: Move fence triggered to its own function
- compositor: Set swap control if possible
- compositor: Adjust to the actual number of buffers
- compositor: Use a GLX drawable per buffer
- client: Allow transients for group to be minimized
- settings: Add a UI option for desktop zooming
- themes: Remove title shadow
- themes: Adjust shadows size/opacity
- client: Make above/below consistent
- compositor: Limit damage region to the screen
- compositor: Optimize repaint without vblank
- compositor: Only accumulate damage with multiple buffers
- compositor: Copy entire content for GLX buffers
- xsync: Handle XError
- compositor: Ignore opaque region for shaded windows
- compositor: Clip opaque region against window shape
- client: Protect against XError in XKillClient()
- compositor: Do not damage on opaque region update
- compositor: Opaque region applies to client window
- compositor: Reuse client size
- client: Toggle tiling on key shortcut
- client: Small cleanup
- Add README.md to EXTRA_DIST
- client: Keep tiled size of windows
- compositor: No need to update compositor window on configure
- compositor: Limit opaque region clipping to window extents
- compositor: Damage on opaque region update only if visible
- client: Send synthetic configure on force redraw
- Post release tag bump
- Translation Updates:
Albanian, Arabic, Armenian (Armenia), Basque, Belarusian, Belarusian
(Tarask), Bengali, Bulgarian, Catalan, Chinese (China), Chinese (Hong
Kong), Chinese (Taiwan), Croatian, Czech, Danish, Dutch, Eastern
Armenian, English (Australia), English (Canada), English (United
Kingdom), Estonian, Finnish, French, Galician, Georgian, German,
Greek, Hebrew, Hungarian, Icelandic, Indonesian, Interlingue,
Italian, Japanese, Kazakh, Korean, Latvian, Lithuanian, Malay,
Norwegian Bokmål, Norwegian Nynorsk, Occitan (post 1500), Persian
(Iran), Polish, Portuguese, Portuguese (Brazil), Romanian, Russian,
Serbian, Slovak, Slovenian, Spanish, Swedish, Thai, Turkish,
Ukrainian, Urdu, Urdu (Pakistan), Uyghur
4.15.3
======
- Fix opaque regions leaving trails of unpainted areas
4.15.2
======
- Add support for opaque regions in the compositor
- Make cursor zoom optional (xfce/xfwm4#439)
- Remove the deprecated options "--daemon" (Pablo Mazzini)
- Disable Xi2 support by default
- Add column sorting in settings
- Optimize window matching in the compositor with a hash table (Michael
Banack)
- Add more XErrors traps
- I18n: Updated translations: ar, ast, be, be@tarask, bg, bn, ca, cs, da,
de, el, en_AU, en_CA, en_GB, es, et, eu, fa_IR, fi, fr, gl, he, hr, hu,
hy_AM, hye, id, ie, is, it, ja, ka, kk, ko, lt, lv, ms, nb, nl, nn, oc,
pl, pt, pt_BR, ro, ru, sk, sl, sq, sr, sv, th, tr, ug, uk, ur, ur_PK,
vi, zh_CN, zh_HK, zh_TW
New translations: be@tarask, fa_IR, hye, ka
4.15.1
======
- Fix an error leak in compositor (xfce/xfwm4#351)
- Fix compositor selection atom misuse
- Prefer zero initialized memory allocation functions
- Use g_slice allocator for compositor windows
4.15.0
======
- First 4.15.x development release
- Show tabwin only on primary monitor if set
- All fixes and i18n as found in 4.14.4
-vscreen: Update _NET_CURRENT_DESKTOP atom when changing vscreens
-Move vscreen initialization further down init_screen because we need the root
window set.
e16 1.0.24 - 2021-11-14
------------------------
- 1.0.24
- Update po
- Danish translation update
- pagers: Remember zoom setting when changed by pager menu
- Regular expression matching fix simplification
- Regular expression matching fixes
- systray: Change default icon size to 32
- Set _NET_WM_PID on WM check window
- Drop initial setting of _NET_WM_NAME = "e16" on the root window
- Refactor atoms handling
- Avoid using "delete"
- COMPLIANCE: Update
- Support _NET_WM_STATE_FOCUSED
- Add _NET_WM_STATE_FOCUSED to the EWHM atoms
- Only update _NET_WM_STATE and _NET_WM_ALLOWED_ACTIONS when changed
- xprop.c: Do some sanity checks using static asserts if possible
- Shuffle some property stuff around
- session.c: Remove unused headers
- libhack: Add XGetWindowProperty interception
- libhack: Cosmetics
- Eliminate EGetGeometry()
- Change EXGetGeometry() to EXGetSize()
- x.c: Fix LTO warnings
- x.c: Deubug stuff cleanups
- x.c: Remove ancient unused ECreateFocusWindow()
- extinitwin: Fix parent/client synchronization
- Fix EImageDefineCursor() for window mode
- edox: Avoid LTO null pointer warning
- edox: Unifdef USE_XFONT
- Backgrounds: Fix trouble when deleting multiply referenced background
- Backgrounds: Fix bad list operation in CB_ConfigureDelBG()
- Groups: Avoid compiler warning in _DlgFillGroups()
- Drop animation in EwinSlideSizeTo() if there is no change
- Focus: Debug tweaks
- Focus: Fix focus on new clients requesting max size
- autofoo: Deal a bit more consistently with C[PP]FLAGS and LDADD
- French translation update (Philippe J. Guillaumie/Carla Sensa)
- Fix bad memory access during shutdown
- FX: Use xrender when available
- FX: Fix cleanup with compositing enabled
- FX: Fix clipping with compositing enabled
- FX: Make it work in regular compositing mode
- FX: Tweaks
- FX: Some refactoring
- FX: Fix waves cleanup
- FX: Remove "correct bugs" operation in waves
- Introduce HAVE_COMPOSITE_OVERLAY_WINDOW
- glwin.c: Fix incorrect config item size
- Sound: Enable changing engine at runtime
- Don't build disabled stuff
- Sound: Change some esd to esound
- Sound: Change some pa to pulse
- Sound: Header file tweaks
- Move Eexec() and friends to util.h
- Drop (v)snprintf() implementation
- Use installed gettext version, if possible
- Eliminate AM_LANGINFO_CODESET
- 1.0.23.000
- Fix version reported by e16 in release build
pkgsrc changes:
- make po/Makefile.in.in work with newer autoconf
Upstream changes:
(from http://joewing.net/projects/jwm/release-2.4.html)
JWM v2.4 Release Notes
This is a collection of major changes between JWM v2.3 and JWM v2.4.
Version 2.4.0 was released 20211107.
New Features
* Mouse bindings are now configurable (issue #11).
* Added key bindings (send#) to send a window to a particular desktop (issue
#395).
* Added ~/.config/jwm/jwmrc as the new default location for per-user
configuration (issue #394).
* Maximized windows once again have borders and can be resized (issue #392).
* The placement of window buttons is now configurable (issue #19).
* Restored automatic tray "autohide" functionality using autohide="on" (issue
#398).
* Added support for CDATA to the XML parser (issue #344).
* Moved the group and list attributes to the TaskListStyle tag (issue #309).
* Added key bindings to resize a window from a specific corner or side (issue
#409).
* Add Type tag to Group (issue #453, patch from rdnvndr).
Configuration Changes
The following XSLT is available to update JWM v2.3 configuration files for use
with JWM v2.4: jwm-2.4.xslt.
To convert an existing v2.3 configuration file using xsltproc, run:
cp ~/.jwmrc ~/.jwmrc.old
xsltproc jwm-2.4.xslt ~/.jwmrc.old > ~/.jwmrc
If you have multiple configuration files, it may be necessary to apply the XSLT
to some or all of them depending on what configuration options are stored in
the file.
A summary of configuration changes follows.
* The group and list attributes have moved to the TaskListStyle tag.
See the configuration documentation for documentation on all configuration
options.
Bug Fixes
* Don't SetDefaultCursor in AddClientToWindow (issue #521).
* Use pango to address font fixes (issues #502, #498, and #337).
* Fix for large titles that are centered or right aligned (issue #479, patch
from rdnvndr).
* Fix tooltip delay (issue #431).
Updated Translations
* Portuguese (Hugo Carvalho)
* Portuguese Brazil (marcelo cripe)
* Turkish (Cihan Alkan)
* Spanish (PAblo Roberto Francisco Lezaeta Reyes)
* Danish (scootergrisen)
* Lithuanian (Moo)
• i3bar: fix crash with multiple monitors
• xmlto: fix broken .TH line by extending title length
• i3-msg: fix --raw short form (-r) in manpage
• libi3: add missing sys/stat.h header
• use getcwd(NULL, 0) instead of GNU extension get_current_dir_name()
Changes:
- Fixed ReadConfigFile() to prevent config command overlap collisions.
- Fixed SkipNonSpace() to consider new lines to be white space.
- Fixed handle_configure_request() to support moving windows.
- Added SwallowFocusClick configuration (default: disabled).
Released 2021-09-09 by Morgan Aldridge
Two long-awaited features have been added:
1. You can now use an “include” directive in your i3 config:
https://i3wm.org/docs/userguide.html#include
2. You can now enable showing window icons in window titlebars:
https://i3wm.org/docs/userguide.html#title_window_icon
Other changes:
• default config: use dex for XDG autostart
• docs/ipc: document scratchpad_state
• ipc: the GET_CONFIG request now returns all included files and their details
• i3-nagbar: position on focused monitor by default
• i3-nagbar: add option to position on primary monitor
• i3bar: use first bar config by default
• i3-dmenu-desktop: ignore duplicate files and directories (fixes crash on NixOS)
• i3-dump-log -f now uses UNIX sockets instead of pthreads. The UNIX socket approach
should be more reliable and also more portable.
• When clicking on a tab, focus its child (like when scrolling), or (if
already focused), focus the tab container (alternatingly).
• Implement the include config directive:
https://i3wm.org/docs/userguide.html#include
• Implement optionally showing window icons in titlebar:
https://i3wm.org/docs/userguide.html#title_window_icon
• Allow for_window to match against WM_CLIENT_MACHINE
• Add %machine placeholder (WM_CLIENT_MACHINE) to title_format
• 'move container|workspace to output': toggle a workspace (or container)
between multiple outputs when multiple output names specified.
• Add 'move container|workspace to output next'
• Add 'all' window matching criterion
• Acquire the WM_Sn selection when starting as required by ICCCM
• Add --replace command line argument to replace an existing WM
• Notify systemd when i3 is ready, allowing other services in a systemd user session
to use i3 as a dependency
shod has seen a major re-write and upstream has decided to provide a new release
version numbering.
Versions up to 0.5.0 are now archived in a different repository.
┌────────────────────────────┐
│ Changes in i3 v4.19 │
└────────────────────────────┘
• userguide: explain button6 and button7 (scroll wheel right/left)
• ipc: always include the marks property (even if empty)
• ipc: introduce GET_BINDING_STATE command
• ipc: clarify workspace name field semantics
• ipc: document parse_error COMMAND reply field
• i3bar: launch using exec to avoid leaving useless shell process
• i3bar: make dock client order deterministic (sorted by class/instance) as a
side effect, i3bars without an explicit bar-id will be sorted according
to their definition order in the config file
• i3bar: update config when necessary (reduces redraws on bar mode changes)
• i3bar: add coordinates relative to the current output in i3bar click events
• i3bar: add “nonprimary” output option
• i3bar: set WM_CLASS instance to bar id
• i3-input: add different exit codes for when i3-input fails
• i3-dmenu-desktop: Support symlinks in search path
• pod2html: render without stylesheet by default
• introduce “tiling_from” and ”floating_from” criteria
• mention rofi in default config file
• allow ppt values in move direction and move position commands
• allow matching on empty properties like class, title, etc.
Shod is an hybrid (tiling and floating) multimonitor X11 window manager.
Shod sets no keybindings; reads no configuration other than X resources;
and works only via mouse with a given key modifier (Alt by default), and
by responding to client messages with EWMH hints (so you must use wmctrl
to control shod).
NOTE: shod provides no keybindings, use sxhkd for binding keys.
WARNING: Shod is attempt of mine to write a Wm and better understand how
X11 works, Shod is only meant for me for educational purposes.
Shod is an experimental project, and should be used with caution.
version 2.2.12 release
* Session Management. AfterStep will utilize gnome-session for session
management if available. Several things needs to be manually adjusted for
full functionality :
1) go over list of autostart application files in /etc/xdg/autostart and for
those that you want started and have line OnlyShowIn= - add AfterStep to
the list of environments. One example is gnome-keyring* stuff -
by default it is only enabled in GNOME session.
2) if session takes a long time to close after Logout dialog was shown -
most likely culprit is the pulseaudio. You may need to get rid of it and
switch to more standard and stable ALSA.
3) It is recommended to uninstall zeitgeist daemon since its useless under
AfterStep anyway but wastes resources with its snooping activity.
4) gnome-session will save any app that support session mamgement at the end
of the session to be restarted the next time. Unless you run UBUNTU in
which case this functionality my be disabled in stock gnome-session. If
you want it back, then it is recommended that you build your own
gnome-session from sources. On the other hand if you do not want this
functionality, again, get gnome-session source and comment out contents of
maybe_load_saved_session_apps() function in gnome-session/gsm-session-fill.c.
5) If you find that your GTK apps look butt-ugly - its probably because gconfd
is not running. It is normally started by gnome-session, but bastardised
version of it that comes with Ubuntu does not do it for some reason.
* More Useless packages : ubuntu-desktop deja-dup