-
Notifications
You must be signed in to change notification settings - Fork 33
Expand file tree
/
Copy pathNEWS
More file actions
3452 lines (2363 loc) · 118 KB
/
NEWS
File metadata and controls
3452 lines (2363 loc) · 118 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
NEWS for veteran Window Maker users
-----------------------------------
-- 0.97.0
Directional window focus
------------------------
The keyboard focus can now be moved in a specific direction (left, right,
up, down) relative to the currently focused window, using window centres
for comparison. The shortcuts can be configured in WPrefs under
"Keyboard Shortcuts", or set directly in ~/GNUstep/Defaults/WindowMaker
via "FocusWindowLeftKey", "FocusWindowRightKey", "FocusWindowUpKey" and
"FocusWindowDownKey" (disabled by default).
The existing "CirculateRaise" option ("Raise window when switching focus
with keyboard" in WPrefs) also controls whether windows that are fully
obscured by others are raised when receiving focus this way.
Vim-like window marking
-----------------------
Windows can now be dynamically assigned a mark label (a key or
modifier+key combination) allowing them to be instantly recalled without
searching. This is inspired by vim's mark-and-jump navigation.
The mark label is displayed in the window list menu between the window
title and the workspace name.
Five actions can be configured in ~/GNUstep/Defaults/WindowMaker
(or in WPrefs under "Keyboard Shortcuts")
"MarkSetKey": assign a label to the focused window (e.g. with the
action bound to "Super+M", pressing "Super+M x" marks the focused
window with label 'x').
"MarkUnsetKey": remove the mark from a labeled window.
"MarkJumpKey": focus and raise the window with the given label.
"MarkBringKey": move the marked window to the current workspace and
focus it.
"MarkSwapKey": swap the focused window with the marked window.
Those are disabled by default.
Marks are persistent across sessions and saved in the WMState file.
Multi-key and sticky-chain keybindings
--------------------------------------
Keyboard shortcuts now support multi-key sequences, similar to
Emacs-style prefix bindings (e.g. pressing a leader key followed by
one or more continuation keys).
An optional sticky-chain mode allows a prefix key to remain active
until a cancel key is pressed or a timeout expires, making it possible
to trigger multiple actions in sequence without re-entering the prefix.
New options in ~/GNUstep/Defaults/WindowMaker:
"KeychainTimeoutDelay" is the timeout in milliseconds after which an
active chain expires. Default is 500. Set to 0 to disable the
timeout.
"KeychainCancelKey" sets a key to explicitly cancel an active chain.
(disabled by default).
Configurable modifier key labels
---------------------------------
A new "ModifierKeyShortLabels" option in ~/GNUstep/Defaults/WindowMaker
allows customizing the labels shown for modifier keys in menus and
keyboard shortcut displays. Unicode symbols can be used in place of the
default text labels. For example to use the same symbol as defined on
MacOS:
ModifierKeyShortLabels = (
"\342\207\247",
"\342\214\203",
"\342\214\245",
"\342\207\255",
"\342\207\263",
"\342\214\230",
"\342\207\252",
"\342\227\206",
"\342\214\245"
);
Configurable mouse wheel focus behavior
----------------------------------------
Scrolling the mouse wheel over a window can now optionally move the
keyboard focus to that window. The option is available in WPrefs under
"Expert User Preferences", or by setting "MouseWheelFocusEnable" in
~/GNUstep/Defaults/WindowMaker (NO by default).
Application icons in the window list
-------------------------------------
Application icons can now be shown in the window list menu. This behavior
can be configured by setting the "WindowListAppIcons" option in
~/GNUstep/Defaults/WindowMaker or "Show app icons in window list." in
WPrefs under "Expert User Preferences" (NO by default).
Configurable screenshot filename template
-----------------------------------------
The filename (strftime compatible) format used when saving screenshots
can now be customized by setting the "ScreenshotFileNameTemplate"
option in ~/GNUstep/Defaults/WindowMaker. The default remains the
format introduced in 0.96.0.
JPEG XL image support
---------------------
WRaster can now optionally load JPEG XL images if the libjxl
library is present at build time. The feature can be toggled at
configure time with --enable-jxl/--disable-jxl.
wmiv: archive files and unknown format handling
-----------------------------------------------
wmiv can now open images stored inside archive files (with libarchive).
A new option to silently skip unknown image formats is also available.
It supports ctrl+c shortcut to copy the current image to the clipboard.
Support for _NET_WM_MOVERESIZE
------------------------------
Window Maker now handles the _NET_WM_MOVERESIZE EWMH message, which
allows applications to initiate interactive window moves and resizes
through a standard protocol request (for those applications without
decorations: VS Code, Google Chrome, Steam and Discord, ...).
Cycle windows across all workspaces
-----------------------------------
A new 'Cycle all windows from all workspaces' expert option allows
the Alt-Tab window switcher to include windows from all workspaces,
not only the current one. Which is the "CycleAllWorkspaces" option
in ~/GNUstep/Defaults/WindowMaker (NO by default).
RandR and multi-monitor improvements
------------------------------------
RandR version >= 1.3 is automatically enabled when detected. By default,
it operates in static mode, requiring the screen layout to be defined
manually. A new "HotplugMonitor" option in ~/GNUstep/Defaults/WindowMaker
(NO by default) enables automatic monitor detection on hotplug events,
adding newly connected monitors to the right of the existing layout.
This option is also available in WPrefs expert panel under
"Automatically (de)activate monitors on hotplug events".
Titlebar language button revamp
-------------------------------
When the modelock feature is enabled, the legacy hardcoded language
dropdown icons in the titlebar are replaced by a compact button
displaying the short name of the current XKB locale (those are
basically the layouts displayed via setxkbmap -query).
Clicking the button cycles through up to four keyboard layouts
(matching the four XKB groups). The xkbfile library is required for
this feature.
-- 0.96.0
Hot Corners feature
-------------------
Screen corners can be assigned an external command to be
executed when the mouse pointer is entering those areas.
In WPrefs, "Hot Corner Shortcut Preferences" can be used
for configuration or by manually adding a "HotCorners" key
and value to "YES" in the ~/GNUstep/Defaults/WindowMaker file.
Hot Corners feature is disabled by default.
Actions are specified by the "HotCornerActions" and are defined
as a four entries list ("top left action", "top right action",
"bottom left action", "bottom right action").
A screen corner area is a cube shape defined by the "HotCornerEdge"
which is a number of pixels from 2 (by default) to 10.
To lower the risk of triggering that feature accidentally a
"HotCornerDelay" key can be used which is the time before the action
is triggered while the pointer is in one of the screen corner.
Default value is 250 ms.
Screenshot capture feature
--------------------------
In WPrefs "Keyboard Shortcut Preferences" tab, three new actions can
be configured: "Capture a portion of the screen", "Capture a window",
"Capture the entire screen". The file is saved in
~/GNUstep/Library/WindowMaker/Screenshots directory under a filename
format "screenshot_%Y-%m-%d_at_%H:%M:%S" followed by the extension.
Which can be png or jpg based on WRaster dependencies.
libXRes is now an optional dependency
-------------------------------------
XRes the resource extension for the X protocol is used to find the
underlying processes (and PIDs) responsible for displaying the windows.
Support for _NET_WM_FULLSCREEN_MONITORS hint
--------------------------------------------
That hint allows applications that support it to be set as fullscreen on multiple heads.
It depends on Xinerama extension support.
Keep dock on primary head
-------------------------
To keep the dock on the primary head in a multi-head setup, set the option
"KeepDockOnPrimaryHead" in ~/GNUstep/Defaults/WindowMaker to "YES" or click
"Keep dock on primary head" under the WPrefs "Expert User Preferences" tab.
-- 0.95.9
Configurable SwitchPanel
------------------------
SwitchPanel is now more configurable: you can configure the switch panel icon
size by setting the "SwitchPanelIconSize" option to your preferred value in
~/GNUstep/Defaults/WindowMaker. The font size used in this panel now is also
sensible to changes in the system font.
New user configuration directory environment variable
-----------------------------------------------------
In previous versions, the GNUstep directory used to store a user's Window Maker
configuration files was specified by the GNUSTEP_USER_ROOT environment variable,
which defaulted to ~/GNUstep. However, this environment variable was deprecated
in gnustep-make v2. Therefore, it has been replaced by the WMAKER_USER_ROOT
environment variable.
libXmu is now an optional dependency
------------------------------------
If the library is not found, compilation work, the only limitation will arise
when trying to install the standard colormap on displays which are not TrueColor.
Please note that if you have the library but not the headers, configure will
still stop; there is no user option to explicitly disable the library use.
-- 0.95.8
Move pointer with maximized windows
-----------------------------------
Implementation for moving mouse pointer within the maximized window.
Mouse pointer can be now moved together with window if keyboard was used for
arrange maximized windows on screen. This feature can be turned on in WPrefs.app
in Expert tab by selecting "Move mouse pointer with half maximized windows.", or
setting "PointerWithHalfMaxWindows" to "Yes" on ~/GNUstep/Defaults/WindowMaker
file.
Alternative way for traverse half-maximized windows
---------------------------------------------------
For now, there could be three possible states of the window while using
the half-maximized feature. Unmaximized windows have their state saved during
that process, which is used to unmaximize them. For example, if there is a
window that is maximized on the left half of the screen, and while requesting
left-half-maximize it becomes unmaximized with its size and dimensions
restored to the original state.
By setting "AlternativeHalfMaximized" option to "Yes"
~/GNUstep/Defaults/WindowMaker config file (or by using WPrefs.app and option
"Alternative transitions between states for half maximized windows."), there
would be slightly different change in window "traverse". Given layout depicted
below:
┌┬────────────────────┬┐
├┘ ┌───────┐ ├┤
│ ├───────┤ ├┤
│ │ │ ├┤
│ │ │ ├┤
│ └───────┘ └┤
├┬┐ │
└┴┴────────────────────┘
Window can be moved using keyboard shortcut right-half-maximize:
┌┬─────────┬──────────┬┐
├┘ ├──────────┼┤
│ │ ├┤
│ │ ├┤
│ │ ├┤
│ │ ├┤
├┬┐ └──────────┘│
└┴┴────────────────────┘
Further invoking right-half-maximize will do nothing. Note, that the window always
can be unmaximized using an appropriate keyboard shortcut or by selecting
"Unmaximize" from the window menu.
Going to opposite direction by invoking left-half-maximize, will make the window
maximized in both, vertical and horizontal directions:
┌─────────────────────┬┐
├─────────────────────┼┤
│ ├┤
│ ├┤
│ ├┤
│ ├┤
├┬┬───────────────────┘│
└┴┴────────────────────┘
Further invoking left-half-maximize, will make the window maximized in half left
side od the screen:
┌──────────┬──────────┬┐
├──────────┤ ├┤
│ │ ├┤
│ │ ├┤
│ │ ├┤
│ │ └┤
├┬┬────────┘ │
└┴┴────────────────────┘
And again, further invoking left-half-maximize, will do nothing in this mode.
This change affects all possible half-maximized window state also quarters.
Issuing bottom-left-corner will take lower left quarter of the screen (nothing
is new so far):
┌┬────────────────────┬┐
├┘ ├┤
│ ├┤
├──────────┐ ├┤
├──────────┤ ├┤
│ │ └┤
├┬┬────────┘ │
└┴┴────────────────────┘
Issuing bottom-right-corner again will change window state to bottom half
maximized:
┌┬────────────────────┬┐
├┘ ├┤
│ ├┤
├─────────────────────┼┤
├─────────────────────┼┤
│ ├┤
├┬┬───────────────────┘│
└┴┴────────────────────┘
Invoking bottom-right-corner again:
┌┬────────────────────┬┐
├┘ ├┤
│ ├┤
│ ┌──────────┼┤
│ ├──────────┼┤
│ │ ├┤
├┬┐ └──────────┘│
└┴┴────────────────────┘
Issuing bottom-right-corner again will have no effect.
Move half-maximized windows between the screens
-----------------------------------------------
New option was introduced to allow change of behaviour of half-maximize windows
in multiple displays environment. In such environment it is more natural that
half maximized windows would travel from one screen to another. Now it is
possible to make that happen by setting an option
"MoveHalfMaximizedWindowsBetweenScreens" to "Yes" in
~/GNUstep/Defaults/WindowMaker config file, or by checking "Allow move
half-maximized windows between multiple screens." in 'Expert User Preferences"
tab in WPrefs.app.
For example, given there are two screens in layout where one display is on the
left and second display is on the right with window on first screen:
┌┬────────────────┬─────────────────┬┐
├┘ ┌───────┐ │ ├┤
│ ├───────┤ │ ├┤
│ │ │ │ ├┤
│ │ │ │ ├┤
│ └───────┘ │ └┤
├┬┐ ├┬┬┐ │
└┴┴───────────────┴┴┴┴───────────────┘
It can be right-half-maximized (using the previously defined key combination), so it
becomes:
┌┬───────┬────────┬─────────────────┬┐
├┘ ├────────┤ ├┤
│ │ │ ├┤
│ │ │ ├┤
│ │ │ ├┤
│ │ │ └┤
├┬┐ └────────┼┬┬┐ │
└┴┴───────────────┴┴┴┴───────────────┘
In this example there is an assumption that WindowMaker is configured, that
maximized windows won't cover mini icons nor the dock.
Without setting new option to true, issuing another right-half-maximize will
restore window dimensions and position to the original state (like on the first
figure). With new option set to true it will move window to second screen like:
┌┬────────────────┬────────┬────────┬┐
├┘ ├────────┤ ├┤
│ │ │ ├┤
│ │ │ ├┤
│ │ │ ├┤
│ │ │ └┤
├┬┐ ├┬┬┬─────┘ │
└┴┴───────────────┴┴┴┴───────────────┘
Another activation of right-half-maximize:
┌┬────────────────┬────────┬────────┬┐
├┘ │ ├────────┼┤
│ │ │ ├┤
│ │ │ ├┤
│ │ │ ├┤
│ │ │ ├┤
├┬┐ ├┬┬┐ └────────┘│
└┴┴───────────────┴┴┴┴───────────────┘
And final activation of right-half-maximize:
┌┬────────────────┬───────┬─────────┬┐
├┘ ├───────┤ ├┤
│ │ │ ├┤
│ │ │ ├┤
│ ├───────┘ ├┤
│ │ └┤
├┬┐ ├┬┬┐ │
└┴┴───────────────┴┴┴┴───────────────┘
Where the window is restored to its size (but not position, since it is on a different
head now). Moving a window in directions like left-half-maximize,
top-half-maximize and bottom-half-maximize will behave in similar way depending
on the layout of displays.
Note, that only windows that are half-maximized vertically or horizontally can
be moved to another screen due to the fact, that direction of movement of
quarter-maximized windows is ambiguous. As for vertical/horizontal-maximize,
since doesn't move the window but only stretch it vertically/horizontally this
feature also doesn't apply.
Snapping a window to the top
----------------------------
You can now choose whether snapping a window to the top edge of the screen
maximizes it to the top half (the previous and default behavior) or to the
full screen by setting "SnapToTopMaximizesFullscreen" to "NO" or "YES",
respectively. This setting can also be changed by unchecking or checking
"Snapping a window to the top maximizes it to the full screen" in the
"Expert User Preferences" tab in WPrefs.app.
Global defaults directory configuration
---------------------------------------
You can now configure the global defaults directory, where the system
WindowMaker, WMRootMenu, etc. files are stored, by running
./configure --with-defsdatadir=/path/to/defaults
at build time. The previous method, which only partially worked, involved
defining the GLOBAL_DEFAULTS_SUBDIR macro. This is no longer available.
Note that the default location is ${sysconfdir}/WindowMaker.
-- 0.95.7
Window snapping
---------------
You can now "snap" a window, i.e., maximize it to a side or corner of the
screen, by dragging it to that side or corner. It is enabled by setting
"WindowSnapping = YES" in ~/GNUstep/Defaults/WindowMaker or selecting "Maximize
(snap) a window to edge or corner by dragging." under "Expert User Preferences"
in WPrefs.app.
Note that if "Switch workspaces while dragging windows" is selected under
"Workspace Preferences" in WPrefs.app, or if "DontLinkWorkspaces = NO" in
~/GNUstep/Defaults/WindowMaker, then you may only snap a window to the top or
bottom of the screen.
You may set the distance (in pixels) from the edge or corner of the screen at
which a window will begin snapping using "SnapEdgeDetect" and "SnapCornerDetect"
in ~/GNUstep/Defaults/WindowMaker or setting "Distance from edge/corner to begin
window snap." under "Expert User Preferences" in WPrefs.app. (The defaults are
1 pixel and 10 pixels, respectively).
Dragging maximized windows
--------------------------
You can now control the behavior when a maximized window is dragged by setting
the "DragMaximizedWindow" option in ~/GNUstep/Defaults/WindowMaker or by
selecting an option from the "When dragging a maximized window..." pop-up button
under "Window Handling Preferences" in WPrefs.app.
There are four choices:
* "Move" ("...change position (normal behavior)" in WPrefs.app) is the default
and traditional behavior. A maximized window is moved when dragged and
remains maximized, i.e., it keeps its maximized geometry and can later be
unmaximized.
* "RestoreGeometry" ("...restore unmaximized geometry") is the behavior standard
in desktop environments like GNOME, Cinnamon, and Unity. A maximized window
is moved when dragged and is completely unmaximized, i.e., its unmaximized
geometry is restored.
* "Unmaximize" ("...consider the window unmaximized") causes a maximized window
to be moved when dragged and remains partially maximized, i.e., it keeps its
maximized geometry, but is considered to be unmaximized. In particular, it can
be immediately re-maximized.
* "NoMove" ("...do not move the window") prevents a maximized window from being
moved when dragged.
Note that, to accommodate this option in the "Window Handling Preferences" tab in
WPrefs.app, the option to "Open dialogs in the same workspace as their owners"
(which sets the "OpenTransientOnOwnerWorkspace" option from
~/GNUstep/Defaults/WindowMaker) has been moved to "Expert User Preferences".
Mini-Previews instead of Apercus
--------------------------------
Since the original name was not really clear because it is a French word that
is rarely used by British people, it was decided to change it to the more usual
Mini-Preview name. The setting is configurable with WPrefs in the Icon
Preferences tab, the size is now expressed in pixels directly.
Ignore Decoration Hints from GNOME applications
-----------------------------------------------
The GNOME applications ask Window Maker to get no title bar and no resize bar to
their windows by using "Hints". You can re-add them using the Attribute dialog
in the Window menu, but if you are using many GNOME applications you may want to
tell Window Maker to just ignore them. This is done with the new setting called
"IgnoreGtkHints", which is available in the "Expert" panel in WPrefs.
Cooperative Window Manager Replacement
--------------------------------------
The ICCCM defines a protocol for window managers to ask to replace the currently
running one; Window Maker now supports it. You can ask Window Maker to take the
place of current one by running "wmaker --replace", or any other window manager
can ask Window Maker to leave the place for them when started the same way.
Please note that this feature must be explicitely enabled at compile time because
by default it is not compiled in ("configure --enable-wmreplace").
--- 0.95.6
More image format supported
---------------------------
In addition to a more complete Netpbm image formats support, WindowMaker
can now load WebP images. It can also make use of the ImageMagick library
to support a lot more formats, like SVG, BMP, TGA...
Mini-window apercu
------------------
A small preview of window contents can be enabled from WPrefs,
in Miscellaneous Ergonomic Preferences, check miniwindow apercus.
Apercu size can be configured using the ApercuSize variable with
$ wdwrite WindowMaker ApercuSize 4
in multiples of the icon size (in this case the apercu size will be four
times the icon size).
The default size is 2 (twice the icon size).
Support for up to 9-buttons mouse
---------------------------------
The action for the newly supported buttons can be configured from WPrefs.
wmiv, an image viewer application
---------------------------------
wmiv is a quick image viewer using wrlib to be run from the command line.
--- 0.95.5
Support for generated menus in proplist format
----------------------------------------------
The root menu now supports a OPEN_PLMENU option to construct a submenu from
the output of a command which is proplist format. This can be used e.g. in
conjunction with wmmenugen like:
(
"Generated PL Submenu", OPEN_PLMENU,
"|| find /usr/share/applications -type f -name '*desktop' | xargs wmmenugen -parser:xdg"
)
New window placements
---------------------
Now it is possible to maximize windows to the top/bottom halves
of the screen and also to the corners (top/bottom + left/right).
The keyboard shortcuts can be configured with WPrefs.
Options to configure window/menu borders
----------------------------------------
You can now configure the width and color of window and menu borders.
For example, the default settings could be configured as follows:
$ wdwrite WindowMaker FrameBorderWidth 1
$ wdwrite WindowMaker FrameBorderColor black
$ wdwrite WindowMaker FrameSelectedBorderColor white
Keyboard shortcuts to move windows between workspaces
-----------------------------------------------------
You can now bind keyboard shortcuts - or use the window dropdown menus -
to move windows to other workspaces. You can either move a window directly to
a particular workspace or to the "next" or "previous" workspace.
The new shortcuts can be configured in WPrefs.
Native support for Drawers
--------------------------
WindowMaker now supports drawers in the dock natively. You can add a dock by
right-clicking on a docked appicon and select "Add a drawer". You can now drag
appicons to this drawer.
You can customize how you want your drawers to auto-expand/collapse and
auto-raise/lower, or you can also completely disable them.
Improved switch panel functionality
-----------------------------------
The switch panel can be used to switch between windows of the same WM_CLASS,
for example between all open xterms. If the switch panel is opened as normal
with either the "FocusNextKey" or "FocusPrevKey" shortcut, you can switch to
the next (or previous) window of the same type as the focused window with the
"GroupNextKey" or "GroupPrevKey" shortcut. If the switch panel is opened with
the "GroupNextKey" or "GroupPrevKey" shortcut, it will show only windows of
the same type as the window which was focused at the time the panel was opened,
and no difference will be seen between the two types of window selection
shortcut.
The new shortcuts can be configured in WPrefs, where they are described as
allowing switching between windows of the same group.
To maintain consistency with other popular operating systems, the switch panel
is now configured so that it no longer automatically closes when the shift key
is pressed and released.
To configure the switch panel so that it does close on release of the shift
key, which was the traditional Window Maker behavior, run the following
command:
$ wdwrite WindowMaker StrictWindozeCycling NO
If you find yourself regularly opening the switch panel just to visualize open
windows, you can run the following command to force the first "FocusNextKey"
or similar shortcut to open the panel without switching to a new window.
$ wdwrite WindowMaker SwitchPanelOnlyOpen YES
--- 0.95.4
New window placement strategy
-----------------------------
Among the window placement algorithms has arrived the "center" placement to
get new windows appear at the center of the screen (unless application
explicitly specify a position, of course).
Removed dependency to CPP
-------------------------
The menu files used to be pre-processed with CPP, which can be a problem because
modern system do not install dev tools by default, and some compilers do not
provide a pre-processor anyway. WindowMaker is now autonomous.
--- 0.95.3
The references to the legacy path /usr/X11R6 have been removed because xorg
does not use it in favor of a standard /usr layout. Similarly, the directory
/etc/X11/WindowMaker is now /usr/share/WindowMaker.
New application Relaunching functionality
-----------------------------------------
There are now several ways to launch a new instance of an application with the
same command line that was originally used to start it.
1. By selecting Launch from the application's window menu.
2. By using the "Launch new instance of application" keyboard shortcut.
3. By clicking the application's appicon with the middle button.
4. By double-clicking the application's appicon while holding Control.
For example, if you have two xterms open, one started with "xterm" and one
started with "xterm -rv", using the Relaunch functionality on the first xterm
would run "xterm" and using it on the second would run "xterm -rv". Thus
Relaunching can also be thought of as "cloning" an application.
Application Relaunching works by examining the window's WM_COMMAND property and
so will not work if it is not set.
Options to limit the window/menu title height
---------------------------------------------
You can now set the minimum and maximum titlebar heights.
For example, to force all titlebars to 24 pixels execute
the following commands:
$ wdwrite WindowMaker WindowTitleMinHeight 24
$ wdwrite WindowMaker WindowTitleMaxHeight 24
$ wdwrite WindowMaker MenuTitleMinHeight 24
$ wdwrite WindowMaker MenuTitleMaxHeight 24
--- 0.95.2
New Resizing functionality
--------------------------
You can now use the mouse wheel and modifier keys to resize windows.
MOD+Wheel will resize windows vertically and CTRL+Wheel will resize
windows horizontally. MOD+CTRL+Wheel will resize both at the same time.
The resize step, or increment can be set in WPrefs in the "Window Handling"
page, or in the config file with "ResizeIncrement". If this intrudes into
a specific application's functionality, you can disable it on an application-
by-application basis by setting the "Do not bind mouse clicks" attribute in
"Advanced Options".
New Maximize functionality
--------------------------
Maximus/Maximumize. A new tiled maximization, configured with a keyboard
shortcut. Using it will maximize the window to the greatest area such that it
will not overlap any other window of the same workspace. This can be configured
in WPrefs in the "Keyboard Shortcuts" page, or in the config file with
"MaximusKey".
Left/right maximization. Now wmaker supports maximizing a window to the
left or right half of the screen, making it occupy 50% of the area. This is
useful on wide screen displays where you want to bring up two windows side-by-
side. The shortcut keys for this can be configured in WPrefs in the "Keyboard
Shortcuts" page, or in the config file with "LHMaximizeKey" and "RHMaximizeKey"
History and AutoComplete in the run dialog
------------------------------------------
The "Run..." dialog now auto-completes executables in your path (triggered by
the TAB key) and records the history of past commands (last 500 by default).
It can also complete folder names if you start the complete with a "/"
To use it replace %a with %A in the "Run..." entry in your WMRootMenu file.
See commit 05720d97076ffc1569e5 for more details.
Automatic menu generator (wmgenmenu)
-----------------------------------
There is now a new utility to generate the Window Maker menu automatically,
called wmgenmenu. It searches from a list of pre-defined applications the
ones which exist in your $PATH and adds them to the corresponding submenus
("Internet", "Terminals", "Editors" etc) of your WM menu. It also supports
localization (currently English and German). You can use it like:
$ wmgenmenu > WMRootMenu-new
$ cp WMRootMenu-new $HOME/GNUstep/Defaults/WMRootMenu
and WM will automatically detect the new menu file and use it without
restarting wmaker (made possible by the 'inotify' mechanism)
Automatic detection of menu changes (via inotify)
-------------------------------------------------
Window Maker now uses the 'inotify' mechanism from the Linux kernel
to automatically detect changes in the WMRootMenu file. So the
--no-polling option is now gone and Window Maker does not wake up
your CPU unnecessarily (0 wakeups when idle, instead of 4).
So if you edit the WMRootMenu file by hand (or by using 'wmgenmenu'),
there is no need to restart wmaker for the changes to take effect.
DockApp recognition
-------------------
In addition to applications with only Withdrawn windows, Window Maker
will now treat any application with its WM_CLASS res_class set as
"DockApp". This provides an easy workaround for toolkits like gtk+ that
do not allow creation of windows with the initial_state member of
XWMHints set to WithdrawnState.
--- 0.92.0
GNUstep Installation Directory
------------------------------
WPrefs is now installed in /usr/local/bin and /usr/local/share by default.
If you use GNUstep and want it to install in /usr/GNUstep/Applications,
you may specify --with-gnustepdir=/usr/GNUstep
If the GNUSTEP_LOCAL_ROOT environment variable is defined when configure is
executed, it will be used (and you don't need to use --with-gnustepdir)
Cached Pixmaps Directory
------------------------
The directory where Window Maker stores the cached application pixmaps for
its later use has changed from ~/GNUstep/.AppInfo/WindowMaker to
~/GNUstep/Library/WindowMaker/CachedPixmaps for better compatibility with
the GNUstep path structure.
Also WPrefs now stores internal data in ~/GNUstep/Library/WindowMaker/WPrefs
(it was ~/GNUstep/.AppInfo/WPrefs before)
X Input Methods support in WINGs
--------------------------------
Preliminary support for X Input Methods was added to textfield and text
widgets in WINGs. Input for text in other languages than English should
work now (except for kanji which will most likely not work, even though
it wasn't tested).
Disabling the switch panel
--------------------------
To disable the panel shown during Alt-tabbing, you may put the following in
~/GNUstep/Defaults/WindowMaker
SwitchPanelImages= None;
--- 0.91.0
Alt-Tab Window Switching
------------------------
You can change the appearance of the panel shown during Alt-Tab window switching
with the SwitchPanelImages option:
(selected_icon_tile_image, background_image, width, height)
selected_icon_tile_image is the image used to highlight the currently selected
window icon. It must be 64x64 pixels.
background_image is the image used in the background of the panel. It must
be at least 64x80.
width and height are the width and size of the central part of the image.
When drawing the panel, the image will be split as:
|W |
+--+--+--+
| | | |
+--+--+--+ -
| | | | H
+--+--+--+ -
| | | |
+--+--+--+
The 4 corner images will be copied in their original sizes and the rest will
be scaled to the final panel size.
background_image, width and height are optional. If you leave them out,
a gray panel will be used. If your machine is not very fast, you may want
to use it.
--- 0.90.0
NetWM / EWMH Support
--------------------
Support for the EWMH standard has been added. Applications from GNOME 2.x and
KDE 3.x should now inter-operate better with Window Maker.
Support for the obsolete/legacy GNOME 1.x, KDE 1.x and OpenLook(!) hints was
wiped out for the sake of sanity.
Antialiased font support
------------------------
With the addition of Xft2 support in the WINGs library, now
Window Maker can display antialiased text with TrueType or any scalable fonts.
You can pick fonts for Window Maker in the Font configuration section of
WPrefs.
Antialiased text is enabled by default, but can be disabled by adding
AntialiasedText = NO; in ~/GNUstep/Defaults/WMGLOBAL
This will disable antialiased text for any WINGs based application. If you
only want to disable them for a specific application only, like WindowMaker
for example, then add the same option in the applications configuration file,
in this case ~/GNUstep/Defaults/WindowMaker
For WindowMaker, this can also be achieved from the Expert panel in WPrefs.
Note that bitmapped fonts look much better than TrueType when antialiasing is
disabled.
Global Submenus
---------------
Global menus allow for system wide menus that are added to every users
application menus. They are located in /usr/etc/WindowMaker/,
/usr/local/etc/WindowMaker or whatever is your sysconf directory
for WindowMaker. There are 2 files:
GlobalMenu.pre, which is added to the beginning of the menu and
GlobalMenu.post, which is added to the end of the menu.
These are to be proplist format menus, for example:
(("Foobar", EXEC, foobar),
("Blabla", EXEC, blabla))
or, in case you want a submenu:
(("Submenu",
("Foobar", EXEC, foobar),
("Blabla", EXEC, blabla)))
UTF-8 Support
-------------
Window Maker now uses UTF-8 internally (and thus can display UTF-8 text
in window titles and other places). Menus and po files must now be
encoded in UTF-8. If your menus contain non ASCII characters, you can convert
them to UTF-8 with the following command:
iconv -f <current-file-encoding> -t utf-8 <filename> > <filename>.utf8
For example:
iconv -f iso-8859-1 -t utf-8 menu > menu.utf
mv menu.utf menu
Icon Panel for Alt-Tabbing
--------------------------
A panel with icons for the windows that you can switch to will appear
when you press Alt-Tab. You can navigate through the windows with Alt-Tab
(Alt-Shift-Tab) or with the left/right keys once the panel is shown.
--- 0.80.0
Shading/Unshading windows using mouse wheel on their titlebar
-------------------------------------------------------------
In addition to the known methods of shading/unshading a window, one can now
do this by using the mouse wheel on the window's titlebar. The mouse events
are interpreted via a mapping in the global WINGs configuration file,
WMGLOBAL, by the MouseWheelUp and MouseWheelDown directives which will do
shading and unshading respectfully.
However, to avoid unwanted triggers of shading/unshading the window, two
consecutive mouse wheel events in the same direction are required. The
trigger won't occur if the events are separated by more than a double-click's
worth of time, which is technically speaking like making a double-click with
the button that corresponds to the mouse wheel direction.
Practically speaking, this means that you have to move the mouse wheel up