diff --git a/src/gui_at_sb.h b/src/gui_at_sb.h
new file mode 100644
index 0000000..0d3d196
--- /dev/null
+++ b/src/gui_at_sb.h
@@ -0,0 +1,161 @@
+/* vi:set ts=8 sts=4 sw=4: */
+/* MODIFIED ATHENA SCROLLBAR (USING ARROWHEADS AT ENDS OF TRAVEL) */
+/* Modifications Copyright 1992 by Mitch Trachtenberg		  */
+/* Rights, permissions, and disclaimer of warranty are as in the  */
+/* DEC and MIT notice below.  See usage warning in .c file.	  */
+/*
+ * $XConsortium: ScrollbarP.h,v 1.3 94/04/17 20:12:42 jim Exp $
+ */
+
+
+/***********************************************************
+
+Copyright (c) 1987, 1988  X Consortium
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
+X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of the X Consortium shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from the X Consortium.
+
+
+Copyright 1987, 1988 by Digital Equipment Corporation, Maynard, Massachusetts.
+
+			All Rights Reserved
+
+Permission to use, copy, modify, and distribute this software and its
+documentation for any purpose and without fee is hereby granted,
+provided that the above copyright notice appear in all copies and that
+both that copyright notice and this permission notice appear in
+supporting documentation, and that the name of Digital not be
+used in advertising or publicity pertaining to distribution of the
+software without specific, written prior permission.
+
+DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
+ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
+WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
+ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
+SOFTWARE.
+
+******************************************************************/
+
+#ifndef _Scrollbar_h
+#define _Scrollbar_h
+
+/****************************************************************
+ *
+ * Scrollbar Widget
+ *
+ ****************************************************************/
+
+#include <X11/IntrinsicP.h>
+#include <X11/Xaw/SimpleP.h>
+#include <X11/Xmu/Converters.h>
+
+/*
+ * Most things we need are in StringDefs.h
+ */
+#define XtCMinimumThumb		"MinimumThumb"
+#define XtCShown		"Shown"
+#define XtCTopOfThumb		"TopOfThumb"
+#define XtCMaxOfThumb		"MaxOfThumb"
+#define XtCShadowWidth		"ShadowWidth"
+#define XtCTopShadowPixel	"TopShadowPixel"
+#define XtCBottomShadowPixel	"BottomShadowPixel"
+#define XtCLimitThumb		"LimitThumb"
+
+#define XtNminimumThumb		"minimumThumb"
+#define XtNtopOfThumb		"topOfThumb"
+#define XtNmaxOfThumb		"maxOfThumb"
+#define XtNshadowWidth		"shadowWidth"
+#define XtNtopShadowPixel	"topShadowPixel"
+#define XtNbottomShadowPixel	"bottomShadowPixel"
+#define XtNlimitThumb		"limitThumb"
+
+typedef struct _ScrollbarRec	  *ScrollbarWidget;
+typedef struct _ScrollbarClassRec *ScrollbarWidgetClass;
+
+extern WidgetClass vim_scrollbarWidgetClass;
+
+extern void vim_XawScrollbarSetThumb __ARGS((Widget, double, double, double));
+
+typedef struct
+{
+     /* public */
+    Pixel	  foreground;	/* thumb foreground color */
+    XtOrientation orientation;	/* horizontal or vertical */
+    XtCallbackList scrollProc;	/* proportional scroll */
+    XtCallbackList thumbProc;	/* jump (to position) scroll */
+    XtCallbackList jumpProc;	/* same as thumbProc but pass data by ref */
+    Pixmap	  thumb;	/* thumb color */
+    float	  top;		/* What percent is above the win's top */
+    float	  shown;	/* What percent is shown in the win */
+    float	  max;		/* Maximum value for top */
+    Dimension	  length;	/* either height or width */
+    Dimension	  thickness;	/* either width or height */
+    Dimension	  min_thumb;	/* minium size for the thumb. */
+
+     /* private */
+    XtIntervalId  timer_id;	/* autorepeat timer; remove on destruction */
+    char	  scroll_mode;	/* see below */
+    float	  scroll_off;	/* offset from event to top of thumb */
+    GC		  gc;		/* a (shared) gc */
+    Position	  topLoc;	/* Pixel that corresponds to top */
+    Dimension	  shownLength;	/* Num pixels corresponding to shown */
+
+    /* From 3d widget */
+    Dimension	shadow_width;
+    Pixel	top_shadow_pixel;
+    Pixel	bot_shadow_pixel;
+    Bool	limit_thumb;	/* limit thumb to inside scrollbar */
+    int		top_shadow_contrast;
+    int		bot_shadow_contrast;
+    GC		top_shadow_GC;
+    GC		bot_shadow_GC;
+} ScrollbarPart;
+
+#define SMODE_NONE		0
+#define SMODE_CONT		1
+#define SMODE_PAGE_UP		2
+#define SMODE_PAGE_DOWN		3
+#define SMODE_LINE_UP		4
+#define SMODE_LINE_DOWN		5
+
+#define ONE_LINE_DATA		1
+#define ONE_PAGE_DATA		10
+#define END_PAGE_DATA		9999
+
+typedef struct _ScrollbarRec {
+    CorePart		core;
+    SimplePart		simple;
+    ScrollbarPart	scrollbar;
+} ScrollbarRec;
+
+typedef struct {int empty;} ScrollbarClassPart;
+
+typedef struct _ScrollbarClassRec {
+    CoreClassPart		core_class;
+    SimpleClassPart		simple_class;
+    ScrollbarClassPart		scrollbar_class;
+} ScrollbarClassRec;
+
+extern ScrollbarClassRec vim_scrollbarClassRec;
+
+#endif /* _Scrollbar_h */
