Changes since previous version:
Fix text rendering issue in search_win.
The depth of the indicator window must match the depth of the allocated
text color. To ensure this is always the case, copy from root
instead of parent.
Ignore EnterNotify when entering from an inferior window.
Fix floating windows remaining borderless after being fullscreen.
Fix window border colors when moving windows to hidden workspaces.
Add new OBEYAPPFOCUSREQ quirk.
When an application requests focus on the window via a
_NET_ACTIVE_WINDOW client message (source indication of 1),
comply with the request.
Improve support for Extended Window Manager Hints (EWMH).
Add support for _NET_CURRENT DESKTOP, _NET_DESKTOP_NAMES,
_NET_NUMBER_OF_DESKTOPS and _NET_CLIENT_LIST.
Windows are sorted according to _NET_CLIENT_LIST at start.
Change iconify to use _NET_WM_STATE_HIDDEN instead of
_SWM_ICONIC.
Add _NET_WM_FULL_PLACEMENT to _NET_SUPPORTED.
Improve handling of _NET_WM_STATE_FULLSCREEN.
Improve general handling of EWMH.
Fix focus issues when a window maps/unmaps on an unfocused region.
Fix calls to get property length that did not adjust for item size.
Fix stacking issues.
Fix segfault.
Disable swapwin on fullscreen layout.
Remove floating property from ws_win struct.
Add new macros for accessing ewmh_flags.
either because they themselves are not ready or because a
dependency isn't. This is annotated by
PYTHON_VERSIONS_INCOMPATIBLE= 33 # not yet ported as of x.y.z
or
PYTHON_VERSIONS_INCOMPATIBLE= 33 # py-foo, py-bar
respectively, please use the same style for other packages,
and check during updates.
Use versioned_dependencies.mk where applicable.
Use REPLACE_PYTHON instead of handcoded alternatives, where applicable.
Reorder Makefile sections into standard order, where applicable.
Remove PYTHON_VERSIONS_INCLUDE_3X lines since that will be default
with the next commit.
Whitespace cleanups and other nits corrected, where necessary.
Changelog per http://joewing.net/projects/jwm/release-2.2.shtml
New Features
Added support for _NET_SHOWING_DESKTOP, _NET_WM_ACTION_ABOVE, _NET_WM_ACTION_BELOW, _NET_WM_STATE_SKIP_PAGER, and _NET_REQUEST_FRAME_EXTENTS.
JWM now uses xrender for image scaling
Added native language support using GNU gettext.
Added a fullscreen keybinding.
Added the "-reload" command line option to force JWM to reload the menus without restarting.
Added a width attribute to docks.
Better tray support for multiple monitors.
Added a tray spacer component (Spacer).
Added support for changes in root window resolution/orientation.
JWM now supports resizable icons for window border buttons
Add support for SVG icons using libRSVG and Cairo.
Added the noshade group option
Minor changes to mouse bindings on window frames.
Added support for the urgency hint as well as a group option, noturgent to disable it. JWM will now flash the borders of windows that set the urgency hint set unless the noturgent option is set.
Added centered and tiled window placement group options.
Added the iignore group option to ignore increment size hint when maximizing a window.
Added support for gradients in trays.
Add the constrain group option to prevent windows from moving themselves off screen.
It is now possible to use icons of any type for title bar buttons.
Configuration Changes
The way windows are associated with groups has changed. Now within a Group tag, if one or more Name tags is specified, a client window must match at least one to be considered part of the group. Likewise, if one or more Class tags is specified, a program must match at least one. If no tag is specified, all client windows will match.
The name and class fields in Group tags are now treated as POSIX regular expressions.
The number of supported window layers has been reduced to 3. Rather than a number between 0 and 12, JWM now uses above, normal, and below.
JWM no longer allows custom window buttons. These buttons are now custom drawn to an appropriate size using X graphics primitives.
The information in TrayButtonStyle is now inherited from TrayStyle instead of TaskListStyle. This means that tray buttons now get defaults from the tray instead of from the task list. In addition, it is now possible to specify ActiveBackground and ActiveForeground in TrayStyle. This makes it possible to set defaults for both tray buttons and task list buttons in TrayStyle.
New Translations
Dutch (by Bert)
French (by Pierrick Pinot)
German (by fido <L18L@puppy.forum>)
Italian (by Man from Mars)
Polish (by Mis Uszatek)
Portuguese/Portugal (by Vitor Lopes)
Russian (by Aleksandr Samusenko)
Spanish (by Victor Martinez)
Bug Fixes
Fixed issues with maximize and fullscreen
Fixed issues with input focus
Fixed issues with mapping of windows in some applications
Fixed some timezone issues
Fixed an issue with docks when JWM restarts
Windows can now be made larger than the root screen
Set _NET_CURRENT_DESKTOP at startup
Rendering changes to allow JWM to run in Xnest
Fixed a bug with XML entity parsing
Fixed bi-directional text rendering
Performance improvements
* Window Maker can now maximize windows to the top/bottom halves of the screen as well as to the corners (top left, top right etc). The keyboard shortcuts to do that can be configured via WPrefs
* Support for drawers in the dock has been added
* Keyboard shortcuts to move windows between workspaces
* Window border colours and width are now configurable
* The menu is now able to parse command-generated proplist style menus. WPrefs support for this has been added too
* Plus a few other new features and a lot of bug fixes and code cleanups by various people.
pango at runtime or it won't start.
Note: it isn't clear to me where this comes from or what the
circumstances are (the package source does not appear to refer
directly to pango) so I'm going to use buildlink rather than just
DEPENDS (which might be sufficient) out of paranoia.
PKGREVISION -> 3.
IceWM provides a small, fast and familiar window manager for the X11 window
system. Compatibility with the mwm window manager is desired and will be
implemented where appropriate.
IceWM is designed to emulate the look of Motif, OS/2 Warp 4, OS/2 Warp 3 and
Windows 95. It also tries to combine the feel of these systems whenever it
is compatible. Others might added in the future in the core distribution,
though many themes are available through the network.
Generally, it tries to make all functions available both by keyboard and by
mouse (this is not currently possible when using mouse focus).
This package provides IceWM 1.3 branch release.
* Fix wrong color on NetBSD/evbearmv6hf-el with Yasushi Oshima's patch
Chagnelog:
1.2.38pre2:
- various bug fixes
1.2.38pre1:
- xinerama fixes
- app-group transient window implementation
- FreeBSD ACPI support - Alexander Motin (amotin)
1.2.37:
- fix centering of transient windows over parents (Bert Wesarg)
- check if window is allowed to be moved, before starting movement (Bert Wesarg)
- fix key handling on buttons
1.2.36:
- add option TaskBarFullscreenAutoShow (default = 1)
1.2.36pre2: 2008-08-17
- regrab keyboard bindings when keyboard mapping changes
1.2.36pre1: 2008-08-07
- fix unresponsive taskbar when PassFirstClickToClient=0
- add support for sysfs interface (instead of proc) for battery
status (initial code by Santiago Garcia Mantinan)
- fix maximized window repositioning on fullscreen toggle
- bug 1852567 - make searching for icons more consistent (iconPath first,
search each directory first for all possible types - xpm, png)
- Italian translation update
- Korean translation update
- translation cleanup: converted .po files to UTF-8
Changelog:
1.10 "Soundtropolis"
====================
* Updated or New dependencies
- PangoX: no longer required
* Bug Fixes
- Always rebuild the list of marked windows in tabs when
closing a marked window. [fuchur]
- In `sawfish-config' fix the `make-choice-item' to properly
support settings for the `Crux' theme. [Vedat Hallac]
- Only allow a window to be tabbed, if the parent window's
framestyle has support for tabs. (Note that in Sawfish
different windows can have different framestyles) [fuchur]
- `window-ops-menu' was still calling
`resize-window-to-dimension' that didn't exist anymore since
Sawfish 1.7. Use `resize-window-prompt' instead. [Christopher
Bratusek]
- Make "Sawfish Rootmenu" label an insensitive menu-item, so
that clicking it while the root-menu pops up doesn't make the
menu disappear immediately. [Christopher Bratusek]
- In SawfishConfig you can select different cursor shapes for
different buttons. Some of the definitions have been wrong
and could crash Sawfish when choosing them. This is fixed
now. [fuchur]
- When a windows `max-width' or `max-height' would exceed 32767
(X11's maximum) it would result in odd window-behaviour (for
example: no maximization button), this is fixed by capping
the value at 32767. Originally reported with Firefox and
Thunderbird 17.0 [Michael Panteleit]
- Fixed grabbing key-bindings in SawfishConfig. [Christopher
Bratusek]
- Fixed non-working `$height-content' and `$width-content' in
the mxflat theme [Robert Zenz]
- Fixed remembering all window properties after switching
workspaces [fuchur]
* New Features
- Tiling. [Jose A. Ortega Ruiz] [Christopher Bratusek] here are
still minor hickups, but both `tall-tile' and `col-tile' are
working (see also `lisp/sawfish/wm/tile/readme.org'):
`tall-tile': one big (master) window on the left, small
windows on the right
`col-tile': tile windows as columns (recommended for
multi-head configurations)
;; Example Tiling configuration in Sawfish's resource file
(require 'sawfish.wm.tile.tile)
(tall-tiling 0 #:width 1.75 #:top 0 #:bottom 0 #:gap 3 #:max 3 #:right nil #:resize t)
(col-tiling 0 #:top 0 #:bottom 0 #:gap 3 #:cols 3 #:resize t)
(bind-keys global-keymap
"C-S-KP_Add" 'increase-max-windows
"C-S-KP_Subtract" 'decrease-max-windows
"C-M-KP_Add" 'increase-cols
"C-M-KP_Subtract" 'decrease-cols
"C-M-Right" 'tall-rotate-right
"C-M-Left" 'tall-rotate-left
"C-F11" 'next-tiling)
- Added full compton integration (including autostarting
compton with Sawfish). Compton is a fork of xcompmgr with
many bug fixes and many improvements compared to the original.
Using `sawfish-config' it is also possible to change most
compton options directly from within Sawfish. [fuchur]
- Make `focus-when-mapped' window-matcher chooseable from
'never 'maybe and 'always. 'never is suggested for KDE users
to be applied to Plasma in order to prevent notification
popups to take focus from currently active window (and
possibly loosing keyboard input) [fuchur]
- Completeley revised `resize-window-prompt'. Now display
window's name and old width (respectively old height) when
prompt for new values. Shows an information, if one of the
given values is not actually a number. [Christopher Bratusek]
- External Application modules. Those modules allow handling,
setting-up and starting external applications during a
sawfish session. See `doc/AUTOSTART' for additional notes on
them.
++ `trayer' module. Handles a `trayer' (a system-tray)
instance during a sawfish session. [Christopher
Bratusek]
++ `xmobar' module. Handles a `xmobar' (an on-screen, very
flexible bar, monitoring whatever you like) instance
during a sawfish session. [Christopher Bratusek]
++ `xmodmap' module. Allows reading `~/.Xmodmap' on
startup of Sawfish. Useful only if using Sawfish
standalone without a session-manager that already does
this. [Christopher Bratusek]
++ `xsettingsd' module. Handles a `xsettingsd' (a daemon
implementing XSettings to provide GTK+2 application with
information like what theme to use))instance during a
sawfish session. [Christopher Bratusek]
++ `xgamma' module. Allows changing display's gamma
settings on startup of Sawfish. [Christopher Bratusek]
++ `fehlstart' module. Handles a `fehlstart' (a simple,
but yet flexible application launcher) instance during a
sawfish session. [Christopher Bratusek]
++ `pancake' module. Handles a `pancake' (a simple desktop
panel with pager, window-list, taskbar, tray) instance
during a sawfish session [Christopher Bratusek]
- Added `force-tab' window-matcher, forcing a window to be
tabbed. [fuchur]
- Added `window-type' window-matcher. This allows you to change
the `_NET_WM_TYPE' of a window. Specifications explicitly
state that the client (Sawfish in this case) is not allowed
to do so. Still, we provide this ability in case of bogus
applications and testing purposes, it is neither desired nor
required for normal work. [fuchur]
- Added `tab-group-windows-hook', triggered when changing or
creating a tabgroup, returning all windows contained in the
current tabgroup. [fuchur]
* Removed Features
- Removed `sawfish.wm.ext.expose' in favour of much more
advanced tiling-functions. [Christopher Bratusek]
* Miscellaneous Changes
- Updated `Elberg-tabbed' and `gradient-tabbed' for tab-system
as of Sawfish 1.9.1 [fuchur]
- Wallpaper setter now has an option for setting wallpaper on
startup. Image widget is now more robust. [Christopher
Bratusek]
- Improved default keymap for `titlebar' and `tabbar'. [fuchur]
- Revived `decorate-transients', `menus-include-shortcuts' and
`customize-show-symbols' defcustoms. These options are now
adjustable from `sawfish-config' again. [Christopher Bratusek]
- Give the `root-window' the property `'WINDOW_MANAGER' on
startup with value `sawfish'. [Christopher Bratusek]
- Updated `ru' and `pt_BR' translations via transifex.
1.9.1 "Voyager"
===============
* Bug Fixes
- `dimension' window-matcher does now properly restore the
window's size [Robert Zenz]
- When destroying a window marked for tabbing, before tabbing
was done, tabbing didn't work anymore until Sawfish
restarted. This is fixed now. [fuchur]
- In `Makedefs.in' source `$(repexecdir)/rules.mk' as first, so
that `--prefix' and co. from `configure' won't get
overwritten. [Allin Cottrell]
- In `tabs' some minor issues have been fixed, like correct
`raise' or `sticky' tabs, and some issue with `move-resize'
tabs. [fuchur]
- Only allow '_NET_WM_WINDOW_TYPE_NORMAL to be marked as a
tabbed window. [fuchur]
* New Features
- In tabbed-windowing it is now possible to add a whole
tab-group to another tab-group, or a single window. By
default the keybinding is `C-Button2-Off'. [fuchur]
- Tabs now support `viewport-sticky' and `workspace-sticky'.
[fuchur]
- Tabs now support coloring the window-title in a different
color, for windows, which are marked for tabbing. Currently
only `StyleTab' uses this feature. [fuchur]
* Miscellaneous Changes
- In razor-qt integration module add `About Razor-Qt' help
entry [Christopher Bratusek]
- Replace `gdk_pixbuf_unref' by `g_object_unref' [Togan
Muftuoglu]
- Fix the address of FSF in all relevant files [Togan Muftuoglu]
- Change cursor shape when working with tabs [fuchur]
- Removed `sawfish.wm.util.marks', now implemented in
`sawfish.wm.tabs.tab'. [fuchur]
- Fix debian packaging scripts for Debian/Unstable, update
install-sh to 2011-01-19.21, also remove NEWS and config.h.in
upon `make gitclean'.[Christopher Bratusek]
1.9.0 "Next Dimensional World"
==============================
* Updated or New dependencies
- librep 0.92.0 -> 0.92.1
- rep-gtk 0.90.4 -> 0.90.7
- ssd 0.30 [optional, for built-in poweroff-menu]
* Bug Fixes
- When cursor-warping was enabled and user switched to a shaded
window, the cursor warped to the position of the unshaded
window. This is fixed now. [Christopher Bratusek]
- When switching between tabbed themes from SawfishConfig, it
could happens that there were `gaps' in the frame. This is
fixed now. [Christopher Bratusek]
- In SawfishConfig one could only grab key-bindings, but not
mouse- or mixed mouse-key-bindings. This is fixed now. (Move
mouse 20 pixels to grab a `Move' event). [Christopher
Bratusek]
- SawfishConfig became useless when Sawfish restarted. This is
now worked-around by simply restarting SawfishConfig when
Sawfish does. A new `before-restart-hook' has been added for
this purpose. [Christopher Bratusek]
- In EdgeActions `HotSpot', `HotMove' and `EdgeFlip', it was
possible to trigger the same event multiple times at a time.
This is fixed now. [Jeremy Hankins]
- Fixed a bug in apps-menu, failing to generate the menu, if a
desktop-file contains both Categories and the (errorneous)
Category key, or only the later. [Matthew Love]
- Fixed a bug in window-manager selection handling. Set all
fields of the client message event. This prevents bugs, where
Sawfish sometimes isn't able to replace another
window-manager or aquiring the screen if no other WM is
running. [Timo Korvola]
- When making X request, we might receive and `select' will
stuck. This is fixed now [Michal Maruska]
- Avoid calling Xmap for gone windows. [Michal Maruska]
- Fixed a possible segmentation fault in `leave_notify' [Michal
Maruska]
- In SawfishConfig the `choice' widget didn't work when the
choices were numerical values. This is fixed now.
[Christopher Bratusek]
* Sawfish-MMC [Michal Maruska]
Sawfish-MMC was a fork of Sawfish active, while the original
Sawfish was inactive (2004-2007). Next follows a list of changes
merged from Sawfish-MMC.
- Only apply property changes if window as `refresh' property.
- In the pixmap-cache append pixmaps to the age list, rather
than prepending.
- Extend `pixmap-cache-control' to reset and return more
informations.
- `pixmap-cache-images' returns all images in cache.
- When initializing Sawfish, try to initialize XKB, too.
- Misc: Drop unused `prog_name' from `display.c'. Call
`XAddToSaveSet' from a better position in the code. Mar
`mapped_not_override_p' static. Simplified `property_notify'.
* EdgeAction changes [Christopher Bratusek]
- New EdgeActions:
x `HotMove'. Calls an EdgeAction when dragging a window
over the edge.
x `Expose'. Simple expose (one-shot tiling) EdgeAction
(can also be used stand-alone). Original code by Mark
Triggs.
x `Expand'. Drag a window over the edge and it expand to
the half-screen size.
x `Show-Desktop'. Toggles between `show-desktop' and
`hide-desktop'.
x `Maximize'. Just for competitive reasons choosable from
configurator.
- `before-edge-action-hook' and `after-edge-action-hook'. While
`enter-flipper-hook' and `leave-flipper-hook' simply respond
to the mouse entering or leaving the flipper-window, the new
hooks respond only when an EdgeAction was invoked. The two
hooks pass the invoked EdgeAction, activated edge and a
boolean `while-moving' value to the child-function (in that
order).
- Simplified, more robust EdgeFlip (flip-viewport and
flip-workspace are now split).
- Improved logic of blocking an action while another is already
running. On one hand, see `Bug Fixes' above, on the other
hand it's now ensured that we dont' activate an edge twice
when dragging a window over it or when the pointer hits the
edge via mouse-trapping.
- New `move-window-to-corner' and `move-window-to-edge' helpers.
- Updated EdgeAction documentation
* SawfishConfig changes [Christopher Bratusek]
- Updated and Improved widgets in SawfishConfig:
x `file'. The file(-chooser) widget now uses
GtkFileChooserButton in favour of the ancient
GtkFileSelectionDialog. The GtkEntry and GtkVBox used as
helpers became useless and are removed.
x `font'. The font(-chooser) widget now uses
GtkFontChooserButton in favour of the ancient
GtkFontSelectionDialog. The GtkEntry used as helper
became useless and is removed.
x `choice', `symbol', `keymap', `frame-style'. Those
widgets now use GtkComboBoxText in favour of ancient
GtkCombo/GtkComboEntry.
x `scheme-boolean'. This widget is now properly
implemented.
Old: two checkboxes. First for activating setting,
second for choosing yes or no. New: only one checkbox,
yes or no as usual, shows minus when unset.
x `number'. The number-widget now has a `stepping'
property, allowing to change the increment of a
button-press on the spin-button.
- New widgets in SawfishConfig:
x `range'. The range widget represents an integer with a
given range. Basically it uses a GtkScale instead of a
GtkSpinButton, which results in a better user-experience
for those values.
x `image'. The image widget contains a preview and
image-selector. The file-browser openend is setup to
display previews, too. Original code by Lucas Pandolfo.
- Removed widgets in SawfishConfig:
x `program'. Just an alias to `file'.
x All `gtk-only' widgets. Since Sawfish 1.5.0 those have
been dummies, we don't use `libgnome', `libgnomeui' or
`libgnomecanvas' anymore anyway.
- New buttons. SawfishConfig now offers buttons to access Wiki,
Help, ResourceFile and About. Additionally there's now a
file-chooser for installing themes from `*.tar.*' files.
- Widgets that depend on an disabled setting are now hidden
instead of greyed-out.
- Merged sawfish.cfg.widgets into sawfish.gtk.widgets. Old
widgets aren't loaded anymore, even if present from an old
installation.
- All defcustoms do now have a property to change the position
of the label. To change it, append on of the following to
the doc-string: \\left \\right \\top \\bottom.
Example:
(defcustom test-var 'eclipse
"This is just a test with label on top. \\top"
:type (choice eclipse crosshair none)
:group appearance)
Of course that only works, if the label is a GtkLabel widget
on it's own.
* Theme/Theming changes [Christopher Bratusek]
=== spoiler === : StyleTab in Sawfish 1.9 add lots of new
fancyness for the price of beeing slow. So if you experience
a long startup-time of Sawfish, it's a feature, not a bug. :
== /spoiler ===
- StyleTab changes [fuchur]:
x The theme is now fully re-colorable. You can choose
different colors for each button and the frame.
Furthermore you can choose how much to dimm inactive
frames (compared to active).
x Majorly improved the grouping of options in StyleTab.
x Added corners to frames (allowing resize with mouse at
window-corners).
x Available styles: Default (former Dark), WixDa (former
Silver), Reduce, Smoothly and Glass (New).
x Added hash-tables for images.
- New themes:
x Candido
x Zami-like
- Improved themes:
x Gradient has been replaced by Gradient-tabbed.
- Removed themes [still available from Wiki]:
x get-S-tabbed
x brushed-metal
x simple
x smaker
x mono
x gtk
- New theme-related configuration-options [theme independent]:
x Added an option to control the titlebar text position.
If a theme draws something additional in the titlebar
(eg. StyleTab draws an icon), refer to the functions
`update-title-x-offsets', `update-title-y-offsets'.
x Added an option to control the cursor-shape when
hovering frame-buttons.
x Added an option to change the font, depending on the
window state.
- Moved definitons for `previous-workspace-button' and
`next-workspace-button' from StyleTab into Sawfish.
* New Features
- Added `cabinet' application-switcher. `cabinet' is an
advanced application switcher for Sawfish. For more
information please visit:
http://sawfish.wikia.com/wiki/Cabinet [Wang HongQin]
- Added `tab-group' window-matcher. It allows window to be
auto-tabbed together, if they got the same `tab-group'
property [fuchur]
- Added `single-window-mode'. Basically this feature is known
from OS-X, though it's implemented in a more strict way. The
`single-window-mode' window should get all of the users
attention.
This is ensured by auto-iconifying any up-popping window,
which is not in the same group. To additionally not annoy the
user this is done without animation. Avoided or ignored
windows are lowered. When `single-window-mode' is quit, the
opposite happens.
Also `single-window-mode' hooks into unmap-notify-hook to
check whether the user wants to stop `single-window-mode' (by
either closing or iconifying the window). Besides each
workspace can hold it's own `single-window-mode'.
- Added `mouse-trap' feature. It provides a method for moving
the mouse to any place of the screen by zooming with just a
few keystrokes. The mouse is warped to the center of the
screen screen and a outline is drawn dividing the screen in 4
squares (like trapping the mouse on it). [Fernando Carmano
Varo] [Christopher Bratusek]
- Added `shade-stack' feature. It provides an alternative to
`iconify-window'. Instead of iconifying a window or minizing
it to a tray, the windows get shaded and sorted in a stack
starting from the top-left corner (the number of columns can
be changed). Combined with auto-unshade this offers -
possibly - a better way of interacting with windows which
aren't required at the moment. Original code by Luke Gorrie.
[Christopher Bratusek]
- Integrated settings for selecting wallpaper using an external
command (eg: hsetroot). Applying settings to GNOME2 or XFCE4
is also supported. Original code by Lucas Pandolfo.
[Christopher Bratusek]
- Added `toggle-desktop' function. Toggles between
`show-desktop' and `hide-desktop' - always logically correct.
[Christopher Bratusek]
* Miscellaneous Changes
- Improved desktop-integration modules [Christopher Bratusek]
x KDE integration: added entries for user-switch,
hibernate, suspend, lock-screen, menu-editor.
x XFCE integration: added entries for hibernate, suspend,
lock-screen, menu-editor.
x GNOME integration: added entry for lock-screen,
menu-editor.
x MATE integration: full integration module for MATE
Desktop has been added.
x Razor-Qt integration: full integration module for
Razor-Qt has been added.
x LXDE integration: basic integration module for LXDE has
been added.
- The fallback poweroff-menu now uses SSD
`Sawfish-Session-Dialog', a companion to Sawfish, by default.
Support for logout and lockdown has been added. [Christopher
Bratusek]
- Added a `filemanager' launcher. If set the Sawfish root-menu
will show an `Open Home' entry. The KDE, GNOME, MATE, XFCE
and LXDE integration modules will set the program
accordingly, unless it's already user-defined.
1.8.1 "Sharp As A Knife"
========================
* Updated or New dependencies
- librep 0.91.0 -> 0.92.0
* Bug Fixes
- Fixed jump-or-exec failing when a window without WM_CLASS
exists [Christopher Bratusek]
- Fixed failing to uninstall Sawfish [Christopher Bratusek]
* Miscellaneous Changes
- EdgeActions changes [Christopher Bratusek]:
+ Load from `user.jl', rather than `wm.jl'
+ Add `edge-actions-enabled' variable in order to be able
to completely disable EdgeActions (also via .sawfishrc)
+ Move all options into new `sawfish.wm.edge.conf' module
(so they appear in the correct order now)
+ Updated documentation for EdgeActions
- Fixed documentation for function `insert-workspace'
[Christopher Bratusek]
- Removed unused or unneeded 'default, 'viewort and 'advanced
classes from command definitions [Christopher Bratusek]
- Fixed two strings in mxflat theme [Christopher Bratusek]
- Improved Requires in sawfish.pc [Christopher Bratusek]
- Improved debian packaging-scripts [Ian Zimmermann,
Christopher Bratusek]
- Improved .desktop-files [Kim B. Heino]
- Updated translations:
+ Spanish [gnome-es team]
+ German [gnome-de team]
+ Czech [gnome-cz team]
+ Malay [gnome-ms team]
+ Slovenian [gnome-sl team]
- Updated OPTIONS file [Christopher Bratusek]
1.8.0 "(Omoiyari)"
===============================
* Incompatible changes
- Infinite-desktop and edge-flip needs updates.
Open the configurator -> "Edge Actions". Changes will be
easy. (Set 4 pull-downs, and you're done mostly.
"Infinite-desktop" is renamed to "viewport-drag".) For more
options, see "Edge Actions" below.
If your `~/.sawfish/rc' opens related modules, delete those
references. These modules are renamed, and you don't have to
manually load them any more.
- Renamed functions [Teika kazura]
* Popup of operations-menu on a window, renamed from
`popup-window-menu' to `popup-window-ops-menu' (both the
function and command). Old names are still available.
* Renamed window rename, from `rename-window-func' to
`rename-window'. (Old name is still avialable.) The
function `rename-window-interactive' is deleted. Use
`(call-command 'rename-window)' instead.
Even if the old names still remain, it is highly recommended
to update.
- Syntax-change in `jump-or-exec' [Christopher Bratusek]
The previous `class' and `onfocused' parameters are now keys,
and pass them as "#:match-class t/nil" or "#:onfocused
value". Note that `match-class' is _boolean_; To pass a
class, set `#:match-class t' and pass the class name to the
argument `regex'. (*note Application Invocation::)
- Apps-menu options `apps-menu-show-all' is deleted. See below
for more.
- User option `focus-ignore-pointer-events' is deleted. [Teika
kazura]
In fact, it's for internal use, and should not have been a
user option. Use your favorite focus mode instead.
- Animation related modules are renamed [Teika kazura]
All are collected under `sawfish/wm/animation'.
`window-anim.jl' -> `setup.jl', `outline.jl' -> `main.jl',
`util/window-outline.jl' -> `modes.jl'.
* Build and Installation
- Fixed installation for non-root users [Stefano Sabatini]
Previously when installing to a private directory as an
ordinary user, the installation failed, because some files
were forced to be installed in /usr. This is fixed now.
- Session files installation [Christopher Bratusek]
Now you can choose which session files (default: all) to
install with these configure-options:
* `--with/out-kde4session': enable or disable the
installation of session files for KDE4.
* `--with/out-gnome2session': enable or disable the
installation of session files for GNOME2.
* `--with/out-xdmsession': enable or disable the
installation of session files for XDM (or other
display-managers).
- Spec-File compatibility for RHEL 6 beta [Kim B. Heino]
- Debian-Scripts (mostly) updated to the new specification
[Christopher Bratusek]
* Bug fixes
- Poweroff-menu fix [Teika Kazura, Christopher Bratusek]
In Sawfish-1.7.0, poweroff related items in the popup menu
couldn't be invoked, if run without any desktop environment.
Fixed it.
- Correctly build SawfishPager [Christopher Bratusek]
It is ensured that SawfishPager builds correctly, by
improving `sawfish.pc' file.
- At focus in/out, correctly reports the mode [Timo Korvola]
When `focus-in-hook' / `focus-out-hook' are called, Sawfish
wrongly reported a focus change during a grab as "ungrabbed".
Now it's reported as `while-grabbed'.
- Window cycle among groups [Teika Kazura]
Some windows were skipped in window cycles among groups. This
is fixed.
- No more crash at loading wrong theme code [Teika Kazura]
From Sawfish-1.7.0, Sawfish used to crash when a theme with
wrong code is loaded, but it's fixed. It's not complete, and
for example some mxflat options make Sawfish crash.
- Cancellation of `call-command' [Teika kazura]
It used to print an error message when you cancel an
interactive call of `call-command' with the escape key, but
it doesn't any more.
- KDE *.desktop files location [Teika Kazura]
Previously, user's change of the variable
`kde-desktop-directories' was ignored, but this is fixed.
* New Features
- Edge Actions [Christopher Bratusek]
"Edge Actions" is a centralized way to invoke an action when
the mouse pointer hits a screen-edge. It includes former
"edge-flip" and "infinite-desktop" (now renamed to
"viewport-drag"), and a new feature "hot-spot".
Edge-flip and viewport-drag can be configured from the
configurator "Edge Actions" group. Options are easy to
understand.
"Hot-spot" lets you assign an action to each screen-edge and
-corner. An action has to be a lisp function, and can be set
in `~/.sawfish/rc', like this:
(defvar-setq top-left-corner-function
(lambda () (display-message "hello world")))
Hot-spot variable names consist of position (e.g. top-left or
bottom) + "edge"/"corner" + "function".
Other related changes are:
* Viewport-drag and edge-flip (of course hot-spot, too)
can be chosen per direction, top-bottom and left-right.
It's also possible to enable / disable dragging of a
window for each of them.
* It means a window can be dragged during viewport-drag,
which was not possible.
* There're two delay timers now, for edge-flip and
hot-spot.
Internal changes:
* Codes are found in `sawfish.wm.edge.*'. You don't have
to import them for ordinary use.
* Low-level functions now have API in
`sawfish.wm.edge.util' written in Lisp.
- Replace running window manager with Sawfish [Timo Korvola]
New command line option `--replace' is added. With it, Sawfish
will replace the currently running window manager. It's done
by "manager selection" defined in ICCCM secs 2.8 and 4.3.
- Toggle-Or-Exec wrapper added to Jump-Or-Exec [Christopher
Bratusek]
`toggle-or-exec' is similar to jump-or-exec, but turns windows
into quake-like drop-down/pop-up-windows. That means, when
you have the toggle-window focused and press its keybinding
again, it will be hidden.
See the file `jump-or-exec.jl' for more detailed examples.
- `iconify-on-leave' window-matcher [Christopher Bratusek]
This new window-matcher is a companion to `toggle-or-exec'.
When a window matched loses the focus, it gets hidden. Use
this together with `toggle-or-exec' for greater toggle-window
experience.
- Error printing during initialization [Teika Kazura]
When an error occurs during initialization, and if you don't
customize the option `error-handler', then the error is
reported to both the screen and standard-error. After Sawfish
starts, it's printed to the standard-error only.
- New function `report-commands' [Teika kazura]
It returns the list of all commands. (*note Operations on
Commands::).
* Misc Changes
- Tabs and themes [fuchur]
A new, tab-capable, highly configurable theme "StyleTab" is
added. It allows the tab-bar to appear in top, left, right,
and bottom. Use a new window rule `title-position' for it.
"StyleTab" is now the default theme.
Many improvements in tab system are done. For example,
stickiness change on a window applies to all other windows in
the same tab group, though maybe not yet complete. (Please
tell us things you noticed.)
When you used a tab capable theme (Elberg-Tabbed or
Get-S-Tabbed), you had to manually adjust positions by pixel,
but it's not necessary any more.
When a lot of windows are open, they should now be more
responsive.
- Application menu is fully customizable [Matthew Love]
With the new option `apps-menu-filter', you can fully
customize the application menu. For the full description, see
*Note Applications Menu::.
It replaces former options like `apps-menu-show-all' or
`apps-menu-ignore-no-display'.
- Per-window animation mode [Teika kazura]
From the configurator "Window Rules" you can set the animation
mode when iconified. (*note Animating Windows::)
- Behavior modification at focus-in [Harald van Dijk]
In order to support "gnome2-globalmenu", the reaction policy
to `XFocusInEvent' is slightly modified. Sawfish doesn't emit
`_NET_ACTIVE_WINDOW' if it's done by (un)grabbing the pointer.
- Revised `get-window-by-*' functions [Christopher Bratusek]
For the details, see *Note Window Attributes::, and *Note
Getting Windows::.
* Added functions `window-role' and `get-window-by-role'
(return NET_WM_ROLE)
* Deleted `get-window-by-name-re' and
`get-window-by-class-re'. Use instead
`get-window-by-name' or `get-window-by-class' with the
new boolean option `#:regex'. (The old name is still
supported.)
* added `#:icon' switch to `get-window-by-name' to get a
window via NET_WM_ICON_NAME (can be used with #:regex
switch, too)
* Commands to resize a window [Christopher Bratusek, Teika
kazura]
Four new commands to resize a window where you can
specify the size by pixels are there. You're either
prompted to type in the new size, or you can preset it
in the configurator.
For the new command `resize-window-to-preset-size',
first you specify a size in the configurator. The
focused window will be resized to that preset size on
invocation. There're also commands to change only one of
the height and width.
`resize-window-prompt' prompts you to enter the new size.
- Window-operation menu improvements [Christopher Bratusek]
+ The window-operation menu now honours window rules
better. For example, if you have a window with
`fixed-size' flag, the window-operations menu-entry
`Resize' becomes unclickable.
+ The entries for moving and copying windows to another
workspace are now bundled in the new `Workspace'
sub-menu.
- Translation related changes [Teika Kazura]
+ Added translator instructions in `po/README' file.
+ Before you run `po/make-pot' to generate `sawfish.pot',
you now have to do `make all' at the top directory.
Previously it was possible to produce wrong
`sawfish.pot'.
+ Translation updates: Spanish [gnome-es team], German
[gnome-de team], Simplified-Chinese [gnome-zh_CN team,
Wang Lei], Norwegian/bokmål [gnome-no team] French
[gnome-fr team], Czech [gnome-cs team] and Slovenian
[gnome-sl team].
+ Updated `sawfish.pot' and subsequently all `*.po'.
Banished some bogus items in `sawfish.pot'.
(Developer's personal extensions had sneaked in.)
- Emacs sawfish-mode now indents `let-fluids' and let-loop
correctly, provided by `sawfish.el' [Teika Kazura]
- Turn `focus-ignore-pointer-events' into an internal variable
(has wrongly been a user-option before) [Teika Kazura]
- Documentations [Teika kazura]
* Section on popup menus is rewritten. (*note Popup
Menus::)
* Functions which return window geometry are now clarified
in the point of frames.
* Correction: The function `commandp' can only take
symbols as its argument. (*note Operations on Commands::)
- SawfishConfig "Window rules" section changes [Teika Kazura]
Category `Placement' is renamed to `Geometry'. The item
`shade-hover' is moved to `appearance' category, and
`fixed-size' to `geometry'.
- Deletion of outdated features in command definition [Teika
Kazura]
Function `define-command-args' is deleted. In `define-command'
function, the keyword argument `doc-key' is dropped.
2.0.3:
* Added Norwegian translation
* Added Turkish translation
* Updated Traditional Chinese, Italian, and Swedish translations
* Add support for the desktop warping option
* Add support for showing the popup notification when changing desktops
* Better build support for Max OSX platform (no --export-dynamic)
* Major layout changes
* Add support for putting the move/resize popup in a fixed position on screen
* Add support for the <active> window placement option
* New icon by Myles Green
* Show an error when the configuration file is not valid, so it doesn't get
destroyed by ObConf
* Add a --config-file option to specify an alternate configuration file.
* Auto-load the same configuration as Openbox is using, if Openbox was run
with --config-file
While here:
* add hard dependency on Python.
* add options for image support, enable recommended imlib2 by default.
* fixes missing bump of API_DEPENDS to 3.5.
* easy and better handling for config files.
3.5.2:
* Fix crash in theme rendering code, and in theme parsing code.
* Maximize windows without borders to fill the whole screen, don't leave
a one-pixel empty space. (Bug #5996)
3.5.1:
* New translations: Afrikaans, Belarusian, Interlingua, Hebrew, Romanian,
Greek.
* Updated translations: Italian, Serbian, Spanish, Czech, Hungarian, Turkish,
German, Arabic, Polish, Dutch, Lithuanian, Portuguese, Estonian.
* SVG icon support. This is optional, depending on librsvg being installed.
* Allow application rules to control window size with a new <size> tag.
* Allow application rules to pick a monitor for new windows without forcing
a position.
* Allow non-interactive focus cycling with a new <interactive> tag.
* New LeastOverlap window placement policy replaces the old default
behaviour. It finds a place on a given monitor that overlaps as few
windows as possible. Contributed by Ian Zimmerman.
* Improved Xinerama behaviour.
* Correctly interface with latest gnome-session for Gnome/Openbox X sessions.
* Allow third-party control of window opacity in compositing managers.
* Improved themeing options. Contributed by Dave Foster.
* Add <monitor>, <title type="regex">, <title type="exact"> and
<activedesktop> options to If action.
* Addresses bugs #4661, #5506, #5186, #5758, #5410, #5228, #5277, #5731,
#5746, #5737, #5419, #5721, #5711, #5385, #5500, #4992, #5443, #5518,
#5444, #4782, #5237, #5228, #5173, #5203, #5246, #5180, #5179, #5150,
#5132, #4937, #4889, #5253, #3769, #5819, #5811, #5081, #5426 among others.
This package uses lua-gi at build time to see if it can load
cairo-gobject; this does not (AFAICT) work without buildlinking
lua-gi, and possibly not even then, and I don't want to get into that
unless necessary. So make the failure non-fatal as the package build
system suggests. (Except that the way they suggest isn't working for
some other reason, so do it forcibly.)
I am not really in a position to test it at runtime right now, so if
it doesn't work let me know. At least now the package builds.
quick review of the header files indicates deeply ingrained assumptions
about pointers fitting in 32-bit integers, and it does not stand much
chance of working.
pax -rw, the destination directory must exist. pax in NetBSD creates it if
not, pax in MirBSD complains. I read through all pkgsrc Makefiles that use
pax and added an entry to INSTALLATION_DIRS, or an INSTALL_DATA_DIR
invocation.
I did not test all the changes but they should be fairly safe. If you notice
any breakage because of this change, please contact me.
Also, install a few more scripts and their manual pages, and put the correct
Perl interpreter in all Perl scripts.
Changes since version 4.4:
• docs/hacking-howto: refer people to cr.i3wm.org
• docs/ipc: Adds Go IPC lib to the docs.
• docs/userguide: remove obsolete sentence about client.background
• docs/userguide: be explicit about assignment processing order
• docs/userguide: be more clear about the resize command arguments
• docs/userguide: fix typo: s/11x/11px/
• i3-dmenu-desktop: don’t add “geany” if “Geany” is already present
• i3-dmenu-desktop: strip newlines from dmenu ≥ 4.4
• i3-dmenu-desktop: skip files with broken utf8 but warn about it
• i3-dmenu-desktop: skip broken files (no/empty Exec=) but warn about them
• i3-dmenu-desktop: List filenames of .desktop files
• i3-dmenu-desktop: remove %i from commandline
• i3-nagbar: Work around terminals not supporting -e with quoted arguments
• i3-nagbar: use the same font as configured for i3
• i3bar: set _NET_SYSTEM_TRAY_COLORS for symbolic icons (gtk3+)
• i3bar: don’t use X11 borders to avoid overlapping in hide mode
• i3bar: separator color via config; separator width and on/off via ipc
• i3bar: Allow min_width of a block in i3bar to be a string
• i3-msg: parse command replies and display errors nicely if there were
errors
• Draw 1px tab separators left/right instead of 2px on the right only
• Render tree before destroying X11 containers upon unmap
• scratchpad show: move visible scratchpad window from another workspace to
focused workspace instead of doing nothing
• ignore MotionNotify events generated while warping the pointer
• Allow X11 servers which do not support the XKB extension.
• remove the urgency indicator when a window is closed
• wrap when moving containers to outputs with direction
• scratchpad_show: focus unfocused scratchpad window
• Split workspace instead of changing orientation
• scratchpad: always auto center on 'scratchpad show' if window hasn't been
repositioned by the user
• Add a new IPC event for changes on windows.
• config: accept “smart” as popup_during_fullscreen parameter
• Add support for _NET_WM_STATE_DEMANDS_ATTENTION.
• Obey WM_SIZE_HINTS's resize increments in floating mode
• Do not move focus if a container is moved across outputs
• docs/userguide: mention forgotten layout splitv/splith
• docs/multi-monitor: nVidia ≥ 302.17 works just fine
• docs/wsbar: update (we have i3bar now, i3-wsbar is just an example)
• docs/testsuite: Document fixes and workarounds for test failures
• man/i3-msg.man: updated man page to include all options
• lib/i3test: clarify how to identify open_window() windows in i3 commands
• Use a saner sanity check for floating_reposition
• tabbed: floor(), put extra pixels into the last tab
• raise fullscreen windows on top of all other X11 windows
• Draw indicator border only for split layouts
• re-shuffle struct members to save a bit of memory
• Add 'NoDisplay=true' to i3.application.desktop
• Store aspect_ratio instead of weird proportional_{width,height}
• Implement shmlog command
• Implement debuglog command
• Implement unmark command
• actively delete _NET_WORKAREA on startup
• Handle the _NET_REQUEST_FRAME_EXTENTS ClientMessage (java compat)
• i3bar: add click events
• i3bar: fix -b parameter, fix usage description
• i3bar: restore compatibility with libyajl version 1
• i3bar: unhide hidden i3bar when mode is active
• i3bar: fix font display height in i3bar
• i3bar: introduced i3 command for changing the hidden state and mode
• i3bar: fix wrong placement of i3bar when connecting/disconnecting outputs
• i3bar: draw workspace buttons at x=0 instead of x=1
• i3-nagbar: take our terminal execution kludge to the next level
• i3-nagbar: Bugfix: -m requires an argument (crashes if none specified)
• i3-dmenu-desktop: run commands when they don’t match a .desktop file
(e.g. enter “i3 layout stacking”)
• i3-dmenu-desktop: honor Path= key
• contrib/dump-asy.pl: Fix $ and & in window titles
• contrib/dump-asy.pl: Display nicer double-quotes
• contrib/gtk-tree-watch.pl: Remove bogus default socket path
• Ignore ConfigureRequests for scratchpad windows
• Correctly parse `move ... workspace *_on_output`
• i3bar: Set separator color properly when drawing
• Properly parse commands like “move workspace torrent”
• Handle nested transient popups properly
• Fix decoration rect size for windows without border
• parse outputs as "word", not "string", to ignore trailing whitespace
• fix crash when disabling output without any windows
• scratchpad: fix crash when moving last window of an invisible workspace
• fix coordinates of scratchpad windows on output changes
• call scratchpad_show() when focusing scratchpad windows via criteria
• fix continuous resize bug in floating mode, e.g. with xbmc
• fix “overlapping” --release key bindings
• fix IPC messages writes with low buffer sizes
• unregister as window manager before restarting (fixes a race condition)
• Fix bind[code|sym] --release
• remove superfluous #include <xcb/xcb_atom.h>
• Makefile: Repect AR environment variable
• i3-input: restore input focus on exit()
• Also draw right tab border for split containers
• Fix scrolling on a tabbed titlebar which contains split cons
• Correctly close floating windows
• handle MapRequests sent between i3 registering as a wm and handling events
• i3bar: fake DestroyNotify and send MANAGER ClientMessages to fix tray restarts
• ipc: use correct workspace in workspace change event
• fix floating window size with hide_edge_borders
• Fix parsing of comments in the config file
• Fix error messages for the debug log
• shm_unlink the correct file when handling errors
• Fix shm logging on FreeBSD
• Fix restarting with 32 bit depth windows
• Fix scratchpad_show on non-scratchpad windows
• i3bar: mark IPC fd CLOEXEC
• fix crash when not having tray_output configured
• make sure that resize will take place even if pixel is smaller
than size increments.
• render_con: fix height rounding in aspect ratio computation
• fix problem when moving fullscreen window to scratchpad
• Unmap windows before reparenting them to the root window
(fixes Mathematica)
• update parent urgency hint if a child is removed.
• fix bus error on OpenBSD/sparc64
• fix focus handling in 'floating disable' on non-visible windows
• ignore spaces in front of default workspace name
• call i3-nagbar correctly for configfiles without the font directive
• resize and center a scratchpad even when a criteria is used.
This release moves twm slightly into the 1990's, with ANSI C89 function
declarations, removal of ancient casts left over from the era before
function prototypes, C89 standard signal handlers, and the loss of
support for running on Apple's A/UX Unix for the 680x0 Macs.
It also includes some bug fixes and man page formatting improvements,
amongst all the code cleanups.
Alan Coopersmith (16):
Terminate execl() arguments with NULL instead of 0
Constification cleanup - fix dozens of gcc warnings
Use (void) to declare functions that take no arguments, instead of ()
Convert remaining K&R function declarations to C89 style
Make various helper & callback functions private to session.c
unifdef macII - drop support for A/UX 2.0
Remove unused global variable gotFirstSave
Make some more previously global variables into file-scoped statics
Assume C89 signal handlers, returning void
Make more functions static that aren't called from other files
Delete trailing whitespace in non *.[ch] source files
Stop casting pointers to (char *) when freeing them
Stop casting return values from malloc & calloc
AddWindow: Use NULL instead of 0 for null pointer check
Replace malloc(strlen()+1); strcpy(); pairs with strdup()
twm 1.0.8
Colin Harrison (1):
Syntax error in recent twm commit
Egbert Eich (1):
Fix SEGV if CreateColormapWindow() returns NULL.
Eric S. Raymond (1):
Don't rely on the ability to set tab stops.
on pkgsrc-users.
Changes:
This release adds the ability to move/resize floating windows beyond
region boundaries. It adds 'soft boundary' behavior to region
boundaries. When moving a window past the region boundary, the
window will 'snap' to the region boundary if it is less than
boundary_width distance beyond the edge. A new boundary_width
configuration option has been added. The 'soft boundary' behavior
can be disabled by setting this option to 0. The ability to set
tile_gap to negative values has been added, which makes it possible
for tiled windows to overlap. Set this to the opposite of border_width
to collapse borders.
Based on a package by Lokesh Mandvekar <lsm5@fedoraproject.org>
and wm/scrotwm.
Spectrwm is a small dynamic tiling window manager for X11. It tries
to stay out of the way so that valuable screen real estate can be
used for much more important stuff. It has sane defaults and does
not require one to learn a language to do any configuration. It
was written by hackers for hackers and it strives to be small,
compact and fast.
It was largely inspired by xmonad and dwm. Both are fine products
but suffer from things like: crazy-unportable-language-syndrome,
silly defaults, asymmetrical window layout, "how hard can it be?"
and good old NIH. Nevertheless dwm was a phenomenal resource and
many good ideas and code was borrowed from it. On the other hand
xmonad has great defaults, key bindings and xinerama support but
is crippled by not being written in C.
Spectrwm is a beautiful pearl! For it too, was created by grinding
irritation. Nothing is a bigger waste of time than moving windows
around until they are the right size-ish or having just about any
relevant key combination being eaten for some task one never needs.
The path of agony is too long to quote and in classical OpenBSD
fashion (put up, or hack up) a brand new window manager was whooped
up to serve no other purpose than to obey its masters. It was
written by Marco Peereboom & Ryan Thomas McBride and it is released
under the ISC license.