xskat - a card game for 1 to 3 players.
xskat [-display|-d display] [-geometry|-g geometry]
[-font|-fn font] [-iconic|-i] [-title|-T string] [-name
prog] [-fg color] [-bg color] [-bt color] [-mark color]
[-3d] [-2d] [-3dtop color] [-3dbot color] [-mb button#]
[-keyboard number] [-tdelay seconds] [-fastdeal]
[-slowdeal] [-help|-h] [-frenchcards] [-french4cards]
[-germancards] [-german4cards] [-color] [-mono] [-color1
color] .. [-color4 color] [-large] [-small] [-up] [-down]
[-alt] [-seq] [-list|-l file] [-alist] [-nlist] [-tlist]
[-log file] [-dolog] [-nolog] [-fmt] [-unfmt] [-game file]
[-briefmsg] [-verbosemsg] [-trickl2r] [-notrickl2r] [-lang
language] [-start player#] [-s1 number] [-s2 number] [-s3
number] [-ramsch] [-noramsch] [-ramschonly] [-sramsch]
[-nosramsch] [-skattolast] [-skattoloser] [-kontra]
[-nokontra] [-kontra18] [-bock] [-nobock] [-bockramsch]
[-bockevents number] [-resumebock] [-noresumebock]
[-spitze] [-spitze2] [-nospitze] [-revolution] [-norevolu-
tion] [-klopfen] [-noklopfen] [-schenken] [-noschenken]
[-hint] [-nohint] [-newrules] [-oldrules] [-shortcut]
[-noshortcut] [-askshortcut] [-irc] [-noirc] [-irctelnet
program] [-ircserver hostname] [-ircport number] [-irccha-
nnel name] [-ircnick name] [-ircuser name] [-ircrealname
name] [-ircpos number] [-irclog file] [-irclogappend]
[-irclogoverwrite] [-auto #ofgames] [-opt file] [-pk]
XSkat lets you play the card game Skat as defined by the
official Skat Order.
Up to 3 players may be simulated by the computer.
After starting the game a mouse click or ESC/F1 will bring
up a menu. Other useful keys are: Space, Return, Tab,
Cursor left/right/up/down. The rest of the game controls
should be fairly obvious.
An introduction to Skat can be found at
In the following descriptions, the player starting XSkat
is called player1.
-display display name
-geometry geometry specification
-font font name (default: 9x15 or 10x20)
-title window title
-name application resource name
-fg foreground color
-bg background color
The usual X toolkit options.
The color of dialog buttons.
The color of the marks that indicate
who is forehand (during bidding),
who is the Soloist,
which card the computer would play,
or the keyboard focus
(default: red or black).
-3d Use a 3D look for dialogs (default).
-2d Use the old, flat style (default on monochrome
The color used for the lines around the top and
left sides of 3D buttons (default: white).
The color used for the lines around the bottom and
right sides of 3D buttons (default: black).
-mb menu button
The number of the mouse button that brings up the
menu (default: 0 = any button).
Define how much of the user interface may be con-
trolled by the keyboard. The number has the fol-
0 : Nothing.
1 : More (default).
2 : Everything.
Specifies how long the last trick will be visible.
A delay of more than 10 seconds means that the
trick will be removed after pressing a mouse but-
ton. In multiplayer mode the largest specified
value is used (default: 0.7).
Deal the cards without any time consuming anima-
Deal the cards slowly (default).
-help Show a short help text.
Play with French suited cards.
Change the colors of diamond and spade to orange
and green, so that the 4 suits have easily distin-
guishable colors (default).
Use German cards.
Change the color of acorns to brown, so that the 4
suits have easily distinguishable colors.
-color Use colored cards. If there are not enough colors
left, the number of colors used to draw the cards
will be reduced appropriately (default).
-mono Use b&w cards.
-color1 .. -color4
Redefine the colors of the suits diamond, heart,
spade and club. Selecting -french4cards overrides
the colors for diamond and spade.
-large and -small
Select the size of the main window (default: as
large as possible).
-down Sort cards downwards (default).
-up Sort cards upwards.
-alt Sort cards in alternating order.
-seq Sort cards in sequential order (default).
The file for saving/restoring the game list
(default: $HOME/.xskat.lst or ./xskat.lst if HOME
isn't set. For IRC games: .irc instead of .lst).
-alist Alternative form of listing.
-nlist Normal form of listing (default).
-tlist Listing with tournament scoring.
Turn on automatic logging, i.e. append logs of all
games to filename (- means stdout).
-dolog Turn on automatic logging (default file:
$HOME/.xskat.log or ./xskat.log).
-nolog Turn off automatic logging (default). Logs of
individual games may still be saved during the
-fmt Write formatted log files, i.e. use backspaces for
underlining and boldface.
-unfmt Write unformatted log files (default).
Read predefined games from filename (- means
stdin). Not available for IRC play. See also sec-
tion FILES below.
Indicate who is forehand (during bidding) and who
is the Soloist by displaying a small mark on the
back of the cards.
Additionally print out everyones position and what
is being played (default).
Put down the cards of a trick from left to right
Place the cards corresponding to the players posi-
Currently available: English and German (default:
$LANG/$LANGUAGE is tried first. Then: see Imake-
The player who starts dealing cards (default: 2).
Change the playing strenght of the computer play-
s1 corresponds to the left computer in single
player mode or to the one and only computer in two
s2 corresponds to the right computer in single
s3 is only useful with -auto.
The number must be between -4 (weak) and 0
Play a game of Ramsch when all players pass.
The following rules are currently implemented:
The Skat remains face down until it goes to the
winner of the last trick (or to the loser of the
game, s.b.). The amount lost is the number of card
points taken. If two players tie for most card
points, they both lose. If all tie, the score is
0. If one player takes no tricks (a virgin) the
amount lost by the loser is doubled. Someone tak-
ing all the tricks (forced march) wins 120 points.
Don't play Ramsch (default).
Play Ramsch each game.
Play Schieberamsch instead of simple Ramsch.
The rules are:
Each player in turn, starting with Forehand, may
pick up the Skat and discard two cards face down.
It's not allowed to pass on jacks. The score is
doubled each time a player doesn't pick up the
Don't play Schieberamsch (default).
At the end of a Ramsch game the Skat is awarded to
the loser(s). This will increase the loss.
The Skat goes to the winner of the last trick
Allow opponents to say 'Kontra' which doubles the
score of the game. The Soloist may reply 'Re' to
double the score again.
Disallow Kontra (default).
Only an opponent who said at least 18 may say 'Kon-
-bock Play a Bockround after some special event. The
score is doubled in the next 3 games. If an event
causing a new Bockround happens before the current
Bockround is over or several Bockround events hap-
pen at the same time, the number of Bockrounds
still to play is increased appropriately.
Don't play Bockrounds (default).
Play a round of compulsory Ramsch after each Bock-
round. Before a game of Ramsch begins, each player
in turn, starting with Forehand, may declare to
play Grand Hand instead. After a Grand Hand the
same player deals again because this game does not
count towards completing the Ramschround.
Specify the events that cause a Bockround.
(1) A game is lost with 60 points.
(2) A successful Grand Hand.
(4) A successful Kontra (opponents win).
(8) A game with Kontra & Re.
(16) A player's score ends in 3 equal digits.
(32) A player's score is a multiple of 100.
(64) A game value of +72 or more.
(128) A game value of +96 or more.
Add up the numbers in parentheses to specify the
desired events (default: 0).
A Kontra where the Soloist said Re but lost counts
as one event not two (events 4 and 8).
To check a player's score, the current listing
options of player1 are used (events 16 and 32). A
score that is a multiple of 1000 counts as one
The game value (events 64 and 128) is the normal
value without considering any doubling caused by
Ramsch, Kontra or Bock.
Resume unfinished Bockrounds after quitting and
restarting XSkat. The number of games to play is
read from the game list file.
Don't resume Bockrounds (default).
Allow the Soloist to declare Spitze. This means
that the last trick must be made with the lowest
trump to win the game. This will be indicated to
the other players by displaying the lowest trump.
The game multiplier is increased by 1. It's not
allowed to say Spitze in a Grand with 4 jacks.
Declaring Spitze increases the multiplier by 2.
Don't allow Spitze (default).
Enable a special variation of Null ouvert. After
the Soloist's cards are exposed the opponents can
look at each other's cards and rearrange the cards
between their two hands in any way they wish before
the start of the play. Revolution is worth 92
Don't allow Revolution (default).
During a Ramschround you may knock (klopfen) at the
beginning of a game to indicate that you think you
won't lose. This will double the score of the
game. Klopfen is not possible if you don't pick up
the Skat in Schieberamsch.
Don't allow Klopfen (default).
If the opponents decide at the start of the play
that they cannot defeat the Soloist, they can give
up. This is done by selecting Schenken from the
main menu during the first trick when it's your
turn. If the Soloist accepts, the score is as
though the game was won simply. The Soloist can
insist on playing on, but in that case has to make
the opponents Schneider to win. The score in this
case is as for an announced Schneider (the multi-
plier is increased by 2). If the Soloist goes on
the opponents can schenken again, giving the
Soloist the Schneider. The Soloist can accept
Schneider or insist on playing on for Schwarz.
Don't allow Schenken (default).
-hint Put a mark over the card the computer would play.
Don't show computer hints (default).
Use the official rules of 01/01/1999:
Lost Hand games count double.
The Grand Ouvert multiplier is 24.
Lost Hand games count simple.
The Grand Ouvert multiplier is 36.
Always finish the game when the remaining tricks
will all go to one side.
Play each trick.
Ask whether a shortcut should be taken (default).
-irc Play via Internet Relay Chat. This option will
establish a connection to an IRC server where you
can join other people for a game of Skat.
How it works:
Start XSkat from an xterm. Wait until the server
has printed the welcome message. You are now on
channel #xskat where new games should be planned.
Everything you type into the xterm will be sent to
everyone else on this channel. After you have found
one or two other players and agreed upon the name
of a new channel (say #xskat123), you should type
/join #xskat123. When all players are on the new
channel, exactly one player has to type /go (or
/go2 if there are only 2 players) to start the
game. Now you can play and talk.
-noirc Don't use IRC (default).
Specify the program that will be used to connect to
the IRC server. If you are sitting behind a fire-
wall, a program like rtelnet must be used and you
may have to set $SOCKS_SERVER to the name of your
firewall host (default: telnet).
Select an IRC server near you! (default: $IRCSERVER
or irc.fu-berlin.de, if not changed in the Imake-
The port of the IRC server to connect to (default:
$IRCPORT or 6667).
The channel to join initially (default: #xskat).
Your IRC nickname. If your nick is already used by
someone else, a different nick will be generated
automatically. Some servers allow a nick length of
30, others limit it to 9 characters. (default:
$IRCNICK or $IRCUSER or $LOGNAME or xskatNNNN).
Your user/login name. Note: most servers don't like
faked user names (default: $IRCUSER or $LOGNAME).
Your real name (default: $IRCNAME or the entry from
the passwd file or 'XSkat player').
Select your position relative to the other players.
Positions are numbered clockwise 1, 2 and 3. Player
2 will start dealing if not specified otherwise
with -start or /start. If you don't specify your
position or there is a conflict with someone else's
choice or you give an invalid number (3 in a 2
player game), this will be fixed automatically.
Choosing the right positions is important if you
want to continue with a saved game list (default: 0
= I don't care).
Everything sent to or received from the IRC server
is saved to this file (- means stdout). It may be
useful for debugging (default: $HOME/.xskat.ilg or
Append output to the log file.
Overwrite existing log file (default).
/nick name, /nick - change or display your nick-
/who - is on the current channel ?
/list, /list string - show all channels that match
the word xskat or the specified string. This will
take some time on networks with a large number of
channels. Trying to stop the listing will termi-
nate the program.
/pos number - see -ircpos.
/bell - toggle the alarm bell. When on, the bell
will ring each time someone joins your channel or
sends a message to you. The bell is off initially.
/quit - terminate XSkat.
/sync - if messages get lost due to a net-split (or
because someone left the channel during play),
XSkat will detect this and in most cases should be
able to synchronize automatically (within 30 sec-
onds) after the connection is reestablished. Typ-
ing /sync will try this immediately.
/quote command args - for those who know what they
The following commands are only useful for the
player who will start the game by typing /go
because that player will determine the rules of the
/default - set the official rules.
/ramsch, /sramsch, /skattoloser, /kontra, /bock,
/resumebock, /spitze, /revolution, /klopfen,
/schenken, /oldrules, /bockevents, /alist, /tlist,
/start, /s1 - change the rules of the game. All of
these require an argument (a number or True/False)
just like the resources with the same name.
/rules - show the current rules to everyone on your
Notes: The version numbers of all participating programs
must be equal.
Most options cannot be changed during the game.
Options that can be changed are not saved to a
The game list can only be cleared during bidding or
when it's your turn to play a card. There is a
different default game list for IRC games (see
It's possible to type into the xterm or the game
window (which is recommended), but changing input
sources in the middle of a line won't work.
If you want better input line editing and a split
screen try the program ssfe. It is used like this:
ssfe -raw xskat -irc
You can omit -irc when you specify any of the other
Three computers play the specified number of games
without human interaction. The resulting scores
With this option, no resources are read, and the
game list is saved only if -list is specified.
The file for saving/restoring all interactively
changeable options of all players (default:
$HOME/.xskat.opt or ./xskat.opt). Command line
options take precedence over options specified in
this file which in turn override resource specifi-
cations. This may be changed with the useoptfile
-pk If you want the computer to deal a Good Hand every
time. (as requested by Petra K.) Alternatively,
pressing F6 three times will result in a Good Hand
for the next game. Does not work in multiplayer
Specifies the display of the second and third
player (but is ignored for IRC games). The player@
part may be omitted if the alias resource is set on
Command line options take precedence over resource speci-
fications for player1.
geometry, font, title, foreground, background
The usual X11 resources.
mark (see -mark).
button (used for 2D buttons, see -bt).
(used for 3D buttons, see -bt, default: a shade of
(used for 3D dialogs, see -bg, default: a different
shade of gray).
3d True or False (see -3d and -2d).
3dtop (see -3dtop).
3dbot (see -3dbot).
tdelay (see -tdelay).
True or False (see -fastdeal and -slowdeal).(#)
cards 0, 1, 2 or 3 (see -frenchcards, -french4cards,
-germancards and -german4cards).
color True or False (see -color and -mono).
color1 .. color4
(see -color1 .. -color4).
large True or False (see -large and -small).
down True or False (see -down and -up).
alt True or False (see -alt and -seq).
list (see -list).(#)
alist True or False (see -alist and -nlist).
tlist True or False (see -tlist and -nlist).
log (see -log).(#)
dolog True or False (see -dolog and -nolog).(#)
True or False (see -fmt and -unfmt).(#)
game (see -game).(#)
True or False (see -briefmsg and -verbosemsg).
True or False (see -trickl2r and -notrickl2r).
start (see -start).(#)
s1, s2 (see -s1, -s2).(#)
ramsch 0, 1 or 2 (see -noramsch, -ramsch and -ram-
True or False (see -sramsch and -nosramsch).(#)
True or False (see -skattoloser and -skatto-
kontra 0, 1 or 2 (see -nokontra, -kontra and -kon-
bock 0, 1 or 2 (see -nobock, -bock and -bockramsch).(#)
True or False (see -resumebock and -noresume-
spitze 0, 1 or 2 (see -nospitze, -spitze and -spitze2).(#)
True or False (see -revolution and -norevolu-
True or False (see -klopfen and -noklopfen).(#)
True or False (see -schenken and -noschenken).(#)
hint True or False (see -hint and -nohint).
True or False (see -oldrules and -newrules).(#)
0, 1 or 2 (see -noshortcut, -askshortcut and
irc True or False (see -irc and -noirc).(#)
ircpos (see -ircpos).(#)
irclog (see -irclog).(#)
True or False (see -irclogappend and -irclogover-
opt (see -opt).(#)
True or False (default: False). This is a resource
for multiplayer mode (but not for IRC). It is
ignored for player1. If set to True, the contents
of the option file, which is owned by player1, are
used. This means that you may end up with someone
else's preferred settings if player1 used this file
in a different multiplayer game.
alias The player's real name (max. 2 words of 9 charac-
ters, default: $LOGNAME).
Only player1 may specify the resources marked with (#).
Filenames starting with ~/ are interpreted correctly if
HOME is set.
An example of a file specifying predefined games:
# The following block specifies the distribution
# of cards for player1, 2, 3 and Skat(0).
# A 10 K Q J 9 8 7
2 2 2 2 2 0 3 3 # Diamond
2 2 2 2 2 3 3 3 # Heart
1 1 1 1 1 3 3 3 # Spade
1 1 1 1 1 0 3 3 # Club
# The following is not the same game !
# Player numbers rotate 3 -> 2 -> 1 -> 3
# (and depend on the start option).
2 2 2 2 2 0 3 3
2 2 2 2 2 3 3 3
1 1 1 1 1 3 3 3
1 1 1 1 1 0 3 3
# Repeat the above games forever.
# The following lines take effect only
# when you delete the 'repeat'.
random_seed 123456 0 2
# Specifies the random number which determines
# card distribution for all following games.
# The second number lets you skip that many
# games in the sequence.
# The third (optional) number defines
# who will start dealing cards (see -start).
# An additional L or R following this number will
# rotate the cards left or right.
# The random_seed will be shown in game logs
# to allow easy replay. Just type:
# echo random_seed 123456 0 2 | xskat -game -
There are no official rules for the variations Ramsch,
Kontra, Bock, Spitze, Revolution, Klopfen and Schenken.
If executing xskat player@otherhost:0 on yourhost gives an
error message you could try the command xhost yourhost on
otherhost to grant yourhost access to otherhost's display.
If you replay a game with your own cards, it doesn't mat-
ter whether 'Forehand changes' is set to 'yes' or 'no'.
Some versions of telnet have a bug, that prevents them
from reading input from a pipe correctly. See README.IRC
for a fix or put this into your ~/.telnetrc:
set echo off
set escape off
set rlogin off
set flushoutput off
set interrupt off
set quit off
set eof off
set erase off
set kill off
set lnext off
set susp off
set reprint off
set worderase off
set start off
set stop off
set forw1 off
set forw2 off
set ayt off
Leading blanks are important! Change the irc server line
The latest version is always available at
This program is free software; you can redistribute it freely.
Use it at your own risk; there is NO WARRANTY.
Redistribution of modified versions is permitted
provided that the following conditions are met:
1. All copyright & permission notices are preserved.
2.a) Only changes required for packaging or porting are made.
2.b) It is clearly stated who last changed the program.
The program is renamed or
the version number is of the form x.y.z,
where x.y is the version of the original program
and z is an arbitrary suffix.