this is the home of fox - a minimalistic forth system and swapwm - a minimalistic x11
#fox - a minimalistic forth system
- fox bootstrap dictionary written in x86-64 nasm assembly
- subroutine threaded
- core instruction set similar to pentium colorforth
- supports saving compiled forth code to an elf64 object file - can therefore be linked to an executable!
- two dictionaries - one for forth (normal) words and one for macros
- code, data and dictionaries are in seperate memory sections
- todo: can not parse negative numbers yet, so use
n neg instead
to install fox (and swapwm) you need:
- an x86_64 linux system
- ld (every linux system has this linker installed)
the installation procedure is as follows:
# download fox and swapwm source code
hg clone https://hg.sr.ht/~telesto/fox
# assemble and link everything
make clean && make
this builds two executable files in
- fox: the forth system
- swapwm: the window manager
run fox with the system library:
1 2 + .
#swapwm - a minimalistic window manager written in fox
- written in fox
- 100% forth - no libx11/libxcb required! swapwm has it's own implementation of the x11 protocol specification! i am not aware of any other window manager with this unique feature.
- minimalistic - no window decorations, no icons
- known to work with slackware current 64-bit, i have no idea if swapwm will work with other linux systems. feedback is appreciated.
- will connect to a local x server using the x server socket. connecting a remote x server using a tcp socket is not supported.
see fox installation for instructions.
to make swapwm your default window manager just add the line
swapwm provides no application launcher, you can use e.g. xbindkeys
and dmenu. swapwm comes with a xbindkey config file example.
when working with x11 i have a rather static setup:
- 2 monitors: one small, one big
- 2-5 application open at once
swapwm reflects this working setup.
make once will create the file
this file contains the config parameters for swapwm.
per default swapwm is configured to run on DISPLAY=:0. if your x server is running
on another display edit the socket file name called
you can also change keyboard commands and modifier keys here.
when done run
make clean && make to create the swapwm executable.
#default keyboard commands
- F9: maximize focused window
- F10: move focused window to next screen and maximize it
- F12: pull bottom window in window stack to the top
there are two modifier keys: mod1 (defaults to the win key) and
mod2 (defaults to win key + ctrl key)
- mod1+left button pushed: move focused window
- mod1+right button pushed: resize focused window
- mod1+wheel pushed: maximize focused window
- mod1+wheel up: push top window to the bottom of the window stack
- mod1+wheel down: pull bottom window to the top of the window stack
- mod2+left button pushed: tile focused window at the left side of
- mod2+right button pushed: tile focused window at the right side of
- mod1+wheel pushed: move focused window to next screen and maximize it
- sometimes when shuffling windows using mod1+mouse wheel
the input focus will not be set to the top window.