forked from sashavasko/afterstep-devel
-
Notifications
You must be signed in to change notification settings - Fork 0
/
NEW
1355 lines (1192 loc) · 72.2 KB
/
NEW
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
version 2.2.11 release
* new WarpPointer feel option to make pointer warping on viewport change
switcheable. Contributed by Chris Nix.
* added SkipPager database flag to exclude windows from the Pager's
view
version 2.2.9 release
* Menu Mini Pixmaps will no longer be loaded if MenuMiniPixmaps is set 0
in look.
* WinTabs is now capable of grouping similarly named tabs together to
eliminated repeating patterns. See GroupTabs and GroupNameSeparator options.
version 2.2.8 release
* Implemented possibility to define exact size of the virtual desktop,
which may not be exact multiply of the screen size.
* Automatic detection and execution of text editors and web browsers in term
if they require it.
* Added functionality to ascompose to allow for constantly updating display
of stuff; command line should be:
script.sh | ascompose -I --endless --click-timeout 0 -q -f -;
* Implemented functionality to setup slicing of frame sides and titlebar
elements.
* Added functionality to ascompose to set XROOTPMAP property while
changing root background.
* Added UnderPointer placement type to center window under mouse pointer on
map.
* Added BlurSize option to MyStyles for blurring of transparent background.
Use like so: BlurSize 10x20 will set horizontal blur to 10 pixels and
vertical to 20.
version 2.2.7 release
* Added -bc or --border-color cmd line option to WinTabs module to determine
what color to use while rendering border around swallowed windows.
By default the Back color of focused MyStyle will be used.
* Added DontCoverDesktop feel flag to disable colored cover to come up during
different prolonged operations.
version 2.2.6 release
* Implemented ShowHints option in WinList allowing user to specify contents
of displayed balloons. Supported options are : Name,IconName,ResClass,ResName
or any combination of these.
version 2.2.5 release
* new policy for window groups - if a group leader or an oldest window
in the group is raised - whole group is raised. If any window in the
group get's moved to a different desktop - whole group is moved.
Example of a group of a windows is GIMP and pretty much any GTK app.
* new policy for transients(Dialogs) handling - all transients are stacked
above its owner with newest transient on top of the others.
If any transient is raised - all other transients and the owner are
raised as well. If any transient, or an owner is moved to another desk -
all other transients for this owner and owner will be moved as well.
* New ShowHints option to Wharf determining what is shown in the balloon:
possible options are Name, Comment and Exec, or any combination of these.
* Wharf now withdraws similar to older aftersteps -
if clicked on top portion - withdraws to a top corner, if clicked on lower -
to bottom corner, left - left, right - right.
* New options in WinList config : NoCollides, AllowCollides and NoCollidesSpacing
These cause WinList to auto magically adjust it's size to avoid covering
windows matching patterns in NoCollides. AllowCollides ovverrides NoCollides.
NoCollidesSpacing determines amount of free space to leave between WinList and
NoCollides windows. Note that this works only in one dimention - if RowsFirst
then in horizontal, otherwise in vertical.
* added menus for different layouts of Wharf, WinList and Pager.
* cleanups in Desktop/Pictures menu.
* Implemented fast JPEG thumnail loading using built-in libJpeg functionality.
* added support in Wharf to load items from DesktopEntries - Two new unctions:
CategoryTree "name" and DesktopEntry "name".
version 2.2.4 release
* SVG image format support using librsvg
* implemented menu balloons. When it is enabled in look ballons will be shown for
items that have attached comments (in .desktop files ) and Background pixmap
previews will show when item is selected.
* allowed for localized text in menu entries, generated from .desktop files.
* added FolderReference setting in .include files to facilitate the above
localization.
* major cleanup and improvement of the main menu structure.
* new look.Smooth
version 2.2.3 release
* added <then><else> and <unless> tags handling
* added <if> asxml tag to conditionally execute stuff
* added <set> tag to asxml to be able to set variables to evaluated
expressions in xml scripts
* Implemented new option for MyStyle - Overlay <type> <"other_mystyle">
* Implemented support for TextureMenuItemsIndividualy 0 - which is
same background for all menu items
* implemented feature to be able to suppress text labels in WinList
* implementing themability of the folder icons in menus
* implemented tips for menu.
* added functionality to allow for specifying entire popups in menu entry files
* added submenu to Desktop to be able to toggle some menu options off/on
* implemented *WharfStretchBackground flag to wharf config - upon
which wharf's background is rendered similarly to menu when
TextureMenuItemsSeparately is not set
* added defaults syntax to WinList config.
* WinList can now read its options from look/feel in addition to its own file.
version 2.2.1 release
* Disabled GTK and KDE applications colorization by default - edit
base config to re-enable it
version 2.2.0 release
* added xscreensaver to menu as a screensaver.
* added menu for automated editing of AS config files. ASRun checks
if file exists in private directory, and copies it over from shared
if its not.
*Added support for fullscreen windows.
*Made possible application of the colorscheme to KDE and GTK apps.
*Added pretty icons to menu
*Updated menu to use systemwide desktop categories.
*Added WinList option to enable icons shown next to window name :
ShowIcon
ScaleIconToTextHeight
IconSize
IconAlign
IconLocation
*Added balloon options for text distance from the border
BalloonTextPaddingX
BalloonTextPaddingY
*Added Wharf option
*WharfFiolderOffset
* Added Wharf MyStyles
*WharfOddTile
*WharfFocusedOddTile
*Added functions :
ExecBrowser
ExecEditor
SignalReloadGTKRCFile
KIPCSendMessageAll
Fullscreen
SmallMiniPixmap
LargeMiniPixmap
* Added Base config settings :
BrowserCommand
EditorCommand
gtkrcPath
gtkrc20Path
NoKDEGlobalsTheming (flags to disable updated to kdeglobals)
* Changed behaviour of ToggleLayer to simply increase or descrease layer
of the window
* Added Category setting to .include files in startmenu to be able to
iunclude desktop category from systemwide .desktop list.
* new tool ASRun to run arbitrary command using AfterStep.
version 2.0.5 release
* Added ReverseOrderHorizontal and REverseOrderVertical to
windowbox flags
* ButtonBevel, ButtonAlign, ButtonIconSpacing look options added
to allow for better configuration of iconic window button look.
* menu will not include any unavailable items by default. To keep them
in menu - you have to add .include file with option ShowUnavailable
set in it.
* Added MinipixmapSize <Width> <Height> to look config to set maximum
size of menu minipixmaps
* Added TitleVSpacing and TitleHSpacing to MyFrame to allow for
changing distance from tbar border to text.
* Added InheritDefaults to MyFrame so to be able to init MyFrame to
whatever defaults should be - in case you only want to make minor
alteration to default MyFrame.
* Added IgnoreConfig to database settings to allow for disabling of
handling of ConfigRequests coming from client.
* Added --pattern <pattern> to WinTabs module to allow for setting
pattern from cmd line.
* Lots of WinTabs fixes and improvements.
* Added SwallowWindow "name" <module_name> built-in to allow for
selection of a window to be swallowed by module, such as WinTabs.
version 2.0.4 release
* Desktop Cover tint is now same as Base color from selected colorscheme.
* added look.Breeze contributed by ziph.
* updated FAQs and moved them under ASDocGen generated tree.
version 2.0.3 release
* added several MyFrame features :
TitleFHue, TitleUHue, TitleSHue, TitleFocusedHue, TitleUnfocusedHue,
TitleStickyHue - to allow altering Hue of the titlebar on focus/unfocus.
TitleFSaturation, TitleUSaturation, TitleSSaturation,
TitleFocusedSaturation, TitleUnfocusedSaturation, TitleStickySaturation -
to allow altering stauration of the titlebar on focus/unfocus events.
LeftBtnAlign, RightBtnAlign to allow for different align of the right
and left blocks of title buttons.
See look.Unity for sample usage of that.
version 2.0.2 release
* added include_ordered <order_id> <path>
keyword to menu .include syntax - allow including menu trees so that they
all get sorted down at the bottom of menu.
* libs can now compile as DLLs under CYGWIN.
version 2.0 release
*Reimplemented Ident module
*Added bunch of docs to ASDocGen and incorporated code from asimbrowser to
generate HTML catalogue of installed files.
*Added keyboard shortcuts to menus :
Esc or Left or Backspace - exit menu,
Enter or Right - run selected item or go to submenu
Up, Down - select item
A-Z,a-z,0-9 select item with hotkey or a first item that starts with
that letter.
version 2.0 beta5
*Added Utility for autogeneration and maintenance of documentation - ASDocGen.
It is capable of generating docs in plain text, HTML, PHP, XML and NROFF formats,
from DocBook XML source, and comments embedded in source code.
*Animate module is now back in bussiness.
*Added TextStyles 7, 8 and 9 to implement different styles of outlined text
*Added ability to hilite focused Wharf tile using MyStyle "*WharfFocusedTile"
*Added ability to sort items in WinList menu in alphabetical order using
WinListSortOrder 1 (in feel)
*Added ability to remove icons from WinList menu using WinListHideIcons (in feel).
version 2.0 beta4
* Reverted cursor settings back to feel file.
* Used ascompose as new Banner module
* Added to ascompose ability to process files tag by tag, allowing for animation.
* Added to look config :
[DontAnimateBackground 0|1]
[CoverAnimationSteps <steps count>]
[CoverAnimationType <type>]
DontAnimateBackground disables non-blocking root background changing of
full-screen backgrounds, that looks like slow animation. This is recommended
for fast machines.
CoverAnimationType determines what type of animation to use while removing
blue-tinted desktop cover - use values from 0 to 13.
CoverAnimationSteps is the number of animation steps to take while removing
blue-tinted cover window.
version 2.0 beta3
* Added WinTabs module - to swallow windows with Class matching specified
pattern and arrange them in single window using tabs.
version 2.0 beta2
* Added CursorFore and CursorBack settings to look to adjust color of the mouse
cursor
* Cursor settings now must be in look and not in feel.
* Improved algorithm behind saving desktop state and restoring it on startup.
To enable it add the following line to autoexec :
Function "WorkspaceState"
* new <color domain="ascs" name="name" argb="color_value"/> tag to ASImage XML.
Could be used to define color aliases at the beginning of the xml script.
version 2.0 beta1
1. General
AfterStep had been almost entirely rewritten in this new incarnation.
Here is the short list of new architectural changes:
1.1. New high performance and high quality image handling engine has
been developed to fulfill GUI needs. It includes different image
transformations, such as scaling, tiling, cropping, blurring,
blending of arbitrary number of layers, in-memory image compression,
support for 12 different file formats, including its own parser/writer
of XPM files, capable of achieving much better performance then
default libXpm. Supported image formats are :
XPM, PNG, JPEG, XCF(GIMP image format), PPM, PNM, BMP, ICO,
CUR, GIF, TIFF, and XML scripts. Where XML scripts allow for user to
create script of transformations to be performed on the image at the
time when it gets loaded.
libAfterImage also provides support for TTF fonts ( using libfreetype )
and smoothed standard X raster fonts.
1.2. Window hints handling has been rewriten and reorganized, and most of the
Extended WM specs has been incorporated, as well, as better support for
Motif, ICCCM and old GNOME hints has been implemented.
1.3. All the GUI rendering code has been aggregated into libAfterStep
and now all the GUI elements are rendered using consistent approach
in every module and every part of the AfterStep proper. From now on
interface is build from so called TBars. TBar is rectangular area
that may be focused(hilited) or unfocused and pressed or unpressed.
Each TBar has the following structure :
- the background of the TBar, which is defined by MyStyle and state
of the bar - there are two MyStyles assigned to each TBar - one
for focused and one for unfocused state.
- tiles of the TBar. Tiles are smaller features that gets arranged
inside the bar according to its size, alignment, position and
order. Tiles could be static icons ( cannot be pressed );
blocks of buttons - each having two shapes - pressed and normal;
Text labels; Empty space tiles.
There could be upto 256 tiles, each residing on one of the cells
in 16x16 grid. Several tiles could reside in single cell, in
which case they get superimposed on top of each other.
- bevel of the TBar. When TBar is rendered all of its tiles are
superimposed on top of its background, and resulting image
will have a 3D bevel drawn on it, using colors from same
MyStyle as used for background. Bevel could be switched off
partially or entirely. Respective configuration options has
been added where appropriate. When TBar is pressed - its
bevel is inverted.
When TBar is rendered all of its elements gets superimposed on top
of each other using one of 13 blending methods supported by
libAfterImage, with default being simple alphablending. See
MyFrame configuration for more details. This is refrred to as
"Composition Method".
1.4. Due to the fact that AfterStep is using compression to store
images in memory - there is no need to have separate root
background handler, and so asetroot has been discontinued and
afterstep proper now does all the root background loading.
You could simply copy-and-paste your asteroot config into your
look file. This has an added advantage of simplifing theme support
for root backgrounds.
1.5. Significant work has been done to create libAfterConf which
provides easy means for reading configuration options, and
facilitates implementation of any configuration tool.
1.6. Some work has been done to improve support for themes. AfterStep
proper and modules now load configuration files is this order :
1 - base config
2 - look, feel, menu, database, autoexec and module specific config
3 - theme file
4 - theme override file
theme override file is needed so that user may have a list of
critical options that he/she does not want to be changed by any
theme.
What is missing here is comprehensive theme building tool.
1.7. AfterStep now make extensive use of X shaped extensions ( where
available ) Everything could be shaped now - titlebars, Pager,
Wharf, etc. To make some element shaped - MyStyle with BackPixmap
type 125 or 126 should be used.
1.8. Menus are now treated same as regular windows. They could be
configured in database file using preset Style "ASMenu" to have
different titlebar buttons, frame decorations, stickiness, etc.
MenuPinOn has been changed to be just another titlebar button,
with PinMenu function assigned to it.
1.9. AfterStep no longer uses fixed scheme of 5 titlebar buttons on
each side, and order of buttons could be configured in look. There
is still limitation to have no more then 10 buttons total.
2. Look options
2.1. Overview
Frame decoration settings have been greately enhanced. It is now
fashioned after MyStyle option and is called MyFrame. It allows
for several named structures, with inheritance and ability to
assign different structure to different apps using the database.
As mentioned above root background settings has been moved into
look - hence MyBackground and Desk back as look options.
MyStyle has far greater number of BackPixmap types reflecting
new functionality in libAfterImage.
CompositionMethod setting has been added to different aspects
of look.
New options for more flexible placing of titlebar buttons has
been added.
Balloons now support both X and Y offset as well as MyStyle
instead of simple back and fore colors.
2.2. Window frame decorations (aka MyFrame)
Each window is surrounded by so-called frame decoration. each
frame decoration could be built from 9 TBars:
1) Main Titlebar with icons on left, label in the middle and
icons on right. Label may also have special underlying image -
so called Title Background. Ordering of this elements is set by
TitleButtonOrder setting ( see below ).
2) 4 frame sides. Each of this have wixed width that is
determined by SideSize setting or image size if SideSize is
ommited. Second dimension of the TBar changes to match the
size of the window.
3) 4 frame corners. Each of this have both fixed width and
height, as determined by CornerSize setting or image size.
Each of above elements is rendered by generating background
using respective MyStyle, and then overlaying images/buttons
and text on top of it. Default overlaying is done using
composition method alpha-blend. In case of main Titlebar that
could be changed. Bevel is then drawn on top of the image as
specified in respective setting.
MyFrame contains
complete instructions as to how window should be decorated :
*******************************************************************
MyFrame "name"
[Inherit "name"]
#traditional form :
[North <pixmap>]
[East <pixmap>]
[South <pixmap>]
[West <pixmap>]
[NorthEast <pixmap>]
[NorthWest <pixmap>]
[SouthEast <pixmap>]
[SouthWest <pixmap>]
#alternative form :
[Side North|South|East|West|Any [<pixmap>]] - if pixmap is ommited -
empty bevel will be drawn
[NoSide North|South|East|West|Any]
[Corner NorthEast|SouthEast|NorthWest|SouthWest|Any <pixmap>] - if pixmap is ommited -
empty bevel will be drawn
[NoCorner NorthEast|SouthEast|NorthWest|SouthWest|Any]
#new settings :
[TitleUnfocusedStyle <style>]
[TitleFocusedStyle <style>]
[TitleStickyStyle <style>]
[FrameUnfocusedStyle <style>]
[FrameFocusedStyle <style>]
[FrameStickyStyle <style>]
[TitleBackground <pixmap>] - gets overlayed over background and under the text
[LeftBtnBackground <pixmap>] - gets overlayed over background and under the left block of buttons
[LeftSpacerBackground <pixmap>] - gets overlayed over background between left block of buttons and text label
[RightSpacerBackground <pixmap>] - gets overlayed over background between right block of buttons and text label
[RightBtnBackground <pixmap>] - gets overlayed over background and under the right block of buttons
#additional attributes :
[SideSize North|South|East|West|Any <WIDTHxLENGTH>] - pixmap will be scaled to this size
[SideAlign North|South|East|West|Any Left,Top,Right,Bottom,HTiled,VTiled,HScaled,VScaled]
- default is HTiled,VTiled
[SideBevel North|South|East|West|Any None|[Left,Top,Right,Bottom,Extra,NoOutline]]
[SideFocusedBevel North|South|East|West|Any None|[Left,Top,Right,Bottom,Extra,NoOutline]]
[SideUnfocusedBevel North|South|East|West|Any None|[Left,Top,Right,Bottom,Extra,NoOutline]]
[SideStickyBevel North|South|East|West|Any None|[Left,Top,Right,Bottom,Extra,NoOutline]]
- default bevel is Right,Bottom
[CornerSize NorthEast|SouthEast|NorthWest|SouthWest|Any <WIDTHxHEIGHT>]
[CornerAlign NorthEast|SouthEast|NorthWest|SouthWest|Any Left,Top,Right,Bottom,HTiled,VTiled,HScaled,VScaled]
- default is HTiled,VTiled
[CornerBevel NorthEast|SouthEast|NorthWest|SouthWest|Any None|[Left,Top,Right,Bottom,Extra,NoOutline]]
[CornerFocusedBevel NorthEast|SouthEast|NorthWest|SouthWest|Any None|[Left,Top,Right,Bottom,Extra,NoOutline]]
[CornerUnfocusedBevel NorthEast|SouthEast|NorthWest|SouthWest|Any None|[Left,Top,Right,Bottom,Extra,NoOutline]]
[CornerStickyBevel NorthEast|SouthEast|NorthWest|SouthWest|Any None|[Left,Top,Right,Bottom,Extra,NoOutline]]
- default bevel is Right,Bottom
[TitleBevel None|[Left,Top,Right,Bottom,Extra,NoOutline]
[TitleFocusedBevel None|[Left,Top,Right,Bottom,Extra,NoOutline]
[TitleUnfocusedBevel None|[Left,Top,Right,Bottom,Extra,NoOutline]
[TitleStickyBevel None|[Left,Top,Right,Bottom,Extra,NoOutline]
- default bevel is Right,Bottom
[TitleAlign None|[Left,Top,Right,Bottom]
- default is Left
[TitleBackgroundAlign None|[Left,Top,Right,Bottom,HTiled,VTiled,HScaled,VScaled,LabelSize]
[LeftBtnBackAlign None|[Left,Top,Right,Bottom,HTiled,VTiled,HScaled,VScaled,LabelSize]
[LeftSpacerBackAlign None|[Left,Top,Right,Bottom,HTiled,VTiled,HScaled,VScaled]
[RightSpacerBackAlign None|[Left,Top,Right,Bottom,HTiled,VTiled,HScaled,VScaled]
[RightBtnBackAlign None|[Left,Top,Right,Bottom,HTiled,VTiled,HScaled,VScaled,LabelSize]
[TitleCompositionMethod testure_type]
[TitleFocusedCompositionMethod testure_type]
[TitleUnfocusedCompositionMethod testure_type]
[TitleStickyCompositionMethod testure_type]
- default is 131 ( alpha-blending )
~MyFrame
*******************************************************************
MyFrame allows different MyStyles to be used for titlebar and
frame decorations. If any of those are ommited - default
setting from FWindowStyle/UWindowStyle/SWindowStyle will be
used.
Important:
If you use semi-transparent images for frame sides -
they will be overlayed on top of MyStyle generated background,
so if you want it to be overlayed over root background - you
should use MyStyle with BackPixmap set to 129 or 149.
Also note that unless you use MYStyle with BackPixmap
126 and 125 - frame decorations will not be shaped. Likewise if
you want frame part to have only the shape of the image, you
specified, with no background at all - use MyStyle with
BackPixmap set like so :
BackPixmap 126 empty.xpm
Where empty.xpm is 1x1 completely transparent image (supplied
as desktop/icons/common/empty.xpm ).
To identify side/corner it is possible to use abbreviations,
such as: N, NW, SW, etc.
All the CompositionMethod settings must have one of the
BackPixmap types from MyStyles ( ie 130-143 )
Align setting may have different meaning/capabilities for
different items. When applied to text - it simply aligns text
to sides mentioned. When applied to image - such as title
background or frame side pixmap - it also specifies if image
should be tiled, scaled or left same size. Make sure that you
use HTiled,VTiled or HScaled,VScaled for frame sides -
otherwise images on they will not be resized to match window
size (this is also a feture :).
To center item specify Align to include both sides. For
example :
Align Left,Right
will center item horizontally.
Note that TitleBackground option allows you to specify an
image to be used under titlebar label in addition to the MyStyle.
This was done for better shaped titlebars. You may have MyStyle
to be completely transparent shape, while TitleBackground some
non-transparent image, and that will provide better visibility
for the titlebar text.
*******************************************************************
[DefaultFrame "name"]
*******************************************************************
Allows specifying one of the MyFrames defined as
DefaultFrame causing AfterStep to use it for all the windows,
except those that have it redefined in database using Frame
keyword.
2.3. Root background settings ( aka MyBackground )
*******************************************************************
[KillBackgroundThreshold <size>]
*******************************************************************
Here <size> is the maximum number of pixels in root
background image. If image is bigger that this - it will be
unloaded from memory when desktop is switched and image is no
longer in use. Use it on systems with low memory.
*******************************************************************
[DeskBack desk# "background"]
*******************************************************************
Specifies what background to use for desk#. "background"
can be either image filename in double-quotes, or the name
of background definition (see below).
*******************************************************************
MyBackground "background_name"
background_option
~MyBackground
*******************************************************************
Specifies the beginning of a background definition. The
background can be referred to later by background_name.
~MyBackground ends a root background definition. The possible
background_options follow:
*******************************************************************
[Use type "data"]
*******************************************************************
Specifies what to use as the root background. Possible
type values are :
0: load image from the file. In that case "data" should
specify filename. If "data" is ommited the AfterStep
will use default background image file for that desktop
( typically ~/G/L/A/non-configurable/#desk_background )
1: Use MyStyle definition to fill root. In that case "data"
should specify one of the MyStyle names defined in your
look file.
2: Use external application to set root background. "data"
should specify command line options to this external app.
(afterstep is coded by default to use xli. If you wish
to use another application to display the root
background, you need to set the "--with-imageloader"
flag to use that application then recompile AfterStep.)
Note: remaining Background options are valid only for type of 0!
The remaining options will perform transformations on the
source image, in this order:
Cut->Tint->Scale->Align->Pad.
*******************************************************************
Cut geometry
*******************************************************************
will cut piece with specified geometry from the source image.
*******************************************************************
Tint color
*******************************************************************
will tint image with color. Gray60 will make image
lighter, while Gray40 will make image darker. Tinting
it two way !
*******************************************************************
Scale [geometry]
*******************************************************************
scale image to specified geometry. If geometry is omitted
AfterStep will scale it to the screen size.
*******************************************************************
Align [type]
*******************************************************************
it will align resulting image according to type. Possible
values are :
1: - align to the right of the screen
2: - align to the bottom of the screen
3: - align to the bottom-right of the screen
0 or 4: - align to the center of the screen This option
works only in conjunction with the following Pad option.
*******************************************************************
Pad [type color]
*******************************************************************
will pad image if it is smaller then screen
with specified color. Possible type values
are :
1: - pad horizontally and tile vertically
2: - pad vertically and tile horizontally
3: - pad both vertically and horizontally to make the image
the size of the screen.
Note that all the above options with *asetroot appended to them
will work in order to facilitate compatability with old configs.
2.4. MyStyle changes
*******************************************************************
MaxColors dicontinued
*******************************************************************
*******************************************************************
BackPixmap has numerous new types added :
*******************************************************************
2.4.1. Shaped BackPixmap types :
125 - image is scaled to the size of TBar and TBar is
shaped with alpha channel of this image.
126 - image is tiled to fill TBar area and TBar is shaped
with alpha channel of the image
127 - non-shaped scaled image. Works same as 128, but
scales image to fill TBar.
128-130 remain unchanged from old times
131 - tile and alphablend pixmap into underlying root
background.
132 - tile pixmap and tint underlying root background with
it.
133 - tile pixmap and add color values to underlying root
background.
134 - tile pixmap and subtract color values from underlying
root background.
135 - tile pixmap and calculate color difference
from underlying root background.
136 - tile pixmap and darken underlying root background with
it.
137 - tile pixmap and lighten underlying root background
with it.
138 - tile pixmap and screen underlying root background with
it.
139 - tile pixmap and overlay underlying root background
with it.
140 - tile pixmap and combine its hue with underlying root
background.
141 - tile pixmap and combine its saturation with underlying
root background.
142 - tile pixmap and combine its HSV value with underlying
root background.
143 - tile pixmap and underlying root background with
it.
144 - tile pixmap and colorize underlying root background
with it.
145 - tile pixmap and dissipate underlying root background
with it.
146-148 unused.
149 - two way tinting. Similar to 129, but lighter colors
will make underlying root background brighter, while
darker colors will make it darker.
values 150-165 are similar to 130-145, only pixmap is
scaled to fill TBar instead of tiled in it.
2.5. Titlebar buttons
****************************************************************
TitleButtonStyle <val>
****************************************************************
New style value 2 has been added. When 2 is used, then
distance between titlebar edge and titlebuttons is determined
by TitleButtonXOffset and TitleButtonYOffset.
****************************************************************
TitleButtonXOffset <x_offset_val>
TitleButtonYOffset <y_offset_val>
****************************************************************
Determine distance of titlebar buttons from the edge of the
titlebar
****************************************************************
TitleButtonOrder <context_sequence>
****************************************************************
Determines layout of the titlebar. Default is 13579t08642.
2.6. Menu settings
****************************************************************
MenuPinOn <image>
****************************************************************
MenuPinOn is deprecated and AfterStep will reinterpret
it, and it will create new TitleButton using last unused
TitleButton context. It will then assign PinMenu function to
this button. This button will only be shown on titlebars
belonging to menu windows. This button behaves just like any
other TitleButton - for example you can use TitleButtonOrder to
specify where it should go. Problem is you may not know what
context AfterStep had choosen for it. The better way would be
to explicitely define TitleButton, and assign PinMenu to it in
your feel.
****************************************************************
MenuHiTitleStyle "mystyle"
****************************************************************
AfterStep now allows you to specify MyStyle to be used
for titlebar of currently hilighted menu. AS soo as menu goes out
of focus its titlebar will be rendered using MenuTitleStyle.
****************************************************************
MenuSubItemStyle "mystyle"
****************************************************************
AfterStep now includes this new feature: when you select
an item from menu - this item will be marked as recently used,
and next time menu is opened it will show all the recently used
items from its SUBMENU. For exmaple you do :
Menu->Applications->rxvt
Next time you open Main menu - it will display rxvt just ander
Application item with some offset.
It looks much better when this subitems are shown with
different (smaller ) font. To achive that - specify MyStyle
with smaller font using MenuSubItemStyle option in your look
file.
This feature could be turned off or altered by using
RecentSubmenuItems
option in your feel file: set it to 0 to disable feture.
****************************************************************
MenuItemCompositionMethod <130-145>
MenuHiliteCompositionMethod <130-145>
MenuStippleCompositionMethod <130-145>
****************************************************************
This is a funny feature - try it and see how you like different
values :) If you use shades of grey for your item text - you
may not see any difference for some of this values.
2.7. Balloon settings
*******************************************************************
TitleButtonBalloonBorderHilite None|[Left,Top,Right,Bottom,Extra,NoOutline]
*******************************************************************
Defines bevel to be drawn around balloons - replaces BorderWidth
setting.
*******************************************************************
TitleButtonBalloonXOffset <value_in_pixels>
*******************************************************************
Added to complement YOffset setting.
*******************************************************************
TitleButtonBalloonCloseDelay <mlseconds>
*******************************************************************
Determines delay between when balloon is shown and before it
disapears.
*******************************************************************
TitleButtonBalloonStyle "mystyle_name"
*******************************************************************
MyStyle to be used to draw balloon. Note that balloons could be
shaped (BackPixmap 125 and 126 )
3. Feel options :
************************************************************************
EatFocusClick
************************************************************************
When this flag is specified in feel file - AfterStep will "eat" mouse
click, that was used to focus window in ClickToFocus mode. That means that
if you have any function assigned to mouse clicks on the titlebars -
those functions will only be executed if the window is already focused.
************************************************************************
ClickToFocus
************************************************************************
AfterStep will not switch focus following mouse pointer, but instead will
switch it when window is explicitely clicked. This is the same as before.
The only difference is that AfterStep will not Raise window automagically,
unless some other settings are set. Possible way to Raise window on
focusing include:
- set AutoRaise 0 in feel file ( delay of 0 )
- bind mouse clicks to Raise or RaiseLower function in feel file.
- set ClickToRaise flag in feel file.
************************************************************************
FollowTitleChanges
************************************************************************
That will force AfterStep to reread and merge all the hints and
settings from the database files, whenever window changes either its
name or icon name.
************************************************************************
PersistentMenus
************************************************************************
Right now if you try to open a menu when its already opened - that will
cause menu to close. To disable this behaviour and instead pop-up a menu
again - use this setting.
************************************************************************
NoSnapKey <key>
************************************************************************
AfterSTep now has a feature that "snaps" windows to different desktop
features, such as edges of other windows and edge of the screen. To
disable it temorarily you can press and hold Shift key. Use this
setting to request different modifier key instead of Shift.
************************************************************************
ScreenEdgeAttraction <distance>
************************************************************************
Defines distance from which window will be attracted to the screen
edge, while being interactively moved/resized.
************************************************************************
WindowEdgeAttraction <distance>
************************************************************************
Defines distance from which window will be attracted to the other
window's edge, while being interactively moved/resized.
************************************************************************
DontRestoreFocus
************************************************************************
Will not restore focus to the recently focused application wile
switching desktops.
************************************************************************
WindowBox
************************************************************************
This is whole new thing to allow better window placement policy :
WindowBox "some_name"
Area WxH+X+Y
Virtual
MinWidth width
MinHeight height
MaxWidth width
MaxHeight height
FirstTry SmartPlacement|RandomPlacement|Tile
ThenTry RandomPlacement|Cascade|Manual
VerticalPriority
ReverseOrder
Desk desk
MinLayer min_layer
MaxLayer max_layer
~WindowBox
WindowBox defines area on screen/virtual desktop into which window will
be placed on startup.
- Area - defines the confining region.
- Virtual - defines that area is in virtual coordinates.
- MinWidth,MinHeight, MaxWidth,MaxHeight - places restrains on what
size window could be placed in this area.
- FirstTry - strategy to use while placing window. FirstTry strategy
will attempt to place window in empty space only.
- ThenTry - backup strategy to use when there is no suitable empty
space.
- VerticalPriority, ReverseOrder alter behaviour of some strategies -
Tile and Cascade, from what I remeber.
- Desk - limits effects of this WindowBox to specific desk.
- MinLayer,MaxLayer - limits effects of the WindowBox to windows with
layer value that falls in range.
Note that old SmartPlacement/RandomPlacement has been coopted to be
used for Default windowbox.
************************************************************************
DefaultWindowBox "windowbox_name"
************************************************************************
Window boxes are processed in order they were listed in config. If
suitable windowbox could not be found for the window - then windowbox
named in DefaultWindowBox will be forced.
************************************************************************
RecentSubmenuItems <number_of_items>
************************************************************************
Defines maximum number of recently used submenu items to be listed
under menu item. Set to 0 to disable feature. Default is 4.
3.2. Functions
****************************************************************
BookmarkWindow "name" new_bookmark
****************************************************************
Places a bookmark on the selected window, to be used later on to
get back to that window.
****************************************************************
GoToBookmark ["name" window_bookmark ]
****************************************************************
Focuses window specified by previously placed window_bookmark.
****************************************************************
PinMenu ["name"]
****************************************************************
Pins menu on desktop
****************************************************************
SaveWorkspace "name" file_name
****************************************************************
Write list of presently running applications with its position
and desktop number into specified file. You can run this file
at a later time as a shell script to restore state of the
desktop. Note this does not work for many applications that
does not provide needed ICCCM properties on its windows.
****************************************************************
ChangeTheme "name" file_name
****************************************************************
Sets current theme config file. Such config file may include
settings for look, feel, menu, autoexec and any module.
4. Database options
************************************************************************
NoFrame
************************************************************************
Disabled frame decorations for this window
************************************************************************
Frame "frame_name"
************************************************************************
Enables "frame_name" to be used for decoration of this window
************************************************************************
WindowBox "window_box_name"
************************************************************************
Requires AfterSTep to use specified WindowBox for placement of this
window.
************************************************************************
DefaultGeometry
************************************************************************
Fill force AfterStep to replace parts of window initial placement with
predefined values. For example :
Style "*mozilla*" DefaultGeometry 1024x500
will force mozilla windows (or any windows that have "mozilla" in its
name ) to have initial size 1024x500.
Note that in case of mozilla its usefull to define several Styles so
that you will get different geometries for different dialog boxes, such
as search/download/ etc.
************************************************************************
OverrideGravity gravity
************************************************************************
Some applications (notably xv) has been designed without reading widely
accepted and used standards such as ICCCM. Gravity value is one of
the hints that often gets misplaced by applications. As the result may
exhibit wierd placement behaviour - such as windows moving to the
top-left with each resize or file opened. Try specifying StaticGravity
for such apps. Also some applications do not set gravity correctly. For
example you start an application with geometry +10-10 which means
SouthWestGravity and that should fix position of left and bottom sides
of the window. But window set its gravity to NorthWestGravity instead
and as the result window gets placed further down to the bottom by the
size of the framne decorations. In this cases you can specify whatever
gravity you want and thus override those stupid apps.
Allowed values are :
NorthWest
North
NorthEast
West
Center
East
SouthWest
South
SouthEast
Static
Read more about gravity at :
http://www.freedesktop.org/standards/wm-spec/1.3/html/x362.html
All of the options below are similar to NoPPosition stuff - it either
enables or disables handling of specific ICCCM, MOTIF, etc. properties
that are set on the window by application.
4.2. ICCCM hints handling
************************************************************************
HonorPPosition
************************************************************************
Forces AfterStep to use PPosition hint for this window. PPosition hint
normally means that application has determined its position due to some
of its own configuration settings, and position has not been
explicitely requested on the command line. This setting overrides
NoPPosition setting in feel file.
************************************************************************
NoPPosition
************************************************************************
Opposite of the above. PPosition will be ignored for the matching
window.
************************************************************************
HonorGroupHints
************************************************************************
************************************************************************
NoGroupHints
************************************************************************
************************************************************************
HonorTransientHints
************************************************************************
Will force AfterStep to use transient hint, effectively attaching
window to its parent( placing it on the same layer , etc. )
************************************************************************
NoTransientHints
************************************************************************
Ignore transient hint - window will be treated as an independent
window.
4.2. Motif hints handling
************************************************************************
HonorMotifHints
************************************************************************
************************************************************************