Skip to content

Instantly share code, notes, and snippets.

@kennypete
Last active February 12, 2024 18:06
Show Gist options
  • Save kennypete/e74f67bcef25f708f0c81cefc730e504 to your computer and use it in GitHub Desktop.
Save kennypete/e74f67bcef25f708f0c81cefc730e504 to your computer and use it in GitHub Desktop.
Customising a gvim toolbar

My gvim toolbar

This gist demonstrates/explains how I customised my Windows gvim toolbar.

1. Why customise the gvim toolbar?

  • I have to use Windows for my work device and I am not against using a mouse sometimes. That is, I am not an anti-mouse zealot ― if it makes sense, use it, though I have very long period of mouseless goodness on my Planck 40% keyboard-only. (That’s great too!)

  • I prefer gvim in general. There are all sorts of benefits, from being able to toggle character 'renderoptions', having a toolbar for the few things I like it for (e.g., toggling the menu and spell checking, which is one of the few things I feel is better with a mouse), and more. Also, I use my own statusline, vim-tene, which requires a built-in function not available in one increasingly popular fork of Vim.

2. The default gvim toolbar

Calling it for what it is, the default toolbar looks (IMO) unattractive and dated. It also has heaps of buttons I am not interested in using:

_gvim-the-default-toolbar

 

Having not seen any other gvim toolbar customisations, I thought it was worth turning what I did with mine into a gist. This is what my gvim toolbar looks like:

_gvim-the-kennypete-toolbar

 

Key differences:

  • The “1990s” buttons are out; use simple greyscale-like ones.

  • Pointless (IMO) buttons like Find, Vim Help, and Search Vim are removed.

  • Useful things (again, IMO) like a spell check toggle, next misspelled word, and menu toggle buttons are added.

ℹ️

The last point is worth explaining. Although I rarely use the menu, having it easily accessible with a toggle is handy. There are some commands that are harder to remember, yet are quickly found in the default menu. Easy. The purists will disagree, but that is okay ― everyone for their own. 😁️

3. How I customised my toolbar

  • Added code to my ~\_gvimrc, which entirely removes the default toolbar and replaces it with mine.

  • Created 18 x 18 pixel images for replacement (and my new) toolbar buttons.

  • Added the images to where they need to be when gvim starts.

These points are explained below.

3.1. My ~\_gvimrc additions

I added the following to my ~\_gvimrc:

if has("toolbar")
  if len(split(execute('amenu ToolBar'), '\n')) > 0
    aunmenu ToolBar
  endif
  anoremenu 1.10 ToolBar.Open :browse confirm e<CR>
  tmenu ToolBar.Open Open file
  anoremenu 1.20 ToolBar.Mks :execute "browse mksession! " .. strftime("%Y-%m-%d")<CR>
  tmenu ToolBar.Mks Save current session
  anoremenu 1.30 ToolBar.Run :browse source<CR>
  tmenu ToolBar.Run Run a Vim Script / Load a session
  if has("printer") && !has("unix")
    anoremenu 1.40 ToolBar.Print :hardcopy<CR>
    vnoremenu ToolBar.Print :hardcopy<CR>
  elseif has("unix")
    anoremenu 1.40 ToolBar.Print :w !lpr<CR>
    vnoremenu ToolBar.Print :w !lpr<CR>
  endif
  tmenu ToolBar.Print Print
  anoremenu 1.45 ToolBar.-sep1- <Nop>
  anoremenu 1.50 ToolBar.Undo u
  tmenu ToolBar.Undo Undo
  anoremenu 1.60 ToolBar.Redo <C-R>
  tmenu ToolBar.Redo Redo
  anoremenu 1.65 ToolBar.-sep2- <Nop>
  vnoremenu 1.70 ToolBar.Cut "+x
  tmenu ToolBar.Cut Cut to clipboard
  vnoremenu 1.80 ToolBar.Copy "+y
  cnoremenu 1.80 ToolBar.Copy <C-Y>
  tmenu ToolBar.Copy Copy to clipboard
  nnoremenu 1.90 ToolBar.Paste "+gP
  cnoremenu 1.90 ToolBar.Paste <C-R>+
  exe 'vnoremenu <script> ToolBar.Paste ' .. paste#paste_cmd['v']
  exe 'inoremenu <script> ToolBar.Paste ' .. paste#paste_cmd['i']
  tmenu ToolBar.Paste Paste from Clipboard
  anoremenu 1.95 ToolBar.-sep3- <Nop>
  anoremenu <silent> 1.100 ToolBar.Spell :let &spell = &spell==0 ? 1 : 0<CR>
  tmenu ToolBar.Spell Toggle spell checking
  anoremenu <silent> 1.110 ToolBar.SpellNext ]s
  tmenu ToolBar.SpellNext Next misspelled word
  anoremenu 1.115 ToolBar.-sep4- <Nop>
  anoremenu 1.120 ToolBar.Menu :execute "if &guioptions=~'m' \| set guioptions-=m \| else \| set guioptions+=m \| endif"<CR>
  tmenu ToolBar.Menu Toggle menu
endif

This completely replaces the default toolbar (aunmenu ToolBar). The rest sequentially adds my ToolBar items (anoremenu) and tooltips (tmenu).

This works equally well with Linux (I also use gvim in Debian 12 as well as WSL Debian 12).

3.2. Creating the .bmp images

The replacement images are 18 x 18 pixel bitmaps, which is what the Vim help at gui-toolbar says works best.

In order of appearance on my toolbar, they are:

― Open.bmp
― Mks.bmp
― Run.bmp
― Print.bmp
― Undo.bmp
― Redo.bmp
― Cut.bmp
― Copy.bmp
― Paste.bmp
― Spell.bmp
― SpellNext.bmp
― Menu.bmp

They are available in _gvim-toolbar-bmps.zip.

ℹ️
Creating the bitmaps

I created them using a mix of very downsized icon images and building them myself using the very low-tech Microsoft Paint, believe it or not. There are also Linux gvim-compatible .xpm versions, which are explained below.

3.3. “Installing” the images

As the gui-toolbar help says, when put into ~\vimfiles\bitmaps the images will override the defaults (where applicable) or otherwise be used where the anoremenu command matches the .bmp name, e.g., anoremenu 1.120 ToolBar.Menu … will use ~\vimfiles\bitmaps\Menu.bmp.

4. Linux gvim toolbar

I’ve done something similar with my Debian Linux gvim toolbar. There is no difference to the ~\_gvimrc code (though it is in a .gvimrc, of course).

The $HOME/.vim/bitmaps directory should be used for the images, which, as vim’s help outlines, is still called “bitmaps” even though the files are xpm files. A .tar of those .xpm files: _gvim-toolbar-xpms.tar.

ℹ️

There are only four .xpm files (Mks.xpm, Spell.xpm, SpellNext.xpm, and Menu.xpm) in the _gvim-toolbar-xpms.tar because the default buttons are fine (I think) in default Linux gvim. So, I only created the ones where there is no in-built image. They were built using GIMP.

_gvim-the-kennypete-toolbar-WSL-Debian

5. The end

And that’s it; my customised gvim toolbar!

Menu.xpm0000755000175000017500000000372514532011502011533 0ustar peterpeter/* XPM */
static char * Menu2_xpm[] = {
"34 34 39 1",
" c None",
". c #FFDB95",
"+ c #9D0015",
"@ c #880015",
"# c #880045",
"$ c #C6DBFF",
"% c #D96615",
"& c #883A95",
"* c #ECFFFF",
"= c #FFB66F",
"- c #B1B6FF",
"; c #FFFFDD",
"> c #C63A15",
", c #9D90DD",
"' c #FFFFB9",
") c #B10015",
"! c #8866B9",
"~ c #88006F",
"{ c #D9FFFF",
"] c #EC9045",
"^ c #FFFFFF",
"/ c #9D3A45",
"( c #883A45",
"_ c #B16645",
": c #883A6F",
"< c #B13A15",
"[ c #B16615",
"} c #D99045",
"| c #C66615",
"1 c #D9B66F",
"2 c #D9DB95",
"3 c #9D90B9",
"4 c #D9FFB9",
"5 c #B1B6DD",
"6 c #D9FFDD",
"7 c #C6DBDD",
"8 c #886695",
"9 c #ECDBDD",
"0 c #ECDBFF",
" ",
" .+@@@@@@#$ %@@@@@@@&* ",
" =@@@@@@@@- ;>@@@@@@@&* ",
" =@@@@@@@@, ')@@@@@@@&* ",
" =@@@@@@@@! .+@@@@@@@~{ ",
" ]@@@@@@@@& =@@@@@@@@~{ ",
" ]@@@@@@@@~{ ^]@@@@@@@@~{ ",
" %@@@@@@@@#$ ^%@@@@@@@@#$ ",
" ^%@@@@@@@@@- ;>@@@/@@@@#$ ",
" ^%@@@@(+@@@, ')@@@/@@@@#$ ",
" ;>@@@@(+@@@! ')@@#_@@@@@- ",
" ;>@@@@:<@@@&* .+@@~[@@@@@- ",
" ;>@@@@&}@@@~{ =@@@&|@@@@@- ",
" ')@@@@~1@@@#$ ]@@@!%@@@@@, ",
" ')@@@@~2+@@@- %@@@3>@@@@@, ",
" ')@@@@~4)@@@,^;>@@@5>@@@@@, ",
" .+@@@@~6>@@@!^')@@#7>@@@@@! ",
" .+@@@@~{%@@@~{.+@@~6>@@@@@! ",
" .+@@@@~{=@@@#$=@@@!;>@@@@@! ",
" =@@@@@~{.+@@@-]@@@,;>@@@@@&* ",
" =@@@@@~{')@@@,%@@@-;>@@@@@&* ",
" =@@@@@~{;>@@@8>@@#$;>@@@@@&* ",
" ]@@@@@~{^%@@@(+@@~{^%@@@@@~{ ",
" ]@@@@@~{ ]@@@@@@@&* %@@@@@~{ ",
" ]@@@@@~{ .+@@@@@@!^ %@@@@@~{ ",
" %@@@@@~{ ')@@@@@@,^ %@@@@@#$ ",
" %@@@@@~{ ;>@@@@@@-^ %@@@@@#$ ",
" ^%@@@@@&* ^%@@@@@#$^ ]@@@@@#$ ",
" ;>@@@@@&* ]@@@@@~{ ]@@@@@@- ",
" ;>@@@@@&* ^999990^ ]@@@@@@- ",
" ;>@@@@@&* ]@@@@@@, ",
" ')@@@@@&* ]@@@@@@, ",
" ')@@@@@&* ]@@@@@@, ",
" "};
Mks.xpm0000755000175000017500000001562214532012140011357 0ustar peterpeter/* XPM */
static char * Mks_xpm[] = {
"34 34 266 2",
" c None",
". c #D40000",
"+ c #8F0000",
"@ c #7D0000",
"# c #810000",
"$ c #800000",
"% c #8E0000",
"& c #8A0000",
"* c #D10000",
"= c #8C0000",
"- c #9D0000",
"; c #CB0000",
"> c #D50000",
", c #CF0000",
"' c #B50000",
") c #FF0000",
"! c #B30000",
"~ c #FD0000",
"{ c #8B0000",
"] c #B20000",
"^ c #ED0000",
"/ c #EC0000",
"( c #F00000",
"_ c #C20000",
": c #870000",
"< c #A90000",
"[ c #960000",
"} c #A20000",
"| c #910000",
"1 c #B40000",
"2 c #AB0000",
"3 c #880000",
"4 c #7C0000",
"5 c #850000",
"6 c #9F0000",
"7 c #CE0000",
"8 c #FE0000",
"9 c #F40000",
"0 c #C50000",
"a c #830000",
"b c #A00000",
"c c #EB0000",
"d c #B00000",
"e c #DD0000",
"f c #F90000",
"g c #C90000",
"h c #900000",
"i c #BB0000",
"j c #B80000",
"k c #BF0000",
"l c #DA0000",
"m c #E00000",
"n c #950000",
"o c #860000",
"p c #690000",
"q c #390000",
"r c #2D0000",
"s c #4A0000",
"t c #000000",
"u c #010000",
"v c #670000",
"w c #6A5656",
"x c #708989",
"y c #708383",
"z c #708080",
"A c #6F8080",
"B c #738080",
"C c #778080",
"D c #788080",
"E c #728282",
"F c #6A7A7A",
"G c #526262",
"H c #4A5A5A",
"I c #435858",
"J c #294141",
"K c #3F2222",
"L c #460000",
"M c #0E1E1E",
"N c #B0BABA",
"O c #FFFFFF",
"P c #F8F8F8",
"Q c #CFCFCF",
"R c #BEBEBE",
"S c #C3C3C3",
"T c #AEAEAE",
"U c #838282",
"V c #394646",
"W c #000606",
"X c #680808",
"Y c #6B5555",
"Z c #94A7A7",
"` c #EAF2F2",
" . c #F8FFFF",
".. c #DFEDED",
"+. c #BCBFBF",
"@. c #A09F9F",
"#. c #868585",
"$. c #394A4A",
"%. c #000F0F",
"&. c #9CACAC",
"*. c #FBFBFB",
"=. c #FBFCFC",
"-. c #FCFAFA",
";. c #FEF3F3",
">. c #FFF2F2",
",. c #FFF9F9",
"'. c #EADFDF",
"). c #A6A4A4",
"!. c #858686",
"~. c #7B7C7C",
"{. c #3C4848",
"]. c #A0B0B0",
"^. c #EEEDED",
"/. c #D1D1D1",
"(. c #D3D3D3",
"_. c #D4D4D4",
":. c #D4D5D5",
"<. c #D1DEDE",
"[. c #D9C6C6",
"}. c #F67373",
"|. c #FF4343",
"1. c #FF4747",
"2. c #EE5F5F",
"3. c #A78A8A",
"4. c #859292",
"5. c #7B7D7D",
"6. c #050E0E",
"7. c #9EAAAA",
"8. c #D8D8D8",
"9. c #B7B7B7",
"0. c #B9B9B9",
"a. c #BBBBBB",
"b. c #BBBCBC",
"c. c #B7C8C8",
"d. c #C2A9A9",
"e. c #E83B3B",
"f. c #E32626",
"g. c #A68080",
"h. c #879999",
"i. c #7C7E7E",
"j. c #9DA9A9",
"k. c #E1E1E1",
"l. c #C5C5C5",
"m. c #C7C7C7",
"n. c #C9C9C9",
"o. c #C7CDCD",
"p. c #CBC3C3",
"q. c #D99E9E",
"r. c #DE8686",
"s. c #D87E7E",
"t. c #C38383",
"u. c #9F9292",
"v. c #8A9090",
"w. c #7C7D7D",
"x. c #000607",
"y. c #A0ACAC",
"z. c #C0C0C0",
"A. c #949494",
"B. c #989898",
"C. c #9B9B9B",
"D. c #9B9A9A",
"E. c #9A9C9C",
"F. c #95A1A1",
"G. c #9CAEAE",
"H. c #B4C6C6",
"I. c #B4C1C1",
"J. c #9D9F9F",
"K. c #8C8B8B",
"L. c #7C7C7C",
"M. c #3D4747",
"N. c #060F0F",
"O. c #AAB5B5",
"P. c #F5F5F5",
"Q. c #626262",
"R. c #080808",
"S. c #111111",
"T. c #171717",
"U. c #151616",
"V. c #0A0E0E",
"W. c #303737",
"X. c #9AA1A1",
"Y. c #BFC5C5",
"Z. c #9FA0A0",
"`. c #424444",
" + c #020303",
".+ c #F9F9F9",
"++ c #727272",
"@+ c #1F1F1F",
"#+ c #282828",
"$+ c #2D2D2D",
"%+ c #2C2C2C",
"&+ c #222222",
"*+ c #454545",
"=+ c #A1A1A1",
"-+ c #A0A0A0",
";+ c #8D8D8D",
">+ c #7F7F7F",
",+ c #454444",
"'+ c #9FAAAA",
")+ c #EFEFEF",
"!+ c #D9D9D9",
"~+ c #DBDBDB",
"{+ c #DDDDDD",
"]+ c #D7D7D7",
"^+ c #B5B5B5",
"/+ c #9E9E9E",
"(+ c #909090",
"_+ c #848484",
":+ c #474645",
"<+ c #000D0D",
"[+ c #8D9C9C",
"}+ c #FEFEFE",
"|+ c #C8C8C8",
"1+ c #ABABAB",
"2+ c #7C7B7B",
"3+ c #585857",
"4+ c #303738",
"5+ c #132022",
"6+ c #000B0B",
"7+ c #778888",
"8+ c #D6D5D5",
"9+ c #A7A7A7",
"0+ c #A8A8A8",
"a+ c #A9A9A9",
"b+ c #AAAAAA",
"c+ c #A5A5A5",
"d+ c #8A8A8A",
"e+ c #565555",
"f+ c #0F0E0D",
"g+ c #0F2023",
"h+ c #415962",
"i+ c #550707",
"j+ c #5F4E4E",
"k+ c #677878",
"l+ c #556565",
"m+ c #4B5555",
"n+ c #515453",
"o+ c #545353",
"p+ c #535353",
"q+ c #555454",
"r+ c #595958",
"s+ c #555554",
"t+ c #4A4949",
"u+ c #2F3637",
"v+ c #3A2D32",
"w+ c #91454C",
"x+ c #000909",
"y+ c #000707",
"z+ c #030505",
"A+ c #050404",
"B+ c #040404",
"C+ c #050504",
"D+ c #020201",
"E+ c #415961",
"F+ c #570000",
"G+ c #600000",
"H+ c #580000",
"I+ c #2D1619",
"J+ c #192226",
"K+ c #1C1F23",
"L+ c #1D1F23",
"M+ c #1D1F22",
"N+ c #1A1F22",
"O+ c #171F23",
"P+ c #432C30",
"Q+ c #953E44",
" . + @ # $ # @ + . ",
" . % # & & & # % . ",
" * = - ; > ; - = * ",
" , & ' ) ) ) ' & , ",
" , & ' ) ) ) ' & , ",
" , & ! ~ ) ~ ! & , ",
" . { ] ~ ) ~ ] { . ",
" ^ / ( _ : ! ~ ) ~ ! : _ ( / ^ ",
" < [ } | @ 1 ~ ) ~ 1 @ | } [ < ",
" 2 3 4 5 6 7 8 ) 8 7 6 5 4 3 2 ",
" 9 0 a b ^ ) ) ) ) ) ^ b a 0 9 ",
" c d ' e 9 ) ) ) 9 e ' d c ",
" f g h i ) ) ) i h g f ",
" ( j k l m l k j ( ",
" ) * n o n * ) ",
" p q r q p ",
" s t t u u u u u u t t t t t u u u t u u u u t t ",
" v w x y z z z z A A B C D C B A A z E F G H G I J K ",
" L M N O O O O O O O O O O O O O O O O O P Q R S T U V W ",
" X Y Z ` O O O O O O O O O O O O O O O O O O ...+.@.#.$.W ",
" %.&.O O *.*.*.*.*.*.*.*.*.*.*.*.*.*.=.-.;.>.,.'.).!.~.{.W ",
" %.].O ^./.(._._._._._._._._._._._.:.<.[.}.|.1.2.3.4.5.{.W ",
" 6.7.O 8.9.0.a.a.a.a.a.a.a.a.a.a.a.b.c.d.e.) ) f.g.h.i.{.W ",
" 6.j.O k.l.m.n.n.n.n.n.n.n.n.n.n.n.n.o.p.q.r.s.t.u.v.w.{.x. ",
" 6.y.O z.A.B.C.C.C.C.C.C.C.C.C.C.C.C.D.E.F.G.H.I.J.K.L.M.W ",
" N.O.P.Q.R.S.T.T.T.T.T.T.T.T.T.T.T.T.T.U.V.W.X.Y.Z.K.L.`. + ",
" N.O..+++@+#+$+$+$+$+$+$+$+$+$+$+$+$+$+%+&+*+=+z.-+;+>+,+u ",
" 6.'+O )+8.!+~+~+~+~+~+~+~+~+~+~+~+~+~+~+{+]+n.^+/+(+_+:+t ",
" <+[+O O .+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+}+)+|+1+B.2+3+4+5+ ",
" 6+7+8+a.9+0+a+a+a+a+a+a+a+a+a+a+a+a+a+a+b+0+c+C.d+e+f+g+h+ ",
" i+j+k+l+m+n+o+o+o+o+o+o+o+o+o+o+o+o+o+p+p+q+r+s+t+u+g+v+w+ ",
" i+6+x+y+z+A+B+B+B+B+B+B+B+B+B+B+B+B+B+B+B+C+D+t 5+E+w+ ",
" F+G+H+I+J+K+L+L+L+L+L+L+L+L+L+L+L+L+L+L+M+N+O+P+Q+ ",
" "};
SpellNext.xpm0000755000175000017500000001143014532013020012532 0ustar peterpeter/* XPM */
static char * SpellNext_xpm[] = {
"34 34 138 2",
" c None",
". c #B65B5B",
"+ c #B25A5A",
"@ c #856AD5",
"# c #646AD5",
"$ c #646ADD",
"% c #85A9EE",
"& c #9B2222",
"* c #8B0808",
"= c #CE9C9C",
"- c #A68AD5",
"; c #3F48CC",
"> c #648AEE",
", c #A63A39",
"' c #7D0000",
") c #870E0E",
"! c #B56E6E",
"~ c #6448CC",
"{ c #3F6ADD",
"] c #972C2C",
"^ c #830000",
"/ c #970000",
"( c #B22222",
"_ c #D19D9D",
": c #8548CC",
"< c #3F48DD",
"[ c #950000",
"} c #940000",
"| c #920000",
"1 c #8D0101",
"2 c #820607",
"3 c #7F0D0E",
"4 c #8A1818",
"5 c #8B1717",
"6 c #7D0606",
"7 c #9C0000",
"8 c #E60000",
"9 c #D90000",
"0 c #930A0A",
"a c #B17373",
"b c #A66ACC",
"c c #3F8AEE",
"d c #800000",
"e c #970001",
"f c #AC0000",
"g c #B40000",
"h c #B50000",
"i c #AD0000",
"j c #A90000",
"k c #AA0000",
"l c #C80202",
"m c #FF0202",
"n c #F20000",
"o c #B20000",
"p c #AE2828",
"q c #CB9797",
"r c #3F48D5",
"s c #810000",
"t c #890000",
"u c #C80000",
"v c #FC0000",
"w c #FE0000",
"x c #F90000",
"y c #F80000",
"z c #FA0000",
"A c #FF0000",
"B c #CB0000",
"C c #8C0404",
"D c #C48888",
"E c #C4E3EE",
"F c #64A9F7",
"G c #8A0000",
"H c #D10000",
"I c #FF0101",
"J c #EB0000",
"K c #BC0000",
"L c #C73838",
"M c #C4E3FF",
"N c #FFE3E6",
"O c #CC0000",
"P c #3F6AE6",
"Q c #D00000",
"R c #F50000",
"S c #7E0000",
"T c #A6E3F7",
"U c #C48ACC",
"V c #FD0000",
"W c #DA0202",
"X c #940404",
"Y c #3B0000",
"Z c #FFFFF7",
"` c #BD0000",
" . c #B60000",
".. c #B30000",
"+. c #CE0202",
"@. c #F40000",
"#. c #BB0000",
"$. c #BC2E2E",
"%. c #CC8E8E",
"&. c #655555",
"*. c #E1E3FF",
"=. c #8F0000",
"-. c #8E0000",
";. c #8D0000",
">. c #840303",
",. c #820707",
"'. c #880D0D",
"). c #880C0C",
"!. c #7D0303",
"~. c #9F0000",
"{. c #ED0000",
"]. c #DD0000",
"^. c #900000",
"/. c #B97474",
"(. c #E1E3E6",
"_. c #D40000",
":. c #D80000",
"<. c #C90304",
"[. c #89262A",
"}. c #73545A",
"|. c #B6989A",
"1. c #C99191",
"2. c #932828",
"3. c #850000",
"4. c #A00000",
"5. c #B51D1D",
"6. c #C98C8C",
"7. c #A73B3B",
"8. c #7C0000",
"9. c #830101",
"0. c #B16262",
"a. c #9C2323",
"b. c #880303",
"c. c #C68D8D",
"d. c #B04D4D",
"e. c #AB4C4C",
"f. c #856ACC",
"g. c #648AE6",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" . + @ # # $ % ",
" & * = - ; ; ; ; ; ; ; ; > ",
" , ' ) ! ~ ; ; ; ; ; ; ; ; ; ; { ",
" ] ^ / ( _ : ; ; ; ; ; ; ; ; ; ; ; ; < ",
"[ } | 1 2 3 4 5 6 7 8 9 0 a b ; ; ; ; ; ; ; ; ; ; ; ; ; ; c ",
"' d e f g h i j k l m n o p q ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; r ",
"s t u v w x y y y z A A A B C D ; ; ; ; ; ; ; ; ; ; < E : ; ; ; F ",
"d G H A A A A A A A A I I J K L b ; ; ; ; ; ; ; ; ; < M N ~ ; ; ; c ",
"s G O A A A A A A A A A A A A B : ; ; ; ; ; ; ; ; < M N ~ ; ; ; ; P ",
"d G Q A A A A A A A A I I R O S : ; ; r T U ; ; < M N ~ ; ; ; ; ; P ",
"s G B A A V V V V w A A A W X Y b ; ; ; F Z U < M N ~ ; ; ; ; ; ; c ",
"' s 7 h ` ` .o ..+.I @.#.$.%.&.U ; ; ; ; F Z *.N ~ ; ; ; ; ; ; ; F ",
"=.-.;.t >.,.'.).!.~.{.].^./. ; ; ; ; ; F (.~ ; ; ; ; ; ; ; r ",
"_._.:.<.[.}.|.1.2.3.4.5.6. b ; ; ; ; ; ; ; ; ; ; ; ; ; ; c ",
" 7.8.9.0. ~ ; ; ; ; ; ; ; ; ; ; ; ; < ",
" a.b.c. ~ ; ; ; ; ; ; ; ; ; ; r ",
" d.e. f.; ; ; ; ; ; ; ; { ",
" @ ~ ; ; r g. ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" "};
Spell.xpm0000755000175000017500000000402514532017045011710 0ustar peterpeter/* XPM */
static char * Spell_xpm[] = {
"34 34 43 1",
" c None",
". c #FFFFFF",
"+ c #FFE3F7",
"@ c #C4C7EE",
"# c #C4A9E6",
"$ c #858ADD",
"% c #858AE6",
"& c #C4E3F7",
"* c #E1FFFF",
"= c #FFE3EE",
"- c #A68AD5",
"; c #6448CC",
"> c #3F48CC",
", c #3F6AD5",
"' c #85C7F7",
") c #3F48D5",
"! c #E1C7DD",
"~ c #3F6AE6",
"{ c #E1A9D5",
"] c #3F6ADD",
"^ c #C4FFFF",
"/ c #FFC7DD",
"( c #FFE3E6",
"_ c #3F8AEE",
": c #A66ACC",
"< c #85C7FF",
"[ c #3F48DD",
"} c #85A9EE",
"| c #856ACC",
"1 c #C48ACC",
"2 c #64A9F7",
"3 c #8548CC",
"4 c #C48AD5",
"5 c #FFFFF7",
"6 c #A6E3FF",
"7 c #648ADD",
"8 c #858AD5",
"9 c #C4A9DD",
"0 c #C4E3FF",
"a c #E1C7E6",
"b c #646ACC",
"c c #646AD5",
"d c #85A9E6",
" ",
" ",
" .+@#$%@&*. ",
" =-;>>>>>>>>,'* ",
" =->>>>>>>>>>>>>)' ",
" !;>>>>>>>>>>>>>>>>~* ",
" {>>>>>>>>>>>>>>>>>>>]^ ",
" />>>>>>>>>>>>>>>>>>>>>]^ ",
" (;>>>>>>>>>>>>>>>>>>>>>>_ ",
" :>>>>>>>>>>>>>>>>>>>>>>>>< ",
" {>>>>>>>>>>>>>>>>>>>>>>>>>[^ ",
" :>>>>>>>>>>>>>>>>>>>>>>>>>>< ",
" />>>>>>>>>>>>>>>>>>>}:>>>>>>~* ",
" {>>>>>>>>>>>>>>>>>>'.=|>>>>>[^ ",
" :>>>>>>>>>>>>>>>>>'..1>>>>>>>< ",
" :>>>>>>>>>>>>>>>>'..1>>>>>>>>2 ",
" 3>>>>>>>>>>>>>>>'..1>>>>>>>>>2 ",
" 3>>>>>)'1>>>>>>'..4>>>>>>>>>>2 ",
" 3>>>>>2.51>>>>'..4>>>>>>>>>>>2 ",
" :>>>>>>'.51>>'..4>>>>>>>>>>>>< ",
" 1>>>>>>>'.542..4>>>>>>>>>>>>)6 ",
" />>>>>>>>'....4>>>>>>>>>>>>>[^ ",
" 3>>>>>>>>'..{>>>>>>>>>>>>>>_. ",
" 1>>>>>>>>>78>>>>>>>>>>>>>>)6 ",
" (;>>>>>>>>>>>>>>>>>>>>>>>>_ ",
" {>>>>>>>>>>>>>>>>>>>>>>>[^ ",
" :>>>>>>>>>>>>>>>>>>>>>>< ",
" :>>>>>>>>>>>>>>>>>>>>2 ",
" :>>>>>>>>>>>>>>>>>)' ",
" 9;>>>>>>>>>>>>>>]0 ",
" =->>>>>>>>>>>,' ",
" 5a8b>>>)cd0. ",
" ",
" "};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment