--- /dev/null
+Only in .: Makefile
+diff -u ./afterstep.c /home/malda/code/AfterStep-1.0/afterstep/afterstep.c
+--- ./afterstep.c Wed May 14 17:38:24 1997
++++ /home/malda/code/AfterStep-1.0/afterstep/afterstep.c Sun May 4 11:19:57 1997
+@@ -164,11 +164,6 @@
+ Bool single = False;
+ Bool option_error = FALSE;
+
+-
+- Scr.ButtonType=0;
+- Scr.TitleTextType=0;
+- Scr.TitleTextY=0;
+-
+ #ifdef M4
+ /* Set the defaults for m4 processing */
+
+diff -u ./borders.c /home/malda/code/AfterStep-1.0/afterstep/borders.c
+--- ./borders.c Thu May 15 01:18:03 1997
++++ /home/malda/code/AfterStep-1.0/afterstep/borders.c Thu Mar 20 19:09:21 1997
+@@ -186,7 +186,6 @@
+ {
+ Window w=None;
+ int y, i, x;
+- int z=0;
+ GC ReliefGC,ShadowGC;
+ GC HReliefGC,HShadowGC;
+ Pixel BorderColor,BackColor;
+@@ -359,33 +358,16 @@
+ (expose_win==t->right_w[i]) ||
+ (expose_win == None)) {
+
+- if(Scr.ButtonType==0){ RelieveWindow(t,t->right_w[i],0,0,t->button_height,
+- t->button_height,
+- (PressedW==t->right_w[i]?ShadowGC:ReliefGC),
+- (PressedW==t->right_w[i]?ReliefGC:ShadowGC),
+- BOTTOM_HILITE|RIGHT_HILITE); z=2; }
+-
+-
++ RelieveWindow(t,t->right_w[i],0,0,t->button_height,
++ t->button_height,
++ (PressedW==t->right_w[i]?ShadowGC:ReliefGC),
++ (PressedW==t->right_w[i]?ReliefGC:ShadowGC),
++ BOTTOM_HILITE|RIGHT_HILITE);
+ switch (Scr.button_style[(i*2+2)%10]) {
+ case XPM_BUTTON_STYLE:
+- if((PressedW==t->right_w[i])&&(Scr.ButtonType==1))
+- { /* Pressed! */
+- XShapeCombineMask(dpy, t->right_w[i], ShapeBounding, 0, 0,
+- Scr.dbutton_pixmap_mask[(i*2+2)%10], ShapeSet);
+- XCopyArea(dpy, Scr.dbutton_pixmap[(i*2+2)%10], t->right_w[i],
+- Scr.MaskGC, 0, 0, Scr.button_width[(i*2+2)%10],
+- Scr.button_height[(i*2+2)%10], z, z);
+-
+- }
+- else /* Not Pressed */
+- {
+- if(Scr.ButtonType==1) XShapeCombineMask(dpy, t->right_w[i], ShapeBounding, 0, 0,
+- Scr.button_pixmap_mask[(i*2+2)%10], ShapeSet);
+- XCopyArea(dpy, Scr.button_pixmap[(i*2+2)%10], t->right_w[i],
+- Scr.MaskGC, 0, 0, Scr.button_width[(i*2+2)%10],
+- Scr.button_height[(i*2+2)%10], z, z);
+-
+- }
++ XCopyArea(dpy, Scr.button_pixmap[(i*2+2)%10], t->right_w[i],
++ Scr.LineGC, 0, 0, Scr.button_width[(i*2+2)%10],
++ Scr.button_height[(i*2+2)%10], 2, 2);
+ break;
+ default:
+ afterstep_err( "old button styles should not be used\n",NULL,NULL,NULL);
+@@ -400,27 +382,37 @@
+ if(t->flags & BORDER )
+ {
+ /* draw relief lines */
+- GC rgc,sgc;
+-
+- rgc = onoroff?Scr.HiReliefGC:Scr.StdReliefGC;
+- sgc = onoroff?Scr.HiShadowGC:Scr.StdShadowGC;
+-
+- y = t->frame_height - 2*t->corner_width;
+- x = t->frame_width - 2*t->corner_width +t->bw;
+- SetBottomBackground(t, onoroff);
+
+- RelieveWindow(t,t->side,0,0,x,t->boundary_height,
+- rgc, sgc, 0x0004);
++ y = t->frame_height - 2*t->corner_width;
++ x = t->frame_width - 2*t->corner_width +t->bw;
++ SetBottomBackground(t, onoroff);
++ /*
++ if((flush_expose (t->side))||(expose_win == t->side)||
++ (expose_win == None)) {*/
++
++ RelieveWindow(t,t->side,0,0,x,t->boundary_height,
++ HReliefGC, HShadowGC, 0x0004);
++ /* } */
+ for(i=0;i<2;i++)
+ {
+- RelieveWindow(t,t->corners[i],0,0,t->corner_width,
++ /*
++ if((flush_expose(t->corners[i]))||(expose_win==t->corners[i])||
++ (expose_win == None))
++ {*/
++ GC rgc,sgc;
++
++ rgc = HReliefGC;
++ sgc = HShadowGC;
++
++ RelieveWindow(t,t->corners[i],0,0,t->corner_width,
+ t->corner_width+t->bw,
+ rgc,sgc, corners[i]);
+
+ if(t->boundary_height > 1)
+- RelieveParts(t,i,rgc,sgc);
++ RelieveParts(t,i,rgc,i?rgc:sgc);
+ else
+- RelieveParts(t,i,rgc,sgc);
++ RelieveParts(t,i,sgc,i?sgc:sgc);
++ /* } */
+ }
+ }
+ else /* no decorative border */
+@@ -641,64 +633,9 @@
+ DrawTexturedText(dpy,t->title_w,Scr.WindowFont.font,hor_off,
+ 4,Scr.TitleGradient, t->name, strlen(t->name));
+ } else {
+-
+- if(Scr.TitleTextType==1){
+- if(onoroff)
+- { /* If on, check */
+- tGC = PressedW==t->title_w?Scr.HiFontReliefGC:Scr.HiFontGC;
+- ReliefGC = PressedW==t->title_w?Scr.HiFontShadowGC:Scr.HiFontReliefGC;
+- ShadowGC = PressedW==t->title_w?Scr.HiFontGC:Scr.HiFontShadowGC;
+-
+- }
+- else
+- { /* If Off, then just use Lo */
+- ReliefGC=Scr.LoFontReliefGC;
+- ShadowGC=Scr.LoFontShadowGC;
+- tGC=Scr.LoFontGC;
+- }
+-
+- XDrawString (dpy, t->title_w,ReliefGC,hor_off, Scr.WindowFont.y+Scr.TitleTextY, t->name, strlen(t->name));
+- XDrawString (dpy, t->title_w,ReliefGC,hor_off+1, Scr.WindowFont.y+Scr.TitleTextY, t->name, strlen(t->name));
+- XDrawString (dpy, t->title_w,ReliefGC,hor_off+2, Scr.WindowFont.y+Scr.TitleTextY, t->name, strlen(t->name));
+- XDrawString (dpy, t->title_w,ReliefGC,hor_off+3, Scr.WindowFont.y+Scr.TitleTextY, t->name, strlen(t->name));
+- XDrawString (dpy, t->title_w,ReliefGC,hor_off+4, Scr.WindowFont.y+Scr.TitleTextY, t->name, strlen(t->name));
+-
+- XDrawString (dpy, t->title_w,ReliefGC,hor_off, Scr.WindowFont.y+1+Scr.TitleTextY, t->name, strlen(t->name));
+- XDrawString (dpy, t->title_w,ReliefGC,hor_off, Scr.WindowFont.y+2+Scr.TitleTextY, t->name, strlen(t->name));
+- XDrawString (dpy, t->title_w,ReliefGC,hor_off, Scr.WindowFont.y+3+Scr.TitleTextY, t->name, strlen(t->name));
+- XDrawString (dpy, t->title_w,ReliefGC,hor_off, Scr.WindowFont.y+4+Scr.TitleTextY, t->name, strlen(t->name));
+-
+- XDrawString (dpy, t->title_w,ShadowGC,hor_off+4,Scr.WindowFont.y+2+Scr.TitleTextY, t->name, strlen(t->name));
+- XDrawString (dpy, t->title_w,ShadowGC,hor_off+4,Scr.WindowFont.y+3+Scr.TitleTextY, t->name, strlen(t->name));
+-
+- XDrawString (dpy, t->title_w,ShadowGC,hor_off+4,Scr.WindowFont.y+4+Scr.TitleTextY, t->name, strlen(t->name));
+- XDrawString (dpy, t->title_w,ShadowGC,hor_off+3,Scr.WindowFont.y+4+Scr.TitleTextY, t->name, strlen(t->name));
+- XDrawString (dpy, t->title_w,ShadowGC,hor_off+2,Scr.WindowFont.y+4+Scr.TitleTextY, t->name, strlen(t->name));
+-
+- XDrawString (dpy, t->title_w,tGC,hor_off+2, Scr.WindowFont.y+2+Scr.TitleTextY, t->name, strlen(t->name));
+- }
+- else if(Scr.TitleTextType==2){
+- tGC = (onoroff?Scr.HiFontGC:Scr.LoFontGC);
+- ReliefGC = (onoroff?Scr.HiFontReliefGC:Scr.HiFontReliefGC);
+- ShadowGC = (onoroff?Scr.HiFontShadowGC:Scr.LoFontShadowGC);
+-
+- if(PressedW!=t->title_w)
+- {
+- XDrawString (dpy, t->title_w,ShadowGC,hor_off+1,Scr.WindowFont.y+1+Scr.TitleTextY, t->name, strlen(t->name));
+- XDrawString (dpy, t->title_w,ReliefGC,hor_off+2,Scr.WindowFont.y+2+Scr.TitleTextY, t->name, strlen(t->name));
+- XDrawString (dpy, t->title_w,tGC, hor_off+3,Scr.WindowFont.y+3+Scr.TitleTextY, t->name, strlen(t->name));
+- } else
+-
+- XDrawString (dpy, t->title_w,Scr.HiFontGC,hor_off+1,Scr.WindowFont.y+1+Scr.TitleTextY, t->name, strlen(t->name));
+-
+-
+- }
+- else
+- { /* Default Window Draw */
+- XDrawString (dpy, t->title_w,Scr.FontGC,hor_off,
+- Scr.WindowFont.y+ 4,
+- t->name, strlen(t->name));
+- }
++ XDrawString (dpy, t->title_w,Scr.FontGC,hor_off,
++ Scr.WindowFont.y+ 4,
++ t->name, strlen(t->name));
+ }
+ }
+ #else
+@@ -797,9 +734,8 @@
+ {
+ case 0:
+ seg[0].x1 = t->boundary_width-1;
+- /* used to be -2 */
+ seg[0].x2 = t->corner_width-2;
+- seg[0].y1 = t->corner_width - t->boundary_height+t->bw-1;
++ seg[0].y1 = t->corner_width - t->boundary_height+t->bw;
+ seg[0].y2 = t->corner_width - t->boundary_height+t->bw;
+ break;
+ case 1:
+Only in .: borders.c.rej
+diff -u ./configure.c /home/malda/code/AfterStep-1.0/afterstep/configure.c
+--- ./configure.c Wed May 21 19:53:30 1997
++++ /home/malda/code/AfterStep-1.0/afterstep/configure.c Sat Mar 8 19:43:54 1997
+@@ -1,17 +1,17 @@
+ /****************************************************************************
+ * This module is mostly all new
+- * by Rob Nation
++ * by Rob Nation
+ * Copyright 1993 Robert Nation. No restrictions are placed on this code,
+ * as long as the copyright notice is preserved
+ ****************************************************************************
+ * slightly modified for BowMan
+ * by Bo Yang
+- *
++ *
+ * slightly modified for AfterStep
+ * by Frank Fejes
+- *
++ *
+ ****************************************************************************
+- *
++ *
+ * Configure.c: reads the .steprc or system.steprc file, interprets it,
+ * and sets up menus, bindings, colors, and fonts as specified
+ *
+@@ -30,7 +30,6 @@
+
+ #include <X11/Xproto.h>
+ #include <X11/Xatom.h>
+-
+ #ifdef M4
+ #include <X11/Xmu/SysUtil.h>
+ #endif
+@@ -85,7 +84,7 @@
+ void nocolor(char *note, char *name);
+ int contexts;
+ int mods,func,func_val_1,func_val_2;
+-
++
+ #ifndef NO_PAGER
+ int pager_x=10000,pager_y=10000;
+ #endif
+@@ -97,16 +96,7 @@
+ char *TexMaxcols=NULL;
+ char *TColor=NULL, *IColor=NULL, *MColor=NULL, *UColor=NULL, *SColor=NULL;
+ char *TGColor=NULL;
+-char *TPixmap=NULL,*UPixmap=NULL,*SPixmap=NULL, *MTPixmap=NULL, *MPixmap=NULL, *MTPixmapMask=NULL, *MArrowPixmap=NULL;
+-
+-char hincolor[15];
+-char hircolor[15];
+-char hiscolor[15];
+-char loncolor[15];
+-char lorcolor[15];
+-char loscolor[15];
+-
+-
++char *TPixmap=NULL,*UPixmap=NULL,*SPixmap=NULL;
+ extern void InitTextureData(TextureInfo *info, char *title, char*utitle,
+ char *mtitle, char *menu, char *sticky, char *text);
+ int IconTexType = TEXTURE_BUILTIN;
+@@ -158,7 +148,7 @@
+ {"IconBox", SetBox, (char **)0, (int *)0},
+ {"StickyIcons", SetFlag, (char **)StickyIcons, (int *)0},
+ {"IconFont", assign_string, &Scr.IconFont.name, (int *)0},
+- {"IconTitle", SetFlag, (char **)IconTitle, (int*)0},
++ {"IconTitle", SetFlag, (char **)IconTitle, (int*)0},
+ #ifndef PRUNE
+ {"Icon", SetOneStyle, (char **)&Scr.TheList,(int *)ICON_FLAG},
+ #endif
+@@ -174,13 +164,13 @@
+ {"CirculateSkipIcons",SetFlag, (char **)CirculateSkipIcons, (int *)0},
+
+ #ifndef PRUNE
+- {"NoFocus", SetOneStyle, (char **)&Scr.TheList,
++ {"NoFocus", SetOneStyle, (char **)&Scr.TheList,
+ (int *)NOFOCUS_FLAG},
+- {"NoTitle", SetOneStyle, (char **)&Scr.TheList,
++ {"NoTitle", SetOneStyle, (char **)&Scr.TheList,
+ (int *)NOTITLE_FLAG},
+- {"NoBorder", SetOneStyle, (char **)&Scr.TheList,
++ {"NoBorder", SetOneStyle, (char **)&Scr.TheList,
+ (int *)NOBORDER_FLAG},
+- {"Sticky", SetOneStyle, (char **)&Scr.TheList,
++ {"Sticky", SetOneStyle, (char **)&Scr.TheList,
+ (int *)STICKY_FLAG},
+ {"StaysOnTop", SetOneStyle, (char **)&Scr.TheList,
+ (int *)STAYSONTOP_FLAG},
+@@ -234,7 +224,7 @@
+ {"BackingStore", SetFlag, (char **)BackingStore, (int *)0},
+ {"AppsBackingStore", SetFlag, (char **)AppsBackingStore, (int *)0},
+ {"SaveUnders", SetFlag, (char **)SaveUnders, (int *)0},
+-
++
+ {"ModulePath", assign_string, &ModulePath, (int *)0},
+ #ifndef PRUNE
+ {"Module", executeModule, (char **)0, (int *)0},
+@@ -243,7 +233,7 @@
+ {"TitleBarStyle", assign_string, &TitleStyle, (int *)0},
+ {"TextureTypes", assign_string, &TexTypes, (int *)0},
+ {"TextureMaxColors", assign_string, &TexMaxcols, (int *)0},
+-
++
+ {"TitleTextureColor", assign_string, &TColor, (int*)0}, /* title */
+ {"MenuTextureColor", assign_string, &IColor, (int*)0}, /* menu items */
+ {"UTitleTextureColor", assign_string, &UColor, (int*)0}, /*unfocused title*/
+@@ -252,9 +242,6 @@
+ {"TitlePixmap", assign_string, &TPixmap, (int*)0}, /* title pixmap */
+ {"UTitlePixmap", assign_string, &UPixmap, (int*)0}, /* title pixmap */
+ {"STitlePixmap", assign_string, &SPixmap, (int*)0}, /* title pixmap */
+- {"MenuPixmap", assign_string, &MPixmap, (int*)0}, /* title pixmap */
+- {"MTitlePixmap", assign_string, &MTPixmap, (int*)0}, /* title pixmap */
+- {"MArrowPixmap", assign_string, &MArrowPixmap, (int*)0},
+ {"TextGradientColor", assign_string, &TGColor, (int*)0}, /* title text */
+ {"TexturedHandle", SetTextureFlag, (char **)TexturedHandle, (int *)0},
+ {"TitlebarNoPush", SetTextureFlag, (char **)TitlebarNoPush, (int *)0},
+@@ -267,8 +254,7 @@
+ {"ButtonNoBorder", SetIconFlag, (char **)IconNoBorder, (int *)0},
+ #endif
+ {"TitleTextAlign", SetInts, (char **)&Scr.TitleTextAlign, &dummy},
+- {"TitleButton", SetTitleButton, (char **)1, (int *)0},
+- {"TitleTextMode", SetTitleText, (char **)1, (int *)0},
++ {"TitleButton", SetTitleButton, (char **)1, (int *)0},
+ {"", 0, (char **)0, (int *)0}
+ };
+
+@@ -318,8 +304,8 @@
+ #endif
+ {"", 0,(char **)0}
+ };
+-
+-struct charstring
++
++struct charstring
+ {
+ char key;
+ int value;
+@@ -378,9 +364,9 @@
+ #endif
+
+ /***************************************************************
+- *
++ *
+ * Read a XPM file
+- *
++ *
+ **************************************************************/
+ Pixmap GetXPMTile(char *file)
+ {
+@@ -390,14 +376,14 @@
+ char *path = NULL;
+ Pixmap pix, mask;
+ #ifdef XPM
+-
++
+ path = findIconFile(file, PixmapPath,R_OK);
+ if(path == NULL)return None;
+
+ XGetWindowAttributes(dpy,Scr.Root,&root_attr);
+-/* xpm_attributes.colormap = root_attr.colormap;
++ xpm_attributes.colormap = root_attr.colormap;
+ xpm_attributes.closeness = 40000; /* Allow for "similar" colors */
+- xpm_attributes.valuemask = (XpmReturnPixels | XpmReturnExtensions);
++ xpm_attributes.valuemask = XpmReturnPixels | XpmColormap | XpmCloseness;
+
+ if (XpmReadFileToPixmap(dpy, Scr.Root, path,
+ &pix, &mask,
+@@ -406,7 +392,7 @@
+ return None;
+ }
+ free(path);
+- if (mask!=None)
++ if (mask!=None)
+ XFreePixmap(dpy,mask);
+ #else
+ pix = None;
+@@ -414,42 +400,8 @@
+ return pix;
+ }
+
+-
+-Pixmap GetXPMTileMask(char *file, Pixmap *mask)
+-{
+- XWindowAttributes root_attr;
+- XpmAttributes xpm_attributes;
+- extern char *PixmapPath;
+- char *path = NULL;
+- Pixmap pix;
+-#ifdef XPM
+-
+- path = findIconFile(file, PixmapPath,R_OK);
+- if(path == NULL)return None;
+-
+- XGetWindowAttributes(dpy,Scr.Root,&root_attr);
+-/* xpm_attributes.colormap = root_attr.colormap;
+- xpm_attributes.closeness = 40000; /* Allow for "similar" colors */
+-
+- xpm_attributes.valuemask = (XpmReturnPixels | XpmReturnExtensions);
+-
+- if (XpmReadFileToPixmap(dpy, Scr.Root, path,
+- &pix, mask,
+- &xpm_attributes) != XpmSuccess ) {
+- free(path);
+- return None;
+- }
+- free(path);
+-#else
+- pix = None;
+-#endif
+-
+- return pix;
+-}
+-
+-
+ /*****************************************************************************
+- *
++ *
+ * This routine is responsible for reading and parsing the config file
+ *
+ ****************************************************************************/
+@@ -462,9 +414,9 @@
+ int HomeLen; /* length of Home */
+ #ifdef ENABLE_TEXTURE
+ int icol, mcol, ucol, tcol, scol; /* texture colors */
+- int defcol;
++ int defcol;
+ #endif
+-
++
+ #ifdef M4
+ extern int m4_enable;
+ #endif
+@@ -488,7 +440,7 @@
+ Scr.MouseButtonRoot = NULL;
+ Scr.FuncKeyRoot.next = NULL;
+ Scr.TheList = NULL;
+-
++
+ Scr.DefaultIcon = NULL;
+
+ /* find the home directory to look in */
+@@ -498,7 +450,7 @@
+ HomeLen = strlen(Home);
+
+ if(config_file[0] == '/')
+- {
++ {
+ home_file = safemalloc(strlen(config_file)+1);
+ strcpy(home_file,config_file);
+ }
+@@ -538,13 +490,13 @@
+ * Process the config file through m4 and save the
+ * results in a temp file.
+ */
+-
++
+ afterstep_file = m4_defs(dpy, display_name, m4_options, afterstep_file);
+ fclose(config_fd);
++
++ config_fd = fopen(afterstep_file, "r");
+
+- config_fd = fopen(afterstep_file, "r");
+-
+- if (config_fd == (FILE *) 0)
++ if (config_fd == (FILE *) 0)
+ {
+ perror("Cannot open m4-processed config file\n");
+ exit(1);
+@@ -585,7 +537,7 @@
+ defcol = 32;
+ } else {
+ defcol = 10;
+- }
++ }
+ if (!TexMaxcols) {
+ Textures.Tmaxcols = defcol;
+ Textures.Imaxcols = defcol;
+@@ -601,7 +553,7 @@
+ Textures.Mmaxcols = (mcol >= 0 ? mcol : defcol);
+ Textures.Smaxcols = (scol >= 0 ? scol : defcol);
+ }
+- InitTextureData(&Textures, TColor, UColor, MColor, IColor, SColor,
++ InitTextureData(&Textures, TColor, UColor, MColor, IColor, SColor,
+ TGColor);
+ /* load titlebar pixmaps */
+ if (Textures.Ttype==TEXTURE_PIXMAP) {
+@@ -611,9 +563,9 @@
+ if ((Scr.ForeTitle=GetXPMTile(TPixmap))==None) {
+ printf("couldn't load Titlebar tile pixmap\n");
+ Textures.Ttype = 0;
+- }
++ }
+ }
+- }
++ }
+ if (Textures.Utype==TEXTURE_PIXMAP) {
+ if (UPixmap==NULL)
+ Textures.Utype=0;
+@@ -633,49 +585,16 @@
+ Textures.Stype = 0;
+ }
+ }
+- }
+-
+-
+- if (Textures.Mtype==TEXTURE_PIXMAP) {
+- if (MPixmap==NULL)
+- Textures.Mtype=0;
+- else {
+- if ((Scr.MenuItem=GetXPMTile(MPixmap))==None) {
+- printf("couldn't load Menu Item pixmap\n");
+- Textures.Mtype = 0;
+- }
+- }
+- }
+-
+- if (Textures.Itype==TEXTURE_PIXMAP) {
+- if (MTPixmap==NULL)
+- Textures.Itype=0;
+- else {
+- if (
+- (Scr.MenuTitle =GetXPMTileMask(MTPixmap,&Scr.MenuTitleMask))==None)
+- {
+- printf("couldn't load Menu Titlebar tile pixmap\n");
+- Textures.Itype = 0;
+- }
+- }
+- }
+-
+- if(MArrowPixmap==NULL)
+- Scr.MenuArrow=None;
+- else
+- if((Scr.MenuArrow=GetXPMTile(MArrowPixmap))==None)
+- printf("couldn't load menu arrow pixmap\n", Scr.MenuArrow=None);
+-
+-
++ }
+
+ /* cache textures for ideal cases (types 2 and 3) */
+ if (Textures.Ttype==2 || Textures.Ttype==3) {
+ Scr.ForeTitle = XCreatePixmap(dpy, Scr.Root, Scr.MyDisplayWidth-1,
+ NS_TITLE_HEIGHT, Scr.d_depth);
+ if (Scr.ForeTitle!=None) {
+- if (!DrawHGradient(dpy, Scr.ForeTitle, 0, 0,
++ if (!DrawHGradient(dpy, Scr.ForeTitle, 0, 0,
+ Scr.MyDisplayWidth-1, NS_TITLE_HEIGHT,
+- Textures.Tfrom, Textures.Tto, 1,
++ Textures.Tfrom, Textures.Tto, 1,
+ Textures.Tmaxcols, Textures.Ttype-2)) {
+ XFreePixmap(dpy, Scr.ForeTitle);
+ Scr.ForeTitle = None;
+@@ -713,12 +632,12 @@
+ }
+ }
+ if (Textures.Utype==2 || Textures.Utype==3) {
+- Scr.BackTitle = XCreatePixmap(dpy, Scr.Root, Scr.MyDisplayWidth-1,
++ Scr.BackTitle = XCreatePixmap(dpy, Scr.Root, Scr.MyDisplayWidth-1,
+ NS_TITLE_HEIGHT, Scr.d_depth);
+ if (Scr.BackTitle!=None) {
+ if (!DrawHGradient(dpy, Scr.BackTitle, 0, 0,
+ Scr.MyDisplayWidth-1, NS_TITLE_HEIGHT,
+- Textures.Ufrom, Textures.Uto, 1,
++ Textures.Ufrom, Textures.Uto, 1,
+ Textures.Umaxcols, Textures.Utype-2)) {
+ XFreePixmap(dpy, Scr.BackTitle);
+ Scr.BackTitle = None;
+@@ -727,14 +646,14 @@
+ } else
+ Textures.Utype = 0;
+ }
+-
++
+ if (Textures.Stype==2 || Textures.Stype==3) {
+- Scr.StickyTitle = XCreatePixmap(dpy, Scr.Root, Scr.MyDisplayWidth-1,
+- NS_TITLE_HEIGHT, Scr.d_depth);
++ Scr.StickyTitle = XCreatePixmap(dpy, Scr.Root, Scr.MyDisplayWidth-1,
++ NS_TITLE_HEIGHT, Scr.d_depth);
+ if (Scr.StickyTitle!=None) {
+ if (!DrawHGradient(dpy, Scr.StickyTitle, 0, 0,
+ Scr.MyDisplayWidth-1, NS_TITLE_HEIGHT,
+- Textures.Sfrom, Textures.Sto, 1,
++ Textures.Sfrom, Textures.Sto, 1,
+ Textures.Smaxcols, Textures.Stype-2)) {
+ XFreePixmap(dpy, Scr.StickyTitle);
+ Scr.StickyTitle = None;
+@@ -742,9 +661,9 @@
+ }
+ } else
+ Textures.Stype=0;
+- }
++ }
+ #endif /* ENABLE_TEXTURE */
+-
++
+ /* create pixmaps for buttons */
+ ButtonStyle();
+
+@@ -757,12 +676,12 @@
+
+ /* if edgescroll >1000 and < 100000m
+ * wrap at edges of desktop (a "spherical" desktop) */
+- if (Scr.EdgeScrollX >= 1000)
++ if (Scr.EdgeScrollX >= 1000)
+ {
+ Scr.EdgeScrollX /= 1000;
+ Scr.flags |= EdgeWrapX;
+ }
+- if (Scr.EdgeScrollY >= 1000)
++ if (Scr.EdgeScrollY >= 1000)
+ {
+ Scr.EdgeScrollY /= 1000;
+ Scr.flags |= EdgeWrapY;
+@@ -784,7 +703,7 @@
+ Scr.flags &= ~EdgeWrapY;
+
+ GetColors();
+-
++
+ /* create pixmap for icon button background */
+ IconStyle();
+
+@@ -800,7 +719,7 @@
+
+
+ /*****************************************************************************
+- *
++ *
+ * Copies a text string from the config file to a specified location
+ *
+ ****************************************************************************/
+@@ -809,42 +728,8 @@
+ *arg = stripcpy(text);
+ }
+
+-
+-
+-
+-/****************************************************************************
+- *
+- * Read TitleText Controls
+- *
+- ****************************************************************************/
+-void SetTitleText(char *tline,FILE *fd, char **junk,int *junk2)
+-{
+- int n;
+- int ttype, y;
+- n = sscanf(tline,"%d %d %s %s %s %s %s %s",&ttype,&y,hircolor,
+- hiscolor, hincolor, lorcolor, loscolor, loncolor);
+-
+- if (n != 8) {
+- printf("wrong number of parameters given to TitleText\n");
+- printf("t=%i y=%i 1=%s 2=%s 3=%s 4=%s 5=%s 6=%s\n", ttype,y,hircolor,
+- hiscolor, hincolor, lorcolor, loscolor, loncolor);
+- return;
+- }
+-
+- Scr.TitleTextType=ttype;
+- Scr.TitleTextY=y;
+-}
+-
+-
+-
+-
+-
+-
+-
+-
+-
+ /*****************************************************************************
+- *
++ *
+ * read the button pixmaps
+ *
+ ****************************************************************************/
+@@ -854,7 +739,7 @@
+ XpmAttributes xpm_attributes;
+ Pixmap mask;
+
+-
++
+ XGetWindowAttributes(dpy, Scr.Root, &root_attr);
+ xpm_attributes.colormap = root_attr.colormap;
+ xpm_attributes.closeness = 4000;
+@@ -869,14 +754,14 @@
+ }
+ Scr.button_width[2] = xpm_attributes.width;
+ Scr.button_height[2] = xpm_attributes.height;
+- Scr.button_style[2] = XPM_BUTTON_STYLE;
++ Scr.button_style[2] = XPM_BUTTON_STYLE;
+
+- if (mask!=None)
++ if (mask!=None)
+ XFreePixmap(dpy,mask);
+ }
+
+ if (!Scr.button_pixmap[1]) {
+- if ( XpmCreatePixmapFromData(dpy, Scr.Root, minbutton_xpm,
++ if ( XpmCreatePixmapFromData(dpy, Scr.Root, minbutton_xpm,
+ &Scr.button_pixmap[1], &mask,
+ &xpm_attributes) != XpmSuccess ) {
+ afterstep_err("Can not read minbutton_xpm to buttonstyles",NULL, NULL, NULL);
+@@ -886,16 +771,16 @@
+ Scr.button_height[1] = xpm_attributes.height;
+ Scr.button_style[1] = XPM_BUTTON_STYLE;
+
+- if (mask!=None)
++ if (mask!=None)
+ XFreePixmap(dpy,mask);
+ }
+ }
+
+ /****************************************************************************
+- *
++ *
+ * Read Titlebar pixmap button
+ *
+- ****************************************************************************/
++ ****************************************************************************/
+ void SetTitleButton(char *tline,FILE *fd, char **junk,int *junk2)
+ {
+ #ifdef XPM
+@@ -903,14 +788,14 @@
+ XpmAttributes xpm_attributes;
+ extern char *PixmapPath;
+ char *path = NULL;
++ Pixmap mask;
+ int num;
+ char file[256];
+- char file2[256];
+ int n;
+
+- n = sscanf(tline,"%d %s %s",&num,file,file2);
++ n = sscanf(tline,"%d %s",&num,file);
+
+- if (n < 2) {
++ if (n != 2) {
+ printf("wrong number of parameters given with TitleButton\n");
+ }
+ if (num < 0 || num > 9) {
+@@ -929,7 +814,7 @@
+ xpm_attributes.valuemask = XpmSize|XpmReturnPixels|XpmColormap|XpmCloseness;
+
+ if (XpmReadFileToPixmap(dpy, Scr.Root, path,
+- &Scr.button_pixmap[num], &Scr.button_pixmap_mask[num],
++ &Scr.button_pixmap[num], &mask,
+ &xpm_attributes) != XpmSuccess ) {
+ printf("couldn't read Titlebar button pixmap %s\n", path);
+ free(path);
+@@ -941,34 +826,8 @@
+ Scr.button_style[num] = XPM_BUTTON_STYLE;
+
+ free(path);
+-
+-
+- path = findIconFile(file2,PixmapPath,R_OK);
+- if(path != NULL) {
+- Scr.ButtonType=1; /* Rob's Button Mode - Shaped & Bigger, Must Relieve */
+-
+- XGetWindowAttributes(dpy,Scr.Root,&root_attr);
+- xpm_attributes.colormap = root_attr.colormap;
+- xpm_attributes.closeness = 40000; /* Allow for "similar" colors */
+- xpm_attributes.valuemask = XpmSize|XpmReturnPixels|XpmColormap|XpmCloseness;
+-
+- if (XpmReadFileToPixmap(dpy, Scr.Root, path,
+- &Scr.dbutton_pixmap[num], &Scr.dbutton_pixmap_mask[num],
+- &xpm_attributes) != XpmSuccess ) {
+- printf("couldn't read Titlebar button pixmap %s\n", path);
+- free(path);
+- return;
+- }
+-
+- Scr.button_width[num] = xpm_attributes.width;
+- Scr.button_height[num] = xpm_attributes.height;
+- Scr.button_style[num] = XPM_BUTTON_STYLE;
+- }
+- free(path);
+-
+-
+-
+-
++ if (mask!=None)
++ XFreePixmap(dpy,mask);
+
+ #endif /* XPM */
+ }
+@@ -990,8 +849,8 @@
+ xpm_attributes.valuemask = XpmSize | XpmReturnPixels | XpmColormap | XpmCloseness;
+
+ if(XpmCreatePixmapFromData(dpy, Scr.Root, button_xpm,
+- &Scr.IconBgPixmap, &Scr.IconBgMask,
+- &xpm_attributes) == XpmSuccess ) {
++ &Scr.IconBgPixmap, &Scr.IconBgMask,
++ &xpm_attributes) == XpmSuccess ) {
+ Scr.IconBgWidth = xpm_attributes.width;
+ Scr.IconBgHeight = xpm_attributes.height;
+ Scr.IconBgDepth = Scr.d_depth;
+@@ -1027,9 +886,9 @@
+ }
+
+ /***************************************************************
+- *
++ *
+ * Read a XPM Icon Background from file
+- *
++ *
+ **************************************************************/
+ static int GetXPMIconFile(char *file)
+ {
+@@ -1038,7 +897,7 @@
+ XpmAttributes xpm_attributes;
+ extern char *PixmapPath;
+ char *path = NULL;
+-
++
+ path = findIconFile(file, PixmapPath,R_OK);
+ if(path == NULL) return False;
+
+@@ -1067,9 +926,9 @@
+ }
+
+ /*******************************************************************
+- *
++ *
+ * Make a gradient pixmap for iconized windows background (aka Buttons)
+- *
++ *
+ *******************************************************************/
+
+ static int GetXPMGradient(int from[3], int to[3], int maxcols, int type)
+@@ -1093,7 +952,7 @@
+ if (!DrawHGradient(dpy, Scr.IconBgPixmap, 0, 0, 64,64,
+ from, to, 0, maxcols, type-TEXTURE_HGRADIENT)) {
+ XFreePixmap(dpy, Scr.IconBgPixmap);
+- return 0;
++ return 0;
+ }
+ break;
+ case TEXTURE_VGRADIENT:
+@@ -1101,21 +960,21 @@
+ if (!DrawVGradient(dpy, Scr.IconBgPixmap, 0, 0, 64,64,
+ from, to, 0, maxcols, type-TEXTURE_VGRADIENT)) {
+ XFreePixmap(dpy, Scr.IconBgPixmap);
+- return 0;
+- }
++ return 0;
++ }
+ break;
+ default:
+ return 0;
+ }
+
+- DrawOutline(Scr.IconBgPixmap,64,64);
++ DrawOutline(Scr.IconBgPixmap,64,64);
+ return 1;
+ }
+
+ /*******************************************************************
+- *
++ *
+ * Make a solid color pixmap for iconized windows background (aka Buttons)
+- *
++ *
+ *******************************************************************/
+
+ static int GetSolidXPM(Pixel pixel)
+@@ -1141,7 +1000,7 @@
+ }
+
+ /*****************************************************************************
+- *
++ *
+ * Create pixmap for icon background
+ *
+ ****************************************************************************/
+@@ -1155,9 +1014,9 @@
+
+ #ifdef XPM
+ /* Free resources if this is a restart */
+- if (Scr.IconBgPixmap != None)
++ if (Scr.IconBgPixmap != None)
+ XFreePixmap(dpy,Scr.IconBgPixmap);
+- if (Scr.IconBgMask != None)
++ if (Scr.IconBgMask != None)
+ XFreePixmap(dpy,Scr.IconBgMask);
+ #endif /* XPM */
+
+@@ -1195,7 +1054,7 @@
+ } else {
+ BgColor=GetColor("grey");
+ }
+-
++
+ if (!GetSolidXPM(BgColor)) {
+ afterstep_err("couldn't create Solid Button. Using default.\n",NULL,NULL,NULL);
+ SetBuiltInIconBg();
+@@ -1214,12 +1073,12 @@
+ if (Scr.flags & IconTitle) {
+ XSetForeground(dpy, Scr.IconGC, Scr.HiColors.back);
+ XFillRectangle(dpy, Scr.IconBgPixmap, Scr.IconGC, 1, 1,
+- Scr.IconBgWidth-2,Scr.IconFont.height+2);
++ Scr.IconBgWidth-2,Scr.IconFont.height+2);
+ }
+ }
+
+ /*****************************************************************************
+- *
++ *
+ * Changes a cursor def.
+ *
+ ****************************************************************************/
+@@ -1230,14 +1089,14 @@
+ num = sscanf(text,"%d %d",&cursor_num, &cursor_style);
+ if((num != 2)||(cursor_num >= MAX_CURSORS)||(cursor_num<0))
+ {
+- afterstep_err("Bad cursor in line %s",orig_tline,NULL,NULL);
++ afterstep_err("Bad cursor in line %s",orig_tline,NULL,NULL);
+ return;
+ }
+ Scr.ASCursors[cursor_num] = XCreateFontCursor(dpy,cursor_style);
+ }
+
+ /*****************************************************************************
+- *
++ *
+ * Sets a boolean flag to true
+ *
+ ****************************************************************************/
+@@ -1261,7 +1120,7 @@
+ }
+
+ /*****************************************************************************
+- *
++ *
+ * Reads in one or two integer values
+ *
+ ****************************************************************************/
+@@ -1272,7 +1131,7 @@
+
+
+ /*****************************************************************************
+- *
++ *
+ * Reads in a list of mouse button numbers
+ *
+ ****************************************************************************/
+@@ -1286,15 +1145,15 @@
+ if(next == text) break;
+ text = next;
+ if (*text == ',') text++;
+- if((b > 0) && (b <= MAX_BUTTONS))
++ if((b > 0) && (b <= MAX_BUTTONS))
+ Scr.RaiseButtons |= 1<<b;
+ }
+ Scr.flags |= ClickToRaise;
+ }
+-
++
+
+ /*****************************************************************************
+- *
++ *
+ * Reads Dimensions for an icon box from the config file
+ *
+ ****************************************************************************/
+@@ -1332,25 +1191,25 @@
+ * This routine computes the shadow color from the background color
+ *
+ ****************************************************************************/
+-Pixel GetShadow(Pixel background)
++Pixel GetShadow(Pixel background)
+ {
+ XColor bg_color;
+ XWindowAttributes attributes;
+ unsigned int r,g,b;
+-
++
+ XGetWindowAttributes(dpy,Scr.Root,&attributes);
+-
++
+ bg_color.pixel = background;
+ XQueryColor(dpy,attributes.colormap,&bg_color);
+-
++
+ r = bg_color.red % 0xffff;
+ g = bg_color.green % 0xffff;
+ b = bg_color.blue % 0xffff;
+-
++
+ r = r >>1;
+ g = g >>1;
+ b = b >>1;
+-
++
+ /* pure black: use gray */
+ if( r==0 && g== 0 && b==0)
+ r = g = b = 0x7fff;
+@@ -1363,7 +1222,7 @@
+ nocolor("alloc shadow","");
+ bg_color.pixel = background;
+ }
+-
++
+ return bg_color.pixel;
+ }
+
+@@ -1372,19 +1231,19 @@
+ * This routine computes the hilight color from the background color
+ *
+ ****************************************************************************/
+-Pixel GetHilite(Pixel background)
++Pixel GetHilite(Pixel background)
+ {
+ XColor bg_color, white_p;
+ XWindowAttributes attributes;
+-
++
+ XGetWindowAttributes(dpy,Scr.Root,&attributes);
+-
++
+ bg_color.pixel = background;
+ XQueryColor(dpy,attributes.colormap,&bg_color);
+
+ white_p.pixel = GetColor(white);
+ XQueryColor(dpy,attributes.colormap,&white_p);
+-
++
+ #ifndef min
+ #define min(a,b) (((a)<(b)) ? (a) : (b))
+ #define max(a,b) (((a)>(b)) ? (a) : (b))
+@@ -1397,7 +1256,7 @@
+ bg_color.red = max((white_p.red/5), bg_color.red);
+ bg_color.green = max((white_p.green/5), bg_color.green);
+ bg_color.blue = max((white_p.blue/5), bg_color.blue);
+-
++
+ bg_color.red = min(white_p.red, (bg_color.red*140)/100);
+ bg_color.green = min(white_p.green, (bg_color.green*140)/100);
+ bg_color.blue = min(white_p.blue, (bg_color.blue*140)/100);
+@@ -1406,7 +1265,7 @@
+ #ifdef max
+ #undef max
+ #endif
+-
++
+ if(!XAllocColor(dpy,attributes.colormap,&bg_color))
+ {
+ nocolor("alloc hilight","");
+@@ -1443,17 +1302,17 @@
+ /* black and white - override user choices */
+
+ Scr.MenuColors.back = GetColor(white);
+- Scr.MenuColors.fore = GetColor(black);
++ Scr.MenuColors.fore = GetColor(black);
+ Scr.MenuStippleColors.back = GetColor(white);
+- Scr.MenuStippleColors.fore = GetColor(black);
++ Scr.MenuStippleColors.fore = GetColor(black);
+ Scr.MenuRelief.back = GetColor(black);
+ Scr.MenuRelief.fore = GetColor(white);
+ Scr.StdColors.back = GetColor(white);
+- Scr.StdColors.fore = GetColor(black);
++ Scr.StdColors.fore = GetColor(black);
+ Scr.StickyColors.back = GetColor(white);
+- Scr.StickyColors.fore = GetColor(black);
++ Scr.StickyColors.fore = GetColor(black);
+ Scr.HiColors.back = GetColor(white);
+- Scr.HiColors.fore = GetColor(black);
++ Scr.HiColors.fore = GetColor(black);
+ Scr.StdRelief.back = GetColor(black);
+ Scr.StdRelief.fore = GetColor(white);
+ Scr.StickyRelief.back = GetColor(black);
+@@ -1470,17 +1329,17 @@
+ /* color - accept user choices */
+
+ Scr.MenuColors.back = GetColor(Menuback);
+- Scr.MenuColors.fore = GetColor(Menufore);
++ Scr.MenuColors.fore = GetColor(Menufore);
+ Scr.MenuStippleColors.back = GetColor(Menuback);
+- Scr.MenuStippleColors.fore = GetColor(Menustipple);
++ Scr.MenuStippleColors.fore = GetColor(Menustipple);
+ Scr.MenuRelief.back = GetShadow(Scr.MenuColors.back);
+ Scr.MenuRelief.fore = GetHilite(Scr.MenuColors.back);
+ Scr.StdColors.back = GetColor(Stdback);
+- Scr.StdColors.fore = GetColor(Stdfore);
++ Scr.StdColors.fore = GetColor(Stdfore);
+ Scr.StickyColors.back = GetColor(Stickyback);
+- Scr.StickyColors.fore = GetColor(Stickyfore);
++ Scr.StickyColors.fore = GetColor(Stickyfore);
+ Scr.HiColors.back = GetColor(Hiback);
+- Scr.HiColors.fore = GetColor(Hifore);
++ Scr.HiColors.fore = GetColor(Hifore);
+ Scr.StdRelief.back = GetShadow(Scr.StdColors.back);
+ Scr.StdRelief.fore = GetHilite(Scr.StdColors.back);
+ Scr.StickyRelief.back = GetShadow(Scr.StickyColors.back);
+@@ -1545,7 +1404,7 @@
+ Scr.IconFont.font->ascent+Scr.IconFont.font->descent;
+ Scr.IconFont.y = Scr.IconFont.font->ascent;
+ IconFont = &Scr.IconFont;
+- } else {
++ } else {
+ nofont("fixed: that's bad...");
+ exit(1);
+ }
+@@ -1559,20 +1418,20 @@
+ }
+
+ /****************************************************************************
+- *
++ *
+ * Prints an error message for font loading
+ *
+- ****************************************************************************/
++ ****************************************************************************/
+ void nofont(char *name)
+ {
+ afterstep_err("can't get font %s", name,NULL,NULL);
+ }
+
+ /****************************************************************************
+- *
++ *
+ * Processes a menu body definition
+ *
+- ****************************************************************************/
++ ****************************************************************************/
+ MenuRoot *ParseMenuBody(char *name,FILE *fd)
+ {
+ MenuRoot *mr;
+@@ -1617,7 +1476,7 @@
+ AddToMenu(mr, stripcpy2(pline,1,True), stripcpy2(pline,2,True),
+ ptr2, func,func_val_1,func_val_2, unit_1, unit_2);
+ }
+-
++
+ pline = fgets(newline,(sizeof newline)-1,fd);
+ if(pline == (char *)0)return NULL;
+
+@@ -1631,10 +1490,10 @@
+ }
+
+ /****************************************************************************
++ *
++ * Parses a popup definition
+ *
+- * Parses a popup definition
+- *
+- ****************************************************************************/
++ ****************************************************************************/
+ void ParsePopupEntry(char *tline,FILE *fd, char **junk,int *junk2)
+ {
+ MenuRoot *mr=0;
+@@ -1663,10 +1522,10 @@
+ }
+
+ /****************************************************************************
+- *
++ *
+ * Parses a mouse binding
+ *
+- ****************************************************************************/
++ ****************************************************************************/
+ void ParseMouseEntry(char *tline,FILE *fd, char **junk,int *junk2)
+ {
+ char context[256],modifiers[256],function[256],*ptr;
+@@ -1748,7 +1607,7 @@
+ (func == F_WARP)||(func == F_MODULE))
+ {
+ mi = (MenuItem *)safemalloc(sizeof(MenuItem));
+-
++
+ mi->next = (MenuItem *)NULL;
+ mi->prev = (MenuItem *)NULL;
+ mi->item_num = 0;
+@@ -1770,7 +1629,7 @@
+ mi->val1_unit = 1;
+ mi->val2_unit = 1;
+ }
+-
++
+ temp = Scr.MouseButtonRoot;
+ Scr.MouseButtonRoot = (MouseButton *)safemalloc(sizeof(MouseButton));
+ Scr.MouseButtonRoot->func = func;
+@@ -1802,10 +1661,10 @@
+
+
+ /****************************************************************************
+- *
++ *
+ * Processes a line with a key binding
+ *
+- ****************************************************************************/
++ ****************************************************************************/
+ void ParseKeyEntry(char *tline, FILE *fd,char **junk,int *junk2)
+ {
+ char context[256],modifiers[256],function[256],*ptr;
+@@ -1830,13 +1689,13 @@
+ match_string(func_config,function,"bad key function:",fd);
+
+ /* Make CirculateUp and CirculateDown \ 1take args. by Y.NOMURA */
+-
++
+ if ((func == F_CIRCULATE_UP) || (func == F_CIRCULATE_DOWN)||
+ (func == F_WARP))
+ ptr = stripcpy3(tline,False);
+-
++
+ /* End of addition */
+-
++
+ if((func == F_EXEC)||(func == F_RESTART)||(func == F_MODULE))
+ {
+ ptr = stripcpy3(tline,True);
+@@ -1865,21 +1724,21 @@
+ }
+
+ /****************************************************************************
+- *
++ *
+ * Sets menu/keybinding/mousebinding function to specified value
+ *
+- ****************************************************************************/
++ ****************************************************************************/
+ void set_func(char *text, FILE *fd, char **value,int *junk)
+ {
+ func = (unsigned long)value;
+ }
+
+ /****************************************************************************
+- *
+- * Turns a string context of context or modifier values into an array of
++ *
++ * Turns a string context of context or modifier values into an array of
+ * true/false values (bits)
+ *
+- ****************************************************************************/
++ ****************************************************************************/
+ void find_context(char *string, int *output, struct charstring *table)
+ {
+ int i=0,j=0;
+@@ -1919,11 +1778,11 @@
+ }
+
+ /****************************************************************************
+- *
++ *
+ * Matches text from config to a table of strings, calls routine
+ * indicated in table.
+ *
+- ****************************************************************************/
++ ****************************************************************************/
+ void match_string(struct config *table, char *text, char *error_msg, FILE *fd)
+ {
+ int j;
+@@ -1949,21 +1808,21 @@
+ }
+ }
+
+-
+-
++
++
+
+ /****************************************************************************
+- *
++ *
+ * Generates the window for a menu
+ *
+- ****************************************************************************/
++ ****************************************************************************/
+ void MakeMenu(MenuRoot *mr)
+ {
+ MenuItem *cur;
+ unsigned long valuemask;
+ XSetWindowAttributes attributes;
+ int y;
+-
++
+ /* lets first size the window accordingly */
+ mr->width += 15;
+ if(mr->width2 > 0)
+@@ -1995,7 +1854,7 @@
+ mr->in_use = 0;
+ mr->height = y;
+
+-#ifndef NO_SAVEUNDERS
++#ifndef NO_SAVEUNDERS
+ valuemask = (CWBackPixel | CWEventMask | CWCursor | CWSaveUnder);
+ #else
+ valuemask = (CWBackPixel | CWEventMask | CWCursor);
+@@ -2003,7 +1862,7 @@
+ attributes.background_pixel = Scr.MenuColors.back;
+ attributes.event_mask = (ExposureMask | EnterWindowMask);
+ attributes.cursor = Scr.ASCursors[MENU];
+-#ifndef NO_SAVEUNDERS
++#ifndef NO_SAVEUNDERS
+ attributes.save_under = TRUE;
+ #endif
+ mr->width = mr->width + mr->width2;
+@@ -2014,7 +1873,7 @@
+ (Visual *) CopyFromParent,
+ valuemask, &attributes);
+ XSaveContext(dpy,mr->w,MenuContext,(caddr_t)mr);
+-
++
+ return;
+ }
+
+@@ -2022,23 +1881,23 @@
+ * Procedure:
+ * scanForHotkeys - Look for hotkey markers in a MenuItem
+ * (pete@tecc.co.uk)
+- *
++ *
+ * Inputs:
+ * it - MenuItem to scan
+ * which - +1 to look in it->item1 and -1 to look in it->item2.
+ *
+ ***********************************************************************/
+
+-void scanForHotkeys(MenuItem *it, int which)
++void scanForHotkeys(MenuItem *it, int which)
+ {
+ char *start, *txt;
+
+ start = (which > 0) ? it->item : it->item2; /* Get start of string */
+- for (txt = start; *txt != '\0'; txt++)
++ for (txt = start; *txt != '\0'; txt++)
+ { /* Scan whole string */
+- if (*txt == '&')
++ if (*txt == '&')
+ { /* A hotkey marker? */
+- if (txt[1] == '&')
++ if (txt[1] == '&')
+ { /* Just an escaped & */
+ char *tmp; /* Copy the string down over it */
+ for (tmp = txt; *tmp != '\0'; tmp++) tmp[0] = tmp[1];
+@@ -2046,7 +1905,7 @@
+ }
+ /* It's a hot key marker - work out the offset value */
+ it->hotkey = txt[1];
+- for (; txt[1] != '\0'; txt++)
++ for (; txt[1] != '\0'; txt++)
+ txt[0] = txt[2]; /* Copy down.. */
+ return; /* Only one hotkey per item... */
+ }
+@@ -2071,7 +1930,7 @@
+ * func - the numeric function
+ *
+ ***********************************************************************/
+-void AddToMenu(MenuRoot *menu, char *item, char *item2, char *action,int func,
++void AddToMenu(MenuRoot *menu, char *item, char *item2, char *action,int func,
+ long func_val_1,long func_val_2, char unit_1, char unit_2)
+ {
+ MenuItem *tmp;
+@@ -2092,7 +1951,7 @@
+ tmp->prev = menu->last;
+ }
+ menu->last = tmp;
+-
++
+ tmp->item = item;
+ if (item != (char *)0)
+ {
+@@ -2162,7 +2021,7 @@
+ menu->width2 = width;
+ if((width==0)&&(tmp->strlen2>0))
+ menu->width2 = 1;
+-
++
+ tmp->item_num = menu->items++;
+ }
+
+@@ -2181,7 +2040,7 @@
+ MenuRoot *NewMenuRoot(char *name)
+ {
+ MenuRoot *tmp;
+-
++
+ tmp = (MenuRoot *) safemalloc(sizeof(MenuRoot));
+ tmp->name = name;
+ tmp->first = NULL;
+@@ -2191,7 +2050,7 @@
+ tmp->width2 = 0;
+ #ifdef ENABLE_TEXTURE
+ tmp->titlebg = None;
+- tmp->itembg = None;
++ tmp->itembg = None;
+ #endif
+ tmp->w = None;
+ return (tmp);
+@@ -2227,8 +2086,8 @@
+ if ((keysym = XStringToKeysym(name)) == NoSymbol ||
+ (keycode = XKeysymToKeycode(dpy, keysym)) == 0)
+ return;
+-
+-
++
++
+ XDisplayKeycodes(dpy, &min, &max);
+ for (i=min; i<=max; i++)
+ if (XKeycodeToKeysym(dpy, i, 0) == keysym)
+@@ -2253,17 +2112,17 @@
+ tmp->val2_unit = 100;
+ else
+ tmp->val2_unit = Scr.MyDisplayHeight;
+-
++
+ tmp->menu = mr;
+ }
+ return;
+ }
+
+ /****************************************************************************
+- *
++ *
+ * Loads a single color
+ *
+- ****************************************************************************/
++ ****************************************************************************/
+ Pixel GetColor(char *name)
+ {
+ XColor color;
+@@ -2271,11 +2130,11 @@
+
+ XGetWindowAttributes(dpy,Scr.Root,&attributes);
+ color.pixel = 0;
+- if (!XParseColor (dpy, attributes.colormap, name, &color))
++ if (!XParseColor (dpy, attributes.colormap, name, &color))
+ {
+ nocolor("parse",name);
+ }
+- else if(!XAllocColor (dpy, attributes.colormap, &color))
++ else if(!XAllocColor (dpy, attributes.colormap, &color))
+ {
+ nocolor("alloc",name);
+ }
+@@ -2287,11 +2146,11 @@
+ afterstep_err("can't %s color %s", note,name,NULL);
+ }
+ /****************************************************************************
+- *
++ *
+ * Copies a string into a new, malloc'ed string
+ * Strips leading spaces and trailing spaces and new lines
+ *
+- ****************************************************************************/
++ ****************************************************************************/
+ char *stripcpy(char *source)
+ {
+ char *tmp,*ptr;
+@@ -2311,10 +2170,10 @@
+ ptr[len]=0;
+ return ptr;
+ }
+-
++
+
+ /****************************************************************************
+- *
++ *
+ * Copies a string into a new, malloc'ed string
+ * Strips all data before the first quote and after the second
+ *
+@@ -2337,13 +2196,13 @@
+ if(!tab_sensitive)
+ while((*ptr!='"')&&(*ptr != 0))
+ {
+- ptr++;
++ ptr++;
+ count++;
+ }
+ else if(tab_sensitive==1)
+ while((*ptr!='"')&&(*ptr != 0)&&(*ptr!='\t'))
+ {
+- ptr++;
++ ptr++;
+ count++;
+ }
+ else if(tab_sensitive==2)
+@@ -2372,7 +2231,7 @@
+
+
+ /****************************************************************************
+- *
++ *
+ * Copies a string into a new, malloc'ed string
+ * Strips all data before the second quote. and strips trailing spaces and
+ * new lines
+@@ -2394,7 +2253,7 @@
+ source++;
+ return stripcpy(source);
+ }
+-
++
+ void bad_binding(int num)
+ {
+ afterstep_err("bad binding in line %s",orig_tline,NULL,NULL);
+@@ -2413,23 +2272,16 @@
+ {
+ XGCValues gcv;
+ unsigned long gcm;
+-
++
+ /* create GC's */
+-
+- gcm = GCForeground|GCBackground|GCGraphicsExposures;
+- gcv.foreground = Scr.StdColors.fore;
+- gcv.background = Scr.StdColors.back;
+- gcv.graphics_exposures = False;
+- Scr.MaskGC = XCreateGC(dpy, Scr.Root, gcm, &gcv);
+-
+- gcm = GCLineWidth|GCForeground|GCBackground|GCFunction;
++ gcm = GCLineWidth|GCForeground|GCBackground|GCFunction;
+ gcv.function = GXcopy;
+ gcv.line_width = 1;
+ gcv.foreground = Scr.StdColors.fore;
+ gcv.background = Scr.StdColors.back;
+ Scr.LineGC = XCreateGC(dpy, Scr.Root, gcm, &gcv);
+
+- gcm = GCFunction|GCLineWidth|GCForeground|GCSubwindowMode;
++ gcm = GCFunction|GCLineWidth|GCForeground|GCSubwindowMode;
+ gcv.function = GXxor;
+ gcv.line_width = 0;
+ gcv.foreground = XORvalue;
+@@ -2441,33 +2293,6 @@
+ gcv.line_width = 0;
+ gcv.function = GXcopy;
+ gcv.plane_mask = AllPlanes;
+-
+- if(Scr.TitleTextType!=0){
+- gcv.foreground = GetColor(hircolor);
+- gcv.font = Scr.WindowFont.font->fid;
+- Scr.HiFontReliefGC= XCreateGC(dpy, Scr.Root, gcm, &gcv);
+-
+- gcv.foreground = GetColor(hiscolor);
+- gcv.font = Scr.WindowFont.font->fid;
+- Scr.HiFontShadowGC= XCreateGC(dpy, Scr.Root, gcm, &gcv);
+-
+- gcv.foreground = GetColor(hincolor);
+- gcv.font = Scr.WindowFont.font->fid;
+- Scr.HiFontGC= XCreateGC(dpy, Scr.Root, gcm, &gcv);
+-
+- gcv.foreground = GetColor(lorcolor);
+- gcv.font = Scr.WindowFont.font->fid;
+- Scr.LoFontReliefGC= XCreateGC(dpy, Scr.Root, gcm, &gcv);
+-
+- gcv.foreground = GetColor(loscolor);
+- gcv.font = Scr.WindowFont.font->fid;
+- Scr.LoFontShadowGC= XCreateGC(dpy, Scr.Root, gcm, &gcv);
+-
+- gcv.foreground = GetColor(loncolor);
+- gcv.font = Scr.WindowFont.font->fid;
+- Scr.LoFontGC= XCreateGC(dpy, Scr.Root, gcm, &gcv);
+- }
+-
+ gcv.foreground = Scr.StdColors.fore;
+ gcv.background = Scr.StdColors.back;
+ gcv.font = Scr.StdFont.font->fid;
+@@ -2477,10 +2302,10 @@
+ * call in FindScreenInfo (events.c) (since drawable is a pixmap).
+ */
+ gcv.graphics_exposures = False;
+-
++
+ Scr.NormalGC = XCreateGC(dpy, Scr.Root, gcm, &gcv);
+
+-
++
+ /* GC for pager labels */
+ Scr.FontGC = XCreateGC(dpy, Scr.Root, gcm, &gcv);
+
+@@ -2498,11 +2323,11 @@
+ gcv.foreground = Scr.HiRelief.fore;
+ gcv.background = Scr.HiRelief.back;
+ gcv.fill_style = FillSolid;
+- Scr.HiReliefGC = XCreateGC(dpy, Scr.Root, gcm, &gcv);
++ Scr.HiReliefGC = XCreateGC(dpy, Scr.Root, gcm, &gcv);
+
+ gcv.foreground = Scr.HiRelief.back;
+ gcv.background = Scr.HiRelief.fore;
+- Scr.HiShadowGC = XCreateGC(dpy, Scr.Root, gcm, &gcv);
++ Scr.HiShadowGC = XCreateGC(dpy, Scr.Root, gcm, &gcv);
+
+ if (Scr.BevelReliefGC==None)
+ Scr.BevelReliefGC=Scr.HiReliefGC;
+@@ -2523,7 +2348,7 @@
+ gcm=GCFunction|GCPlaneMask|GCGraphicsExposures|GCLineWidth|GCForeground|
+ GCBackground|GCFont|GCStipple|GCFillStyle;
+ Scr.MenuStippleGC = XCreateGC(dpy, Scr.Root, gcm, &gcv);
+-
++
+ gcm=GCFunction|GCPlaneMask|GCGraphicsExposures|GCLineWidth|GCForeground|
+ GCBackground|GCFont;
+ gcv.fill_style = FillSolid;
+@@ -2536,24 +2361,24 @@
+ }
+ gcv.foreground = Scr.MenuRelief.fore;
+ gcv.background = Scr.MenuRelief.back;
+- Scr.MenuReliefGC = XCreateGC(dpy, Scr.Root, gcm, &gcv);
++ Scr.MenuReliefGC = XCreateGC(dpy, Scr.Root, gcm, &gcv);
+
+ gcv.foreground = Scr.MenuRelief.back;
+ gcv.background = Scr.MenuRelief.fore;
+- Scr.MenuShadowGC = XCreateGC(dpy, Scr.Root, gcm, &gcv);
++ Scr.MenuShadowGC = XCreateGC(dpy, Scr.Root, gcm, &gcv);
+
+ gcv.foreground = Scr.StdRelief.fore;
+ gcv.background = Scr.StdRelief.back;
+- Scr.StdReliefGC = XCreateGC(dpy, Scr.Root, gcm, &gcv);
++ Scr.StdReliefGC = XCreateGC(dpy, Scr.Root, gcm, &gcv);
+
+ gcv.foreground = Scr.StdRelief.back;
+ gcv.background = Scr.StdRelief.fore;
+- Scr.StdShadowGC = XCreateGC(dpy, Scr.Root, gcm, &gcv);
++ Scr.StdShadowGC = XCreateGC(dpy, Scr.Root, gcm, &gcv);
+ Scr.ScratchGC2 = XCreateGC(dpy, Scr.Root, gcm, &gcv);
+
+ gcv.foreground = Scr.StickyRelief.fore;
+ gcv.background = Scr.StickyRelief.back;
+- Scr.StickyReliefGC = XCreateGC(dpy, Scr.Root, gcm, &gcv);
++ Scr.StickyReliefGC = XCreateGC(dpy, Scr.Root, gcm, &gcv);
+
+ gcv.foreground = Scr.StickyRelief.back;
+ gcv.background = Scr.StickyRelief.fore;
+@@ -2562,7 +2387,6 @@
+ gcv.foreground = Scr.HiColors.fore;
+ gcv.font = Scr.IconFont.font->fid;
+ Scr.IconGC = XCreateGC(dpy, Scr.Root, GCForeground|GCFont, &gcv);
+-
+ }
+
+ /***********************************************************************
+@@ -2571,7 +2395,7 @@
+ * SetOneStyle - add a window name to the no title list
+ *
+ * Inputs:
+- * name - a pointer to the name of the window
++ * name - a pointer to the name of the window
+ *
+ ***********************************************************************/
+ #ifndef PRUNE
+@@ -2613,8 +2437,8 @@
+ free (p);
+ }
+ AddToList(name,icon_name,new_flags,0,desknumber,0,0,NULL,NULL,0,0);
+-}
+-#endif
++}
++#endif
+
+ #ifdef M4
+
+@@ -2646,11 +2470,11 @@
+ static char *cp = NULL;
+ static int maxsize = 0;
+ int n;
+-
++
+ /* The char * storage only lasts for 1 call... */
+
+ /* Get space to hold everything, if needed */
+-
++
+ n = EXTRA + strlen(name) + strlen(def);
+ if (n > maxsize) {
+ maxsize = n;
+@@ -2674,7 +2498,7 @@
+ }
+ else
+ strcpy(cp, "define(");
+-
++
+ strcat(cp, name);
+
+ /* Tack on "," and 2 sets of starting quotes */
+@@ -2697,14 +2521,14 @@
+ }
+
+ strcat(cp, "dnl\n");
+-
++
+ return(cp);
+ }
+
+ static char *MkNum(char *name,int def)
+ {
+ char num[20];
+-
++
+ sprintf(num, "%d", def);
+ return(MkDef(name, num));
+ }
+@@ -2731,7 +2555,7 @@
+ }
+ strcat(tmp_name, "/steprcXXXXX");
+ mktemp(tmp_name);
+-
++
+ if (*tmp_name == '\0')
+ {
+ perror("mktemp failed in m4_defs");
+@@ -2753,7 +2577,7 @@
+ perror("Cannot open pipe to m4");
+ exit(0377);
+ }
+-
++
+ mygethostname(client,MAXHOSTNAME);
+
+ mygetostype (ostype, sizeof ostype);
+@@ -2775,7 +2599,7 @@
+ /* TWM_TYPE is afterstep, for completeness */
+
+ fputs(MkDef("TWM_TYPE", "afterstep"), tmpf);
+-
++
+ /* The machine running the X server */
+ fputs(MkDef("SERVERHOST", server), tmpf);
+ /* The machine running the window manager process */
+@@ -2806,7 +2630,7 @@
+
+ fputs(MkNum("BITS_PER_RGB", visual->bits_per_rgb), tmpf);
+
+- switch(visual->class)
++ switch(visual->class)
+ {
+ case(StaticGray):
+ vc = "StaticGray";
+@@ -2830,11 +2654,11 @@
+ vc = "NonStandard";
+ break;
+ }
+-
++
+ fputs(MkDef("CLASS", vc), tmpf);
+- if (visual->class != StaticGray && visual->class != GrayScale)
++ if (visual->class != StaticGray && visual->class != GrayScale)
+ fputs(MkDef("COLOR", "Yes"), tmpf);
+- else
++ else
+ fputs(MkDef("COLOR", "No"), tmpf);
+ fputs(MkDef("AFTER_VERSION", VERSION), tmpf);
+
+@@ -2867,18 +2691,18 @@
+ fputs(MkDef("OPTIONS", options), tmpf);
+
+ fputs(MkDef("AFTERDIR", AFTERDIR), tmpf);
+-
++
+ /*
+ * At this point, we've sent the definitions to m4. Just include
+ * the steprc file now.
+ */
+-
++
+ fprintf(tmpf, "%sinclude(%s%s%s)\n",
+ (m4_prefix) ? "m4_": "",
+ m4_startquote,
+ config_file,
+ m4_endquote);
+-
++
+ pclose(tmpf);
+ return(tmp_name);
+ }
+diff -u ./icons.c /home/malda/code/AfterStep-1.0/afterstep/icons.c
+--- ./icons.c Wed May 14 17:38:51 1997
++++ /home/malda/code/AfterStep-1.0/afterstep/icons.c Thu Mar 20 19:09:21 1997
+@@ -221,8 +221,8 @@
+ char *text=NULL;
+
+ XSetForeground(dpy, Scr.IconGC, Scr.HiColors.back);
+-/* XFillRectangle(dpy, Tmp_win->icon_pixmap_w, Scr.IconGC, 1, 1,
+- Tmp_win->icon_p_width-2,titleH+6); */
++ XFillRectangle(dpy, Tmp_win->icon_pixmap_w, Scr.IconGC, 1, 1,
++ Tmp_win->icon_p_width-2,titleH+6);
+ XSetForeground(dpy, Scr.IconGC, Scr.HiColors.fore);
+ if (Tmp_win->icon_name==NULL) {
+ if (Tmp_win->name!=NULL) {
+@@ -255,11 +255,8 @@
+ cnt = i;
+ }
+ }
+-
+ XDrawString(dpy, Tmp_win->icon_pixmap_w, Scr.IconGC, textX,
+ Scr.IconFont.font->ascent+1, text, cnt);
+- /* XDrawString(dpy, Tmp_win->icon_pixmap_w, Scr.IconGC, textX+1,
+- Scr.IconFont.font->ascent+2, text, cnt); */
+ }
+ }
+ }
+diff -u ./menus.c /home/malda/code/AfterStep-1.0/afterstep/menus.c
+--- ./menus.c Wed May 21 19:28:47 1997
++++ /home/malda/code/AfterStep-1.0/afterstep/menus.c Sat Apr 19 16:26:01 1997
+@@ -46,8 +46,6 @@
+ ***********************************************************************/
+ #include "../configure.h"
+
+-
+-
+ #include <stdio.h>
+ #include <signal.h>
+ #include <string.h>
+@@ -56,8 +54,6 @@
+ #include <sys/types.h>
+ #include <sys/time.h>
+
+-
+-
+ #include "afterstep.h"
+ #include "menus.h"
+ #include "misc.h"
+@@ -67,11 +63,6 @@
+ #include "stepgfx.h"
+ #endif
+
+-
+-#ifdef SHAPE
+-#include <X11/extensions/shape.h>
+-#endif /* SHAPE */
+-
+ short menu_on=0;
+ Bool IgnoreRelease = 1;
+ int BottomOfPage=0;
+@@ -187,17 +178,6 @@
+ menu->titlebg = None;
+ }
+ break;
+- case 128:
+- XCopyArea(dpy, Scr.MenuTitle, menu->titlebg, Scr.NormalGC, 0, 0, menu->width-2, menu->first->y_height-2, 0,0);
+- break;
+- case 129:
+- XSetWindowBackgroundPixmap(dpy, menu->w, Scr.MenuTitle);
+- if(Scr.MenuTitleMask!=None)
+- XShapeCombineMask(dpy, menu->w, ShapeBounding, 0, 0,
+- Scr.MenuTitleMask, ShapeSet);
+- XFreePixmap(dpy, menu->titlebg);
+- break;
+-
+ default:
+ XFreePixmap(dpy, menu->titlebg);
+ menu->titlebg = None;
+@@ -206,10 +186,6 @@
+ Textures.Mtype=0;
+ }
+ }
+- if(Textures.Mtype==128)
+- XSetWindowBackgroundPixmap(dpy, menu->w, Scr.MenuTitle);
+-
+-
+ if ((menu->itembg==None) && (Textures.Itype>0) && (menu->last!=NULL)) {
+ menu->itembg = XCreatePixmap(dpy, menu->w, menu->width-2,
+ menu->last->y_height-3,
+@@ -244,12 +220,6 @@
+ menu->itembg = None;
+ }
+ break;
+- case 128: /* Pixmap */
+- if(Textures.Mtype!=129)
+- XCopyArea(dpy, Scr.MenuItem, menu->itembg, Scr.NormalGC,0, 0, menu->width-2, menu->last->y_height-3,0,0);
+- else { XFreePixmap(dpy, menu->itembg);
+- menu->itembg = None; }
+- break;
+ default:
+ XFreePixmap(dpy, menu->itembg);
+ menu->itembg = None;
+@@ -350,16 +320,11 @@
+ if (mr->titlebg != None) {
+ Globalgcv.foreground = Scr.HiColors.back;
+ XChangeGC(dpy,Scr.ScratchGC1,GCForeground,&Globalgcv);
+-
+- if(Textures.Mtype<129)
+- XCopyArea(dpy, mr->titlebg, mr->w, DefaultGC(dpy,Scr.screen),
++ XCopyArea(dpy, mr->titlebg, mr->w, DefaultGC(dpy,Scr.screen),
+ 0, y_offset, mr->width-1, mr->first->y_height-2, 1,
+ y_offset+1);
+- else XCopyArea(dpy, mr->titlebg, mr->w, DefaultGC(dpy,Scr.screen),
+- 0, y_offset+1, mr->width-1, mr->height, 1, y_offset+1);
+- if(Textures.Mtype<129)
+- XDrawRectangle(dpy, mr->w, Scr.ScratchGC1, 0, y_offset,
+- mr->width-1, y_height-2);
++ XDrawRectangle(dpy, mr->w, Scr.ScratchGC1, 0, y_offset,
++ mr->width-1, y_height-2);
+ text_y += 4;
+ }
+ else
+@@ -375,15 +340,14 @@
+ else {
+ #ifdef ENABLE_TEXTURE
+ if (mr->itembg!=None) {
+- if(Textures.Mtype<129)
+- XCopyArea(dpy, mr->itembg, mr->w, DefaultGC(dpy,Scr.screen), 0, 0,
++ XCopyArea(dpy, mr->itembg, mr->w, DefaultGC(dpy,Scr.screen), 0, 0,
+ mr->width-2, mr->last->y_height-3, 1, y_offset+1);
+ } else
+ #endif
+ XClearArea(dpy, mr->w, 0,y_offset,mr->width,y_height,0);
+ }
+ #ifdef ENABLE_TEXTURE
+- if ((mr->titlebg == None || mi->func != F_TITLE)&&(Textures.Mtype!=129)) {
++ if (mr->titlebg == None || mi->func != F_TITLE) {
+ RelieveHalfRectangle(mr->w, 0, y_offset, mr->width,
+ y_height, ReliefGC, ShadowGC);
+ RelieveRectangle(mr->w, 0, y_offset, mr->width, y_height-1,
+@@ -394,8 +358,8 @@
+ /* end hack */
+ if(mi->func != F_TITLE)
+ text_y += HEIGHT_EXTRA>>1;
+- if(Textures.Mtype!=129)
+- XDrawLine( dpy, mr->w, Scr.LineGC, 0, y_height+y_offset-1,
++
++ XDrawLine( dpy, mr->w, Scr.LineGC, 0, y_height+y_offset-1,
+ mr->width, y_height+y_offset-1);
+ }
+ #else
+@@ -408,8 +372,8 @@
+ */
+ if(mi->func != F_TITLE)
+ text_y += HEIGHT_EXTRA>>1;
+- if(Textures.Mtype!=129)
+- XDrawLine( dpy, mr->w, Scr.LineGC, 0, y_height+y_offset-1,
++
++ XDrawLine( dpy, mr->w, Scr.LineGC, 0, y_height+y_offset-1,
+ mr->width, y_height+y_offset-1);
+ /*
+ XDrawLine( dpy, mr->w, Scr.LineGC, 0, y_offset,
+@@ -448,12 +412,10 @@
+ DrawTrianglePattern(mr->w, ShadowGC, ReliefGC, ShadowGC,mr->width-d-8,
+ y_offset+d-1, mr->width-d-1, y_offset+d+7);
+ /* major hackage going on here */
+- if(Textures.Mtype!=129) {
+- if (y_offset > 30)
+- XDrawLine( dpy, mr->w, Scr.LineGC, 0, y_offset-1, 1600, y_offset-1);
+- else
+- XDrawLine( dpy, mr->w, Scr.MenuStippleGC, 0, y_offset-1, 1600, y_offset-1);
+- }
++ if (y_offset > 30)
++ XDrawLine( dpy, mr->w, Scr.LineGC, 0, y_offset-1, 1600, y_offset-1);
++ else
++ XDrawLine( dpy, mr->w, Scr.MenuStippleGC, 0, y_offset-1, 1600, y_offset-1);
+ return;
+ }
+
+@@ -494,15 +456,13 @@
+ void DrawTrianglePattern(Window w,GC GC1,GC GC2,GC GC3,int l,int u,int r,int b)
+ {
+ int m;
+- if(Scr.MenuArrow==None) {
+- m = (u + b)/2;
+
+- XDrawLine(dpy,w,GC1,l,u,l,b);
++ m = (u + b)/2;
+
+- XDrawLine(dpy,w,GC2,l,b,r,m);
+- XDrawLine(dpy,w,GC3,r,m,l,u);
+- }
+- else XCopyArea(dpy,Scr.MenuArrow, w, GC1, 0,0,r-l,b-u, l,u);
++ XDrawLine(dpy,w,GC1,l,u,l,b);
++
++ XDrawLine(dpy,w,GC2,l,b,r,m);
++ XDrawLine(dpy,w,GC3,r,m,l,u);
+ }
+
+ /***********************************************************************
+diff -u ./misc.h /home/malda/code/AfterStep-1.0/afterstep/misc.h
+--- ./misc.h Wed May 14 17:39:23 1997
++++ /home/malda/code/AfterStep-1.0/afterstep/misc.h Tue Mar 18 20:37:12 1997
+@@ -305,7 +305,6 @@
+ void ButtonStyle();
+ void IconStyle();
+ void SetTitleButton(char *text,FILE *,char **,int *);
+-void SetTitleText(char *text, FILE *, char **, int *);
+ void SetFlag(char *text, FILE *fd, char **arg,int *);
+ void SetTextureFlag(char *text, FILE *fd, char **arg,int *);
+ void SetIconFlag(char *text, FILE *fd, char **arg,int *);
+diff -u ./screen.h /home/malda/code/AfterStep-1.0/afterstep/screen.h
+--- ./screen.h Wed May 21 17:41:50 1997
++++ /home/malda/code/AfterStep-1.0/afterstep/screen.h Mon Mar 10 19:49:26 1997
+@@ -157,7 +157,6 @@
+ GC StippleGC; /* normal GC for menus, pager, resize window */
+ GC DrawGC; /* GC to draw lines for move and resize */
+ GC LineGC; /* GC to draw lines on buttons */
+- GC MaskGC;
+ GC HiReliefGC; /* GC for highlighted window relief */
+ GC HiShadowGC; /* GC for highlighted window shadow */
+ GC BevelReliefGC;
+@@ -175,15 +174,6 @@
+ GC StickyShadowGC; /* GC for unselected sticky window shadow */
+ GC FontGC; /* GC for non-standard fonts */
+
+- GC HiFontReliefGC;
+- GC HiFontShadowGC;
+- GC HiFontGC;
+- GC LoFontGC;
+- GC LoFontShadowGC;
+- GC LoFontReliefGC;
+- int TitleTextType;
+- int TitleTextY;
+-
+ int SizeStringWidth; /* minimum width of size window */
+ int CornerWidth; /* corner width for decoratedwindows */
+ int BoundaryWidth; /* frame width for decorated windows */
+@@ -195,11 +185,6 @@
+ Pixmap BackTitle; /* Cached titlebars for gradient or tiling */
+ Pixmap ForeTitle; /* types 2 and 3. unfocused, focused */
+ Pixmap StickyTitle; /* and sticky */
+- Pixmap MenuTitle;
+- Pixmap MenuTitleMask;
+- Pixmap MenuArrow;
+- Pixmap MenuArrowMask;
+- Pixmap MenuItem;
+ Pixmap TitleGradient; /* gradient for the focused title text */
+ #endif
+ long next_focus_sequence; /* keep track of previously focused windows */
+@@ -241,12 +226,8 @@
+ MenuRoot *InitFunction;
+ MenuRoot *RestartFunction;
+
+- int ButtonType;
+ int button_style[10];
+ Pixmap button_pixmap[10];
+- Pixmap button_pixmap_mask[10];
+- Pixmap dbutton_pixmap[10];
+- Pixmap dbutton_pixmap_mask[10];
+ int button_width[10];
+ int button_height[10];
+
--- /dev/null
+# 03/08/97 sample.steprc v2.0 fsf ffejes@midway.uchicago.edu
+ ############################################
+ # The AfterStep v1.0 Default Configuration #
+ ############################################
+ ##############################################################
+ # Official Web Site: #
+ # http://afterstep.edoc.com #
+ # Official FTP Site: #
+ # ftp://afterstep.foo.net/pub/AfterStep #
+ # European Mirror Sites: #
+ # ftp://ftp.asta.uni-essen.de/pub/Afterstep #
+ # ftp://garfield.sch.bme.hu/pub/Linux/AfterStep #
+ # Additional Web Sites: #
+ # http://afterstep.foo.net #
+ # http://apollo.gmi.edu/~kram1968/afterstep #
+ # http://www.iis.ee.ethz.ch/~kiwi/AfterStep #
+ ##############################################################
+
+#///////////////////////////////////#
+# Distinctive Look and Feel Section #
+#///////////////////////////////////#
+# Foreground color for unfocused windows and default border color
+StdForeColor #111111
+
+# Background color for unfocused windows and handle color
+StdBackColor #bfbfbf
+
+# Text color for focused windows, menu highlights, and MenuTitle text
+HiForeColor White
+
+# Background Color of focused window and MenuTitle border
+#HiBackColor #000001
+HiBackColor #000044
+
+# Menu Border Color
+MenuBackColor #bfbfbf
+
+# Menu Text Color
+MenuForeColor Black
+
+# Set some cursors
+Cursor 5 68 # Set the WAIT cursor to the normal left_ptr
+Cursor 7 68 # Set the SELECT (iconify) cursor
+Cursor 8 68 # Set the DESTROY cursor
+
+# Set Gradient Texture Mapping
+# Define the texture type for the TitleBars, unfocused TitleBars,
+# Menu TitleBars, Menu Items, etc.
+# 0 - No texture
+# 1 - Wharf-style gradient
+# 2 - Horizontal one way gradient
+# 3 - Horizontal from top/bottom to center
+# 4 - Vertical one way gradient from left to right
+# 5 - Vertical from left/right to center
+# 128 - User specified pixmap
+TextureTypes 1 1 1 1 1 0
+
+# Set the number of colors to use on textures.
+# Default is 10 on 8bpp screens and 128 on +16bpp.
+TextureMaxColors 10 10 10 10
+
+# Texture Colors, given in Standard RGB X numbering
+# Window TitleBar textures
+TitleTextureColor #303080 #000010
+
+# Unfocused TitleBar textures
+UTitleTextureColor #a0a2a1 #606261
+
+# Menu TitleBar textures
+MTitleTextureColor #303080 #000010
+
+# Menu Item textures
+MenuTextureColor #606060 #d0d0d0
+
+# Don't change the titlebar's highlight's upon mouse click
+TitlebarNoPush
+
+# Gives titles to icons
+IconTitle
+
+# Menu Font
+Font -adobe-helvetica-medium-r-*-*-12-*-*-*-*-*-*-*
+
+# Window TitleBar Font
+WindowFont -adobe-helvetica-bold-r-*-*-12-*-*-*-*-*-*-*
+
+# Icon Font
+IconFont -adobe-helvetica-medium-r-*-*-8-*-*-*-*-*-*-*
+
+# Area where icons should show up (RightX, RightY, LeftX, LeftY)
+IconBox 0 -64 -1 -1
+
+#//////////////////#
+# Window Placement #
+#//////////////////#
+# RandomPlacement prevents user interaction while placing windows:
+#RandomPlacement
+
+# SmartPlacement makes new windows pop-up in blank regions of screen
+# if possible, otherwise falls back to random or interactive placement
+#SmartPlacement
+
+# Percentage of a page (horizontal, vertical) to scroll when the
+# cursor reaches the edge of a page ... 0 0 turns off scrolling
+EdgeScroll 0 0
+
+# Amount of Resistance for moving from desk to desk with the
+# mouse ... 0 0 allows for only window moves and resizes to
+# reach into the next desk
+EdgeResistance 0 0
+
+# Raise the Window when it is clicked on, but do not pass the click
+# on to the application ... very handy for text editors
+# Change 1 to 0 in order to get the "normal" ClickToFocus effect
+ClickToFocus 1
+
+# Raise the Window when the mouse travels into it and keep focus
+# until the mouse enters a new window
+SloppyFocus
+
+# Miscellaneous voodoo commands - they may help you, they may not
+#AppsBackingStore
+#BackingStore
+#SaveUnders
+
+# This style of window movement draws the entire window as it
+# moves, instead of the "rubber-band" outlines
+# It has a number (N) attached to it (default 5). If the
+# window occupies less than N% of the screen, OpaqueMove is
+# used. 0 <= N <= 100
+OpaqueMove 100
+
+# NoPPosition instructs fvwm to ignore the PPosition field in window
+# geometry hints.
+# Emacs annoyingly sets PPosition to (0,0)!
+NoPPosition
+
+#////////////////////////#
+# Miscellaneous Settings #
+#////////////////////////#
+# Set windows to auto-raise after 325 milliseconds if you like it.
+# Use with SloppyFocus or focus-follows-mouse mode
+#Module Auto 325
+
+# If you don't like the default 150 msec click delay for the complex functions
+# change this.
+ClickTime 150
+
+# Don't change to an icon when using Alt-Tab to page through open windows
+CirculateSkipIcons
+
+# StubbornIcons makes icons de-iconify into their original position on the
+# desktop, instead of on the current page.
+#StubbornIcons
+
+# Place a TitleBar and Handles on popup windows and dialog boxes
+DecorateTransients
+
+# With AutoPlacement, icons will normally place themselves underneath active
+# windows. This option changes that.
+#StubbornIconPlacement
+
+# If you want ALL you icons to follow you around the desktop (Sticky), try
+# this
+StickyIcons
+
+#///////////////////////////#
+# Pager and Virtual Desktop #
+#///////////////////////////#
+# Set up the virtual desktop and pager
+# Set the desk top size in units of physical screen size
+DeskTopSize 3x3
+# Sets the reduction scale used for the Pager
+DeskTopScale 32
+
+#//////////////#
+# Common Paths #
+#//////////////#
+# ModulePath is a colon-separated list, just like a regular unix PATH
+# Any Module must be found within the path in order to be located
+# and executed
+ModulePath /usr/X11R6/bin/
+
+# Another colon-separated list pointing to your pixmaps (color icons)
+PixmapPath /usr/X11R6/share/afterstep10/pixmaps/
+
+# Path for your ugly black&white icons
+IconPath /usr/X11R6/include/X11/bitmaps/
+
+
+# Various styles which can be associated with specific applications
+# Sticky -- remains "stuck" on all desks
+# NoTitle -- window has NoTitle
+# StaysOnTop -- a regular window will not obscure this window
+# WindowListSkip -- this window will not show up in the
+# window listing which can be used with a MiddleClick in
+# the root window (main background)
+# NoHandles -- No bottom bar
+Style "oclock" Sticky, NoTitle, StaysOnTop, WindowListSkip
+Style "*Pager" NoTitle, Sticky, StaysOnTop, WindowListSkip, NoHandles
+Style "xbiff" NoTitle, WindowListSkip
+Style "Minitabx11" StaysOnTop
+Style "as10-Wharf" NoFocus,NoTitle, Sticky, WindowListSkip,StaysOnTop, NoHandles
+
+
+#/////////////////////#
+# Wharf Customization #
+#/////////////////////#
+# Customize your as10-Wharf -- the pushable, pullable button bar on the right
+# hand of your display
+Module as10-Wharf
+
+# Animate as10-Wharf's folders
+*as10-WharfAnimate
+
+# Animate as10-Wharf's compression into one icon
+*as10-WharfAnimateMain
+
+# Start on the right top side of the screen
+*as10-WharfGeometry -0+0
+
+# One vertical column
+*as10-WharfColumns 1
+
+# Create a pullout "Folder" as the first button on as10-Wharf
+*as10-Wharf AfterStep AFstep.xpm Folder
+
+ # Include all desired icons for this initial Folder here
+ # The first listed will be closest to as10-Wharf upon expansion
+ # The last will be furthest
+
+ # Start up XEmacs
+*as10-Wharf xemacs text.xpm Exec "-" xemacs &
+
+ # Create amazing art with the freeware masterpiece, The GIMP
+#*as10-Wharf gimp 3dpaint.xpm Exec "-" gimp &
+
+ # Read some mail
+#*as10-Wharf pine writeletter.xpm Exec "-" rxvt -T "pine" -e pine &
+
+ # Surf the web
+#*as10-Wharf Netscape netscape3.xpm Exec "-" netscape &
+
+ # Edit this file in its own window
+#*as10-Wharf config interface.xpm Exec "-" xterm -n "Config" -T "AfterStep Configuration" -e vi ~/.steprc &
+
+ # Lock the display and use a random screensaver from the modelist
+*as10-Wharf xlock KeysOnChain.xpm Exec "-" xlock -modelist "braid flame grav pyro qix rock spiral spline swarm worm" -mode random -duration 0 -allowroot -usefirst &
+
+ # Recycle your AfterStep session (Restart)
+*as10-Wharf Recycler recycler.xpm Restart " " afterstep
+
+ # This first will shut down AfterStep
+*as10-Wharf Shutdown shutdown.xpm Quit
+
+
+ # Close the Folder
+*as10-Wharf ~Folder
+
+
+ # Add a "Beat"iful little timepiece
+ # MaxSwallow it in order to fit the full button
+*as10-Wharf asclock nil MaxSwallow "asclock" as10-asclock -12 -shape -position -1-1 &
+
+ # Check for mail ... this time only use a regular Swallow in order
+ # to capture the application in a 48x48 frame
+#*as10-Wharf xbiff nil Swallow "xbiff" xbiff -bg "#8e8a9e" -fg "#00003f" -geometry 45x45-1-1 &
+
+ # Examine your computer's load
+*as10-Wharf xload nil Swallow "xload" xload -nolabel -hl black -bg "#8e8a9e" -geometry 48x48-1-1 &
+*as10-Wharf xload nil Exec "" xterm -ut -T top -e top &
+
+ # Open up an xterm
+*as10-Wharf xterm monitor.xpm Exec "-" rxvt -geometry 80x25 -sl 256 -sb -ls -rv -T 'rxvt' &
+
+
+ # Swallow a pager to quickly get an outlook on your virtual desktop
+ # Click on the different "desks" to change in between them
+*as10-Wharf pager nil SwallowModule "Pager" as10-Pager 0 0
+
+#////////////////#
+# Icon Selection #
+#////////////////#
+# Select some common icon bitmaps for applications named in
+# column number two ... each icon file must be located in
+# your PixmapPath (color) or IconPath (b/w) as defined above
+Icon "xterm" monitor.xpm
+Icon "*emacs*" text.xpm
+Icon "pine" writeletter.xpm
+Icon "ghostview" text.xpm
+Icon "xman" xman.xpm
+Icon "gimp" 3dpaint.xpm
+Icon "xli" monalisa.xpm
+Icon "xv" xv1.xpm
+Icon "moxfm*" FileFolders.xpm
+Icon "*lyx*" text.xpm
+Icon "LyX" text.xpm
+Icon "Untitled*" YellowBlueRedGeometry.xpm
+
+#/////////////////////////#
+# Initialization Function #
+#/////////////////////////#
+# Here we will put programs and modules that we wish to
+# load up automatically upon startup
+Function "InitFunction"
+ # Wait until as10-Wharf is done loading so that our xterm will have
+ # the focus when it is first created
+ Wait "I" as10-Wharf
+ Exec "I" exec rxvt -geometry +4+4 -sl 256 -sb -ls -T 'rxvt' &
+ # Place the green carpet image onto the background upon startup
+ # I personally recommend xli/xloadimage, but xv seems to be
+ # ubiquitous in the unix world so I'll use that
+ # Exec "I" exec xv -root -quit /usr/lib/X11/afterstep/backgrounds/carpet.green.jpg
+ Exec "I" exec xsetroot -solid gray20
+ Exec "I" exec xsetroot -solid gray20
+EndFunction
+
+# These will load up upon every subsequent Restart
+Function "RestartFunction"
+ Exec "I" exec xsetroot -solid gray30
+# Module "I" FvwmPager 0 0
+EndFunction
+
+
+#///////////#
+# Functions #
+#///////////#
+# Now define some handy complex functions
+# Each function can be bound to a specific Mouse Button and
+# a specific window location (Title, TitleButton, Root Window,
+# etc.) later on
+
+# This one will Raise the window on a Single Click, Shade
+# (display only the TitleBar) on a DoubleClick, and make
+# the window uncoverable by all other non-OnTop windows
+# with a TripleClick. A Click+Motion will move the
+# window around
+Function "Shade-or-Raise"
+ Move "Motion"
+ Raise "Click"
+ Shade "DoubleClick"
+ PutOnTop "TripleClick"
+EndFunction
+
+# This will move the window on mouse motion, maximize the
+# window (while leaving space for as10-Wharf on the right) with a
+# single MouseClick, roll up the window for a Shade with a
+# DoubleClick, and put the window on top of all other windows
+# with a TripleClick (no regular window can be placed on top
+# of this window until the ontop window has been taken
+# another PutOnTop TripleClick
+Function "Maximize_Function"
+ Move "Motion"
+ Maximize "Click" 94 100
+ Shade "DoubleClick"
+ PutOnTop "TripleClick"
+EndFunction
+
+# This one moves or (de)iconifies:
+# Icons will restore to full size with a single mouse click
+# Change "Click" to "DoubleClick" or "TripleClick" as desired
+Function "Move-or-Iconify"
+ Move "Motion"
+ Iconify "Click"
+EndFunction
+
+# Pretty Simple...Mouse Motion Raises and Resizes the given
+# window. A mouse click will also Raise it. DoubleClick
+# will perform a Shade while TripleClick grants unobscurable
+# status
+Function "Resize-or-Raise"
+ Resize "Motion"
+ Raise "Motion"
+ Raise "Click"
+ Shade "DoubleClick"
+ PutOnTop "TripleClick"
+EndFunction
+
+# This is provided as a hint only.
+# Move to a known page on the desktop, then start an application in a
+# known location. Could also switch to a known desktop, I guess
+#Function "abs_coord"
+# GoToPage "Immediate" 1,1
+# Exec "Immediate" exec xcalc -geometry +100+100&
+#EndFunction
+
+#///////#
+# Menus #
+#///////#
+# Now define the menus - defer bindings until later
+
+# Here are some common applications...we will add this and the
+# following menus to our main HotList menu
+Popup "Applications"
+ Title "Applications"
+ Exec "xv" exec xv &
+ Exec "vi" exec xterm -T vi -e vi &
+ Exec "Ghostview" exec ghostview &
+ Exec "The Gimp" exec gimp &
+ Exec "GNU Emacs" exec emacs &
+ Exec "Bitmap" exec bitmap &
+ Exec "Xxgdb" exec xxgdb &
+ Exec "Calculator" exec xcalc &
+EndPopup
+
+# Some diversionary tactics...xsnow is a personal favorite of mine
+Popup "Games"
+ Title "Games"
+ Exec "Xsnow" exec xsnow -nonopopup &
+ Exec "Xboard" exec xboard &
+ Exec "XTetris" exec xtetris &
+ Exec "Xvier" exec xvier &
+EndPopup
+
+# Various ScreenSavers that lock the display
+Popup "Xlock"
+ Title "Xlock"
+ Exec "Braid" exec xlock -allowroot -usefirst -mode braid &
+ Exec "Flame" exec xlock -allowroot -usefirst -mode flame &
+ Exec "Grav" exec xlock -allowroot -usefirst -mode grav &
+ Exec "Pyro" exec xlock -allowroot -usefirst -mode pyro &
+ Exec "Qix" exec xlock -allowroot -usefirst -mode qix &
+ Exec "Rock" exec xlock -allowroot -usefirst -mode rock &
+ Exec "Slip" exec xlock -allowroot -usefirst -mode spiral &
+ Exec "Spline" exec xlock -allowroot -usefirst -mode spline &
+ Exec "Swarm" exec xlock -allowroot -usefirst -mode swarm &
+ Exec "Worm" exec xlock -allowroot -usefirst -mode worm &
+EndPopup
+
+# Some administrative tasks...note that Config opens up an
+# xterm and automatically edits this file
+Popup "Utilities"
+ Title "Utilities"
+ Exec "Config" exec xterm -T "AfterStep Configuration" -e vi ~/.steprc &
+ Exec "Top" exec rxvt -T Top -n Top -e top &
+ Popup "Xlock" Xlock
+EndPopup
+
+# This menu allows you to quit, although why you would want
+# to do such a thing is beyond me
+Popup "Quit-Verify"
+ Title "Quit?"
+ Quit "Yes, Quit"
+ Restart "Restart" afterstep
+ Nop "No, Don't"
+EndPopup
+
+# Modules ... technically, asclock is a fully functioning
+# program, but I like to think of it as a nice module
+Popup "Module-Popup"
+ Title "Modules"
+ Exec "asclock" exec as10-asclock -12 -shape &
+ Module "Pager" as10-Pager 0 0
+ Module "Wharf" as10-Wharf
+EndPopup
+
+# Colors ... quick way to chage desktop coloring
+Popup "Colors"
+ Title "Colors"
+ Exec "Black" exec xsetroot -solid Black
+ Exec "Red" exec xsetroot -solid Red
+ Exec "Yellow" exec xsetroot -solid Yellow
+ Exec "Green" exec xsetroot -solid Green
+ Exec "Cyan" exec xsetroot -solid Cyan
+ Exec "Blue" exec xsetroot -solid Blue
+ Exec "Magenta" exec xsetroot -solid Magenta
+ Exec "White" exec xsetroot -solid White
+EndPopup
+
+# Images ... quick way to view the included default background images
+Popup "Images"
+ Title "Images"
+ Exec "Brick" exec xv -root -quit /usr/X11R6/share/afterstep10/backgrounds/brick.jpg
+ Exec "Coins" exec xv -root -quit /usr/X11R6/share/afterstep10/backgrounds/coins.jpg
+ Exec "Dark Wood" exec xv -root -quit /usr/X11R6/share/afterstep10/backgrounds/darkwood.jpg
+ Exec "Eyes" exec xv -root -quit /usr/X11R6/share/afterstep10/backgrounds/eyes.jpg
+ Exec "Glass" exec xv -root -quit /usr/X11R6/share/afterstep10/backgrounds/glass.jpg
+ Exec "Green Carpet" exec xv -root -quit /usr/X11R6/share/afterstep10/backgrounds/carpet.green.jpg
+ Exec "Parquet" exec xv -root -quit /usr/X11R6/share/afterstep10/backgrounds/parquet.jpg
+ Exec "Pebbles" exec xv -root -quit /usr/X11R6/share/afterstep10/backgrounds/pebbles.jpg
+ Exec "Rock" exec xv -root -quit /usr/X11R6/share/afterstep10/backgrounds/rock.tile.jpg
+ Exec "Rope" exec xv -root -quit /usr/X11R6/share/afterstep10/backgrounds/rope.weave.jpg
+ Exec "Stucco" exec xv -root -quit /usr/X11R6/share/afterstep10/backgrounds/stucco.jpg
+ Exec "Tile" exec xv -root -quit /usr/X11R6/share/afterstep10/backgrounds/tile.check.jpg
+ Exec "Tree Bark" exec xv -root -quit /usr/X11R6/share/afterstep10/backgrounds/bark.jpg
+ Exec "Volcanic" exec xv -root -quit /usr/X11R6/share/afterstep10/backgrounds/volcanic.jpg
+ Exec "Wood" exec xv -root -quit /usr/X11R6/share/afterstep10/backgrounds/wood.jpg
+EndPopup
+
+# Background settings ... choose from either Solid Colors or Color Images
+Popup "Backgrounds"
+ Title "Backgrounds"
+ Popup "Colors" Colors
+ Popup "Images" Images
+EndPopup
+
+# Here is our main Menu that will be seen upon left MouseClick
+# in the root window (background area) ... note that we have added
+# our above Menus to this one ... also note that menus must be
+# defined first before they can be placed in a different menu
+Popup "HotList"
+ Title "HotList"
+ Exec "Xterm" exec xterm -ls -sl 256 -sb -T 'xterm@afterstep.org' &
+ Exec "Netscape" exec netscape &
+ Popup "Applications" Applications
+ Popup "Utilities" Utilities
+ Popup "Games" Games
+ Popup "Backgrounds" Backgrounds
+ Popup "Modules" Module-Popup
+ Popup "Exit" Quit-Verify
+EndPopup
+
+# This defines the most common window operations
+Popup "Window Ops"
+ Title "Window Ops"
+ Function "Move" Shade-or-Raise
+ Function "Resize" Resize-or-Raise
+ Raise "Raise"
+ Lower "Lower"
+ PutOnTop "(Un)PutOnTop"
+ Iconify "(De)Iconify"
+ Stick "(Un)Stick"
+ Function "(Un)Maximize" Maximize_Function
+ Destroy "Destroy"
+ Close "Close"
+ Refresh "Refresh Screen"
+EndPopup
+
+
+#////////////////#
+# Mouse Bindings #
+#////////////////#
+# First, for the mouse in the root window
+# Button 1 gives the HotList menu
+# Button 2 gives the WindowList menu (Listing of current windows)
+# Button 3 gives the WindowOps
+
+# There are 4 colums to the table
+# First column is the event (Mouse Click or Key Press)
+# Mouse 0 specify any click in a TitleBar box
+# Where can be 1 or 2 for first or second box
+# Mouse 1 is left button, 2 is middle, 3 is right
+# Second Column is where the click takes place
+# R = Root window (main background)
+# F = Window Frame (the corners)
+# S = Bottom bar
+# I = Icon Window
+# T = TitleBar
+# W = Application Window
+# Third Column is the Context (ie, modifier keys)
+# N = No modifiers
+# A = Any context except for inside the TitleBar Boxes
+# C = Control
+# S = Shift
+# M = Meta
+# Combos are allowed (eg, CS = Control+Shift)
+# Fourth Column is the action to take upon click
+# Action can be a function, popup, or regular action
+# Key # # Where # # Context# # Action #
+Mouse 0 1 A Iconify
+Mouse 0 2 A Close
+Mouse 1 R A PopUp "HotList"
+Mouse 1 FS A Function "Resize-or-Raise"
+Mouse 1 I A Function "Move-or-Iconify"
+Mouse 1 T A Function "Shade-or-Raise"
+Mouse 2 R A WindowList
+Mouse 2 FST A PopUp "Window Ops"
+Mouse 3 TSIF A Function "Maximize_Function"
+Mouse 3 R A PopUp "Window Ops"
+Mouse 3 W M RaiseLower
+
+#////////////////////#
+# Keyboard Shortcuts #
+#////////////////////#
+
+Key F1 A M Popup "HotList"
+Key F2 A M Popup "Window Ops"
+Key F3 A M WindowList
+# Alt-F4 will take a screenshot and save it in
+# the user's home directory as screen.xwd
+# Programs such as ImageMagick can then be used
+# to convert the xwd file into jpg or gif format
+Key F4 A M Exec "xwd" xwd -root -out ~/screen.xwd &
+Key F5 A A Iconify
+# Alt(Meta)-Tab pages through open, bordered windows
+Key Tab A M CirculateUp
+
+# Arrow Keys
+# Control+Arrow scrolls to the next page on the desk
+Key Left A C Scroll -100 0
+Key Right A C Scroll +100 +0
+Key Up A C Scroll +0 -100
+Key Down A C Scroll +0 +100
+
+#////////////////////#
+# Module Definitions #
+#////////////////////#
+# Pager Configuration -- We have Swallow-ed Pager into the as10-Wharf
+# Now let's change colors and make labels
+*as10-PagerBack #908090
+*as10-PagerFore #484048
+*as10-PagerFont -adobe-helvetica-bold-r-*-*-10-*-*-*-*-*-*-*
+*as10-PagerHilight #cab3ca
+*as10-PagerGeometry -1-1
+*as10-PagerLabel 0 Pager
+*as10-PagerSmallFont 5x8
+
+# qed