ref: a84fb85ea760b4bac5228c3706461a29aff38c82
dir: /README/
CHESSFS(4) CHESSFS(4)
NAME
chessfs - chess filesystem
SYNOPSIS
chessfs [-verbose] [-addr addr] [-srv srv] [-group gid]
chessterm [-font path] [-bg col] [-fg col] player directory
rc/play [-r] player directory
DESCRIPTION
Chessfs is a filesystem for playing chess games. It posts a
server named after the argument, which by default is
"chessfs". Specifying a listening address serves 9p over
the announces address, instead of a server, or UNIX socket.
The files' username is the one running the program, and the
group can be set using the -group option.
The filesystem contains three files - ctl, clone and games.
Opening the clone file creates a new game, and the id can be
read from the fid. The game can be found under the games
directory, as a directory with the game id. Ctl is for
reading and setting server options. It displays the maximum
amount of games, and the current count of games. Setting
roomsize changes the maximum number of games which can be
played.
In each game directory, there are the ctl, white, black and
moves file. Ctl supports the following commands:
time seconds Set the amount of time each player has. The
default value is -1 indicating that the game
is not timed.
start Start the game.
close Close the game, which may or may not have
ended.
The board files, white and black, show the current pieces'
position, depending on the player. Writing to the file makes
a move on behalf of the corresponding player.
draw Offer a draw, or accept a draw if the other player
offered one.
resign Resign the game.
move Make the following move, following the algebraic
notation.
For reading the game in the PGN notation, the moves files
can be read.
Chessterm is the user interface for the filesystem. It
assumes the game is already cloned, and takes as arguments
the player (either "black" or "white"), and the game direc-
tory. Every half of second the directory is checked and the
board is updated. A mouse action, or the pressing the space
key on the keyboard, retriggers an update. Mouse button 2
brings up a menu with the option to offer a draw, resign, or
start the game. When promoting, the pieces are shown in a
menu. The font used is the one either from the environment
variable, or from the argument. Additionally, the background
and foreground colors can also be set, based on which the
board is drawn.
Play is an interactive script which prints the board and
game status, and waits for your or your opponent's move. The
-r flag transcribes the UTF-8 piece symbols into other sym-
bols, in case the used font doesn't have them.
EXAMPLES
Run the filesystem:
chessfs -srv chessfs -group chessclub
mount /srv/chessfs /n/chess
Create a new game, set parameters, and play:
cd /n/chess
cd games/`{cat clone}
echo time 1800 >ctl
echo start >ctl
echo e4 >white
sleep 1
echo resign >white
SOURCE
https://git.disroot.org/kitzman/chessfs
https://shithub.us/kitzman/chess/HEAD/info.html
BUGS AND TODO
The board does not have the right coordinates for the right
player.
Encrypting connections should be an option.
Currently players cannot change the owners of the files.
That means anyone can take over the game.