File: NEWS

package info (click to toggle)
sawfish 1:1.3.5.2-2
  • links: PTS, VCS
  • area: main
  • in suites: squeeze
  • size: 11,636 kB
  • ctags: 1,327
  • sloc: lisp: 22,765; ansic: 15,810; sh: 10,203; makefile: 675; perl: 19
file content (2915 lines) | stat: -rw-r--r-- 100,348 bytes parent folder | download
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
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
1615
1616
1617
1618
1619
1620
1621
1622
1623
1624
1625
1626
1627
1628
1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
1639
1640
1641
1642
1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
1655
1656
1657
1658
1659
1660
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
1672
1673
1674
1675
1676
1677
1678
1679
1680
1681
1682
1683
1684
1685
1686
1687
1688
1689
1690
1691
1692
1693
1694
1695
1696
1697
1698
1699
1700
1701
1702
1703
1704
1705
1706
1707
1708
1709
1710
1711
1712
1713
1714
1715
1716
1717
1718
1719
1720
1721
1722
1723
1724
1725
1726
1727
1728
1729
1730
1731
1732
1733
1734
1735
1736
1737
1738
1739
1740
1741
1742
1743
1744
1745
1746
1747
1748
1749
1750
1751
1752
1753
1754
1755
1756
1757
1758
1759
1760
1761
1762
1763
1764
1765
1766
1767
1768
1769
1770
1771
1772
1773
1774
1775
1776
1777
1778
1779
1780
1781
1782
1783
1784
1785
1786
1787
1788
1789
1790
1791
1792
1793
1794
1795
1796
1797
1798
1799
1800
1801
1802
1803
1804
1805
1806
1807
1808
1809
1810
1811
1812
1813
1814
1815
1816
1817
1818
1819
1820
1821
1822
1823
1824
1825
1826
1827
1828
1829
1830
1831
1832
1833
1834
1835
1836
1837
1838
1839
1840
1841
1842
1843
1844
1845
1846
1847
1848
1849
1850
1851
1852
1853
1854
1855
1856
1857
1858
1859
1860
1861
1862
1863
1864
1865
1866
1867
1868
1869
1870
1871
1872
1873
1874
1875
1876
1877
1878
1879
1880
1881
1882
1883
1884
1885
1886
1887
1888
1889
1890
1891
1892
1893
1894
1895
1896
1897
1898
1899
1900
1901
1902
1903
1904
1905
1906
1907
1908
1909
1910
1911
1912
1913
1914
1915
1916
1917
1918
1919
1920
1921
1922
1923
1924
1925
1926
1927
1928
1929
1930
1931
1932
1933
1934
1935
1936
1937
1938
1939
1940
1941
1942
1943
1944
1945
1946
1947
1948
1949
1950
1951
1952
1953
1954
1955
1956
1957
1958
1959
1960
1961
1962
1963
1964
1965
1966
1967
1968
1969
1970
1971
1972
1973
1974
1975
1976
1977
1978
1979
1980
1981
1982
1983
1984
1985
1986
1987
1988
1989
1990
1991
1992
1993
1994
1995
1996
1997
1998
1999
2000
2001
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
2027
2028
2029
2030
2031
2032
2033
2034
2035
2036
2037
2038
2039
2040
2041
2042
2043
2044
2045
2046
2047
2048
2049
2050
2051
2052
2053
2054
2055
2056
2057
2058
2059
2060
2061
2062
2063
2064
2065
2066
2067
2068
2069
2070
2071
2072
2073
2074
2075
2076
2077
2078
2079
2080
2081
2082
2083
2084
2085
2086
2087
2088
2089
2090
2091
2092
2093
2094
2095
2096
2097
2098
2099
2100
2101
2102
2103
2104
2105
2106
2107
2108
2109
2110
2111
2112
2113
2114
2115
2116
2117
2118
2119
2120
2121
2122
2123
2124
2125
2126
2127
2128
2129
2130
2131
2132
2133
2134
2135
2136
2137
2138
2139
2140
2141
2142
2143
2144
2145
2146
2147
2148
2149
2150
2151
2152
2153
2154
2155
2156
2157
2158
2159
2160
2161
2162
2163
2164
2165
2166
2167
2168
2169
2170
2171
2172
2173
2174
2175
2176
2177
2178
2179
2180
2181
2182
2183
2184
2185
2186
2187
2188
2189
2190
2191
2192
2193
2194
2195
2196
2197
2198
2199
2200
2201
2202
2203
2204
2205
2206
2207
2208
2209
2210
2211
2212
2213
2214
2215
2216
2217
2218
2219
2220
2221
2222
2223
2224
2225
2226
2227
2228
2229
2230
2231
2232
2233
2234
2235
2236
2237
2238
2239
2240
2241
2242
2243
2244
2245
2246
2247
2248
2249
2250
2251
2252
2253
2254
2255
2256
2257
2258
2259
2260
2261
2262
2263
2264
2265
2266
2267
2268
2269
2270
2271
2272
2273
2274
2275
2276
2277
2278
2279
2280
2281
2282
2283
2284
2285
2286
2287
2288
2289
2290
2291
2292
2293
2294
2295
2296
2297
2298
2299
2300
2301
2302
2303
2304
2305
2306
2307
2308
2309
2310
2311
2312
2313
2314
2315
2316
2317
2318
2319
2320
2321
2322
2323
2324
2325
2326
2327
2328
2329
2330
2331
2332
2333
2334
2335
2336
2337
2338
2339
2340
2341
2342
2343
2344
2345
2346
2347
2348
2349
2350
2351
2352
2353
2354
2355
2356
2357
2358
2359
2360
2361
2362
2363
2364
2365
2366
2367
2368
2369
2370
2371
2372
2373
2374
2375
2376
2377
2378
2379
2380
2381
2382
2383
2384
2385
2386
2387
2388
2389
2390
2391
2392
2393
2394
2395
2396
2397
2398
2399
2400
2401
2402
2403
2404
2405
2406
2407
2408
2409
2410
2411
2412
2413
2414
2415
2416
2417
2418
2419
2420
2421
2422
2423
2424
2425
2426
2427
2428
2429
2430
2431
2432
2433
2434
2435
2436
2437
2438
2439
2440
2441
2442
2443
2444
2445
2446
2447
2448
2449
2450
2451
2452
2453
2454
2455
2456
2457
2458
2459
2460
2461
2462
2463
2464
2465
2466
2467
2468
2469
2470
2471
2472
2473
2474
2475
2476
2477
2478
2479
2480
2481
2482
2483
2484
2485
2486
2487
2488
2489
2490
2491
2492
2493
2494
2495
2496
2497
2498
2499
2500
2501
2502
2503
2504
2505
2506
2507
2508
2509
2510
2511
2512
2513
2514
2515
2516
2517
2518
2519
2520
2521
2522
2523
2524
2525
2526
2527
2528
2529
2530
2531
2532
2533
2534
2535
2536
2537
2538
2539
2540
2541
2542
2543
2544
2545
2546
2547
2548
2549
2550
2551
2552
2553
2554
2555
2556
2557
2558
2559
2560
2561
2562
2563
2564
2565
2566
2567
2568
2569
2570
2571
2572
2573
2574
2575
2576
2577
2578
2579
2580
2581
2582
2583
2584
2585
2586
2587
2588
2589
2590
2591
2592
2593
2594
2595
2596
2597
2598
2599
2600
2601
2602
2603
2604
2605
2606
2607
2608
2609
2610
2611
2612
2613
2614
2615
2616
2617
2618
2619
2620
2621
2622
2623
2624
2625
2626
2627
2628
2629
2630
2631
2632
2633
2634
2635
2636
2637
2638
2639
2640
2641
2642
2643
2644
2645
2646
2647
2648
2649
2650
2651
2652
2653
2654
2655
2656
2657
2658
2659
2660
2661
2662
2663
2664
2665
2666
2667
2668
2669
2670
2671
2672
2673
2674
2675
2676
2677
2678
2679
2680
2681
2682
2683
2684
2685
2686
2687
2688
2689
2690
2691
2692
2693
2694
2695
2696
2697
2698
2699
2700
2701
2702
2703
2704
2705
2706
2707
2708
2709
2710
2711
2712
2713
2714
2715
2716
2717
2718
2719
2720
2721
2722
2723
2724
2725
2726
2727
2728
2729
2730
2731
2732
2733
2734
2735
2736
2737
2738
2739
2740
2741
2742
2743
2744
2745
2746
2747
2748
2749
2750
2751
2752
2753
2754
2755
2756
2757
2758
2759
2760
2761
2762
2763
2764
2765
2766
2767
2768
2769
2770
2771
2772
2773
2774
2775
2776
2777
2778
2779
2780
2781
2782
2783
2784
2785
2786
2787
2788
2789
2790
2791
2792
2793
2794
2795
2796
2797
2798
2799
2800
2801
2802
2803
2804
2805
2806
2807
2808
2809
2810
2811
2812
2813
2814
2815
2816
2817
2818
2819
2820
2821
2822
2823
2824
2825
2826
2827
2828
2829
2830
2831
2832
2833
2834
2835
2836
2837
2838
2839
2840
2841
2842
2843
2844
2845
2846
2847
2848
2849
2850
2851
2852
2853
2854
2855
2856
2857
2858
2859
2860
2861
2862
2863
2864
2865
2866
2867
2868
2869
2870
2871
2872
2873
2874
2875
2876
2877
2878
2879
2880
2881
2882
2883
2884
2885
2886
2887
2888
2889
2890
2891
2892
2893
2894
2895
2896
2897
2898
2899
2900
2901
2902
2903
2904
2905
2906
2907
2908
2909
2910
2911
2912
2913
2914
2915
1 News
******

This lists the user-visible changes made to Sawfish, and which releases
they occurred between. For more detailed information see the
`ChangeLog' files in the Sawfish source tree.

1.3.5.2
=======

   * New/Updated Requirements:
        - librep 0.17 -> 0.17.3

        - rep-gtk 0.18.3 -> 0.18.4

   * Fixes:
        - allow compilation with librep 0.17.3

        - fix templates in configure.in (fixes autoheader issue)

        - add AC_CONFIG_MACRO_DIR([m4]) to shut up libtool

        - add AM_PROG_LIBTOOL for autogen.sh to run libtoolize

        - new autogen.sh (take from upstream svn) to solve libtool
          1.5/2.2 issues

1.3.5.1
=======

   * Fixes:
        - Fixed a compilation error caused by glib [Michal Jagermann]

1.3.5
=====

   * The 1.3.5 version has new features and bugfixes

   * New/Updated requirements:
        - librep 0.14 -> 0.17

        - rep-gtk 0.18 -> 0.18.3

   * New features:
        - Support _NET_WM_USER_TIME by Hellmut Eller

        - Added ATK-A11Y Support by Shobbit Marthur

        - Added Viewport-Boundary by Christopher Bratusek

        - Added Error-Handler "both" by Christopher Bratusek

        - Added 2 new Buttonlayouts to Crux "complete" and "complete
          inverse" by Christopher Bratusek

        - Honour ICCCM Aspect Ratio by Andrea Vettorello

        - Expose all Keybindings in SawfishUI by Christopher Bratusek

        - Added Animated Viewport Scrolling by Fernando Carmona Varo

        - Also expose the "Stagger" and "Off-Center" placement-modes

        - Add a new hook: "before-slide-hook" by Andrea Vettorello

        - Expose all smart placement-modes, "Best-Fit",
          "Best-Fit-Group", "First-Fit-Or-Interactively" by Christopher
          Bratusek

        - Better GNOME Integration by Christian Marillat

   * Bugfixes:
        - Minimum pango version is 1.8.0 not 1.16.0 by Christopher
          Bratusek

        - Fix Installation of mxflat by Michal Jaegermann

   * Other Changes:
        - Remove all ^L in the source by Teika Kazura

        - Small Code-cleanup to make build with "-Wall -ansi -pedantic"
          possible again (also requires recent librep for this to work)

        - Major Documentation Update by Derek Upham

        - updated the shipped config.sub and config.guess by
          Christopher Bratusek

1.3.4
=====

   * The 1.3.4 version has new features and bugfixes

   * New features:
        - "Enter-Click focus mode" by Dagfinn I. Mannsake, Christopher
          Bratusek and Timo Korvola: windows get focus only when mouse
          enters it or if it is clicked and was unfocused.

        - "Parallel make" by Harald van Dijk: allows building using
          more processors.

        - Improved window property handling by Teika Kazura.

        - Added new themes: mxflat, get-S-tabbed and elberg-tabbed.

        - Added new binding to maximize window fullscreen on all
          xinerama screens, by Jonathan Sambrook.


   * Bug fixes:
        - Fixed raise-lower window bug when using transparent windows
          with xcomposite extension, by Timo Korvola.

        - "Refresh icons" by Timo Korvola: when window changes its
          icon, the frame gets updated.

        - Major C part cleanup, removing compilation warnings, by
          Christopher Bratusek.

        - "Keep Focus on move-window-'direction'" by Mark Schreiber:
          allows moving windows around viewports without losing focus.

        - "Selfdefine xterm command" by Dagfinn I. Mannsaker: allow
          using custom xterm instead of hardcoded one.

        - "Update the Spec-file" by Ian Dall: update deprecated
          keywords.

        - "Fix make-pot" by Christopher Bratusek: the make-pot script
          works again.

        - Themer was removed, because rep-glade is not yet ported to
          glade2.

        - Added missing keyboard accelerators in window menu and Move
          and Resize entries, issue reported by Fernando Carmona Varo.


1.3.3
=====

   * The followup 1.3.3 version is released with bugfixes' fixes

   * Bug fixes:
        - "Utf 8 names fix" by Timo Korvola: window titles with UTF-8
          working and no openoffice crashes

        - "Pango draw() ignores font" by Yuuki Harano and Rodrigo
          Gallardo: allows using pango fonts correctly.

        - "Titlebar updates" by Harald van Dijk and Timo Korvola: don't
          forget to tell the running theme that window title length has
          changed.

        - "KDE tray fix 2" by Timo Korvola: KDE is not always using
          freedesktop.org protocol so we need to adjust a few glitches.


1.3.2
=====

   * The 1.3.2 version is released with bugfixes submitted by sawfish
     community

   * Strings are re-encoded in UTF-8. Window titles will be set
     correctly regardless of title encoding (Rodrigo Gallardo)

   * updated documentation to v0.12 (Derek Upham)

   * added Occitan Lanaguage (Yannig Marchegay)

   * Bug fixes:

        - Nautilus desktop window can now restore its size properly
          (Rodrigo Gallardo)

        - Sawfish.desktop file now complies with freedesktop.org
          standard (Rodrigo Gallardo)

        - Fix select workspace to make sure it calls with right
          arguments (GSR)

        - Fix 64 bit client messages (Thadeu Lima de Souza Cascardo)

        - Don't display unneeded blank lines when window is opened by
          prompt function (Sven Schoenung)

        - KDE system tray no longer fighs with sawfish to reparent a
          tray icon (Timo Korvola)

        - Add bounds checking on _NET_CURRENT_DESKTOP requests (Timo
          Korvola)

        - QT applications no longer lose focus when menu is active
          (Harald van Dijk)

        - Corrected window placement in xinerama/dualhead when using
          centered/centered-on-parent (Fuchur, with comments by Andrea
          Vettorello)


1.3.1
=====

   * The 1.3.1 version is released to let people know that Sawfish is
     being revived by the community, and we are awaiting patches to be
     submitted for incoming 1.3.2 release

   * John Harper resigns from Sawfish maintainership and Sawfish
     community takes over. Janek Kozicki has SVN access, applies
     patches and makes releases.

   * new official Sawfish website `http://sawfish.wikia.com/'

   * updated documentation to v0.11 from Derek Upham

   * updated FAQ from Sawfish wiki

   * added tool for automatic screenshot generation for huge number of
     themes (Scott Scriven)

   * Add detection for Xrandr extension (Philip Langdale)

   * added Punjabi Lanaguage (Amanpreet Alam)

   * Makefile.in: install Sawfish.desktop unconditionally (John Harper)

   * generate sawfish.gtk.widgets.font from font.jl.in, define
     have_pango_xft in the substitutions (John Harper)

   * Bug fixes:

        - fixed possible buffer overflow in src/fonts.c (Yoshiaki
          Kasahara)

        - Updated Swedish translation (Daniel Nylander)

        - check for pango libs and flags (optional dependency)


1.3
===

   * Implemented EMWH "show desktop" mode

   * Set client window gravity to `StaticGravity' while reparenting
     windows (Michal Maru�ka)

   * Support EWMH `SKIP_TASKBAR' state (Chris Boyle, me)

   * Window history keys may have multiple properties (not enabled by
     default for backwards compatibility, see `window-history-key'
     variable)

   * More placement modes are now multihead-aware (Steve Hill)

   * Translation updates: el (Simos Xenitellis, Kostas Papadimas), de
     (Christian Neumair), no (Kjartan Maraas), pt_BR (Alexandre Folle de
     Menezes), am (Daniel Yacob), es (German Poo Caaman~o), uk (Maxim
     Dzumanenko), sk (Stanislav Visnovsky)

   * Bug fixes:

        - compile with Gtk 2.2

        - don't try to unfocus windows within the X error handler

        - don't cache frame objects while clicking in windows, they may
          get garbage collected - fixes "crash on shading" bug

        - set `_NET_WM_NAME' as `UTF8_STRING' type (Christian Krause)

        - `save-session' is now called `gnome-session-save'; fallback
          to looking in `/usr/gnome' for menus

        - fixed typo in `adjust-position-for-gravity/y'

1.2
===

   * Added an `OPTIONS' file describing the variables that may be
     customized

   * Some drawing optimizations: don't reinstall frame shape at each
     redraw, turn off graphics exposures in all contexts

   * Added a cache for X properties to minimize server round-trips

   * Added support for Xft fonts

   * Color objects now store alpha as well as rgb data

   * Support useful parts of 1.1 NET WM spec; also fixed some bugs /
     omissions in support for 1.0 spec (e.g. `_NET_WORKAREA')

   * Support for two dimensional workspace layouts and edge flipping
     (Michael Toomin)

   * Translation updates (Dmitry G. Mastrukov, Jordi Mallach, Vincent
     van Adrighem, Christian Rose, Stanislav Visnovsky, Daniel Yacob,
     Andras Timar, Sava Chankov, Christian Neumair, Peteris Krisjanis,
     Gustavo Noronha Silva, Christian Meyer, Fatih Demir, Hasbullah Bin
     Pit, Christophe Fergeau)

   * Bug fixes:

        - Don't pass null pointers to `accept ()'

        - Stacking list assertions no longer abort execution, they just
          print an error message

        - Handle minimum-size hints that are zero

        - Understand the Pango font names that the Gtk2 font selector
          uses

        - Fixed bugs when iconifying sticky windows

        - When servicing configure-window requests, respect the window's
          locked dimensions. Also handle moving in only one direction

        - `grow-pack' bug fixes (Daniel Pfeiffer)

        - Fixed some problems with fullscreen mode

        - Fixed some problems in the Gtk2 config tool

        - Other bug fixes (Greg Morris, Claudio Bley)


1.1
===

   * Reorganized the customization options. Removed user levels.
     Removed many obscure options (most are still available as lisp
     variables, just not from the UI). Viewports are no longer
     available in the UI

   * Updates to the `grow-pack' module (Kai Gro�johann, Daniel Pfeiffer)

   * In matched windows, boolean options can be turned off as well as
     on (me, merlin)

   * New full screen maximization mode

   * Bug fixes:

        - Miscellaneous focus fixes

        - Be more selective about which X errors imply window deletion

        - Don't trigger a stacking-list assertion on logout

        - Check for window-ness in window-visibility (Michal Maru�ka)

        - Reread WM_WINDOW_PROTOCOLS when it changes

        - Fixed bug of nautilus windows not being focused in focus
          follows mouse modes

        - Recover "lost" windows when selecting windows (merlin)

        - Show correct size when resizing windows (merlin)

        - Most placement modes now respect workarea (Federico Mena
          Quintero, me)

        - Miscellaneous fixes to wm-spec implementation. Includes code
          to support _NET_WM_STRUT

        - Call `bindtextdomaincodeset' function if rep implements it
          (Christophe Fergeau)

        - Make the current-directory stored in the session a valid
          filename

        - Don't put windows below the default depth just because their
          parent is

        - Miscellaneous viewport fixes (Federico Mena Quintero)

        - Don't let "transients above" and "layer" stacking constraints
          conflict with one another


1.0.1
=====

   * Translation updates: pt (Carlos Perell� Mar�n), it (Michele
     Campeotto), pl (Zbigniew Chyla), zh_CN (Wang Jian), zh_TW (Abel
     Cheung), es (Eneko Lacunza), tr (�mer Fad�l USTA), sv (G�ran
     Uddeborg, Christian Rose), da (Ole Laursen), gl (Jesus Bravo
     Alvarez)

   * Bug fixes:

        - Fixed typo in `apply-command-keys' function (David Bustos)

        - Fixed bug in `wm-spec' module causing nautilus desktop window
          to cover panel

        - Adopt windows with a maximized hint correctly

        - Fixed bug in `display-window' function that can prevent the
          window getting focused

        - Don't allow windows to be moved or resized by third-parties
          when they're maximized (and the necessary option is set)

        - Fixed problem with localizing property names in the
          matched-windows configuration widget

        - Handle window gravity more correctly (Owen Taylor)

        - Forget everything about withdrawn windows - better ICCCM
          compliance

        - Fixed root-window event proxying (the infamous gmc bug)

        - Don't use dlmalloc on sparcs (Brian Nitz)


0.99
====

   * Requires `librep' 0.14 or newer

   * Translation updates: ja (Sato Satoru), no (Kjartan Maraas), es
     (Carlos Perell� Mar�n), fi (Antti Ahvensalmi), cs (Jiri Cerny), fr
     (Christian Marillat), de (Matthias Warkus, Christian Meyer), da
     (Ole Laursen), sk (Stanislav Visnovsky), tr (�zg�r), sv (Christian
     Rose, Peter Winnberg), gl (Jesus Bravo Alvarez)

   * Do i18n on more text strings (Vlad Harchev, me)

   * Broken support for multiple-screen displays. Supplying the new
     `--multihead' option will fork extra copies of sawfish for each
     extra screen. This has some fundamental problems, but some people
     seem to want it (Michael Vogt, Mahmood Ali, me)

   * Window manager virtual modifier once again defaults to `M-'
     instead of `C-'

   * Added support for `Off2' and `Off3' events

   * `menu-program-stays-running' variable now defaults to true by
     popular demand

   * New command `focus-desktop'

   * Switch viewports more efficiently (by choosing the best order to
     move windows, to minimize the exposed area)

   * Monitor the `_WIN_WORKSPACE' property of each window

   * Bug fixes:

        - Check for X SHAPE extension, exit if it's not available

        - Wait for the focus-in event before changing sawfish's
          knowledge of the focused window when moving focus from one
          window to another

        - Be more ICCCM-compliant, don't send synthetic configure notify
          events when the window was resized

        - Fixed locale font handling

        - Don't leave grid traces when trying to move/resize a window
          that's locked in place

        - Fixed bug where the pointer being over the message window
          could confuse focus after window cycling

        - `decorate-transients' option works again with shaded windows

        - Documentation appears in tooltips again

        - Handle sticky properties better in the `window-history' module

        - Maximization fixes for multi-headed displays (Florent
          Guillaume)

        - Cancelling a resize of a maximized window no longer discards
          the window's maximized state


0.38
====

   * Translation updates: gl (Jesus Bravo Alvarez), sv (Martin
     Norb�ck), de (Matthias Warkus, Christian Meyer), ru (Vlad
     Harchev), es (Joseba Garc�a Etxebarria), pl (Daniel Koc), fi
     (Antti Ahvensalmi), sk (Stanislav Visnovsky), az (Pablo
     Saratxaga), cz (Stanislav Brabec), no (Kjartan Maraas), el (Simos
     Xenitellis), it (Michele Campeotto), fr (Christian Marillat), ro
     (Marius Andreiana), ko (?)

     Extract some more translatable strings (Vlad Harchev)

   * `Crux' theme now has an extra button mode: `Default', like Mac OS
     Platinum but also has an iconify button. Used by default

   * The `grow-pack' module now works with windows which specify
     increments (Kai Gro�johann)

   * New command `kill-client'

   * Fixed bugs:

        - Don't return a null pointer when no default cursor has been
          set, return `nil' instead

        - Avoid triggering assertions in the stacking list code when
          raising or lowering windows and the given sibling has been
          destroyed

        - Turned off the annoying code that beeps and prints a message
          when unfocusable windows are detected

        - The GNOME hints now listen for the `_WIN_WORKSPACE' property
          changing and will move the window in response

        - Don't forget maximized state of windows when they're moved,
          only if they're resized

        - Don't show special cursors when moving or resizing windows, or
          when hovering over the title bar

        - Corrected off-by-one error in `smart' placement modes

        - Identified and fixed some problems in the new GNOME/KDE window
          manager hints implementation (Rob Hodges, me)


0.37
====

   * New command line option `--window-history-file=FILE'

   * Search for user's rc file in this order: `~/.sawfishrc',
     `~/.sawfish/rc', `~/.sawmillrc'

   * New option `configure-ignore-stacking-requests' and a
     similarly-named window property. When set stacking requests from
     windows are ignored (Matt Tucker)

   * When restarting sawfish, reselect the previously selected workspace

   * Added a function that can recolour multiple image channels
     simultaneously

   * New function `exit-type' - returns the type of exit in progress

   * Translation updates: ja (Sato Satoru), sk (Stanislav Visnovsky),
     es (I�aki Garc�a Etxebarria), hu (Robert Vanyi), tr (Fatih Demir),
     ro (Tutu Valentin), no (Kjartan Maraas), it (Michele Campeotto), pl
     (Daniel Koc)

   * Fixed bugs:

        - Fixed focus-handling in enter-only mode on window close and
          viewport switch

        - Fixed overflow error in the image recolouring module (Simon
          Budig)

        - Session management always uses a unique session file (Timo
          Korvola, me)

        - Fixed bug in random placement mode where windows could
          sometimes be placed off-screen

        - Fixed some auto-raise problems by reverting a misguided bug
          fix

        - Fixed bugs with aborted session saves

        - Cache stacking order of windows locally - this allows us to
          keep the order consistent, especially after window
          reparenting operations

        - Don't call `XParseColor' unless we actually _have_ a display
          connection (merlin)

        - Merged two calls to `setlocale' to avoid trashing the locale
          preferences

        - Check for presence of Xinerama extension before trying to use
          it - removes the annoying error message at startup

        - Added some more X server timestamp logic to correct for the
          timestamp discontinuities after APM resume


0.36
====

   * Added a new default theme: `Crux'. By default it recolours itself
     to match the current GTK+ selection colour. (Arlo Rose, me)

   * Updated translations: it (Michele Campeotto), fr (Christian
     Marillat)

   * Added a `shade-button' button class (many themes created it anyway)

   * Added a `sawfish.wm.util.recolor-image' module, currently contains
     a single function for recolouring parts of images based on a given
     colour gradient

   * Added new command `delete-group'. Deletes a whole group of
     windows. With default bindings, shift-click on the close button to
     invoke this command

   * Added support for KDE-style mini-icons. If the window has no
     normal icon, then `window-icon-image' will return the mini-icon

   * Fixed bugs:

        - Themes that use the module for reading the user's gtk
          preferences will once again get updated when the gtk theme
          changes

        - Fix another of the null-string translation bugs (Christian
          Marillat)

        - Work around `XUrgencyHint' not being defined before X11R6

        - Fixed some long-standing bugs when decorating windows (use the
          correct mask when creating the overall window shape; for
          frame parts with no mask, set the local shape to the
          appropriate rectangle; be sure to generate at least one
          Expose event when reconfiguring frame parts)

        - Fixed crashing bug when `bind-keys' is called with zero
          arguments

        - Fixed typo in `crop-image' function when checking validity of
          HEIGHT parameter (martin@whoever.com)


0.35
====

   * Translation updates: ja (SATO Satoru), it (Michele Campeotto),
     zh_TW.Big5 (Chun-Chung Chen), pl (Daniel Koc), sk (Stanislav
     Visnovsky)

   * Items in `choice' widgets may now contain descriptive names,
     syntax is `(SYMBOL "DESCRIPTION")'

   * Changed `focus-windows-when-mapped' option to only apply to
     non-transient windows (this option is now enabled by default)

   * New placement modes `top-left' and `off-center'.  `top-left' is
     now the default mode for non-transients

   * Enabled the module supporting the newly standardized GNOME/KDE
     window manager hints. Also made random changes to support KDE2 a
     lot better

   * Added WM_PROTOCOLS `_SAWFISH_WM_RAISE_WINDOW' and
     `_SAWFISH_WM_LOWER_WINDOW'. Used by `maybe-raise-window' and
     `maybe-lower-window' functions.

     These are similar to `WM_TAKE_FOCUS', in that if the window
     supports the protocol, it's up to it whether or not it raises (or
     lowers) the window in question. These functions should only be used
     where the user hasn't explicitly requested the restacking

     An example usage is an application that doesn't want its window to
     be raised due to a button-press event that initiates a drag
     operation

   * New option `menus-include-shortcuts', disabled by default (Unai
     Uribarri)

   * Don't interpret windows with `WM_TRANSIENT_FOR' set to the root
     window as children of all windows in the group (it causes too many
     annoying effects), instead just decorate these windows as
     transients

   * Handle `group' and `transient' iconification modes better, don't
     use a recursive method, instead use one pass to identify the
     windows to change, then another to make the changes. In
     `transients' mode, only change the state of shared transients if
     they will have no visible parents afterwards

   * In the (old) GNOME hints code, support a `_WIN_HINTS' client
     message (with a similar format to the `_WIN_STATE' message)

   * New module `sawfish.wm.commands.viewport-extras', some commands
     for viewport for viewport navigation (Dams Nad�)

   * Check for `never-iconify' and `never-maximize' window properties
     when appropriate

   * Support sixth and seventh mouse buttons (Steve Haslam)

   * Bug fixes:

        - Fixed problems with reverting changes to list-based options

        - Don't allow the empty list as a valid modifier list

        - Fixed bug where restarting the wm with
          `focus-windows-when-mapped' set would cause any shaded
          windows to be deleted

        - Ignore iconified windows in the grow-pack code

        - Added `font-ascent' and `font-descent' functions to the gaol

        - Catch errors when loading site-init and rep-defaults files

        - Don't use `""' to denote a null doc string (which has bad
          side effects when internationalized)

        - Don't need to run `sawfish-client -' to get a repl anymore,
          just `sawfish-client'

        - Fixed bugs in `composite-images' function

        - Fixed ordering of states output by `gtk-style' program
          (michaelj@maine.rr.com)

        - Fixed grabbing mono window icons in gdk-pixbuf mode

        - Reject button event descriptions that don't specify at least
          one mouse button

        - Accept `()' as a valid image modifier color component

        - Now grabs translatable strings from `defgroup' forms correctly


0.34
====

   * Added a virtual modifier key, the `W-' modifier. This modifier is
     used for all standard window-manager key bindings, it may be set
     to any of the standard X modifiers using the configuration tool

   * Optionally show window-icons when cycling through windows (Unai
     Uribarri Rodr�guez, me)

   * Event handlers for low-level X windows now get passed the window
     as their second argument (Unai Uribarri Rodr�guez)

   * Translation updates: fr (Christian Marillat), sv (Richard Hult),
     pt_BR (Fl�vio Bruno Leitner), it (Michele Campeotto)

   * Error handler module (`sawfish.wm.ext.error-handler'). When loaded
     it records the most recent errors, and the time at which they
     occurred. Use the `display-errors' command to display all recorded
     errors.

   * Added an option to not save window-history data for transient
     windows. Also added a `window-history-clear' command to forget
     history for all windows.

   * Rearranged window operations menu to hopefully be clearer

   * Attempt to catch and handle errors while loading custom options

   * Labels in menu items can now be functions, they should return the
     label text when called (with any menu arguments)

   * Moved installed message catalogues to $datadir/locale

   * `defcustom' forms may now a `:widget-flags' keyword, a constant
     list of symbols passed to the configuration tool. Current flags
     include: `expand-vertically' and `expand-horizontally'

   * Added a `sawfish.wm.util.ping' module, it implements the
     `_NET_WM_PING' protocol of the new window manager spec.

   * `destroy-notify-hook' is no longer called asynchronously

   * Bug fixes:

        - Fixed various bugs when dragging/resizing windows

        - Reverted the changes to make the click-to-focus click-through
          setting apply to window decorations

        - Fixed bug when handling 32-bit data in client messages and X
          properties

        - Fixed window-focus problems when switching viewports

        - Many bug-fixes to handling of maximized window state.
          Maximized state should now be preserved across wm and session
          restarts. It's also saved in the window-history attributes

        - Support the function hints of the MWM window manager
          properties

        - Updated the `sawfish.wm.state.wm-spec' module to match the
          current (almost final) draft of the new GNOME/KDE window
          manager spec

        - Fixed sporadic stacking bugs when unmapped windows exist

        - Fixed miscellaneous click-to-focus and focus-click-through
          related bugs


0.33
====

   * Added support for user-levels associated with individual commands

   * The GNOME hints code now understands that the do-not-cover flag is
     the same as sawfish's `avoid' property

   * Swap properties of sticky windows when entering and leaving
     workspaces as for normal windows (fixes the old problem where
     sticky windows can grab focus when a workspace is entered)

   * Changed the default settings of some customization options,
     hopefully to give a more "conventional" feel for new users

   * Better support for Xinerama (Geoff Reedy)

   * Added a new set of window stacking commands: `raise-window',
     `lower-window', `raise-lower-window'. The set of windows affected
     by these commands is determined by the `user-raise-type' (either
     the individual window, the window and any transients, or the
     entire group). The old commands of these names are now called
     `FOO-single-window'.

     Most modules now use these commands when raising or lowering
     windows, allowing the stacking model to be configured globally.

   * Translation updates: no (Kjartan Maraas), fi (Antti Ahvensalmi),
     it (Christopher R. Gabriel), pt_BR (Douglas Moura Ferreira), uk
     (Yuri Syrota), de (Matthias Warkus)

   * Fixed bugs:

        - If committing changes in the configurator causes new
          customization options or groups to be added, update the UI to
          reflect this

        - Added code to detect and correct the sporadic bug where
          windows become unfocusable in click-to-focus mode

        - Sanitized how the focus gets passed to and from transient
          windows (when passing focus back from a transient, give it to
          the most recently focused window in the group, not the
          transient's parent)

          Also, try to avoid displaying maximize buttons in windows
          whose hints prevent them from being maximized

        - Many fixes to how maximized windows are handled across session
          and window manager restarts. Also support GNOME window
          maximized hints when windows are created

        - Fixed some bugs in the `wm-spec' module

        - Don't trigger auto-raise hooks on leave/enter events
          generated by pointer grabs

        - The `edge-flip-delay' option now applies when dragging windows

        - Fixed the preview command in `sawfish-themer'

        - Miscellaneous fixes to the "smart" window placement modes

        - Fixed type description of `persisitent-group-ids' option

        - In `enter-exit' focus mode, focus isn't removed due to
          enter/leave events due to pointer grabs (fixes the bug with
          Mozilla URL completion)

        - Fixed (again) the `focus-click-through' behaviour with
          respect to frame decorations

        - Re-added hack to make GMC icons unfocusable

        - Fixed interactive placement to check for window destruction
          (merlin)

        - Fixed bug with tiled images with shapes (the shape mask would
          always be applied an integer number of times, ignoring the
          size of the frame part it's associated with)

        - Fixed `window-wants-input-p' to check if the `InputHint' is
          set before reading the value


0.32
====

   * `M-TAB' window cycling now works in both directions, bind keys to
     `CYCLE-COMMAND-backwards', e.g.  `cycle-windows-backwards'
     (Merlin, me)

   * Added support for X `Urgency' hint: `window-urgent-p' and
     `window-state-change-hook' is called with `urgency' state when it
     changes

   * Some improvements to `shade-hover' mode (adapted from Eli Barzilay)

   * Functions that raise/lower groups of windows now generate the
     minimum number of expose events (Rob Hodges, me)

   * New window property `window-list-skip'. Unified with GNOME
     skip-winlist hint

   * Custom options may have tooltips, use `:tooltip' tag

   * Catch errors when applying custom changes and revert to previous
     state

   * Translation updates: uk (Yuri Syrota), pt_BR (Douglas Moura
     Ferreira), hu (R�bert V�nyi), de (Christian Meyer), ja (SATO
     Satoru), da (Keld J�rn Simonsen), es (I�aki Garc�a Etxebarria), fr
     (Christian Marillat)

   * Fixed bugs:

        - With click-to-focus in non-click-through mode, don't
          click-through into window decorations

        - `dimensions' property in window matching was called `size' by
          mistake

        - Export the various `sp-cost:' functions from the
          `sawfish.wm.placement.smart' module

        - Don't allow cycles in the transient-for relationship

        - Fixed some maximize bugs

        - GNOME skip-focus property no longer causes the window to be
          unfocusable, just uncyclable-to

        - Coerce auto-raise timeout to be at least one millisecond;
          support `disable-auto-raise' correctly

        - Window input hints defaults to true not false

        - Fixed typo when loading the defaults file (Ronald Wahl)

        - Fixed command spec of `move-window-FOO' commands (Yoshiki
          Hayashi)

        - When sending `WM_TAKE_FOCUS' message, only focus the window
          if its `Input' hint is set


0.31.1
======

   * Translation updates: da (Kenneth Christiansen), de (Christian
     Meyer), no (Kjartan Maraas), pt_BR (Rui Miguel Silva Seabra), sv
     (Johan Dahlin), uk (Yuri Syrota)

   * Bug fixes:

        - Fixed typos in `sawfish.wm.gnome.integration' and
          `sawfish-themer' (Christian Marillat)

        - Fixed bug when building on Tru64 (John H. Palmieri)

        - Remember to check return value when initializing Imlib


0.31
====

   * Requires librep version `0.13'

   * Organized all lisp code into a hierarchy of modules. Root points
     are `sawfish.wm' for window manager code, `sawfish.ui' for
     configurator and `sawfish.gtk' for GTK+ utilities

     Compatibility should have been preserved as far as possible,
     through the use of module aliases. The `user' module that
     unmodularized user code is loaded in should look very similar to
     the old environment.  However, code using private functions,
     probably will not work

     New features written as modules can either import modules
     individually, or just open `sawfish.wm' to get the core
     functionality

   * All command handling is now written in Lisp. It's fully compatible
     except for how commands are defined. Since there is no longer a
     unified namespace the mapping from names to command definitions is
     maintained separately.

     `define-command' and `autoload-command' add entries to this
     mapping. `define-command' takes a name and a function (and some
     other optional arguments). The old style of defining commands still
     works, but only in the user module

   * `sawfish-client' now provides the same repl as the normal `rep'
     program. E.g. this allows the module system to be easily inspected

     Also, the module of each loaded theme is available for inspection
     under `themes.THEME-NAME'. (With themes using top-level defines
     instead of a single `let*' block, this is useful for debugging)

   * `sawfish.client' module provides lisp functions for communicating
     with a running window manager. Also, the protocol has been
     modified to support proper communication of errors, which are then
     re-raised on the client-side. This should make debugging
     client-server code more obvious

   * `Action' parts of menu items may now be lisp objects that don't
     have a read syntax. (E.g. this allows closures to be used,
     avoiding the problems arising from modularization)

   * Support for checked and radio-group menu items. Also a new
     function `add-window-menu-toggle' to add items to the `Toggle'
     sub-menu of each window

   * Handle `ConfigureRequest' events in a way that is compliant with
     the ICCCM--honour the window's `win_gravity' setting (defaulting
     to `NorthWest' gravity), instead of assuming `Static' gravity

   * Support more GC attributes in the `sawfish.wm.util.x' plugin (Ryan
     Pavlik)

   * Support for handling arbitrary windows as extra "root" windows.
     Used, e.g., to support Nautilus' desktop window. Allows the focus
     modes to work correctly

     To support this, new window property `desktop' denoting a
     "desktop" window; new function `desktop-window-p' recognizing one
     of these things (or the symbol `root')

   * Added `pointer-motion-threshold' option. Pointer motion events are
     only generated when the pointer moves at this many pixes away from
     the position it had when the button was pressed

   * New functions: `scale-image', `composite-images', and `crop-image'.

   * New option `maximize-avoid-avoided' (Jonas Linde)

   * New functions exported by `sawfish.wm.ext.tooltips' module:
     `display-tooltip', `remove-tooltip'

   * New function exported from `sawfish.wm.viewports' module:
     `select-workspace-and-viewport'. Renamed some workspace functions:

     `ws-move-window' => `move-window-to-workspace', `ws-copy-window'
     => `copy-window-to-workspace', `ws-insert-workspace' =>
     `insert-workspace', `ws-move-workspace' => `move-workspace',
     `ws-remove-window' => `remove-workspace'.

   * Changed interface of `get-visible-window-edges' function to use
     proper keyword parameters, and added some new keywords

   * New commands `help:about' and `gnome-about'. Added a
     `sawfish-about' script to implement the first of these. Added
     associate menu items to the `Help' menu

   * New window property `cycle-skip', defines whether the window is
     included when cycling the focused window. (Dave Dribin, me)

   * Translation additions and updates: es (I�aki Garc�a Etxebarria),
     tr (Fatih Demir), zh_CN.GB2312 (zw@zhaoway.com), fr (Christian
     Marillat), ja (SATO Satoru), de (Kai Lahmann), el (Simos
     Xenitellis), ga (Se�n � Ceallaigh), ru (Valek Filippov), sl
     (Andraz Tori)

   * Bug fixes:

        - Don't let errors in `.sawfishrc' prevent customization
          settings being loaded

        - initialize event handler when creating X window proxies (Matt
          Tucker)

        - No longer able to `throw' out the top of the program by
          mistake

        - Fixed `find-head' function, to allow Xinerama support to work

        - When exiting, leave window configurations exactly as they were
          found (E. Jay Berkenbilt)

        - Fixed `synthesize-event' to scan the window tree for a child
          window accepting button events (E. Jay Berkenbilt)

        - Removed "yow! ..." debugging messages

        - `image-set' and related functions will add an alpha channel
          to the image when necessary (when using gdk-pixbuf)

        - Canonify `S-x' as `X' where possible

        - Catch and handle errors when matching properties in the
          `sawfish.wm.ext.match-window'

        - Escape underscores in menu items where they shouldn't
          introduce accelerators. (Added `quote-menu-item' function to
          help with this)

        - Fixed race-condition when exiting configurator embedded into
          the GNOME control center (Havoc Pennington, me)

        - Fixed bug in `set' method of the `icon' widget

        - Fixed shading behaviour of included themes (Daniel Lundell)

        - Compute the shape of the frame window each time the
          background of one of its parts changes

0.30.3
======

   * If a frame part has a non-nil `hidden' attribute, ignore it

   * When reframing windows, keep the absolute position of the client
     window constant

   * Support `FIXED_POSITION' GNOME hint (renamed old `fixed-position'
     property as `client-set-position'; `fixed-position' now means
     don't allow the window to be moved by the user)

   * `transients-above' option can now be set per-window

   * Translation updates: fr (Christian Marillat), en_GB (Robert
     Brady), de (Kai Lahmann), da (Keld Simonsen), ru (Valek Filippov),
     sl (Andraz Tori), no (Kjartan Maraas), gl (Jesus Bravo Alvarez), it
     (Michele Campeotto)

   * Fixed bugs when converting option values

   * Fixed `:require' keyword in `defcustom' always causing the module
     to be loaded, not just when the option is non-nil

   * Fixed bug when adding windows that are shaded

   * Fixed some minor bugs in the configurator


0.30.2
======

   * Window cycling now forwards terminating events to external
     applications as well as internal bindings (e.g. `M-TAB M-w' closes
     an activated Netscape window)

   * `quote-event' command now works with applications that ignore
     synthetic events (adapted from code by Timo Korvola)

   * Reorganized frame style and window type management. New function
     `define-frame-type-mapper' allows modules to affect the mapping
     from window type to frame type. E.g. the shading module uses this.
     (fixes the bug that changing the frame type of a shaded window
     didn't work)

   * Added function `variable-customized-p'; use this to avoid
     redefining user-modified options

   * Do type-directed deep conversion of values when converting to/from
     readable representations. This fixes the bug that options with
     `:type (optional color)' weren't being converted when passed
     between the wm and the configurator, leading to reader errors

     A side-effect of this is that updated custom files will not be
     compatible with previous versions of the wm (though old custom
     files will work with new versions)

   * Translation updates: no (Kjartan Maraas), de (Kai Lahmann), nl
     (Dennis Smit), sl (Andraz Tori)

   * Added primitives `map-windows' and `filter-windows'

   * Fixed bug of not retaining focus on startup when originally in
     PointerRoot mode and moving to click-to-focus mode (Brad Thompson)

   * Ensure that apps get sent a synthetic ConfigureNotify event after
     ConfigureRequest events are handled (fixes bug where menus in Java
     apps can appear at wrong position until window is moved)

   * When referencing known variables from subroutines, make sure that
     restricted environment doesn't prevent the variable being accessed
     (fixes bug where `default-bevel-percent' was being ignored)

   * When creating transient groups, don't compare null group ids
     (fixes xfmail related bugs)

   * Fixed `move-window-to-viewport' command to correct for 1...
     indexing

   * Fixed non-gnome workspace widget in configurator


0.30
====

   * New commands `activate-viewport-column', `activate-viewport-row'

   * New commands `raise-window-and-transients',
     `lower-window-and-transients' and
     `raise-lower-window-and-transients',
     `raise-transients-and-pass-through-click'.

     As the normal window stacking commands, but restacks the
     "transient-group" of the window. This includes the window itself
     and any transients it has, and any windows that it itself is a
     transient of.

     These commands are used in the default keymaps

   * Functions that deal with transient windows now understand the de
     facto standard of setting the `WM_TRANSIENT_FOR' property to the
     root window denotes that the window is a transient for the whole
     group

   * New image manipulation functions: `image-ref', `image-set',
     `image-fill', `image-map'. New color accessor function
     `color-rgb-8'. New function `root-window-id'

   * Improvements to `sawfish-ui': optionally use some GNOME widgets,
     more lisp widget types, some bug fixes

   * New command `command-sequence'. Allows individual bindings to
     invoke a sequence of commands

   * Options `iconify-group-mode' and `uniconify-group-mode' replace
     `iconify-whole-group' and `uniconify-whole-group'.  New commands
     `iconify-transient-group', and `uniconify-transient-group'

   * Added `:type*' key to `defcustom', like `:type', but value is left
     unquoted

   * Translation updates: pl (Daniel Koc), ru (Valek Filippov), uk
     (Yuri Syrota), es (I�aki Garc�a Etxebarria)

   * Fixed handling of `WM_NORMAL_HINTS' (was using base-size instead
     of min-size in places)

   * Fixed further locale / FontSet bug (Tomohiro KUBOTA)

   * `window-history' module won't resize a window to a size that
     violates its size constraints


0.29
====

   * Rewrote the configuration user interface. Improvements include:

        - Key bindings may now include parameters. E.g. this finally
          allows shell commands to be bound to keys using the GUI (use
          the new `run-shell-command' command)

        - Nautilus-like user-levels to tailor the options shown to the
          expertise of the user

        - Options may have much richer type descriptions (including
          `match-window' options). Also, extra widget types and
          containers may be added as extra Lisp modules

        - By default the stand-alone configurator commits changes to the
          window manager as they are made, instead of waiting for the
          `Try' button to be pressed

        - Added dependences--options with dependences are only editable
          when the value of their dependence is non-`nil'

   * Rewrote window stacking code to be based on "stacking
     predicates"--functions that accept or reject a possible stacking
     configuration. This allows the "stack-transients-above-parents"
     option to work correctly, only keeping transient windows above
     their _own_ parent windows

   * The configure-event handler now understands and handles the full
     complexity of stacking requests (Brad Thompson)

   * New frame-part attribute: `scale-foreground'. The `cursor'
     attribute may now be a function

   * Made the `centered', `centered-on-parent' and `under-pointer'
     placement modes clamp the window into the current work area (i.e.
     without overlapping windows that shouldn't be covered).  Added a
     `stagger' placement mode

   * When grabbing window icons to images, preserve their shape masks

   * Moved `window-history' options to `placement' group.  Fixed some
     more bugs and sub-optimal default option values

   * Don't set cursors for button classes, use the default value

   * GNOME `SKIP_FOCUS' window hint sets `never-focus' property on
     window, as well as the `ignored' property

   * Translation updates: de (Karl Eichwalder), ru (Valek Filippov), da
     (Kenneth Christiansen)

   * Added mostly-complete support for using gdk-pixbuf instead of
     Imlib (requires an experimental Xlib version of the gdk-pixbuf
     library)

   * Various bug fixes and other minor changes...


0.28.1
======

   * New options `--visual=TYPE' and `--depth=DEPTH'. These tell the
     window manager to use a different visual than the default

   * Made the `window-history' module behave more sanely (don't save
     iconified or shaded state; include window name when generating
     keys for transient windows)

   * Made `beos-window-module' the standard window menu (require
     `old-window-menu' to get the original version). Also made this
     display the windows' class names

   * Updated translations: es (I�aki Garc�a Etxebarria), tr (Fatih
     Demir)


0.28
====

   * New module `window-history'--automatically saves window attributes
     when they are explicitly set by the user, then copies these
     attributes to windows with the same `WM_CLASS' as they are
     created. This is loaded automatically if you have no `.sawfishrc'

   * New method of allowing themes to implement only some of the
     (currently) four frame types. The variable
     `frame-type-fallback-alist' maps each frame type to the type to
     try if the original type isn't available in the chosen frame style.

     Note that for this to work, themes must return `nil' when they
     don't support the requested frame type, until now, the convention
     had been to return the default frame definition, so most if not
     all themes will need changing. (This doesn't include themes
     created using the `make-theme' module.)

   * Made the metrics used by the `best-fit' placement mode
     user-controllable. Set the `sp-cost-components' variable to a list
     of cost functions and the weight to apply to that metric. E.g. by
     default it gives 50% importance to the distance from the placement
     to the focused window, and 25% each to the distance to the pointer
     and to the "future-unusefulness" of the area being covered

   * New module `beos-window-menu' to redefine the window menu to group
     items by the window group that they are a member of (in the
     absence of actual group information, it will heuristically build
     groups by matching window titles)

   * New option `edge-flip-warp-pointer', whether or not to warp the
     pointer after edge-flipping (Paul Warren)

   * New option `display-window:uniconify-to-current-workspace',
     controls whether windows uniconified by `display-window' should be
     moved to the current workspace (John N S Gill)

   * Changed method of selecting when to use multi-byte aware rendering
     functions (except when initializing the locale fails, or returns a
     7-bit locale); also, when creating a fontset fails, try to
     intelligently fall back to a similar group of fonts (Tomohiro
     Kubota)

   * The `x' library now supports creating and then drawing to pixmaps.
     The pixmaps can then be grabbed to images using the
     `make-image-from-x-drawable' function

   * Added a `Help' item to the root menu

   * Translation updates: fi (Antti Ahvensalmi), gl (Jesus Bravo
     Alvarez), de (Karl Eichwalder), nl (Jan Nieuwenhuizen), pl (Daniel
     Koc), tr (Fatih Demir)

   * Now supports the `Super' modifier

   * Fixed bug of sometimes ignoring pending X events

   * Fixed bug of calling focus change hooks too many times (only when
     our view of the focused window has actually changed)

   * Avoid problems when windows set weird size hints structures

   * Raise windows _after_ possibly moving them to a different layer,
     when they have been mapped

   * When the `cycle-windows' sequence is terminated by an unknown
     event, re-handle that event after exiting (so that e.g.  `M-TAB'
     can be followed by another `M-' qualified event without releasing
     Meta)


0.27.2
======

   * Translation updates: da (Kenneth Christiansen), de (Karl
     Eichwalder), es (I�aki Garc�a Etxebarria), ja (SATO Satoru)

   * Attempt to destructure the language code when parsing GNOME
     desktop items (e.g. if `LANG=de_DE' look for both `de_DE' and `de'
     translations)

   * New focus handler events `enter-root' and `leave-root'

   * Removed `raise-groups-on-focus' option, it caused unstable window
     flickering in certain cases

   * Fixed bug When transferring focus after a window is unmapped
     (inverted choice of when to look under pointer, and when to look in
     focus history)


0.27
====

   * Changed the name from `sawmill' to `sawfish'; all user-visible
     binaries have been renamed appropriately, the old programs will
     still work for now...

   * Added support for accelerators in menu definitions (this requires
     a new rep-gtk package) (Richard Kilgore). Added accelerators to
     many of the standard menu items

   * Added some (untested) support for Xinerama: `current-head',
     `current-head-dimensions', `current-head-offset'. Some placement
     modes should handle multiple heads sensibly, as should window
     maximization and edge snapping.

   * Added icons for GNOME control center applets (all icons by Tigert,
     except for the saw-blade logo by Glyph Lefkowitz)

   * New functions `map-window-properties' (me), `window-icon-image'
     (Bruce Miller)

   * Changed behaviour of `raise-group' and `lower-group' to preserve
     the stacking of the group, then change the selected window.  Added
     new command `raise-lower-group'

   * New option `raise-groups-on-focus'

   * Updated translations: de (Hubert Nachbaur), es (I�aki Garc�a
     Etxebarria), gl (Jesus Bravo Alvarez), ko (Man-Yong Lee), tr
     (Fatih Demir)

   * Try to handle errors more gracefully when creating window frames

   * Better handling of errors in the control center applet

   * Fixed the `below-client' frame-part attribute

   * Fixed the disappearing items in the match-windows dialog

   * Fixed the non-beautified entries in the keymaps dialog

   * Fixed interactive placement mode (Timo Korvola)

   * Invoke audio playing program asynchronously, may avoid deadlocks

   * Fixed `workspace-menu' to add the focus-marking asterisk (John N S
     Gill)

   * Fixed menu-obscuring bug after auto-raising windows

   * Ensure that `WM_STATE' property is set each time a window is
     mapped, not just the first time

   * Fixed bug when discarding grab in click-to-focus mode, even though
     successive events may be in the window's keymap

   * Only focus windows when they're mapped when they're visible

   * Fixed click-to-focus problems when unmapping transient windows


0.26
====

   * Added plugin `selection', adds functions `x-selection-active-p'
     and `x-get-selection' for retrieving X selections (Mark Probst)

   * New functions `prompt-for-window', `prompt-for-workspace' and
     `select-workspace-interactively' (Dave Pearson)

   * `window-anim' module enabling asynchronous animations after window
     events. Currently only two animation styles `wireframe' and
     `solid', and they only animate window iconification

   * `audio-events' module; maps window manager events to audio samples
     (played using esd by default, but can be configured to use any
     program)

   * When running programs in terminals from the GNOME apps menu, use
     the value of `xterm-program' to decide which terminal program to
     use (James Antill)

   * Translation updates: gl (Jesus Bravo Alvarez), pl (Daniel Koc)

   * New command `toggle-window-iconified' (Jens-Ulrik Petersen)

   * New option `raise-windows-when-unshaded'

   * Customization options for tooltip colors (Erik Assum)

   * Removed default binding to `A-x'

   * Added support for librep-with-module-system (cvs version)

   * Note that `ko' and `zh' languages need FontSets

   * When sticking a window not on the current viewport, move it to the
     current viewport (Merlin)

   * Fixed bug (?) of placing over avoided windows in `random' mode;
     also increased `sp-avoided-windows-weight' by an order of
     magnitude (Dan Winship)

   * Fixed bug of maximizing a window changing its viewport

   * Fixed window cycling losing grab if originally focused window is
     unmapped

   * Fixed `get-cursor' to use the correct background color when
     creating cursors from vectors (Alexander Barinov)

   * Fixed `get-font' to set `descent' property correctly

   * Changed double-buffering semantics in `x' plugin, also only
     support this if configure finds the correct header files

   * Fixed `synthesize-event' to generate correct relative pointer
     positions

   * Don't focus on non-visible windows (crashes GNOME control center)

   * Fixed bug of using `cp' to install GNOME desktop files


0.25.2
======

   * If no user customization file when saving options, inherit from
     the custom-defaults file

   * Rewrote window stacking (fixes bugs, more efficient)

   * Added `input-focus' to theme-callable functions

   * When focused window is unmapped, don't try to focus non-visible
     windows

   * Fixed `display-window' when it's applied to iconified windows

   * New variables `fonts-are-fontsets' and `fontset-languages-re' to
     work around broken X servers

   * Update edges for snapping to when dragging windows across
     workspaces or viewports

   * When passing keymaps to customization system, filter out, then
     later restore, bindings that aren't symbols

   * Most commands to move/copy windows between workspaces can now be
     told whether to select the destination workspace or not

   * In GNOME hints, never place windows on workspaces that don't exist
     (from the pager's POV). (Rob Hodges)

   * Fixed `ws-move-window' to not remove the window if source and dest
     are the same (Rob Hodges)

   * Fixed `sp-prune-points' function (Dan Winship)

   * Fixed `move-viewport-to-window' to only flip viewports if window
     isn't already on the current viewport (Merlin)

   * Try to detect and handle system clock being rewound

   * Optional second arg to `x-raise-window'; added symmetrical
     function `x-lower-window'

   * Fixed unix-domain server code assuming atomic writes to sockets

   * Added double buffering support to `x' module

   * Fixed grabs during multi-key sequences; also, print the current
     prefix keys if idle during a multi-key sequence


0.25.1
======

   * Only force windows onto the visible screen if they didn't
     explicitly set their position

   * Redefine `/' in themes to be the `quotient' function (integer
     division), which is what they expect. The `divide' function can be
     used for real division

0.25
====

   * New plugin `x', a basic Xlib binding for creating and drawing in
     windows (Merlin, me)

   * Added a method of reading textual input from the user from
     completion. Provision for completing functions, variables,
     commands, files, directories, etc.... Also supports reading
     passwords. (Topi Paavola, me)

   * Re-enabled the following interactive codes: `a' (function), `C'
     (command), `D' (directory), `f' (existing file), `F' (file), `k'
     (event), `n' (number), `N' (prefix or number), `s' (string), `S'
     (symbol), `v' (variable)

   * Support prefix keys in bindings (binding an event to a keymap, or
     the name of a keymap, marks that event as a prefix key for the
     associated keymap)

   * New command `call-command-with-output-to-screen', prompts for and
     invokes a command, then displays any output it emitted (bound to
     `A-x' in default keymaps)

   * New variable `multi-click-delay', maximum time in milliseconds
     between button presses to count as `click2' or `click3' events
     (Martin Blais)

   * New option `edge-flip-only-when-moving' (Yaron M. Minsky)

   * New window cycling commands `cycle-prefix', `cycle-class' (Kai
     Gro�johann); can now be bound to events with more than one
     modifier (Timo Korvola)

   * New command `uniquify-window-name'; new property `unique-name'.
     Forces the window to have a unique name

   * New commands `size-window-add-column',
     `size-window-subtract-column', `size-window-add-row',
     `size-window-subtract-row'

   * Window edge snapping now has three variants: `magnetism' (the old
     method), `attraction' and `resistance'. (Merlin, me)

   * New commands `grow-window-{left,right,up,down}' and
     `pack-window-{left,right,up,down}' (Kai Gro�johann)

   * Support the `WM_COLORMAP_WINDOWS' protocol

   * New functions `synthesize-event', `font-ascent', `font-descent',
     `call-with-keyboard-grabbed'

   * New functions `define-placement-mode' and
     `define-focus-mode'--make defining these things easier. Focus
     modes are now settable for each window individually

   * Made the tree-organised customization groups work better with the
     GNOME control center. Add the sawmill capplet desktop entries to
     the GNOME programs menu (under Settings). Also, beautify the names
     displayed in the bindings widget

   * When applicable, load the GNOME applications menu when the wm is
     first idle, reduces the latency of displaying the first root menu

   * Translation updates: de (Hubert Nachbaur), es (I�aki Garc�a
     Etxebarria), ja (Sato Satoru), sv (Andreas Persenius)

   * Fix bug of not noticing when the keyboard / pointer / modifier
     mappings change

   * Fixed `current-event-string' function

   * Better method of reconfiguring frames when they're resized (helps
     opaque resizing)

   * Added some kludges to try and break the intermittent lockups some
     people have seen

   * Made the auto-gravity option work a lot better (John N S Gill, me)

   * Fixed bug where unmapped windows were being included in the
     snapping calculation

   * Fixed bug when uniconifying windows and merging workspaces

   * Fixed bug of warp-cursor-to-window trying to put the pointer
     outside the screen boundaries (Merlin)

   * Fixed bug of losing keyboard grab when originally focused window
     is deleted during `x-cycle' command

   * Fixed bug of trying to focus unviewable parent windows when
     focused window is unmapped


0.24
====

   * Configure requests events are now passed to the hook
     `configure-request-hook'. The new configure handler respects
     window gravity when resizing

   * New option `configure-auto-gravity'. When enabled the window
     gravity is implied by the position of the center of the window.
     (e.g.  try placing the GNOME control center in the bottom right
     corner of the screen, then click on an item that causes it to
     resize)

   * Worked around the numerous reports of non-existent font errors
     that using `XCreateFontSet' causes--fall back to `XLoadQueryFont'
     if possible

   * There's now a library `custom-defaults' giving default
     customization options (only if the user has no `~/.sawmill/custom')

     Also, remove the need to call `custom-add-required' in
     `.sawmillrc', it's always done now

   * New window properties `focus-when-mapped', and `gravity'
     (overrides the hinted gravity value)

   * New placement modes `under-pointer' and `centered-on-parent'

   * New option `resize-edge-mode', replaces `resize-by-frame-class'
     and `resize-add-edges'>. Also allows twm-style resizing (Mark
     Probst, me)

   * Optionally display command documentation in tooltips; tooltips are
     now aligned into columns (if you use a monospaced font for them)

   * Variables `default-cursor', `synthetic-configure-mutex',
     `frame-draw-mutex', `frame-state-mutex' are now functions

   * New functions `x-keysym-name', `x-lookup-keysym', `decode-event',
     `encode-event'.

   * New option `move-resize-inhibit-configure'

   * Translation updates: es (I�aki Garc�a Etxebarria), fr (Christian
     Gillot), gl (Jesus Bravo Alvarez), nl (Han-Wen Nienhuys), pt_PT
     (Rui Silva), sv (Andreas Persenius)

   * Fixed single-quoting in client readline (Matt Krai), copied
     bouncing parentheses hack

   * Removed `fp->win == 0' assertion, it should be harmless and was
     triggering for some people

   * Fixed bug of sending configure notify events to too many windows

   * Fixed off-by-one error in `ws-insert-workspace' (Kirk Saranathan)

   * Fixed maximization in single directions to work additively

   * Fixed bug of leaving tooltips displayed after the associated
     window has been deleted

   * Fixed bug of not removing `-clientId' option from restart
     parameters

   * Fixed bug of not translating customize group names


0.23
====

   * Customization groups are now organized as a tree structure, with
     groups able to contain subgroups

   * Define the list of features that will be presented to the user in
     `sawmill-defaults.jl', by calling `custom-add-required'. If you
     have a `.sawmillrc' you'll need to do this manually

   * New function `move-resize-window-to' doing a combined move/resize.
     New variable `synthetic-configure-mutex', when set holds off
     sending synthetic `ConfigureNotify' events to windows until it's
     unset (this is held while interactively moving or resizing windows)

   * New hook `after-add-window-hook'. Called with a single parameter,
     the window that's has just been adopted

   * New functions `x-kill-client', `delete-window-safely'.
     `send-client-message' now groks long integers (i.e. cons cells) in
     32-bit data (Timo Korvola)

   * `window-put', `window-get', `image-put', `image-get', `font-put',
     `font-get': use `equal' to compare keys, not `eq'

   * New module `error-handler', implements a simple alternative error
     handler (and allows the much-maligned beep to be turned off),
     requires rep 0.11+

   * Allow the pointer-warp position to be defined relative to the
     window (Kai Gro�johann)

   * New module `shade-hover', unshades windows while the pointer is
     over them

   * Don't automatically warp to the new workspace when opening windows
     on a different workspace

   * Include iconified sticky windows in the `window-menu', shorten
     sticky entries as usual (James Antill)

   * Support the `TryExec' field in GNOME desktop files (Ian)

   * New commands: `raise-or-pass-through-click',
     `raise-and-pass-through-click-if-focused'

   * New module `move-cursor', various commands for moving the mouse
     pointer; these commands are bound to the cursor keys when moving
     or resizing windows

   * Translation updates: es (I�aki Garc�a Etxebarria), fr (Fabien
     Ninoles), gl (Jesus Bravo Alvarez), ja (Satoru Sato), nl (Jan
     Nieuwenhuizen), tr (F�tih Demir)

   * Fix bug of leaving window-name unset when `WM_NAME' is a null text
     property

   * Don't fail catastrophically if unable to open the default font

   * Fixed method of truncating maximized window dimensions

   * Fixed the match-window `skip-winlist' and `skip-tasklist'
     properties I'd stupidly broken

   * Fixed bug of trying to edge-flip sticky windows

   * Fixed the `move-workspace-forwards' and `move-workspace-backwards'
     commands

   * Fixed `uniconify-to-current-viewport' option

   * Fixed infinite-loop bug in `delete-empty-workspaces' command

   * Avoid generating empty sub-menus when reading GNOME menu tree


0.22
====

   * Window frame parts are now first-class lisp data objects, allowing
     a higher level of control by themes

     New or updated functions to access frame parts directly:

     `frame-part-get', `frame-part-put', `frame-part-window',
     `frame-part-x-window', `frame-part-position',
     `frame-part-dimensions', `frame-part-state', `map-frame-parts',
     `refresh-frame-part', `rebuild-frame-part'

     Other new functions: `refresh-window'

   * Updated `sawmill-themer' to emit code to tell the window manager
     that the theme is editable. The wm adds an `Edit Theme...' option
     to the Customize menu when appropriate

   * The `call-after-property-changed' function can now be given a list
     of properties to monitor (James Antill)

   * New function `call-after-state-changed', monitors a list of window
     states (i.e. things like iconified, shaded, ...) and calls a
     function when any of them change. The `window-state-change-hook'
     now has a second argument (apart from the window), the list of
     symbolic states that changed (James Antill)

   * Add support for `skip-winlist' and `skip-tasklist' to the window
     matcher when GNOME support is enabled (Ben Liblit)

   * Integrated patch supporting multi-byte languages from the Kondara
     MNU/Linux distribution (forwarded by Yukihiro Nakai)

   * Translation updates: de (Christoph Rauch), es (I�aki Garc�a
     Etxebarria), gl (Jesus Bravo Alvarez), ja (Satoru Sato), tr (F�tih
     Demir)

   * Use a combo box in the configurator to display the list of themes
     (it gets given scroll bars when too big for the screen)

   * Changed timestamp handling--attempt to detect and discard
     timestamps that arrive out of order

   * Added option controlling title justification to `mono' theme

   * Filter <Scroll_Lock> modifiers as well as the other lock modifiers
     (Matt Krai)

   * Fixed `display-message' function update background color, and
     gracefully handle invalid color specifiers (Matt Krai)

   * Reverted to grabbing events on the client window, not the frame,
     avoids some awkward-to-fix-correctly problems

   * Load i18n support _before_ other libraries; ensures that some
     static strings get translated

   * Fixed annoying flicker when cycling to an iconified window


0.21.1
======

   * Fixed problem causing spurious double-click events to be reported
     in click-to-focus mode

   * Fixed problem with binding `-Off' events in the `window-keymap'.
     (Matt Krai)

   * Don't try to grab non-existent keys (which actually grabs the
     entire keyboard)

   * Fixed some problems with reading unusually formatted GNOME menu
     entries


0.21
====

   * Frame pattern definitions (foreground, background, font) may now
     take alists as well as the old single object, or list of four
     objects.  Possible states are `inactive', `focused',
     `highlighted', `clicked', `inactive-highlighted',
     `inactive-clicked'. (Last two are new)

   * New program `sawmill-themer'. A GUI for creating simple themes
     (those without any parts defined by functions)

   * New module `gnome-int', loaded by `sawmill-defaults' if GNOME is
     around, sets up some GNOME'ish things

   * New command `toggle-single-window-mode'

   * Translation updates/additions: de (Christoph Rauch), es (I�aki
     Garc�a Etxebarria), nl (Han-Wen Nienhuys)

   * Optional removal of tooltips after time period (Morgan Schweers)

   * `Any-RET' completes interactive move or resize

   * Work around Imlib's annoying image caching, `make-image' now
     _always_ returns a new image

   * Fixed gc bug when building window frames

   * Fixed X property handling on Alpha's (George Lebl)

   * Make `call-command' accept closures

   * Make `(cursor . nil)' work correctly in frame definitions

   * Grab on frame window, not client window (ICCCM compliant)

   * Fixed the "uniconify to current workspace" option

   * Added window-maximization predicates to the gaol


0.20
====

   * Rewrote workspace handling--windows can now appear on multiple
     workspaces, with each instance having different properties
     (position, size, whatever...)

     Create new window instances by using the `copy-to-next-workspace',
     `copy-to-previous-workspace', and `copy-to-workspace:N' commands.
     Merge instances by moving them to the same workspace, or using the
     `delete-window-instance' command

   * Added linear-viewport commands--indexing two-dimensional virtual
     workspace areas by one-dimensional values (adapted from code by
     Eric Kidd)

   * Rewrote tooltips; especially how they're removed (also, don't show
     null keymaps)

   * Added new match-window property `ungrouped'. Means to put the
     window in a group on its own

   * Translation additions/updates: da (Wandy Christiansen), en_GB
     (me), es (I�aki Garc�a Etxebarria), fr (Christian Gillot), gl
     (Jesus Bravo Alvarez)

   * Fixed bug of not refocusing unshaded windows

   * Fixed bug of not notifying windows of their actual position after
     placing them

   * Fixed bug when grabbing Hyper-modified buttons

   * Fixed the focus-flickering when moving windows opaquely

   * Fixed the `commandp' function when applied to autoload stubs

   * Fixed typo in `gnome-logout' command (Jens Finke)

   * Fixed `raise-window-and-pass-through-click' command to pass
     <click2>, etc, events through to frame parts

   * Fixed infinite-regress bug when reading GNOME menu entries
     (`Type=directory', but actually a file)

   * Fixed bug when showing window-move position with snapped movement
     (adapted from merlin@merlin.org)

   * Fixed bug when matching null text properties


0.19
====

   * Added tooltips for window frames (disabled by default)

   * Added `Grab...' button to match-windows dialogue, grabs the value
     of an X property from a window

   * Support for creating cursors from bitmaps, and for changing the
     colors of cursors

   * Internationalized all strings in the configurator

   * New functions: `frame-part-get', `server-grabbed-p',
     `forget-button-press', `resize-window-with-hints',
     `window-in-workspace-p', `windows-share-workspace-p'

   * New window properties: `never-focus', `raise-on-focus'

   * New pseudo-property (for window matching): `size', in terms of the
     window's size hints

   * Message catalogue additions/updates: Galician (Jesus Bravo
     Alvarez); Danish (Birger Langkjer)

   * Don't ignore initial state property of windows

   * Option to control height of drawn bevels (Chris Hanson)

   * More logical method of drawing diagonal gradients (Chris Hanson)

   * Fixed typo when looking for i18n theme README files (Jesus Bravo
     Alvarez)

   * Fixed `popup-apps-menu' command (G�rard Milmeister)

   * Fixed `define-frame-class' when creating keymaps

   * Fixed conversion of old-style `(set ...)' custom types

   * Fixed `raise-window-and-pass-through-click' command to
     pass-through subsequent clicks

   * Fixed problems when grabbing/ungrabbing customized keymaps

   * Fixed screen corruption when doing wireframe moving and
     `move-resize-raise-window' is set

   * Hacked around window-order problem when sticky windows exist


0.18
====

   * General subsystem for matching windows to properties as they're
     created. Allows matching on one or more of the window's X
     properties (e.g. name, class, etc...), and then setting any number
     of window manager properties as a result. See the `Matched Windows'
     customize group

   * Removed all `auto-FOO-alist' and `BAR-windows-re' variables,
     they're obsoleted by the general match-windows mechanism

   * Respect window's size hints when maximizing (both to see if the
     window is maximizable, and to truncate the maximized dimensions to
     an integral number of rows and columns)

   * Show actual colors in the configurator, not just their names

   * Added a new directory to the theme search path:
     `PREFIX/share/sawmill/themes'. Use this for system-wide themes
     (don't use the version specific directory)

   * Included a new theme `mono'

   * Deprecated the `show-message' function, replaced by
     `display-message' with a better calling interface; also displays
     multi-line strings

   * Deprecated the menu "expand variables when first in list"
     behaviour. Instead expand variables when the list is dotted to
     them, as is done for functions

   * Support the `Hyper' modifier, prefix is `H-'

   * In the configurator, look for i18n'd theme README files (Yukihiro
     Nakai)

   * Added option to disable the ability to grab a second edge while
     resizing (`resize-add-edges')

   * Included Danish message catalogue (Kenneth Christiansen)

   * Renamed `fixed-position' property as `sticky-viewport', and
     `focus-proxy-click' as `focus-click-through'

   * When evaluating mouse events, look in the window that the pointer
     was in when the button was pressed, not where the pointer
     currently is

   * Fixed bug where focus gets totally lost after closing a Motif
     application that has grabbed the keyboard

   * Fixed (again) the problems when handling remapped windows; also
     should be more ICCCM-compliant

   * Fixed typos in one-dimensional maximisation (G�rard Milmeister)

   * Fixed the logic deciding when it's necessary to switch workspaces
     after merging an empty one

   * Fixed interactive placement showing the window when edge-flipping
     (but it still doesn't work properly, rubber band traces are left)

   * Removed flicker when focusing already-focused windows


0.17
====

   * First version to use lexically scoped librep. This enables themes
     to run in a "safe" environment, but all existing themes will need
     to be ported; other language changes include the use of a single
     symbol namespace, and scheme-like function call semantics

   * Support for internationalization of messages and run-time
     documentation; an en_GB catalogue is the only translation
     currently, so please send me .po files for your native languages!

     New option `--disable-nls' to disable i18n

   * New functions `call-after-property-changed' and
     `gtkrc-call-after-changed' to allow themes to receive these events
     (hooks are now off-limits to themes)

   * New command `raise-window-and-pass-through-click'; bind it to a
     mouse button in the `window-keymap' to get the "raise window on
     click" behaviour that seems popular

   * New commands to move windows incrementally: `slide-window-X' and
     `slide-group-X' for X one of: `left', `right', `up', `down'

   * New commands to control `ignored' property of windows (Julian
     Missig)

   * New commands to toggle GNOME skip-winlist and skip-tasklist
     properties of windows

   * Respect window gravity with program-specified window placement
     (<merlin@merlin.org>)

   * Fixed a memory leak in the `stacking-order' function

   * Fixed the `bevel-image' function (Scott Sams)

   * Never look in the focused window's keymap by default with mouse
     events

   * Hacked around the "need an X11 connection to compile" misfeature

   * Fixed bug in `gnome-menu' code when GNOME binaries aren't in the
     first $PATH item; also accept non-alphanumeric language codes

   * Fixed interactive window placement (again)

   * Rewrote obscure documentation for some custom options

   * Fixed bug when grabbing events with `AnyModifier' and a specific
     button


0.16
====

   * Support window groups, both as defined by applications, and
     defined by the user (either interactively through the window's
     menu, or via the `auto-group-alist' and `persistent-group-ids'
     variables).

     For most commands working on single windows, there's also one
     operating on the group that the current window is a member of.
     (With the notable exception currently of moving windows.) There's
     also options controlling whether (de)iconification operates on
     windows or groups

   * Improved GNOME menu support--merge duplicate sub-menus, scan PATH
     for `gnome-share-directory', also look in `/etc/X11/applnk' for
     menu entries

   * Option to control whether edge-flipping flips viewports or
     workspaces (`edge-flip-type')

   * New hook `after-framing-hook': called whenever a window's frame is
     changed or recalibrated

   * New window placement mode: `first-fit-or-interactive'

   * Variables specifying common cursor shapes: (`move-cursor-shape',
     `resize-cursor-shape', `select-window-cursor-shape')

   * Fix interactive placement

   * Fix problem of window losing focus when `cycle-windows' only finds
     a single window; also, abort immediately if there's no windows to
     cycle through at all

   * Fix how the `WM_NORMAL_HINTS' property is read after it's been
     updated

   * Fix `maximize-fill' functions to respect the
     `maximize-ignore-when-filling' option

   * Fix interactive move/resize aborting if keyboard is already grabbed

   * Ungrab the keyboard as well as the pointer before popping menus


0.15
====

   * Changed how themes are loaded from tar files--the tar file must
     now contain a directory with the same name as the theme; it's this
     directory that stores the data files

   * Allow viewport edge-flipping to be enabled by the customization
     system, also enable flipping while moving windows

   * Unified the method of marking which windows should be avoided when
     maximizing, and which windows should be avoided when using the
     fitted placement methods. Set the `avoid' property instead of the
     `maximize-avoid' property; new functions `window-avoided-p' and
     `avoided-windows'; new regexp `avoided-windows-re'

   * New command `delete-empty-workspaces'

   * Default theme is now `microGUI'

   * When resizing only one edge of a window, moving the pointer past
     one of the perpendicular edges grabs that edge also

   * Only the first three buttons focus a window in click-to-focus mode

   * Changed behaviour of `window-id' and `window-frame-dimensions'
     functions. Replaced `query-last-pointer' function by
     `query-button-press-pointer'

   * New hooks: `while-moving-hook', `while-resizing-hook'

   * Notice when `WM_TRANSIENT_FOR' property changes

   * More bug fixes to the maximization code, mainly for efficiency;
     also make first-fit placement work from top-left again

   * Fix bug when matching events with `Any' modifier as well as other
     modifiers

   * Fix bug in `window-outside-viewport-p' (Andreas Degert)

   * Fix bug in `sawmill-client --' with long inputs

   * Fix bug when matching windows with session data--`SM_CLIENT_ID' or
     `WM_COMMAND' _has_ to match

   * Fix bugs when passive grabbing non-button-press pointer events


0.14
====

   * Rewrote window-maximization, many new options

   * New option `resize-by-frame-class', when enabled (the default),
     the resized window edges are chosen to match the class of the
     clicked frame part (i.e. matching the cursor shape)

   * Load GNOME support code automatically if it looks like GNOME is
     being used

   * Create unix-domain sockets in `/tmp'

   * New hooks: `window-moved-hook', `window-resized-hook',
     `after-initialization-hook', `shape-notify-hook'.

   * Improved how menus are displayed; the window-ops menu is shown by
     ButtonPress not ButtonRelease events

   * Refocus most-recently-focused window when switching viewport

   * Added `centered' placement style

   * Added symbol-completion to readline-based client

   * Fix bug of not noticing WM_NORMAL_HINTS property changes; follow
     the window's maximum size hints

   * Fix bug of not reframing windows when they change from unshaped to
     shaped, or vice versa


0.13
====

   * New option to only highlight frame parts when their window is
     focused (`highlight-when-unfocused')

   * Typing `ESC' while moving/resizing a window cancels the operation,
     restoring the original geometry

   * New session management hook `sm-after-restore-hook'

   * New function `set-frame-part-value'--makes customizing the
     `frame-part-classes' variables easier

   * Support for loading themes from tar files; needs librep 0.7

   * Fix bug when allocating colors (choosing an incorrect cached color)

   * Fix image tiling in frame part backgrounds

   * Handle shifted keysyms when passive grabbing

   * Fix another race condition when active grabbing

   * Fix `_WIN_CLIENT_LIST' property not being set properly (both
     missing windows immediately after they're adopted, and of
     intentionally skipping ignored windows)

   * Fix some problems with viewports when exiting/restarting

   * Fix broken stacking of windows after they're mapped

   * Prevent smart window placement blowing up when large numbers of
     windows are open/opened (throttle back to random placement when the
     event queue is too large, as well as trying to prune the search
     space)


0.12
====

   * Remember most recently focused windows on each workspace, activate
     that window after changing workspaces; also, try to preserve focus
     when moving windows between workspaces

   * Option to disable auto-raise while cycling through windows
     (`cycle-disable-auto-raise'); option to restrict cycling to the
     current viewport (`cycle-all-viewports')

   * Option `lock-first-workspace' is now enabled by default, and
     prevents both the first and last interesting workspaces being moved
     inwards

   * Added readline support to the client program, pass
     `--with-readline' option to configure (from Christopher P Goller
     <goller@eng.utah.edu>)

   * Added shaped-transient frame to microGUI theme

   * New frame part attribute `below-client'

   * Release passive grabs when unadopting windows

   * When no window has the focus, the `root-window-keymap' is searched
     for key-press events

   * Fix bug when binding to the unix-domain socket

   * Fix focus sometimes being lost when the focused window is destroyed

   * Fix bug when reading GNOME menu entries without `Type' fields

   * Fix bug when removing title or border of `shaped-transient' window
     types (make the window completely unframed)

   * Fix bug when shading a transient window with `decorate-transients'
     enabled

   * Fix some bugs when placing windows that are almost as big or
     bigger than the screen

   * Fix some race-conditions between wm-generated and client-generated
     map/unmap/reparent events

   * Fix infamous "jerky pointer" bug, this will also make overlapping
     shaped frame-parts display correctly

   * Fix bug where `cycle-windows' could leave a window originally
     under the pointer that's unfocused, drawn as though it is focused


0.11
====

   * New option `lock-first-workspace', prevent the first workspace
     from being deleted when it's empty

   * New option `ignore-window-input-hint', to always give windows the
     focus, whether they say they will accept it or not

   * New options when cycling windows: `cycle-warp-pointer' and
     `cycle-focus-windows'

   * Restore the old method of setting the focus, should fix bug of
     losing focus totally when switching to a new workspace


0.10
====

   * Implemented virtual workspaces, bind to the `move-viewport-X' and
     `move-window-X' commands (for X being `left', `right', `up', or
     `down')

   * Added a new theme: `microGUI' by Ryan Lovett
     <ryan@ocf.berkeley.edu>, based on the QNX Photon screenshots

   * Added a `Grab key' button in the bindings widget, replaces the
     current binding with the next pressed key

   * Lisp module to load the GNOME menus and use them to replace the
     applications menu. Add `(require 'gnome-menu)' to your
     `~/.sawmillrc' file to load it

   * Network server is disabled by default (since it can provide a
     security hole if X access control is disabled); re-enabled the old
     unix domain socket code (see the FAQ for more details)

   * Only give the input focus to windows that actually want it

   * New option to keep transient windows above their parents
     (`transients-above-parents')

   * New option to control how the workspace boundary is handled when
     moving windows between workspaces (`workspace-send-boundary-mode')

   * New commands `send-to-workspace:X' for X from 1 to 9

   * While windows are hidden or shaded, unmap the client (for ICCCM
     compliance)

   * Slightly different method of handling destroyed clients, hopefully
     results in fewer annoying error messages

   * Support X installations without X11R6 session management (by not
     doing any session management)

   * Don't ask the session manager to save our environment

   * Fix bug where a window is destroyed/unmapped while it's being
     resized or moved

   * Fix bug where window can still be auto-raised even if it's been
     defocused

   * Fix problems when `--prefix' option has a trailing slash

   * Now handles client windows being reparented by a third party (i.e.
     swallowing apps)


0.9
===

   * The first-fit and best-fit algorithms are now much more
     intelligent, e.g. instead of falling back to random placement when
     a window can't be placed without overlapping an existing window,
     they will attempt to minimize this degree of overlapping

   * The `foreground' property of each frame part may now be an image
     instead of a piece of text

   * New theme `smaker', uses the foreground images capability to do a
     somewhat WindowMaker-like theme (with the absolute-e images). This
     theme is extensively customizable--all images, colors, dimensions,
     etc...

   * Use Imlib's fuzzy color matching for all color allocation; this
     should help on `PseudoColor' visuals

   * Added an `xterm' command to launch an xterm

   * Improved the bindings customization widget layout; added a `Copy'
     button to insert a copy of the current binding

   * Added `next-workspace-row' and `previous-workspace-row' commands.
     Together with the `workspace-columns' variable these mimic a 2d
     desktop

   * Removed the `cycle-through-workspaces' option, there's now
     `workspace-boundary-mode'--one of `stop', `wrap-around' or
     `keep-going'

   * Added option to include ignored windows when edge snapping
     (`move-snap-ignored-windows')

   * Fix race condition between startup of sawmill and gmc; sawmill now
     has earlier priority

   * Fix seg fault when running out of color cells while generating a
     window frame

   * Fix bug where the window-workspace mapping wasn't reloaded from
     saved sessions

   * Fix cancel/revert problems in bindings widget

   * Fix problems binding to shifted keys when using the XKEYBOARD
     extension and XFree86

   * Be ICCCM compliant when a client requests to be moved

   * Fix crash when tiling small images into large images

   * Fix bug where windows could be snapped totally off-screen

   * Fix bug when windows change their `override_redirect' attribute
     while unmapped

   * Fix bug associated with WordPerfect's menu window


0.8
===

   * First attempt at best-fit window placement (doesn't really work
     properly yet...)

   * Added a customization option to focus windows when they're
     un-iconified (`focus-windows-on-uniconify')

   * Fix bug in click-to-focus mode where the click is only passed
     through to the client window, not to any local bindings of the wm

   * Don't leave windows unframed if there's an error in the user's
     startup files

   * Fix bug in `preallocated-workspaces' option

   * Don't place windows off-screen in first-fit mode


0.7
===

   * Added stack-based window cycling, bound to `M-TAB' by default.
     Hold <Meta>, keep pressing <TAB> until the correct window is
     reached, then let go of <Meta>.

   * Added first-fit window placement (a.k.a smart-placement)

   * Completed first stage of workspace rewrite--shouldn't go ballistic
     when windows are removed anymore

   * Added `override-frame-part-classes' variable--allows all frame
     properties to be overridden on a per-class basis

   * Click-to-focus now accepts any button and any modifiers

   * Don't snap to gmc icons or panels

   * Added an `auto-window-type-alist' variable mapping window names to
     border types

   * New variables `eval-modifier-events' and `eval-key-release-events'
     to allow catching these types of keyboard events, disabled by
     default

   * Added functions for actively grabbing the keyboard

   * Removed the long names of the keyboard modifiers, only the single
     character modifiers are left

   * If no alt modifier, set it to the same as meta; new variables
     `alt-keysyms' and `meta-keysyms' describe the virtual modifier
     assignments

   * Fix bug when handling shaped frame parts--it was possible to go
     into a long enter-, leave-notify loop when the old shape was
     cleared

   * Fix bug where opaque resizing with snap-to-edges on moved the
     window as well as resizing it

   * Fix bug when raising the only managed window

   * Fix bug where very small client windows got weirdly shaped frames


0.6
===

   * Define the standard "classes" of frame parts (i.e. things like
     close button, title, left border, etc...) then allow the state of
     members of these classes to be set in one place (the
     `frame-part-classes' variable). This should ensure that different
     themes have the same feel (but a feel that may be customized by the
     user)

   * Allow frame parts to be removed if possible (if they have the
     `removable' property). Nothing makes use of this yet

   * Added window-shading, double-click button1 on the title bar

   * Created a sawmill capplet for the GNOME control center. Use the
     `--enable-capplet' configure option to build it

   * First attempt at a technical manual (very quickly written, so
     probably some inaccuracies)

   * In the `gtk' theme, draw bevels on window decorations

   * Use spin-buttons in the configurator to enter numbers

   * Add option `focus-proxy-click' controlling whether to pass the
     focus-inducing button-press event to the underlying window (in
     click-to-focus mode)

   * Changed the bindings in window borders, it's now the more usual
     button1 to resize, button2 to move

   * When clicking and dragging windows, ensure that the clicked frame
     part stays clicked until the button is released

   * If in click-to-focus mode, and there's no parent window to focus
     when the focused window is closed, focus the topmost window (not
     the window under the pointer as in the other focus modes)

   * Changing window frames is _much_ less ugly, no flicker at all!

   * Try to optimise window restacking some more

   * Sped up opaque window moving when the position display is enabled

   * Preserve iconified state across restarts

   * Optimise updating the shape of an unframed window (this stops gmc
     icons flashing annoyingly)

   * Fix bugs in click-to-focus mode where some windows were
     un-focusable

   * Fix bug where cycling through windows in click-to-focus mode
     didn't focus the activated window

   * Fix bug where comparing sawmill lisp objects caused a crash

   * Fix bug where initiating a resize in the middle of the window
     didn't allow any of the edges to be moved

   * Fix bug where changing the "decorate transients" option didn't
     alter any existing transient windows

   * Fix bug where iconifying a sticky or ignored window gave no way of
     reclaiming it--these windows now appear at the end of the window
     menu


0.5
===

   * Now does session management. The scheme is extensible, arbitrary
     Lisp modules can save and restore window state due to their own
     functionality (using the `sm-window-save-functions' and
     `sm-restore-window-hook' hooks). See `lisp/workspace.jl' for an
     example

   * Displays window position or dimensions whilst interactively moving
     or resizing a window (`move-show-position',
     `resize-show-dimensions')

   * Mechanism for setting frame styles on a per-window basis (this was
     always possible, just not easy). The `auto-frame-style-alist'
     variable associates window name regular expressions with frame
     styles.  Also, the `window-ops-menu' has a new submenu with all
     possible styles

   * New option `preallocated-workspaces', the number of workspaces to
     create at startup

   * Window-workspace mapping is preserved through restart (as long as
     the GNOME hints are enabled)

   * Theme directories may contain a short `README' file that will be
     displayed in the configuration tool

   * Changed the custom file to `~/.sawmill/custom' instead of
     `~/.sawmill-custom'. The old file will be moved to the new
     location if it exists

   * Install `sawmill-menu' under `libexec' since it shouldn't be run
     manually

   * Option in `gradient' theme to create full-sized gradient images,
     trading memory for quality

   * Workaround the flicker when raising windows

   * Changed most of the `menus' and `custom' customize options into
     normal variables (they're not particularly intuitive)


0.4
===

   * Frame parts can now be highlighted when the mouse is over them,
     also they "un-click" and "re-click" as the pointer leaves and
     re-enters their window. ButtonRelease bindings are only activated
     when the mouse is in the window at the time

   * Frame part backgrounds can now be rendered on-the-fly using the
     new `renderer' property in frame definitions. This property is a
     function called with args `(IMAGE STATE)'; it should draw a
     background into IMAGE for the specified state (`nil', `focused',
     `highlighted' or `clicked')

   * New theme `gtk'. This reads the default GTK style and uses the
     associated colors and pixmaps to decorate windows. It doesn't try
     to handle engine-based themes. It should automatically detect when
     the default style changes (if changed by the GNOME control
     center). Do `sawmill-client -c gtk-reload-style' in the shell to
     reload the style manually

   * Functions for drawing color gradients and bevels into images. The
     new `gradient' theme uses these and on-the-fly rendering to do
     `afterstep'-like window titles

   * Configurator changes: use a paned widget to separate the list of
     groups from the settings (stops their relative sizes changing),
     allow each group to be customized separately, either through a new
     set of root-submenus or the commands `customize:GROUP' for each
     GROUP.

   * Changed the way that "themes" are organised, each theme now gets
     its own directory, which must include a `theme.jl' or `theme.jlc'
     script to initialise a frame-style of the same name as the
     directory. While this script is being evaluated the image path is
     set so that the theme can load any images stored in its directory.

     Also created the variable `theme-load-path' containing the list of
     directories searched when trying to load a theme. By default it
     contains two directories: `~/.sawmill/themes/' and
     `PREFIX/share/sawmill/VERSION/themes'.

   * Resizing now chooses the direction to resize the window in by the
     initial position of the pointer in relation to the window. The
     window is divided into a 3x3 grid, the pointer must be in one of
     the outer rectangles to resize in that direction

   * New commands `select-workspace:X' for X between 1 and 9

   * Support multiple depths, or layers, of windows

   * It's now possible to move the current workspace up or down the
     list of all workspaces

   * New option `-c COMMAND' to `sawmill-client'; invokes the named
     interactive function

   * When an app asks for no title and no border, give it what it
     wants--use the new `unframed' window type

   * The maximize button works

   * Option to control placement of transient windows
     (`place-transient-mode')

   * Changing the frame style preserves the original window stacking
     order

   * Added documentation strings for most built-in functions

   * Fix bug of evaluating both KeyPress _and_ KeyRelease events

   * Fix bug of making the shape mask of unshaped client windows too big

   * Fix bug where already-handled BadWindow errors were being reported

   * Fix bug where the `window-ops-menu' could be displayed from one
     window but then affect a different window

   * Fix bug where click-to-focus doesn't work for new windows

   * Fix bug where deleting the last workspace selected the first, not
     the new last workspace

   * Fix bug where changing a colormap when no window is focused causes
     a segfault

   * Fix bug where iconifying a window may leave it in the clicked
     state after it's uniconified

   * Fix Caps_Lock and Num_Lock modifiers interfering with bindings

   * Fix accessing X properties on 64-bit architectures

   * Fix bug where pointer may be left grabbed after moving a window


0.3a
====

   * Support the maximized GNOME window states

   * Where available, show documentation strings of commands in the
     configurator

   * Improve the method of handling clicks in frame-parts

   * Fix asynchronous client-server protocol

   * Fix interactive window moving/resizing (don't leave traces of the
     rubber-band, stop the window initially "jumping" to the pointer)


0.3
===

   * Implemented window maximization

   * Added support for snapping to window edges when interactively
     moving windows (`move-snap-edges' and `move-snap-epsilon')

   * First attempt at handling a subset of the Motif and OpenLook
     window hints

   * Removed the `sloppy-focus' variable, it's replaced by
     `focus-mode'. This can currently be one of `enter-exit' (normal
     focus follows pointer), `enter-only' ("sloppy" focus) or `click'
     (click to focus)

   * When resolving pointer events, scan the `keymap' property of the
     window under the pointer, not the focused window (as with keypress
     events)

   * The `sawmill-client' program can now communicate inter-host, since
     it uses X properties not raw sockets

   * New hook `before-exit-hook', called immediately before shutting
     down

   * Rewrote the GNOME support as a Lisp module

   * Placing windows interactively now works

   * Fixed the bug on Solaris where deleting windows could cause a
     segmentation fault


0.2
===

   * Added a user-customization system, inspired by Emacs' customize
     facility. Invoke this through the `sawmill-ui' program, or from
     the `Customize...' entry in the main menu. All changes are stored
     in the Lisp script `~/.sawmill-custom'

   * Selected windows may now be raised (`raise-selected-windows')

   * It's possible to prevent the mouse pointer being warped to
     selected windows (`warp-to-selected-windows')

   * The `brushed-metal' and `simple' themes now define all four
     standard frame types

   * Frame themes are now stored in a separate directory
     (`PREFIX/share/sawmill/VERSION/lisp/themes') so that the list of
     all available themes can be made automatically

   * The frame colors of the `simple' frame style can now be customized
     (`simple-normal-color' and `simple-active-color')

   * The `sawmill-defaults.jl' script enables GNOME compliance
     unconditionally (since it has no ill-effects even if GNOME isn't
     being used)

   * Transient windows can be given the same frames as normal windows
     (`decorate-transients')

   * Newly-displayed transient windows can be automatically given the
     focus if their parent window is focused (`transients-get-focus')

   * Any newly-displayed windows can be automatically given the input
     focus (`focus-windows-when-mapped')

   * The `foreground', `background' and `font' attributes of each frame
     part may now refer to a function

   * Fixed the window-move bug whereby the first motion event was
     discarded

   * Fixed the bug where windows may be placed partially off the root
     window, even if they needn't be

   * Fixed the shaped frame parts bug (they didn't work)

   * Miscellaneous other bug-fixes


0.1
===

First proper release