xcowsay man page

xcowsay — Display a cute cow and speech bubble.


xcowsay [-h] [-t time] [-r speed] [-d] [-f font] [text]...


Display a cow with a speech bubble containing some text. If text is specified it will be displayed in the bubble. Otherwise the text will be read from the standard input and displayed when end of file is encountered.

The cow is displayed for either a fixed amount of time, or an amount of time calculated from the size of the text. Click on the cow to dismiss it immediately.

If xcowsay is started with --daemon it will fork away from the terminal and run in daemon mode. The daemon provides a DBus service uk.me.doof.Cowsay that responds to ShowCow requests. The daemon can queue up any number of requests and displays them in order.

When xcowsay starts it checks to see if a daemon is running, and if it is, sends a ShowCow request and returns immediately. Otherwise xcowsay will block until the cow has disappeared.

Configuration File

xcowsay reads a configuration file on startup. The configuration file can be stored in the XDG compliant location $XDG_CONFIG_HOME/xcowsayrc (which will default to $HOME/.config/xcowsayrc) or in your home directory at $HOME/.xcowsayrc. If the --config=FILE command line option is passed FILE will be processed after your personal configuration file.

The configuration file consists of 'option = value' pairs, one per line. The valid keys are given in the next section. For example, the following line sets display time to 10 seconds:

display_time = 10000

The character '#' begins a comment which lasts until the end of the line.

Values containing spaces should be enclosed in quotes. For example:

font = "mono 28"


Note that these options override any settings in the config file.

-h, --help
Display usage information.
-t time, --time=time
Display the cow for time seconds. This overrides any value set for reading_speed. Setting time to zero displays the cow until it is clicked. The corresponding config file option is display_time.
-r speed, --reading-speed=speed
Number of milliseconds to display the cow for each word in the input text. This is clamped to a minimum of min_display_time and a maximum of max_display_time. The defaults are 1 second and 30 seconds respectively. The corresponding config file option is reading_speed.
-f font, --font=font
Font for the speech bubble text. Accepts Pango font strings. The corresponding config file option is font.
-d file, --dream=file
Display an image instead of text in the cow's bubble. The dream_time config file option sets the numer of milliseconds to display the image for. The default is 10 seconds.
Display a thought bubble instead of a speech bubble.
Run xcowsay in daemon mode if DBus support has been enabled. See the description for more information.
Size of the cow image. Current choices are small, med, or large. The corresponding config file option is cow_size.
Use a different image instead of the cow. The corresponding config file option is alt_image.
Make the cow appear on monitor N.
Force that cow to appear at screen location (X,Y). The config file options are at_x and at_y.
Change position of bubble relative to where it would normally appear. This is most useful when combined with the alt_image option to create your own characters. The config file options are bubble_x and bubble_y.
Disable word wrapping when the bubble is too wide to fit on the screen. The config file option wrap can be set to true or false to set this explicitly.
-l, --left
Make the bubble appear on the left hand side of the cow. This is useful if you are using your own image.
Print messages about what xcowsay is doing. Useful for finding out why the daemon fails.
Close window on release event instead of press. The corresponding config file option is close_event=button-release-event.
-v, --version
Print version information.


Written by Nick Gasson.

Reporting Bugs

Report all bugs to nick@nickg.me.uk The xcowsay home page is <http://www.doof.me.uk/xcowsay>

See Also



The cow and speech bubble have jagged edges which would be improved by anti-aliasing. Unfortunately this isn't possible without a compositing window manager since X can only cut holes in windows using a binary mask, so I wouldn't expect this any time soon.