mirror of
https://github.com/erkin/ponysay
synced 2024-11-16 16:37:59 +00:00
1781 lines
61 KiB
Text
1781 lines
61 KiB
Text
\input texinfo @c -*-texinfo-*-
|
||
|
||
@c %**start of header
|
||
@setfilename ponysay.info
|
||
@settitle Ponysay
|
||
@afourpaper
|
||
@documentencoding UTF-8
|
||
@documentlanguage en
|
||
@finalout
|
||
@c %**end of header
|
||
@set VERSION 2.3
|
||
|
||
@copying
|
||
This manual is for ponysay
|
||
(version @value{VERSION}),
|
||
|
||
Copyright @copyright{} 2012 Mattias Andrée
|
||
|
||
@quotation
|
||
Permission is granted to copy, distribute and/or modify this document
|
||
under the terms of the GNU Free Documentation License, Version 1.3 or
|
||
any later version published by the Free Software Foundation; with no
|
||
Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
|
||
Texts. A copy of the license is included in the section entitled
|
||
``GNU Free Documentation License''.
|
||
@end quotation
|
||
@end copying
|
||
|
||
@ifnottex
|
||
@node Top
|
||
@top Ponysay: ponies for your terminal
|
||
@insertcopying
|
||
@end ifnottex
|
||
|
||
@titlepage
|
||
@title Ponysay
|
||
@subtitle Infesting your terminal with ponies.
|
||
@subtitle Covers ponysay version @value{VERSION}.
|
||
@c ** start of front page image **
|
||
@c If print make a pdf or hard copy with the front cover
|
||
@c you may or may not want to remove this.
|
||
@image{infoimage,423.5px}
|
||
@c ** end of front page image **
|
||
@author by Mattias Andrée (maandree)
|
||
|
||
@page
|
||
@vskip 0pt plus 1filll
|
||
@insertcopying
|
||
@page
|
||
@*@*
|
||
@center{`For me! For my friends! @b{For EQUESTRIA!}'}
|
||
@end titlepage
|
||
|
||
@contents
|
||
|
||
|
||
@menu
|
||
* Overview:: Brief overview of @command{ponysay}.
|
||
* Invoking ponysay:: How to run @command{ponysay}.
|
||
* Advanced usage:: Advanced usage of @command{ponysay}.
|
||
* Environment variables:: Getting more from @command{ponysay} with environment variables.
|
||
* Limitations:: Known limitations that may not be that easy to overcome.
|
||
* Problems and requests:: Report issues and making requests.
|
||
* Dependencies:: Ponysay's Dependencies.
|
||
* Installing:: How to install @command{ponysay}.
|
||
* Extensions:: Extensions.
|
||
* Inner workings:: Useful information for those whom want to help hack @command{ponysay}.
|
||
* Contributing:: Useful information for those whom want to help improve the world.
|
||
* Distributing:: Useful information for OS package repository package maintainers.
|
||
* Change log:: Differences between the version of @command{ponysay}.
|
||
* Ponysay contributors:: Ponysay contributors.
|
||
* Ponysay license:: Ponysay license.
|
||
* GNU Free Documentation License:: Copying and sharing this manual.
|
||
* Concept index:: Concept index.
|
||
@end menu
|
||
|
||
|
||
|
||
|
||
@node Overview
|
||
@chapter Overview
|
||
@cindex overview
|
||
|
||
@command{ponysay} displays an image of a My Little Pony pony saying some text
|
||
provided by the user in a terminal, or a quote from the series. It is was wrapper for
|
||
@command{cowsay}, but since version 2.1 it reimplementation @command{cowsay}.
|
||
If message is not provided, e.g. by piping, it accepts standard input. The pony
|
||
saying the given message is printed on standard output.
|
||
|
||
@command{ponythink} is to @command{ponysay} as @command{cowthink} is to
|
||
@command{cowsay}.
|
||
|
||
@command{ponysay} is generally used to decorate your terminal with a random pony, when
|
||
you start the terminal. But if you known anypony how does like ponies [fat chance] you
|
||
can always make screen-shots of @command{ponysay -q} runs and communication that way
|
||
over e-mail.
|
||
|
||
|
||
|
||
|
||
@node Invoking ponysay
|
||
@chapter Invoking @command{ponysay}
|
||
@cindex invoking
|
||
@cindex options
|
||
@cindex arguments
|
||
@cindex ponythink
|
||
|
||
The format for running the @command{ponysay} program is:
|
||
|
||
@example
|
||
ponysay [@var{option}...] [--] [@var{message}]
|
||
ponythink [@var{option}...y] [--] [@var{message}]
|
||
@end example
|
||
|
||
Running @command{ponysay} will print a speech balloon, @command{ponythink} will
|
||
print a thought balloon. Otherwise @command{ponysay} and @command{ponythink} is
|
||
the same thing.
|
||
|
||
@command{ponysay} supports the following options:
|
||
|
||
@table @option
|
||
|
||
@item --
|
||
@cindex @option{--}
|
||
Parse the following arguments as parts of @code{@var{message}}.
|
||
|
||
@item -h
|
||
@itemx --help
|
||
@cindex @option{-h}
|
||
@cindex @option{--help}
|
||
Show summary of options.
|
||
|
||
@item -v
|
||
@itemx --verion
|
||
@cindex @option{-v}
|
||
@cindex @option{--version}
|
||
Show version of program.
|
||
|
||
@item -f PONY
|
||
@itemx --file PONY
|
||
@itemx --pony PONY
|
||
@cindex @option{-f}
|
||
@cindex @option{--file}
|
||
@cindex @option{--pony}
|
||
Specify the pony that should printed, this can either be a file name or a pony
|
||
name printed by @command{ponysay -l}. This option can be used multiple times to
|
||
specify a set of ponies from which one will be selected randomly. If no pony is
|
||
specified one will be selected randomly.
|
||
|
||
@cindex @command{util-say}
|
||
@cindex .png
|
||
@cindex png images
|
||
@cindex images, png
|
||
@cindex portable network graphics
|
||
If you have @command{util-say} installed, you can use .png-files as the arguments
|
||
for this options.
|
||
|
||
In versions earlier than version 2.0, the if the pony were a file name it had to
|
||
include a `@code{/}'. This is not longer required and any existing pony name
|
||
supersedes file names.
|
||
|
||
@item -F
|
||
@itemx ++file PONY
|
||
@itemx ++pony PONY
|
||
@cindex @option{-F}
|
||
@cindex @option{++file}
|
||
@cindex @option{++pony}
|
||
Just as @option{-F}, but it uses extra (non-MLP:FiM) ponies instead of standard
|
||
(MLP:FiM) ponies
|
||
|
||
@item -b STYLE
|
||
@itemx --bubble STYLE
|
||
@itemx --balloon STYLE
|
||
@cindex @option{-b}
|
||
@cindex @option{--bubble}
|
||
@cindex @option{--balloon}
|
||
Specify the balloon style that should used, this can either be a file name or a
|
||
balloon name printed by @option{ponysay -B}. This option can be used multiple
|
||
times to specify a set of styles from which one will be selected randomly. If no
|
||
balloon style is specified a fallback style will be used.
|
||
|
||
@item -q [PONY...]
|
||
@itemx --quote [PONY...]
|
||
@cindex @option{-q}
|
||
@cindex @option{--quote}
|
||
By using this option, a pony will be printed with quotes from her in My Little Pony:
|
||
Friendship is Magic. The pony will be selected randomly, unless at least one pony
|
||
is added as an argument after @option{-q}. If one or more ponies are added after
|
||
@option{-q}, the pony will be selected randomly from that set of ponies.
|
||
This option requires the extension @command{ponyquotes4ponysay}, which is included
|
||
by default since version 1.2.
|
||
|
||
The argument can be a file name, but pony if it ends with @file{.pony}.
|
||
|
||
@item -W COLUMN
|
||
@itemx --wrap COLUMN
|
||
@cindex @option{-W}
|
||
@cindex @option{--wrap}
|
||
Specify the screen column where the message should be wrapped,
|
||
this is by default 40, which is inherited from @command{cowsay}.
|
||
|
||
@item -c
|
||
@itemx --compress
|
||
@cindex @option{-c}
|
||
@cindex @option{--compress}
|
||
@cindex figlet
|
||
@cindex toilet
|
||
Compress the message in the same way @command{cowsay} does, that is basically
|
||
without multiple spaces, one only paragraphs seperations. Using this options
|
||
will mean that you cannot display @command{filet} and @command{TOIlet} style
|
||
messages.
|
||
|
||
@item -l
|
||
@itemx --list
|
||
@cindex @option{-l}
|
||
@cindex @option{--list}
|
||
Lists all installed ponies. If the extension @command{ponyquotes4ponysay} is
|
||
installed the ponies which have quotes, i.e. can be used with the @option{-q}
|
||
option, will be mark by being printed in bold or bright (depending on the terminal.)
|
||
|
||
@item -L
|
||
@itemx --altlist
|
||
@cindex @option{-L}
|
||
@cindex @option{--altlist}
|
||
Lists all installed ponies. If the extension @command{ponyquotes4ponysay}
|
||
is installed the ponies which have quotes, i.e. can be used with the @option{-q}
|
||
option, will be mark by being printed in bold or bright (depending on the terminal.)
|
||
This options differs from @option{-l} by printing alternative names (symbolic links)
|
||
inside brackets after their target ponies.
|
||
|
||
@item +l
|
||
@itemx ++list
|
||
@cindex @option{+l}
|
||
@cindex @option{++list}
|
||
Just as @option{-l}, but it lists extra (non-MLP:FiM) ponies instead of standard
|
||
(MLP:FiM) ponies
|
||
|
||
@item +L
|
||
@itemx ++altlist
|
||
@cindex @option{+L}
|
||
@cindex @option{++altlist}
|
||
Just as @option{-L}, but it lists extra (non-MLP:FiM) ponies instead of standard
|
||
(MLP:FiM) ponies
|
||
|
||
@item -B
|
||
@itemx --balloonlist
|
||
@cindex @option{-B}
|
||
@cindex @option{--balloonlist}
|
||
Prints a list of all balloon styles.
|
||
@end table
|
||
|
||
@cindex @var{message}
|
||
If neither @option{-q} is used nor any @var{message} is specified, @command{ponysay}
|
||
will read the message from stdin (standard input); however, if no arguments are used
|
||
that nothing is piped to stdin, a help message will be printed. If you want to use
|
||
@command{ponysay} without arguments and enter the message by hand, you can run
|
||
@code{cat | ponysay}.
|
||
|
||
@cindex @file{best.pony}
|
||
If no pony is selected, @command{ponysay} will look for a @file{best.pony} file,
|
||
this should be a symbolic link to the pony you want as a default. If it is not a
|
||
symbolic link, @option{-q} cannot determine which quotes to use.
|
||
|
||
|
||
@node Advanced usage
|
||
@chapter Advanced usage of @command{ponysay}.
|
||
@cindex advanced usage
|
||
|
||
@menu
|
||
* Fortune cookies:: Displaying with fortune cookies.
|
||
* Ponification:: Ponify your fortune cookies.
|
||
* Running on TTY:: Running on TTY (Linux VT).
|
||
* Running on screen:: Running on @command{screen}.
|
||
@end menu
|
||
|
||
|
||
@node Fortune cookies
|
||
@section Fortune cookies
|
||
@cindex fortune
|
||
@cindex startup
|
||
@cindex on startup
|
||
@cindex @file{.bashrc}
|
||
@cindex @file{~/.bashrc}
|
||
|
||
If you have @command{fortune} installed -- this program may be named
|
||
@command{fortune-mod} in your GNU/Linux distributions package repository -- you can
|
||
run @code{fortune | ponysay} to get a random pony reading a random fortune cookie.
|
||
|
||
By adding @code{fortune | ponysay} to the end [easiest way] of your
|
||
@file{~/.bashrc} -- or equivalent for your shell if you do not use GNU Bash
|
||
(standard shell for most distributions now a days) -- you will get the effect
|
||
described in the previous paragraph every time you open a terminal.
|
||
|
||
|
||
@node Ponification
|
||
@section Ponification
|
||
@cindex ponification
|
||
@cindex text ponification
|
||
@cindex ponypipe
|
||
|
||
You can ponify text (i.e. replaces words search as `everyone' with `everypony')
|
||
by using @code{fortune | ponypipe} instead of using @command{fortune}.
|
||
@command{ponypipe} can be downloaded from @url{https://github.com/maandree/ponypipe}.
|
||
Alternatively you can use @command{pinkie} (or @command{pinkiepie}), which can
|
||
be downloaded from @url{https://github.com/maandree/pinkie-pie}, which is just
|
||
@code{fortune | ponypipe}. There is also a large @command{sed} script, similar
|
||
to @command{ponypipe}: @url{http://www.reddit.com/r/mylittlelinux/comments/srixi/using_ponysay_with_a_ponified_fortune_warning/}
|
||
However I think @command{ponypipe} as better at replacing words than the @command{sed}
|
||
script, but I haven't used the script so I wouldn't know for sure.
|
||
|
||
|
||
@node Running on TTY
|
||
@section Running on TTY
|
||
@cindex tty
|
||
@cindex linux vt
|
||
@cindex @file{.bashrc}
|
||
@cindex @file{~/.bashrc}
|
||
|
||
If you use TTY and have a custom colour palette, you should also add to your
|
||
@file{~/.bashrc}, before @code{fortune | ponysay}:
|
||
@cartouche
|
||
@example
|
||
[ "$TERM" = "linux" ] &&
|
||
function ponysay
|
||
@{ exec ponysay "$@@"
|
||
#RESET PALETTE HERE
|
||
@}
|
||
@end example
|
||
@end cartouche
|
||
|
||
|
||
@node Running on screen
|
||
@section Running on @command{screen}
|
||
@cindex screen
|
||
@cindex @file{.bashrc}
|
||
@cindex @file{~/.bashrc}
|
||
|
||
@command{screen} will adapt ANSI colour escape sequences to your terminal's
|
||
capabilities. This means that if your terminal reports itself as @code{xterm}
|
||
in @env{$TERM} ponies will lose their colours; they will only use the lower 16
|
||
colours instead of the top 240 colours. By default, almost all X terminals,
|
||
including @command{xterm} and @command{mate-terminal} reports themselves as
|
||
@code{xterm} in @env{$TERM}, and some reports their actual name in @env{$COLORTERM}.
|
||
So before opening @command{screen} you use set @env{$TERM} to @code{xterm-256color},
|
||
if you are using a terminal with support for @code{xterm}'s 256 colours; this
|
||
can be done by adding to your @file{~/.bashrc}:
|
||
@cartouche
|
||
@example
|
||
[ "$TERM" = "xterm" ] &&
|
||
function screen
|
||
@{ export TERM="xterm-256color"
|
||
exec screen "$@@"
|
||
@}
|
||
@end example
|
||
@end cartouche
|
||
|
||
|
||
|
||
@node Environment variables
|
||
@chapter Environment variables
|
||
@cindex environment variables
|
||
@cindex truncation
|
||
|
||
@command{ponysay} supports the follow environment variables:
|
||
|
||
@table @env
|
||
@item PONYSAY_BOTTOM
|
||
@cindex @env{PONYSAY_BOTTOM}
|
||
@cindex tty
|
||
Under TTY (Linux VT), if the output is larger the the screen's height, only
|
||
the beginning is printed, leaving two blank lines. If you want the bottom
|
||
to be printed rather the the beginning you can export @env{PONYSAY_BOTTOM}
|
||
with the value @code{yes}, @code{y} or @code{1}.
|
||
|
||
@item PONYSAY_SHELL_LINES
|
||
@cindex @env{PONYSAY_SHELL_LINES}
|
||
@cindex tty
|
||
Under TTY (Linux VT), if the output is larger the the screen's height, two
|
||
lines are left blank. If you want more, or less, blank lines you can export
|
||
@env{PONYSAY_SHELL_LINES} with the value of how many blank lines you want.
|
||
Naturally this takes effect if the output is not actually larger than the
|
||
screen.
|
||
|
||
@item PONYSAY_FULL_WIDTH
|
||
@cindex @env{PONYSAY_FULL_WIDTH}
|
||
You can export @env{PONYSAY_FULL_WIDTH} with the value @code{yes}, @code{y}
|
||
or @code{1}, if you do not want the output to be truncated on the width to
|
||
fit the terminal.
|
||
|
||
@item PONYSAY_TRUNCATE_HEIGHT
|
||
@cindex @env{PONYSAY_TRUNCATE_HEIGHT}
|
||
Export @env{PONYSAY_TRUNCATE_HEIGHT} with the value @code{yes}, @code{y}
|
||
or @code{1}, if you want to truncate the output on the height even if you
|
||
are not running @command{ponysay} under TTY.
|
||
|
||
@item PONYSAY_UCS_ME
|
||
@cindex @env{PONYSAY_UCS_ME}
|
||
@cindex ucs
|
||
@cindex universal character set
|
||
@cindex unicode
|
||
@cindex ascii
|
||
Export @env{PONYSAY_UCS_ME} with the value @code{yes}, @code{y} or @code{1},
|
||
if you want [simulated] symlink to pony files using Universal Character Set
|
||
in their names. Otherwise pony files uses only ASCII. If you want to remove
|
||
the ASCII:ised names export @env{PONYSAY_UCS_ME} with the value @code{harder},
|
||
@code{h} or @code{2} instead.
|
||
|
||
If you have not enabled this, UCS names are not usable, suggested or listed.
|
||
If you use @code{yes} UCS names will be usable, suggested or listed. If you
|
||
use @code{harder} ASCII:ised names will not be suggested or listed, but they
|
||
will still be usable.
|
||
|
||
@item PONYSAY_COWSAY
|
||
@itemx PONYSAY_COWTHINK
|
||
@cindex @env{PONYSAY_COWSAY}
|
||
@cindex @env{PONYSAY_COWTHINK}
|
||
@cindex custom cowsay
|
||
@cindex replace cowsay
|
||
Since version 2.1 this is no longer used as @command{cowsay} has been
|
||
reimplemented inside @command{ponysay}, but it is possible we will add
|
||
a way to replace that back-end.
|
||
|
||
If you want to use another program than @command{cowsay} (the first
|
||
@command{cowsay} found in @env{$PATH}), you can export @env{PONYSAY_COWSAY}
|
||
with the value of that program. In earlier versions than version 2.0: If, and
|
||
only if, @env{PONYSAY_COWSAY} does not have any value, @command{cowsay} is
|
||
patch with @code{use utf8;} to the beginning. The @code{use utf8;} patch is
|
||
introduced to make it easier to customise cowsay.
|
||
|
||
@env{PONYSAY_COWTHINK} will be used instead of @env{PONYSAY_COWSAY} if
|
||
you run @command{ponythink}.
|
||
@end table
|
||
|
||
See @ref{kmsponies4ponysay} for additional environment variables used by the
|
||
extension @command{kmsponies4ponysay}.
|
||
|
||
|
||
|
||
@node Limitations
|
||
@chapter Limitations
|
||
@cindex limitations
|
||
|
||
@menu
|
||
* Terminals:: Limitations on terminals.
|
||
* Cowsay:: Limitations on cowsay.
|
||
@end menu
|
||
|
||
|
||
@node Terminals
|
||
@section Terminals
|
||
@cindex terminals
|
||
@cindex fonts
|
||
@cindex broken ponies
|
||
|
||
@cindex xterm
|
||
@cindex putty
|
||
Ponysay works perfectly on @command{xterm}, @command{xterm} like terminals including
|
||
@command{putty}, settings may however need to be customised for Unicode Character Set
|
||
(UCS) support, but less well, depending on font, on VTE based terminals including
|
||
@command{mate-terminal}.
|
||
|
||
@cindex kms
|
||
@cindex kernel mode settings
|
||
@cindex tty
|
||
@cindex linux vt
|
||
On Linux's native terminal Linux VT (TTY) it works less well, and not good at all with
|
||
Kernel Mode Settings (KMS) support. See @url{https://github.com/erkin/ponysay/issues/1}
|
||
for more information. @command{ponysay} clears the screen before printing to TTY, this
|
||
is because if your graphics driver supports KMS, the colours will be messed by when the
|
||
ponies position moves on the screen, this is also reason why the output is truncated on
|
||
the height in TTY by default.
|
||
|
||
Most terminals have support for 256 colours, we do however only use the top 240
|
||
colours; this is because the lower 16 colours are usually, in contrast to the top 240,
|
||
customised. We assume that the top 240 colours have their standard values. In TTY with
|
||
KMS support we dot have any actual limit (except for @math{2^{24}} + full
|
||
transparency.)
|
||
|
||
@cindex xterm
|
||
@cindex urxvt
|
||
@cindex putty
|
||
@cindex rxvt
|
||
@cindex mrxvt
|
||
@cindex Eterm
|
||
@cindex aterm
|
||
@command{ponysay} works perfectly on @command{xterm}, @command{urxvt} and
|
||
@command{putty}, but @command{rxvt}, @command{mrxvt} and @command{Eterm} do not
|
||
have UTF-8 support and are currently not supported. Additionally @command{aterm}
|
||
have neither UTF-8 support nor 256 colour support, and is therefore not yet support.
|
||
|
||
@cindex 9term
|
||
Due to extreme limitations in @command{9term} @command{ponysay} will never be able to
|
||
run on it.
|
||
|
||
|
||
@node Cowsay
|
||
@section Cowsay
|
||
@cindex cowsay
|
||
|
||
This section describes the limitation of @command{cowsay}, but since version 2.1
|
||
@command{cowsay} is no longer used because of it. So none of the following limitations
|
||
are present anymore.
|
||
|
||
When @command{cowsay} determines the length of a word it measures in number of bytes
|
||
(in UTF-8), therefore non-ASCII words will malformat the balloon with the message.
|
||
|
||
Further, @command{cowsay} does not recognise ANSI escape sequences, therefore, using
|
||
colours and text styling in messages will also malformat the balloon with the message.
|
||
|
||
@command{cowsay} does not support balloon, including the link between the message and
|
||
the pony, customisation, other than using @command{cowthink}. However you can modify
|
||
@command{cowsay} (written Perl, so you can edit the installed files) to make the
|
||
balloon look different, maybe using box drawing characters.
|
||
|
||
@command{cowsay} does not support setting the minimum size of the balloon, both
|
||
directions on the balloon–pony links. or any other placement of the balloon than at
|
||
the top to the left.
|
||
|
||
|
||
|
||
@node Problems and requests
|
||
@chapter Problems and requests
|
||
|
||
@menu
|
||
* Problems:: Reporting bugs.
|
||
* Requests:: Requesting ponies.
|
||
@end menu
|
||
|
||
|
||
@node Problems
|
||
@section Reporting bugs
|
||
@cindex bugs
|
||
|
||
If you find a bug in @command{ponysay}, install the last version
|
||
from @url{https://github.com/erkin/ponysay}, and if it is still
|
||
present, please report it at @url{https://github.com/erkin/ponysay/issues}.
|
||
Please be as descriptive as possible, as it will help us verify it
|
||
solve it faster.
|
||
|
||
|
||
@node Requests
|
||
@section Requesting ponies
|
||
@cindex pony requests
|
||
|
||
If you want I specific pony added, ask us at
|
||
@url{https://github.com/erkin/ponysay/issues} and we will add it.
|
||
To speed the up the process, if possible, supply good pictures. Full visibly,
|
||
transparent background, and pixelated are the properties that makes a picture good.
|
||
|
||
|
||
|
||
@node Dependencies
|
||
@chapter Dependencies
|
||
@cindex dependencies
|
||
@cindex optional dependencies
|
||
|
||
We have provided a script that should run one most, if not all shells, named
|
||
@file{./dependency-test.sh} that will help you track down any missing package.
|
||
|
||
@menu
|
||
* Required runtime dependencies:: Required runtime dependencies.
|
||
* Optional runtime dependencies:: Optional runtime dependencies.
|
||
* Package building dependencies:: Package building dependencies.
|
||
* Dependencies for pony providers:: Dependencies for pony providers.
|
||
@end menu
|
||
|
||
|
||
@node Required runtime dependencies
|
||
@section Required runtime dependencies
|
||
|
||
@table @command
|
||
@item coreutils
|
||
@command{stty} is used to determine the size of the terminal.
|
||
@item python>=3
|
||
@command{ponysay} is written in pure Python 3.
|
||
@end table
|
||
|
||
@node Optional runtime dependencies
|
||
@section Optional runtime dependencies
|
||
@cindex extensions
|
||
@cindex optional dependencies
|
||
|
||
@table @command
|
||
@item util-say>=2
|
||
@cindex @command{util-say}
|
||
@cindex kms
|
||
@cindex tty
|
||
@cindex linux vt
|
||
For improved TTY support for user with custom colour palette and KMS support.
|
||
It can be downloaded at @url{https://github.com/maandree/util-say}.
|
||
|
||
@cindex .png
|
||
@cindex png images
|
||
@cindex images, png
|
||
@cindex portable network graphics
|
||
For the purpose of simplifying for pony contributors, @command{ponysay} supports
|
||
using .png-images (note that the file must not miss the @file{.png} in the file)
|
||
in addition of .pony-files or pony names.
|
||
@end table
|
||
|
||
|
||
@node Package building dependencies
|
||
@section Package building dependencies
|
||
|
||
@table @command
|
||
@item gzip
|
||
Used for compressing manuals.
|
||
@item texinfo
|
||
@itemx info
|
||
@command{texinfo} and @command{info} are required if you want this @command{info}
|
||
manual.
|
||
@item make
|
||
Required to run the make script.
|
||
@item coreutils
|
||
The make script uses @command{install}, @command{unlink}, @command{rm}, @command{ln},
|
||
@command{mkdir} and @command{cp} and @command{cut}.
|
||
@item sed
|
||
Used by the make script for @option{PREFIX} customisation.
|
||
@end table
|
||
|
||
|
||
@node Dependencies for pony providers
|
||
@section Dependencies for pony providers
|
||
@cindex contributing
|
||
|
||
@table @command
|
||
@item make
|
||
Required to run @command{make -B ttyponies}.
|
||
@item coreutils
|
||
@command{ln} and @command{readlink} are used in the @command{ttyponies} subscript.
|
||
@item bash
|
||
Used in the ttyponies subscript.
|
||
@item util-say>=2
|
||
Used by @command{make ttyponies} to build ttyponies from xterm ponies.
|
||
It can be downloaded at @url{https://github.com/maandree/util-say}.
|
||
@end table
|
||
|
||
|
||
|
||
@node Installing
|
||
@chapter Installing
|
||
@cindex installing
|
||
@cindex make
|
||
|
||
@menu
|
||
* From upstream:: Installing manually from upstream (GitHub repository).
|
||
* Arch Linux:: Packages for Arch Linux.
|
||
* Gentoo Linux:: Packages for Gentoo Linux.
|
||
* Debian GNU/Linux:: Packages for Debian GNU/Linux and Ubuntu.
|
||
* Uninstallation:: Uninstalling when installed manually.
|
||
@end menu
|
||
|
||
|
||
@node From upstream
|
||
@section From upstream
|
||
@cindex upstream installation
|
||
|
||
@menu
|
||
* Installations basics:: The basics of installations.
|
||
* Custom installations:: Installation customisation.
|
||
@end menu
|
||
|
||
@node Installations basics
|
||
@subsection Installations basics
|
||
@cindex @command{make}
|
||
@cindex basic installation
|
||
|
||
|
||
Before installing @command{ponysay}, make sure your system have the packages listed
|
||
under @ref{Required runtime dependencies} and @ref{Package building dependencies}
|
||
installed.
|
||
|
||
Tarballs can be downloaded at @url{https://github.com/erkin/ponysay/tarball/master}
|
||
for bleeding edge, or from @url{https://github.com/erkin/ponysay/tags} for releases.
|
||
|
||
If you have @command{git} you can @command{clone} the project URL
|
||
@url{https://github.com/erkin/ponysay.git}.
|
||
|
||
In the terminal, @command{cd} into the ponysay directory and execute
|
||
@command{./configure && make install}. This will install @command{ponysay} into the
|
||
@file{/usr}, meaning you may need to run @command{make install} as root,
|
||
e.g. by running @command{sudo make install}.
|
||
|
||
Now you will be to use ponysay, run: @command{ponysay "I am just the cutest pony!"},
|
||
or if have a specific pony in your mind: @command{ponysay -f pinkie "Partay!~"}.
|
||
|
||
@cindex manpage translations
|
||
@command{ponysay} comes with this @command{info} manual and a manpage in section 6,
|
||
@command{man 6 ponysay} (or just @command{man ponysay}). The manpage is also available
|
||
in Spanish: @command{man -L es 6 ponysay}. The install the Spanish manual add the
|
||
option @option{--with-man-es} when running @command{./configure}.
|
||
|
||
|
||
@node Custom installations
|
||
@subsection Custom installations
|
||
@cindex customised installations
|
||
@cindex installation customisation
|
||
@cindex make
|
||
@cindex @command{./configure}
|
||
@cindex configure
|
||
|
||
@cindex @option{--everything}
|
||
A basic installation will install everything @command{ponysay} has to offer, except
|
||
the prebuilt PDF manual and translated manpages. If you want to install exactly
|
||
everything add the option @option{--everything} when running @command{./configure}.
|
||
|
||
@cindex @option{--with-pdf}
|
||
@cindex PDF manual, with
|
||
@cindex @option{--without-man}
|
||
@cindex manpage, without
|
||
@cindex @option{--without-info}
|
||
@cindex @option{--without-info-install}
|
||
@cindex @option{info} manual, without
|
||
@cindex @option{--with-man-LANG}
|
||
@cindex manpage translations
|
||
After @option{--everything} it is possible to remove unwanted parts, this can of
|
||
cause be done without @option{--everything}. If you want to install the PDF manual
|
||
to @file{/usr/doc/ponysay.pdf} add the option @option{--with-pdf} when running
|
||
@command{./configure}. To install a manpage translation add @option{--with-man-LANG}
|
||
and substitute the the language code for @code{LANG}. Currently the only translation
|
||
is Spanish with the language code @code{es}. If you do not want the English manpage
|
||
add the option @option{--without-man}. If you do not want the @command{info} manual
|
||
add the option @option{--without-info}. If you are installing the @command{info}
|
||
manual but are not privileged to execute @command{install-info} add the option
|
||
@option{--without-info-install}.
|
||
|
||
|
||
The following argumentless options are also recognised:
|
||
@itemize @bullet
|
||
@item @option{--without-bash}
|
||
@cindex @option{--without-bash}
|
||
@cindex @command{bash}, without
|
||
will skip installation of auto-completion for @command{ponysay} and the
|
||
GNU Bourne-again shell, @command{bash}.
|
||
@item @option{--without-fish}
|
||
@cindex @option{--without-fish}
|
||
@cindex @command{fish}, without
|
||
will skip installation of auto-completion for @command{ponysay} and the
|
||
Friendly interactive shell, @command{fish}.
|
||
@item @option{--without-zsh}
|
||
@cindex @option{--without-zsh}
|
||
@cindex @command{zsh}, without
|
||
will skip installation of auto-completion for @command{ponysay} and the
|
||
shell @command{zsh}.
|
||
@item @option{--without-shared-cache}
|
||
@cindex @option{--without-shared-cache}
|
||
@cindex cache
|
||
@cindex kms
|
||
will skip installing a shared cache for KMS support, when there is no
|
||
shared cache, private one will be used at @file{~/.cache/ponysay}.
|
||
@end itemize
|
||
|
||
@cindex @option{--prefix=TARGET}
|
||
@cindex @file{/usr/games}
|
||
The program is by default installed in @file{/usr}, if you want another target
|
||
directory, you can add @option{--prefix=TARGET} when running @command{./configure}.
|
||
For example to install @command{ponysay} in @file{/usr/games} you build the
|
||
program by running @command{./configure --prefix=/usr/games}, and alike for
|
||
installation and uninstallation. Notice the @command{=} cannot be substituted
|
||
with white space.
|
||
|
||
@cindex @command{--info-desc=DESCRIPTION}
|
||
If you are not using @command{--without-info} you can add
|
||
@command{--info-desc=DESCRIPTION} to specify the description @command{info}
|
||
which provide when listing commands.
|
||
|
||
@cindex @command{--shell=SHELL}
|
||
By default @command{bash} is in the make file, if you want to use another shell
|
||
add the option @command{--shell=SHELL}.
|
||
|
||
|
||
|
||
@node Arch Linux
|
||
@section Arch Linux
|
||
@cindex arch linux
|
||
|
||
The official Arch Linux package repositories contains @command{ponysay} as
|
||
@w{@code{community/ponysay}}. The Arch Linux User Repository (AUR) contains a bleeding
|
||
edge git version of @command{ponysay} as @code{ponysay-git}.
|
||
|
||
|
||
@node Gentoo Linux
|
||
@section Gentoo Linux
|
||
@cindex gentoo linux
|
||
|
||
Gentoo users can use the overlay @url{https://github.com/etu/aidstu-overlay}, which
|
||
contains @command{ponysay} as @w{@code{games-misc/ponysay}}.
|
||
|
||
|
||
@node Debian GNU/Linux
|
||
@section Debian GNU/Linux and Ubuntu
|
||
@cindex debian gnu/linux
|
||
@cindex ubuntu
|
||
|
||
A .deb file is available at @url{http://roryholland.co.uk/misc.html#ponysay},
|
||
and a PPA can be found at @url{https://launchpad.net/~blazemore/+archive/ponysay}.
|
||
|
||
|
||
@node Uninstallation
|
||
@section Uninstallation
|
||
@cindex uninstallation
|
||
|
||
If you did not install @command{ponysay} with a package manager, but rather
|
||
manually from the upstream, you can uninstall it by running @command{make uninstall}.
|
||
|
||
Well written package manages will uninstall files that the package is no longer
|
||
using, i.e. if deleted, moved or renamed. To uninstall files that are not longer
|
||
used, by the currently installed version you will need that versions @file{Makefile}.
|
||
To perform the uninstallation of old filed run @command{make uninstall-old}.
|
||
|
||
|
||
|
||
@node Extensions
|
||
@chapter Extensions
|
||
@cindex extensions
|
||
@cindex optional dependencies
|
||
|
||
Ponysay does not support extensions, per se, but rather have optional features that
|
||
are enabled when other packages are installed.
|
||
|
||
@menu
|
||
* ponyquotes4ponysay:: ponyquotes4ponysay: Quotes from My Little Ponies.
|
||
* kmsponies4ponysay:: kmsponies4ponysay: Improved TTY support under KMS support.
|
||
@end menu
|
||
|
||
|
||
@node ponyquotes4ponysay
|
||
@section ponyquotes4ponysay
|
||
@cindex ponyquotes4ponysay
|
||
@cindex quotes
|
||
|
||
@command{ponyquotes4ponysay} is a package that adds support for MLP:FiM quotes that are
|
||
displayed with the associated ponies. See @ref{Invoking ponysay} for more information.
|
||
|
||
As of version 1.2 @command{ponyquotes4ponysay} is included in @command{ponysay},
|
||
but is still available at @url{https://github.com/maandree/ponyquotes4ponysay}.
|
||
|
||
|
||
@node kmsponies4ponysay
|
||
@section kmsponies4ponysay
|
||
@cindex kmsponies4ponysay
|
||
@cindex tty
|
||
@cindex linux vt
|
||
@cindex kms
|
||
@cindex kernel mode settings
|
||
@cindex environment variables
|
||
@cindex @env{PONYSAY_KMS_PALETTE}
|
||
@cindex @env{PONYSAY_KMS_PALETTE_CMD}
|
||
@cindex @file{.bashrc}
|
||
|
||
@command{kmsponies4ponysay} is an extension for TTY users that have a custom TTY
|
||
colour palette and KMS support. KMS is supported on most computers, but due to lack
|
||
of published specifications Nvidea drivers does not support KMS.
|
||
@command{kmsponies4ponysay} can be downloaded at
|
||
@url{https://github.com/maandree/kmsponies4ponysay}.
|
||
|
||
To use this extension your @file{~/.bashrc} (or equivalent for your shell) must keep
|
||
track of your colour palette, it is not possible for a program to ask to terminal.
|
||
Either the shell should export a palette string to @env{$PONYSAY_KMS_PALETTE} or you
|
||
should export a command to can get the palette string to
|
||
@env{$PONYSAY_KMS_PALETTE_CMD}. The palette string should be the stream which sets
|
||
the colour palette to the terminal when @command{echo}:ed; preferably, to increase
|
||
speed and reduce cache usage, it should be consistent every time it is exported for
|
||
every colours palette. So you may want to keep it sorted, always be in either upper
|
||
case or lower case, and not contain an character that is not used to set the colour
|
||
palette.
|
||
|
||
Assuming you have a function in your @file{~/.bashrc}, to reset the colour palette
|
||
to what you set it to last time in the terminal, named @command{reset-palette},
|
||
your @file{~/.bashrc} should, for example, contain:
|
||
@cartouche
|
||
@example
|
||
[ "$TERM" = "linux" ] &&
|
||
function ponysay
|
||
@{ export PONYSAY_KMS_PALETTE="$(reset-palette)"
|
||
exec ponysay "$@@"
|
||
@}
|
||
@end example
|
||
@end cartouche
|
||
|
||
@command{kmsponies4ponysay} uses @file{/var/cache/kmsponies4ponysay/} for cache space.
|
||
|
||
As of version 2.0 @command{kmsponies4ponysay} is included in @command{ponysay},
|
||
but is still available at @url{https://github.com/maandree/kmsponies4ponysay}.
|
||
|
||
|
||
|
||
@node Inner workings
|
||
@chapter Inner workings
|
||
@cindex inner workings
|
||
@cindex hacking
|
||
|
||
@menu
|
||
* Pony anatomy:: Anatomy of pony files.
|
||
* Pony quote infrastructure:: Pony quote infrastructure.
|
||
* Balloon style files:: Balloon style files.
|
||
* Printing in TTY with KMS:: Printing in TTY with KMS support.
|
||
* Truncation:: Output truncation.
|
||
* Languages:: Selection of programming languages.
|
||
* Shell auto-completion:: Things that make auto-completion simpler.
|
||
* Universal Character Set:: Something about Univeral Character Set support.
|
||
@end menu
|
||
|
||
|
||
@node Pony anatomy
|
||
@section Pony anatomy
|
||
@cindex pony anatomy
|
||
@cindex anatomy of pony files
|
||
|
||
The pony files are simple raw output data that can be printed to the terminal,
|
||
except it contains scalar variables. The pony images consists of white space, lower
|
||
half blocks [U+2584], upper half blocks [U+2580] and ANSI colour sequences (CSI m),
|
||
and, in TTY, colour value change sequences (OSI P).
|
||
|
||
Variables are recalled by putting the variable's name between two dollar signs
|
||
(@code{$var$}), and are stored by putting the variable's name followed by the value
|
||
between two dollar signs and with a equality sign between the name and the value
|
||
(@code{$var=value$}). Variable names cannot include equality signs, but the value
|
||
can; dollar signs can be used by placin an ESC character before the dollar sign.
|
||
|
||
There are three predefinied variables: @code{$$} (empty variable name), @code{$\$}
|
||
and @code{$/$}. @code{$$} has a dollar sign (@code{$}) as its value, while @code{$\$}
|
||
and @code{$/$} contains the characters for the link to the balloon directed in the
|
||
same direction as the variable name's slash.
|
||
|
||
Variables those name begin with @code{balloon} are parsed as balloon inserts, it
|
||
can be either @code{balloon}, @code{balloonX}, @code{balloon,Y} or @code{balloonX,Y},
|
||
whether @code{X} is the minimum width of the balloon and @code{Y} is the minimum
|
||
height of the balloon.
|
||
|
||
Prior to version 2.1 the pony files were cow files used by @command{cowsay}, they
|
||
are partial Perl-scripts that assign a value to a scalar variable named
|
||
@var{$the_cow}. Cow files use a predefined scalar variable named @code{$thoughts},
|
||
these are used to create a link between the message and the pony. The message (and
|
||
the balloon) itself was printed by @command{cowsay} and is not defined in the cow
|
||
files.
|
||
|
||
|
||
@node Pony quote infrastructure
|
||
@section Pony quote infrastructure
|
||
@cindex pony quote infrastructure
|
||
@cindex quote infrastructure
|
||
|
||
When compiles pony quotes are built to @file{quotes/}, the file names are lists of
|
||
ponies joined with plus signs (@code{+}) -- the pony names are the same as the pony
|
||
files, except they do not end with @file{.pony} -- with a index at the end, and a
|
||
full stop (@code{.}) before the index.
|
||
|
||
The source files are located in @file{ponyquotes/}, where their is a file named
|
||
@file{ponies}. This file is called the pony map, is the basis for how the compiled
|
||
files are named. In the ponymap ponies with the same quotes are on the same line
|
||
join togather with plus signs (@code{+}), if the lines because too long for file
|
||
names the line is split into multiple lines with the first pony in common.
|
||
|
||
In @file{ponyquotes/} there are also quote files, each contain just one quote, just as
|
||
when compiled to @file{quotes/}. The source quote files are indentical to the compiled
|
||
quote files, except that there name contains just the first pony.
|
||
|
||
|
||
@node Balloon style files
|
||
@section Balloon style files
|
||
@cindex balloon style files
|
||
@cindex bubble style files
|
||
@cindex ponythink
|
||
|
||
Balloon style files are located in the directory @file{balloons/}, the ones ending
|
||
with @file{.say} applies to @command{ponysay} and the ones ending with @file{.think}
|
||
applies to @command{ponythink}.
|
||
|
||
Balloon style consists of 20 strings. Each string is definied on separate lines, by
|
||
their name and their value seperated with a colon (@code{name:value}), if the name is
|
||
empty it continues the last one new line in the value. Only 10 of the strings may be
|
||
multi-lined: @var{nw}, @var{nnw}, @var{n}, @var{nne}, @var{ne}, @var{sw}, @var{ssw},
|
||
@var{s}, @var{sse} and @var{se}.
|
||
|
||
The following strings are used, and must be definied in the files:
|
||
@table @var
|
||
@item \
|
||
The character for the link to the balloon directed as @code{\}.
|
||
@item /
|
||
The character for the link to the balloon directed as @code{/}.
|
||
@item ww
|
||
The beginning of the balloon's line where the message is located if and only if the
|
||
message contains only one line.
|
||
@item ee
|
||
The end of the balloon's line where the message is located if and only if the message
|
||
contains only one line.
|
||
@item nw
|
||
The top left corner of the balloon.
|
||
@item nnw
|
||
If both this string and the @var{nne} string fits between the top corners, this is
|
||
printed directly to the right of the top left corner.
|
||
@item n
|
||
The top edge of the balloon.
|
||
@item nne
|
||
If both this string and the @var{nnw} string fits between the top corners, this is
|
||
printed directly to the right of the top top corner.
|
||
@item ne
|
||
The top right corner of the balloon.
|
||
@item nee
|
||
The end of the balloon's line where the message's first line is located if and only
|
||
if the message contains more than one line.
|
||
@item e
|
||
The right edge of the balloon.
|
||
@item see
|
||
The end of the balloon's line where the message's last line is located if and only
|
||
if the message contains more than one line.
|
||
@item se
|
||
The bottom right corner of the balloon.
|
||
@item sse
|
||
If both this string and the @var{ssw} string fits between the bottom corners, this
|
||
is printed directly to the left of the bottom right corner.
|
||
@item s
|
||
The bottom edge of the balloon.
|
||
@item ssw
|
||
If both this string and the @var{sse} string fits between the bottom corners, this
|
||
is printed directly to the right of the bottom left corner.
|
||
@item sw
|
||
The bottom left corner of the balloon.
|
||
@item sww
|
||
The beginning of the balloon's line where the message's last line is located if and
|
||
only if the message contains more than one line.
|
||
@item w
|
||
The left edge of the balloon.
|
||
@item nww
|
||
The beginning of the balloon's line where the message's first line is located if and
|
||
only if the message contains more than one line.
|
||
@end table
|
||
|
||
|
||
@node Printing in TTY with KMS
|
||
@section Printing in TTY with KMS
|
||
@cindex tty
|
||
@cindex linux vt
|
||
@cindex clearing tty
|
||
@cindex kms
|
||
@cindex kernel mode settings
|
||
|
||
Since Linux VT (TTY) does not have capabilities for returning the position of the
|
||
cursor, the screen must always be cleared before printing the ponies to make sure
|
||
the pony's colours is not lost, i.e. reduced to mare 16 colours, during print. The
|
||
colours are reduced if the pony's position on the screen is changed. This is only
|
||
relevant with KMS support. The clear the screen we print ``@code{\e[H\e[2J}''
|
||
(@code{\e} is ESC) in at beginning. ``@code{\e[H}'' places the cursor at the
|
||
beginning of the screen, and ``@code{\e[2J}'' clears everything on the screen after,
|
||
and including at, the cursor. If we would use ``@code{\ec}'' (that is a reset),
|
||
we would also turn off num. lock and caps. lock.
|
||
|
||
|
||
@node Truncation
|
||
@section Truncation
|
||
@cindex truncation
|
||
@cindex output truncation
|
||
@cindex kms
|
||
@cindex kernel mode settings
|
||
|
||
Ponysay supports three type of output truncations, cutting away overflow on the right
|
||
and truncation the height by either keeping the bottom or keeping the top. By default
|
||
the latest is enabled under TTY, cutting away overflow on the right is always enabled
|
||
by default.
|
||
|
||
Truncating the height in TTY is required under Kernel Mode Settings (KMS) support to
|
||
keep the colours from being messed up ad the ponies is moved in the screen during
|
||
print. Prior to version 2.0 this was done either by piping to @command{head} (keeps
|
||
the top) or by piping to @command{tail} (keeps the bottom.) @command{head} and
|
||
@command{tail} takes as argument the number of lines to keep at most.
|
||
|
||
The size of the terminal, measured in characters, is fetched from @command{stty size},
|
||
which returns @code{HEIGHT WIDTH}, and @command{cut} it the used to get either the
|
||
height or the width. This requires only GNU Coreutils; earlier @command{tput rows} and
|
||
@command{tput cols} were used, this however required, the only de facto standard,
|
||
package @command{ncurses}, some shells have environment variables for this.
|
||
|
||
Since version 2.1 trunction is done internally in the Python script, before that it
|
||
was done in a custom C porgram @command{truncater}, that was installed to
|
||
@file{/usr/lib/ponysay/truncater}. It recognised UTF-8 ANSI escape sequences,
|
||
including OSI P and CSI m, which is essential for the truncation to be correct. It
|
||
also expands tabs to every eighth column and resets the background colour when needed,
|
||
and writes ANSI escape sequences that are on the left side of the truncation. The
|
||
truncater stops CSI sequences on the first ASCII letter (@code{[a-zA-Z]}), but also
|
||
stops escape sequences after the first character after the initial escape if it is
|
||
not either @code{[} (CSI) or @code{]} (OSI). In the previus, C, program it supported
|
||
UTF-8 by assumming that bytes do not match @code{10xxxxxx} and only those bytes were
|
||
visible. This now fixed internally in Python, but has also been improved to exclude
|
||
combining characters from the set of visible characters.
|
||
|
||
|
||
@node Languages
|
||
@section Languages
|
||
@cindex languages
|
||
@cindex script languages
|
||
@cindex programming languages
|
||
|
||
Before version 2.0 @command{ponysay} was written primarily in GNU Bash script (POSIX
|
||
compliant); the truncater was however written in C, because it is simple, fast, does
|
||
not pose addition dependencies, and is easy to do byte hacking in.
|
||
|
||
Sometimes shell is too slow, in these cases Perl was used; Perl was already required
|
||
by @command{cowsay}, is similar to shell, but also supports hash tables.
|
||
|
||
However since version 2.0 we were trying to move from all there languages and only
|
||
use Python 3, which as been accomplished in version 2.1.
|
||
|
||
|
||
@node Shell auto-completion
|
||
@section Shell auto-completion
|
||
@cindex auto-completion, inner workings
|
||
@cindex shell, auto-completion
|
||
@cindex @command{--onelist}
|
||
@cindex @command{++onelist}
|
||
@cindex @command{--quoters}
|
||
|
||
To make it easier to write auto-completion for shells, @command{ponysay} supports
|
||
the two options @option{--onelist}, @option{++onelist} and @option{--quoters},
|
||
which has no short versions.
|
||
|
||
Executing @command{ponysay --onelist} will list every available standard (MLP:FiM)
|
||
pony, independent of where it is located, the output is a sorted and consists only
|
||
of one pony per line.
|
||
|
||
Executing @command{ponysay ++onelist} will list every available extra (non-MLP:FiM)
|
||
pony, independent of where it is located, the output is a sorted and consists only
|
||
of one pony per line.
|
||
|
||
@command{ponysay --quoters} work just as @command{ponysay --onelist}, excepts
|
||
it limits the ponies to those that have quotes. Ponies that have quotes,
|
||
but does not exist, i.e. does not have a .pony-file, are not listed.
|
||
|
||
Auto-completion scripts should not suggest these options.
|
||
|
||
|
||
@node Universal Character Set
|
||
@section Universal Character Set
|
||
@cindex universal character set
|
||
@cindex ucs
|
||
@cindex unicode
|
||
@cindex pony names
|
||
|
||
In earlier versions of @command{ponysay} only the output truncationed supported
|
||
Universal Character Set, though handcoded UTF-8 character counting. Now
|
||
@command{ponysay} lets Python decode the data, Python store all 31 bits of a
|
||
character in as one character, not in UTF-16 as some other languages does, this
|
||
means that the code is agnostic to the chararacter encoding. However in Unicode
|
||
6.1 their are four ranges of combining characters, these do not take up any
|
||
width in proper terminal, we their for have a class in the code named @code{UCS}
|
||
that help us take them into consideration when determine the length of strings.
|
||
|
||
Some ponies have names contains non-ASCII characters, read about it in
|
||
@ref{Environment variables}. The UCS names are stored in the file @file{share/ucsmap},
|
||
in it lines that are not empty and does not start with a hash (@code{#}) are
|
||
parse, and contains a UCS name and a ASCII:ised name. The UCS name comes first,
|
||
followed by the ASCII:ised name that it should replace or link to. The two names
|
||
are separated by and simple left to right arrow character [U+2192], optionally
|
||
with surrounding white space.
|
||
|
||
|
||
|
||
@node Contributing
|
||
@chapter Contributing
|
||
@cindex contributing
|
||
|
||
@menu
|
||
* Providing ponies:: Providing ponies.
|
||
@end menu
|
||
|
||
@node Providing ponies
|
||
@section Providing ponies
|
||
@cindex create pony file
|
||
|
||
Most pony images are browser ponies or desktop ponies, browser ponies is a port of
|
||
desktop ponies, implementing it in JavaScript. Browser ponies are available at
|
||
@url{https://github.com/panzi/Browser-Ponies}. Desktop ponies are available at
|
||
@url{http://desktop-pony-team.deviantart.com/}.
|
||
|
||
There is also a collection of ponies that are not yet pixelated in a Java
|
||
reimplementation of the early Ponysay:
|
||
@url{https://github.com/maandree/unisay/tree/develop/dev/newponies}
|
||
|
||
There is a checklist named @file{pony-checklist} at the @file{dev/} directory.
|
||
You can use the check which ponies are added and which are not.
|
||
@*
|
||
|
||
New ponies can be created from regular images by using util-say, which is available
|
||
at @url{https://github.com/maandree/util-say}.
|
||
Prior to version 2.1 of @command{ponysay}, @command{img2xterm} could be used, by since
|
||
version 2.1 @command{ponysay} is using a new format that only util-say supports.
|
||
@command{img2xterm} (@url{https://github.com/rossy2401/img2xterm}) was used in the
|
||
early stage, but util-say tries to optimise the images in some aspects: as good as
|
||
possible for low capability terminals, tries to place the pony–balloon link, displayed
|
||
as good as possible when marked in the terminal (somewhat compromised by the first
|
||
aspect,) and same width on all rows.
|
||
|
||
Using util-say:
|
||
@cindex util-say
|
||
@cindex @command{img2ponysay}
|
||
@cartouche
|
||
@example
|
||
@code{img2ponysay -2 -- SOURCE_IMAGE > PONY_FILE}
|
||
|
||
@code{PONY}_FILE should end with @file{.pony} and be localed in @file{ponies/},
|
||
or @file{extraponies/} if the pony is not a MLP:FiM pony.
|
||
|
||
Omit @option{-2} if the source image does not use double pixel size.
|
||
|
||
For more information see:
|
||
@url{https://github.com/maandree/util-say/wiki/img2ponysay}
|
||
@end example
|
||
@end cartouche
|
||
|
||
@*
|
||
@cindex util-say
|
||
@cindex .png
|
||
@cindex png images
|
||
@cindex images, png
|
||
@cindex portable network graphics
|
||
If you have util-say installed, which is required to build ponies, you can run
|
||
PNG files as argument for @command{ponysay -f}, this required that the file is
|
||
named @file{.png} at the end.
|
||
|
||
@cindex palette
|
||
@cindex xterm palette
|
||
@cindex pony palette
|
||
@cindex colour palette
|
||
The following @command{bash} code will print the palette the ponies (the terminals)
|
||
use:
|
||
@cartouche
|
||
@example
|
||
c=16
|
||
while ((c < 256)); do
|
||
echo -en "\e[48;5;$@{c@}m \e[49m"
|
||
c=$(( $c + 1 ))
|
||
if (( $(( c % 36 )) == 16 )); then
|
||
echo
|
||
fi
|
||
done; echo
|
||
@end example
|
||
@end cartouche
|
||
|
||
@*
|
||
For the palette to be correct, which is especially important when you draw ponies, you
|
||
must not redefine the colours in the range 16 to 255 (inclusive).
|
||
|
||
@cindex ttypony
|
||
When a pony is added please also add a ttypony version, i.e. the pony files used in
|
||
TTY, but if you don't please state so in the pull request so we do not miss the
|
||
create it; the simplest way to do this is to run @command{make -B ttyponies} after
|
||
adding the ponies to @file{ponies/}, running @command{make -B ttyponies} will build
|
||
(or rebuild) all ttyponies with a pony present in @file{ponies/}, and creates all
|
||
needed symlinks.
|
||
|
||
To be able to run @command{make -B ttyponies} you must have the packages listed under
|
||
@ref{Dependencies for pony providers}.
|
||
|
||
@cindex ponyquotes
|
||
@cindex quotes
|
||
Also when adding new ponies, please map them up in the file @file{ponyquotes/ponies}.
|
||
If the pony is a new pony without any other alternative image just add it to a new
|
||
line, without @file{.pony}, preferably in its alphabetical position.
|
||
If the file is a symlink add it to the same line as the target pony, and if the
|
||
pony has and alternative image add it the the same line as that pony. Ponies on
|
||
the same line are separated with a plus sign (@code{+}) without any white space.
|
||
When a line is too long for a file name (this has happened to Pinkie Pie
|
||
[@file{pinkie}],) it must be split into multiple lines, this line should have their
|
||
first pony file in common.
|
||
|
||
|
||
|
||
@node Distributing
|
||
@chapter Distributing
|
||
@cindex distributing ponysay
|
||
@cindex package maintaining
|
||
@cindex OS package maintaining
|
||
@cindex maintaining OS package
|
||
@cindex fhs
|
||
@cindex filesystem hierarchy standard
|
||
|
||
If you are planning on maintaining @command{ponysay} in your favourite Operating
|
||
System you should first read @ref{Required runtime dependencies} and
|
||
@ref{Optional runtime dependencies}. If your OS does not follow Filesystem Hierarchy
|
||
Standard (FHS), e.g. installing amusement binaries in @file{/usr/games} instread of
|
||
@file{/usr/bin} or only supporting @file{/opt} equivalent directories you should
|
||
read about configurations in @ref{Custom installations}.
|
||
|
||
Apart from this, you should configure @command{ponysay} before building it with the
|
||
option @option{--everything}. Otherwise only the @command{info} manual and the
|
||
English manpage will be installed for documentation.
|
||
|
||
Please inform us about your distribution so we can list it, everypony can see it.
|
||
|
||
|
||
|
||
@node Change log
|
||
@appendix Change log
|
||
@cindex change log
|
||
@cindex versions
|
||
@cindex previous releases
|
||
|
||
|
||
@heading Version 2.3
|
||
|
||
@itemize @bullet
|
||
@item
|
||
Support for @file{best.pony} file.
|
||
@item
|
||
@option{-q} accepts file names.
|
||
@item
|
||
Improved Unicode support: treats combining characters as invisible.
|
||
@item
|
||
Optional support for UCS pony names.
|
||
@item
|
||
Pony files and balloon style files can be pipes (as well as sockets, doors
|
||
and as always regular files.)
|
||
@item
|
||
Support cowsay style message compression.
|
||
@item
|
||
New ponies: @file{blaze}
|
||
@item
|
||
Pony symlink added:
|
||
@itemize @bullet
|
||
@item @file{pinkieoink} → @file{oinkoinkoink}
|
||
@end itemize
|
||
@item
|
||
Support for non-MLP:FiM ponies (known as extraponies), although the directory
|
||
is currently empty.
|
||
@c BEGIN the following is too descriptive for the plain/text change log
|
||
This is implemented with the options @option{-F}, @option{+l}, and @option{+L}
|
||
corresponding to @option{-f}, @option{-l}, and @option{-L}.
|
||
@c END
|
||
@end itemize
|
||
|
||
|
||
@heading Version 2.2
|
||
|
||
@itemize @bullet
|
||
@item
|
||
Full support for arbitrary positioning of balloon in pony files.
|
||
@item
|
||
ANSI colour sequences in pony files are applied only to the pony image,
|
||
not the balloon link or the balloon itself.
|
||
@item
|
||
Support for colours in the message.
|
||
@item
|
||
Support custom balloon styles using the option @option{-b}, @option{-B} will list
|
||
all available. This list depends on whether you are invoking @command{ponysay}
|
||
or @command{ponythink}
|
||
@end itemize
|
||
|
||
|
||
@heading Version 2.1.1
|
||
|
||
Nothing worth mention.
|
||
|
||
|
||
@heading Version 2.1
|
||
|
||
@itemize @bullet
|
||
@item
|
||
@file{applebumkin} is renamed to @file{applebumpkin}.
|
||
@item
|
||
New ponies: @file{owlowiscious}, @file{purplehaze}
|
||
@item
|
||
Cowsay has be reimplemented, and have full Unicode support and support
|
||
for @command{figlet} style messages.
|
||
@item
|
||
Deleted environment variables: @env{PONYSAY_COWSAY}, @env{PONYSAY_COWTHINK}
|
||
@item
|
||
You will need Python 3, but not GNU Bash, Perl or Cowsay.
|
||
@item
|
||
New .pony file format is used:
|
||
@c BEGIN the following is too descriptive for the plain/text change log
|
||
@command{unisay}'s format instead of @command{cowsay}'s Perl based format.
|
||
This includes arbitrary position of balloon, mirrored balloon links, and
|
||
minimum size of balloon.
|
||
@c END
|
||
@end itemize
|
||
|
||
|
||
@heading Version 2.0
|
||
|
||
@itemize @bullet
|
||
@item
|
||
Makefile is generated by running @command{./configure}.
|
||
@item
|
||
All Perl scripts and almost all Bash are reimplemented in one Python 3 script.
|
||
@item
|
||
kmsponies4ponysay is included.
|
||
@end itemize
|
||
|
||
|
||
@heading Version 1.4.1
|
||
@itemize @bullet
|
||
@item
|
||
Code is repaired and more portable.
|
||
@end itemize
|
||
|
||
|
||
@heading Version 1.4
|
||
|
||
@itemize @bullet
|
||
@item
|
||
Make file is improved.
|
||
@end itemize
|
||
|
||
@b{Note}: Identifies itself as version 1.3
|
||
|
||
|
||
@heading Version 1.3
|
||
|
||
@itemize @bullet
|
||
@item
|
||
New ponies: @file{forestspirit}, @file{hollydash}, @file{raggedy}, @file{rhyme}
|
||
@item
|
||
@file{sindy} is renamed to @file{powderrouge}.
|
||
Pony symlink added:
|
||
@itemize @bullet
|
||
@item @file{sindy} → @file{powderrouge}
|
||
@end itemize
|
||
@item
|
||
@option{PREFIX=/some-dir} can be used when invoking @command{make},
|
||
the default value is @file{/usr}
|
||
@end itemize
|
||
|
||
|
||
@heading Version 1.2
|
||
|
||
@itemize @bullet
|
||
@item
|
||
ponyquotes4ponysay is included.
|
||
@item
|
||
Support for extension: kmsponies4ponysay.
|
||
@item
|
||
Pony symlinks added:
|
||
@itemize @bullet
|
||
@item @file{mrsparkle} → @file{nightlight}
|
||
@item @file{elsie} → @file{prettyvision}
|
||
@end itemize
|
||
@item
|
||
New ponies: @file{ace}, @file{blueblood}, @file{filthyrich}, @file{gingergold},
|
||
@file{hayfever}, @file{highscore}, @file{junebug}, @file{mrsparkle},
|
||
@file{persnickety}, @file{ponet}, @file{screwloose}, @file{tornadobolt}.
|
||
@item
|
||
@file{elsie} is renamed to @file{prettyvision}.
|
||
@item
|
||
@cindex @option{-f}
|
||
Arbitrary spaces in @option{-f} argument is not longer accepted (it causes
|
||
problems with file names including spaces.)
|
||
@end itemize
|
||
|
||
@b{Note}: Identifies itself as version 1.1
|
||
|
||
|
||
@heading Version 1.1
|
||
|
||
@itemize @bullet
|
||
@item
|
||
Manpages are compressed before installation.
|
||
@item
|
||
@command{info} manual added.
|
||
@item
|
||
Shell completion for @command{ponythink} added, in addition to @command{ponysay}.
|
||
@item
|
||
@command{fish} completion added.
|
||
@item
|
||
@file{/usr/lib/ponysay} is used instead of @file{/usr/bin} for code used by the
|
||
main script.
|
||
@item
|
||
@file{~/.local/share/ponysay} is used for private pony directories.
|
||
@item
|
||
@command{ncurses} is no longer needed for determining the screen's size,
|
||
@command{coreutils} is used instead.
|
||
@item
|
||
Pony symlinks added:
|
||
@itemize @bullet
|
||
@item @file{amethyststar} → @file{sparkler}
|
||
@item @file{berrypinch} → @file{ruby}
|
||
@item @file{craftycrate} → @file{boxxy}
|
||
@item @file{magnum} → @file{raritysdad}
|
||
@item @file{pearl} → @file{raritysmom}
|
||
@item @file{powderrouge} → @file{sindy}
|
||
@item @file{royalribbo} → @file{violet}
|
||
@end itemize
|
||
@item
|
||
@w{New ponies:} @file{blossomforth}, @file{bonvoyage}, @file{cadance},
|
||
@file{celestiasmall}, @file{changelingqueen}, @file{cherryberry},
|
||
@file{discordamused}, @file{discordpuppetmaster}, @file{fleurdelishair},
|
||
@file{fleurdelislay}, @file{owl}, @file{perrypierce}, @file{petunia},
|
||
@file{pinacolada}, @file{skyra}, @file{truffleshuffle}.
|
||
@item
|
||
Pony spelling removed: @file{fillycadence}.
|
||
@item
|
||
Pony symlink change: @file{perry} → @{@file{pokey} → @file{perrypierce}@}.
|
||
@item
|
||
@cindex @option{-L}
|
||
Option @option{-L} added, lists ponies with symlink mapping.
|
||
@item
|
||
Support for extension: ponyquotes4ponysay.
|
||
@item
|
||
@cindex @option{-f}
|
||
Accepts arbitrary spaces in @option{-f} argument.
|
||
@end itemize
|
||
|
||
|
||
@heading Version 1.0
|
||
|
||
@itemize @bullet
|
||
@item
|
||
Spanish translation of the manpage is added.
|
||
@item
|
||
@w{New ponies:} @file{applecore}, @file{applejackscarecrow}, @file{bonbonstand},
|
||
@file{changeling}, @file{chrysalis}, @file{cottoncloudy}, @file{diamondmint},
|
||
@file{discord}, @file{fillycadence}, @file{flam}, @file{fleurdelis}, @file{flim},
|
||
@file{fluttershyshy}, @file{fluttershystare}, @file{lyrasit}, @file{oinkoinkoink}
|
||
(is pinkie), @file{philomenaphoenix}, @file{pinkiecannon}, @file{pinkiecannonfront},
|
||
@file{pinkiecannonhappy}, @file{pinkiegummy}, @file{pinkiehugfluttershy},
|
||
@file{pinkiehugsfluttershy}, @file{pinkiepartycannon}, @file{pinkieprincess},
|
||
@file{pinkiesilly}, @file{pinkietongue}, @file{pinkiewhoops}, @file{pinkiewhoopseat},
|
||
@file{pinkiewhoopsout}, @file{rainbowdrag}, @file{rainbowsalute}, @file{rainbowshine},
|
||
@file{raritydrama}, @file{shiningarmor}, @file{shiningarmorguard}, @file{snowflake},
|
||
@file{spikemustache}, @file{stevenmagnet}, @file{stevenmagnettrue},
|
||
@file{twilightcrazyfromball}, @file{twilightrage}, @file{twilightzero},
|
||
@file{wildfire}.
|
||
@item
|
||
Pony symlinks added:
|
||
@itemize @bullet
|
||
@item @file{djpon-3} → @file{vinyl}
|
||
@item @file{fillycadance} → @file{fillycadence}
|
||
@item @file{horsepower} → @file{snowflake}
|
||
@end itemize
|
||
@item
|
||
Improved TTY support: ponies have low colours resolution, instead of monochrome,
|
||
when the high colour resolution is not available.
|
||
@end itemize
|
||
|
||
|
||
@heading Version 0.10
|
||
|
||
@itemize @bullet
|
||
@item
|
||
Manpage manual added.
|
||
@item
|
||
The directories for pony directories are changed from @file{/usr/share} to
|
||
@file{/usr/share/ponysay} and @file{~} to @file{~/.ponysay}.
|
||
@item
|
||
Pony symlinks added:
|
||
@itemize @bullet
|
||
@item @file{carrottop} → @file{carrot}
|
||
@item @file{goldenharvest} → @file{carrot}
|
||
@item @file{harpass} → @file{lyra}
|
||
@item @file{heartstrings} → @file{lyra}
|
||
@item @file{lulamoon} → @file{trixie}
|
||
@item @file{minuette} → @file{colgate}
|
||
@item @file{noteworthy} → @file{blues}
|
||
@item @file{perry} → @file{pokey}
|
||
@item @file{pokeypierce} → @file{pokey}
|
||
@item @file{timeturner} → @file{doctornohat}
|
||
@item @file{trixielulamoon} → @file{trixie}
|
||
@item @file{twilightvelvet} → @file{mrssparkle}
|
||
@end itemize
|
||
@item
|
||
Support for truncating output on height, enabled by default under TTY.
|
||
@item
|
||
Environment variables added: @env{PONYSAY_FULL_WIDTH}, @env{PONYSAY_SHELL_LINES},
|
||
@env{PONYSAY_TRUNCATE_HEIGHT}, @env{PONYSAY_BOTTOM}.
|
||
@end itemize
|
||
|
||
|
||
@heading Version 0.9
|
||
|
||
@itemize @bullet
|
||
@item
|
||
Output truncated on width to fit screen.
|
||
@item
|
||
Support for TTY (Linux VT).
|
||
@item
|
||
@command{bash} completion added.
|
||
@item
|
||
@command{zsh} completion added.
|
||
@item
|
||
@w{New ponies}: @file{allie}, @file{archer}, @file{boxxy}, @file{carecake},
|
||
@file{cupcake}, @file{daringdo}, @file{davenport}, @file{fancypants},
|
||
@file{ironwillwalk}, @file{lily}, @file{lunafly}, @file{maredowellfly},
|
||
@file{maredowellgallop}, @file{master}, @file{mjolna}, @file{orange},
|
||
@file{raritysdad}, @file{raritysmom}, @file{royalnightguard}, @file{ruby},
|
||
@file{sparkler}, @file{violet}.
|
||
@end itemize
|
||
|
||
|
||
@heading Version 0.8
|
||
|
||
@itemize @bullet
|
||
@item
|
||
@w{New ponies}: @file{aloe}, @file{angle}, @file{applebloom}, @file{applebumkin},
|
||
@file{applefritter}, @file{berrypunch}, @file{bigmac}, @file{blinkie}, @file{blues},
|
||
@file{braeburn}, @file{caesar}, @file{candymane}, @file{caramel}, @file{cheerilee},
|
||
@file{cheerilee80}, @file{clyde}, @file{colgate}, @file{colton}, @file{daisy},
|
||
@file{derpystand}, @file{derpystandwing}, @file{diamondtiara}, @file{dinky},
|
||
@file{doctornohat}, @file{elsie}, @file{fido}, @file{fillycelestia},
|
||
@file{fillydash}, @file{fillydashfly}, @file{fillyjack}, @file{fillyjacktravel},
|
||
@file{fillypinkie}, @file{fillypinkiecurly}, @file{fillyrarity}, @file{fillyshy},
|
||
@file{fluttershygala}, @file{gilda}, @file{gildastand}, @file{granny},
|
||
@file{grannychair}, @file{grannysleep}, @file{gummy}, @file{hoity}, @file{horte},
|
||
@file{inky}, @file{laflour}, @file{lightning}, @file{lintsalot}, @file{lotus},
|
||
@file{mayor}, @file{mrssparkle}, @file{nightmare}, @file{opal}, @file{parasprite},
|
||
@file{philomena}, @file{photofinish}, @file{pinkamina}, @file{pinkiebounce},
|
||
@file{pinkiechicken}, @file{pinkiegala}, @file{pipsqueak}, @file{pokey},
|
||
@file{rainbowfly}, @file{rainbowgala}, @file{rainbowsleep}, @file{raindrops},
|
||
@file{rarityfly}, @file{raritygala}, @file{rarityponder}, @file{redheart},
|
||
@file{rocky}, @file{rose}, @file{rover}, @file{royalguard}, @file{sapphire},
|
||
@file{scootaloo}, @file{screwball}, @file{shadowbolts}, @file{silverspoon},
|
||
@file{silverstar}, @file{sindy}, @file{snails}, @file{snips}, @file{soarin},
|
||
@file{soigne}, @file{spike}, @file{spikefloat}, @file{spikelove}, @file{spot},
|
||
@file{stella}, @file{strongheart}, @file{sue}, @file{suedance}, @file{tank},
|
||
@file{trixiestage}, @file{trixiestand}, @file{turnip}, @file{twist}, @file{winona}.
|
||
@end itemize
|
||
|
||
@b{Note}: Identifies itself as version 0.7
|
||
|
||
|
||
@heading Version 0.7
|
||
|
||
@itemize @bullet
|
||
@item
|
||
@w{New ponies:} @file{carrot}, @file{octavia}, @file{trixie}, @file{vinyl},
|
||
@file{zecora}.
|
||
@item
|
||
@cindex @option{-l}
|
||
Support for listing ponies with @option{-l} option.
|
||
@end itemize
|
||
|
||
|
||
@heading Version 0.6
|
||
|
||
@itemize @bullet
|
||
@item
|
||
@w{New ponies:} @file{bonbon}, @file{celestia}, @file{doctor}, @file{fillistia},
|
||
@file{spitfire}, @file{woona} (not moonstuck).
|
||
@item
|
||
Dropping usage of utility @command{which}, using @command{hash} instead.
|
||
@end itemize
|
||
|
||
@b{Note}: Identifies itself as version 0.5
|
||
|
||
|
||
@heading Version 0.5
|
||
|
||
@itemize @bullet
|
||
@item
|
||
Using utility @command{which} to determine existence of @command{cowsay}.
|
||
@end itemize
|
||
|
||
|
||
@heading Version 0.4
|
||
|
||
@itemize @bullet
|
||
@item
|
||
@file{.cow} files are removed.
|
||
@item
|
||
@cindex @option{-W}
|
||
Support for @option{-W} option.
|
||
@item
|
||
Select random pony if not specified.
|
||
@item
|
||
@cindex @option{-f}
|
||
@option{-f} supports file names, and not only pony names.
|
||
@end itemize
|
||
|
||
|
||
@heading Version 0.3
|
||
|
||
@itemize @bullet
|
||
@item
|
||
Fixed use of @file{.pony} files.
|
||
@end itemize
|
||
|
||
|
||
@heading Version 0.2
|
||
|
||
@itemize @bullet
|
||
@item
|
||
Pony files end with @file{.pony} instead of @file{.cow}.
|
||
@item
|
||
@file{lyrasleep} is renamed to @file{lyra}.
|
||
@item
|
||
@file{.cow} files are kept but not used.
|
||
@item
|
||
@cindex @option{-h}
|
||
@option{-h} prints proper help.
|
||
@end itemize
|
||
|
||
|
||
@heading Version 0.1
|
||
|
||
First release.
|
||
|
||
@itemize @bullet
|
||
@item
|
||
@w{Includes the ponies}: @file{applejack}, @file{derpy}, @file{derpysit},
|
||
@file{fluttershy}, @file{luna}, @file{lyrasleep}, @file{pinkie}, @file{rainbow},
|
||
@file{rarity}, @file{sweetie}, @file{twilight}.
|
||
@end itemize
|
||
|
||
|
||
|
||
@node Ponysay contributors
|
||
@appendix Ponysay contributors
|
||
|
||
Active developers and major contributors of ponysay:
|
||
@itemize @bullet
|
||
@item Erkin ``erkin'' Batu Altunbaş
|
||
@item Mattias ``maandree'' Andrée
|
||
@item Elis ``etu'' Axelsson
|
||
@item Sven-Hendrik ``svenstaro'' Haase
|
||
@item Pablo ``jristz'' Lezaeta
|
||
@item Jan Alexander ``heftig'' Steffens
|
||
@end itemize
|
||
@*
|
||
Patchers and other contributors of ponysay:
|
||
@itemize @bullet
|
||
@item Duane ``Marneus68'' Bekaert
|
||
@item Kyah ``L-four'' Rindlisbacher
|
||
@item James ``rossy2401'' Ross-Gowan
|
||
@item Louis ``kragniz'' Taylor
|
||
@item Jannis ``sycoso''
|
||
@item ``spider-mario''
|
||
@end itemize
|
||
|
||
|
||
|
||
@node Ponysay license
|
||
@appendix Ponysay license
|
||
|
||
Ponysay is Free Software (yet not Open Source) and in licensed under the terms
|
||
of Do What The Fuck You Want To Public License (WTFPL) version 2.
|
||
|
||
You have the four essential freedoms:
|
||
@itemize @bullet
|
||
@item
|
||
The freedom to run the program, for any purpose (freedom 0).
|
||
@item
|
||
The freedom to study how the program works, and change it so it does your
|
||
computing as you wish (freedom 1). Access to the source code is a precondition
|
||
for this.
|
||
@item
|
||
The freedom to redistribute copies so you can help your neighbour (freedom 2).
|
||
@item
|
||
The freedom to distribute copies of your modified versions to others (freedom 3).
|
||
By doing this you can give the whole community a chance to benefit from your
|
||
changes. Access to the source code is a precondition for this.
|
||
@end itemize
|
||
|
||
@*
|
||
|
||
@center DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
|
||
@center Version 2, December 2004
|
||
|
||
Copyright @copyright{} 2012 Erkin Batu Altunbaş
|
||
|
||
@quotation
|
||
Everyone is permitted to copy and distribute verbatim or modified
|
||
copies of this license document, and changing it is allowed as long
|
||
as the name is changed.
|
||
|
||
DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
|
||
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
||
|
||
0. You just DO WHAT THE FUCK YOU WANT TO.
|
||
@end quotation
|
||
|
||
|
||
|
||
@node GNU Free Documentation License
|
||
@appendix GNU Free Documentation License
|
||
@include fdl.texinfo
|
||
|
||
@node Concept index
|
||
@appendix Concept index
|
||
@printindex cp
|
||
|
||
|
||
@bye
|
||
|