diff options
Diffstat (limited to 'manuals/ponysay.texinfo')
-rw-r--r-- | manuals/ponysay.texinfo | 2677 |
1 files changed, 0 insertions, 2677 deletions
diff --git a/manuals/ponysay.texinfo b/manuals/ponysay.texinfo deleted file mode 100644 index 32cebc6..0000000 --- a/manuals/ponysay.texinfo +++ /dev/null @@ -1,2677 +0,0 @@ -\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.9.1 - -@defindex op -@synindex op vr -@synindex cp pg - - -@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 -@c@subtitle Cowsay reimplementation for ponies. -@c@subtitle Ponies for your terminal. -@c@subtitle Infesting your terminal with ponies. -@c@subtitle Surviving the zombiepony takeover. -@subtitle Making your terminal about 20 % cooler. -@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. -* Optional features:: Get the most out of @command{ponysay} with optional features. -* 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}. -* 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. -* Terminology:: Terminology. -* 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 and program index:: Concept and program index. -* Variable and option index:: Variable and option index. -@end menu - - - - -@node Overview -@chapter Overview -@cindex overview - -@command{ponysay} displays an image of a My Little Pony pony saying a message provided -by the user in a terminal, or a quote from the show My Little Pony: Friendship is Magic -(MLP:FiM). Historically @command{ponysay} was a wrapper for cowsay, but has since -version 2.1 become an independent reimplementation of @command{cowsay}. - -If a message is not provided, e.g. by piping, it accepts standard input. The pony -quoting 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 know anypony how does like ponies [fat chance] you -can always make screen-shots of @command{ponysay --q} executions and communication that -way over e-mail. - - - - -@node Invoking ponysay -@chapter Invoking @command{ponysay} -@cindex invoking -@cindex options -@cindex arguments -@pindex @command{ponythink} - -The format for running the @command{ponysay} program is: - -@example -ponysay [@var{option}...] [--] [@var{message}] -ponythink [@var{option}...] [--] [@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 -- -@opindex @option{--} -Parse the following arguments as parts of @code{@var{message}}. - -@item -h -@itemx --help -@opindex @option{-h} -@opindex @option{--help} -Show summary of options. - -@item -v -@itemx --verion -@opindex @option{-v} -@opindex @option{--version} -Show version of program. - -@item -f PONY -@itemx --file PONY -@itemx --pony PONY -@opindex @option{-f} -@opindex @option{--file} -@opindex @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 PONY -@itemx ++file PONY -@itemx ++pony PONY -@opindex @option{-F} -@opindex @option{++file} -@opindex @option{++pony} -Just as @option{-F}, but it uses extra (non-MLP:FiM) ponies instead of standard -(MLP:FiM) ponies - -@item -q PONY -@itemx --quote PONY -@opindex @option{-q} -@opindex @option{--quote} -@cindex quotes -@cindex pony quotes -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 to @option{-q}. If one or more ponies are added as an argument -to @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 only if it ends with @file{.pony}. - -@item --f [PONY...] -@itemx --files [PONY...] -@itemx --ponies [PONY...] -@opindex @option{--f} -@opindex @option{--files} -@opindex @option{--ponies} -Variadic variant of @option{-f}, meaning that all arguments added after this one -will parsed as an argument to this option. Additionally, those options are added -to @option{-f}. - -@item --F [PONY...] -@itemx ++files [PONY...] -@itemx ++ponies [PONY...] -@opindex @option{--F} -@opindex @option{++files} -@opindex @option{++ponies} -Variadic variant of @option{-F}, meaning that all arguments added after this one -will parsed as an argument to this option. Additionally, those options are added -to @option{-F}. - -An important feature of this options, is that you can but it in the end of the -command line, without any argument to get a random non-MLP:FiM pony. - -@item --q [PONY...] -@itemx --quotes [PONY...] -@opindex @option{--q} -@opindex @option{--quotes} -@cindex quotes -@cindex pony quotes -Variadic variant of @option{-q}, meaning that all arguments added after this one -will parsed as an argument to this option. Additionally, those options are added -to @option{-q}. - -An important feature of this options, is that you can but it in the end of the -command line, without any argument to get a quote from any pony with a quote. - -@item -b STYLE -@itemx --bubble STYLE -@itemx --balloon STYLE -@opindex @option{-b} -@opindex @option{--bubble} -@opindex @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 -W COLUMN -@itemx --wrap COLUMN -@opindex @option{-W} -@opindex @option{--wrap} -Specify the screen column where the message should be wrapped, this is by default 40, -as with @command{cowsay}. The balloon's extra width is taken into consideration. - -If the argument is not a number, but starts instead with @code{n} (for ‘none’ or -‘no’), no wrapping is done, and if it starts with @code{i} (for ‘inherit’) the width -of the terminal is used. - -@code{n} and @code{i} is case insensitive, so you may use @code{N} and @code{I} -instead. Additionally, typo correction is for QWERTY and Dvorak is built in to -@command{ponysay}; the nearest key, either to the left or to the right, depending -on which hand is used to press the key, is also allowed. - -@item -c -@itemx --compress -@opindex @option{-c} -@opindex @option{--compress} -@pindex @command{figlet} -@pindex @command{TOIlet} -Compress the message in the same way @command{cowsay} does, that is basically -without multiple spaces, and only paragraphs separations. Using this options -will mean that you cannot display @command{figlet} and @command{TOIlet} style -messages. - -@item -l -@itemx --list -@opindex @option{-l} -@opindex @option{--list} -Lists all installed ponies. The ponies which have quotes, i.e. can be used with -the @option{-q} option, will be marked by being printed in bold or bright (depending -on the terminal.) - -@item -L -@itemx --altlist -@itemx --symlist -@opindex @option{-L} -@opindex @option{--symlist} -@opindex @option{--altlist} -Lists all installed ponies. The ponies which have quotes, i.e. can be used with -the @option{-q} option, will be marked 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 -@opindex @option{+l} -@opindex @option{++list} -Just as @option{-l}, except it lists extra (non-MLP:FiM) ponies instead of standard -(MLP:FiM) ponies. - -@item +L -@itemx ++symlist -@itemx ++altlist -@opindex @option{+L} -@opindex @option{++symlist} -@opindex @option{++altlist} -Just as @option{-L}, except it lists extra (non-MLP:FiM) ponies instead of standard -(MLP:FiM) ponies. - -@item -B -@itemx --balloonlist -@opindex @option{-B} -@opindex @option{--bubblelist} -@opindex @option{--balloonlist} -Prints a list of all balloon styles. - -@item -A -@itemx --all -@opindex @option{-A} -@opindex @option{--all} -List all ponies, MLP:FiM and non-MLP:FiM, in this case the first list are MLP:FiM -and the second are non-MLP:FiM. - -@item +A -@itemx ++all -@itemx --symall -@itemx --altall -@opindex @option{+A} -@opindex @option{++all} -@opindex @option{--symall} -@opindex @option{--altall} -List all ponies names, including alternatives, these from MLP:FiM and non-MLP:FiM. -The first list are the MLP:FiM and the second one are non-MLP:FiM. - -@item -o -@itemx --pony-only -@itemx --ponyonly -@opindex @option{-o} -@opindex @option{--pony-only} -@opindex @option{--ponyonly} -Print just the pony, nothing else like the speech balloon. Naturally the -@command{ponysay} will not wait for a message from stdin. - -@item -X -@itemx --256-colours -@itemx --256colours -@itemx --x-colours -@opindex @option{-X} -@opindex @option{--256-colours} -@opindex @option{--256colours} -@opindex @option{--x-colours} -Use @command{xterm}'s 256-colour support (supported by most X11 terminals), despite -your terminal's actual compatibilies. - -@item -V -@itemx --tty-colours -@itemx --ttycolours -@itemx --vt-colours -@opindex @option{-V} -@opindex @option{--tty-colours} -@opindex @option{--ttycolours} -@opindex @option{--vt-colours} -Use Linux VT's compatbilies without KMS utilisation, despite your terminal's actual -compatibilies. - -@item -K -@itemx --kms-colours -@itemx --kmscolours -@opindex @option{-K} -@opindex @option{--kms-colours} -@opindex @option{--kmscolours} -Use Linux VT's compatbilies with KMS utilisation, despite your terminal's actual -compatibilies. - -@item +c -@itemx --colour ANSI-COLOUR -@opindex @option{+c} -@opindex @option{--colour} -Colour the balloon, including link and message (the parts that are not individually -specified.) The argument, should be a ANSI colour sequence without leading CSI and -without a tailing ‘m’, for example @code{1;31} will make it in red and bold (or bright -depending on the terminal.) - -@item --colour-bubble -@itemx --colour-balloon ANSI-COLOUR -@opindex @option{--colour-bubble} -@opindex @option{--colour-balloon} -Just like @option{--colour}, but it only colours the balloon, without the message -or link. - -@item --colour-link ANSI-COLOUR -@opindex @option{--colour-link} -Just like @option{--colour}, but it only colours the balloon link. - -@item --colour-msg -@itemx --colour-message ANSI-COLOUR -@opindex @option{--colour-msg} -@opindex @option{--colour-message} -Just like @option{--colour}, but it only colours the message. - -@item --colour-pony ANSI-COLOUR -@opindex @option{--colour-pony} -Just like @option{--colour}, but it colours the pony. This colouring has no -effect ony regular pony files, as it has its own colouring. - -@item --colour-wrap -@itemx --colour-hyphen ANSI-COLOUR -@opindex @option{--colour-wrap} -@opindex @option{--colour-hyphen} -Just like @option{--colour}, but it colours hyphen added by the word wrapping. -By default this is red (@code{31}), if you want uncoloured use @code{0}, -without @code{0} or @code{39}, the default @code{31} is presistent. - -@end table - -@opindex @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 -and 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 file 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 -* Extra information:: Displaying extra information. -* 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 Extra information -@section Extra information -@cindex file descriptor 3 -@cindex extra information -@cindex verbose mode -@pindex @command{tee} -If file descriptor 3 is definied when @command{ponysay} is executed, extra information -is printed to it. The printed information includes the name of the pony file, the name -of the balloon style file, and if definied in the pony file, file meta data and comment. - -In most shells, a file descriptor 3 can defined using @command{3> FILE}, and linked to -stderr using @command{3>&2}. For example, you can print the information to @file{~/info} -by running @command{ponysay I\'m just the cutest pony! 3> ~/info}. - -The message is not stored this way, for that you can use @command{tee}. However, if you -use @option{-q} the quote file is printed to file descriptor 3. - - -@node Fortune cookies -@section Fortune cookies -@pindex @command{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 -@pindex @command{ponypipe} - -You can ponify messages (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 -@pindex 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 - -You should read more about this in @ref{KMS ponies}. - - -@node Running on screen -@section Running on @command{screen} -@pindex @command{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 -@vindex @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 -@vindex @env{PONYSAY_SHELL_LINES} -@cindex tty -Under TTY (Linux VT), if the output is larger than 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 eve n if the output is not actually larger than -the screen. - -@item PONYSAY_FULL_WIDTH -@vindex @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 -@vindex @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 -@vindex @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 and listed. If you -use @code{harder} ASCII:ised names will not be suggested or listed, but they -will still be usable. - -@item @env{PONYSAY_KMS_PALETTE} -@itemx @env{PONYSAY_KMS_PALETTE_CMD} -@vindex @env{PONYSAY_KMS_PALETTE} -@vindex @env{PONYSAY_KMS_PALETTE_CMD} -@cindex tty -@pindex linux vt -@cindex kmsponies -@cindex kms -@cindex kernel mode setting - -@env{PONYSAY_KMS_PALETTE} or @env{PONYSAY_KMS_PALETTE_CMD} is used to tell -ponysay how your TTY palette looks, this feature lets you get the best images -in TTY if you have Kernel Mode Setting (KMS) support. - -See @ref{KMS ponies} for information on how to use this. -@end table - - - -@node Optional features -@chapter Optional features -@cindex features, optional -@cindex optional features -@cindex optional dependencies - -@menu -* KMS ponies:: Improved TTY support under KMS support. -@end menu - - -@node KMS ponies -@section KMS ponies -@cindex kmsponies -@cindex tty -@pindex linux vt -@cindex kms -@cindex kernel mode setting -@cindex environment variables -@vindex @env{PONYSAY_KMS_PALETTE} -@vindex @env{PONYSAY_KMS_PALETTE_CMD} -@cindex @file{.bashrc} -@cindex @file{~/.bashrc} -@cindex cache -@cindex @file{/var/cache/ponysay} -@cindex @file{~/.cache/ponysay} - -KMS ponies is an optional feature that required that you have @command{util-say>=2} -(@command{util-say<2} for @command{ponysay<2.1}) installed. It lets TTY users that -have a custom TTY colour palette and KMS support get best TTY images that can be -display at the current state of the art. KMS is supported on most computers, but due -to lack of published specifications Nvidia drivers does not support KMS. -@command{util-say} can be downloaded at @url{https://github.com/maandree/util-say}. - -To use this feature 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 - -KMS ponies uses @file{/var/cache/ponysay/} or, if missing, @file{~/.cache/ponysay/} -for cache space. - - - -@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 - -@pindex xterm -@pindex 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 setting -@cindex tty -@pindex linux vt -On Linux's native terminal Linux VT (TTY) it works less well, and not good at all -without Kernel Mode Setting (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.) - -@pindex xterm -@pindex urxvt -@pindex putty -@pindex rxvt -@pindex mrxvt -@pindex Eterm -@pindex 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 supported. - -@pindex 9term -Due to extreme limitations in @command{9term} @command{ponysay} will never be able to -run on it. - - -@node Cowsay -@section Cowsay -@pindex @command{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@footnote{Sometimes distributed as @command{python3} rather than @command{python}.} -@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 -@pindex @command{util-say} -@cindex kms -@cindex tty -@pindex 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}. If this is -used @command{chmod} from @command{coreutils} is also required. - - -@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} at the end of -the file name) in addition to .pony-files or pony names. -@end table - - -@node Package building dependencies -@section Package building dependencies - -@table @command -@item python>=3@footnote{Sometimes distributed as @command{python3} rather than @command{python}.} -@pindex @command{python} -@pindex @command{python3} -Required to run the @file{./setup.py} file, which is also invoked from the -make script. -@item gzip -@pindex @command{gzip} -Used for compressing manuals. (Optional, standard) -@item xz -@pindex @command{xz} -Used for compressing manuals. (Optional, non-standard) -@item texinfo -@pindex @command{texinfo} -@pindex @command{info} -@pindex @command{install-info} -Used to compile this @command{info} manual. (Optional, standard) -@item info@footnote{Normally a part of @command{texinfo}.} -Used to install this @command{info} manual with @command{install-info}. -(Optional, standard) -@end table - - -@node Dependencies for pony providers -@section Dependencies for pony providers -@cindex contributing - -@table @command -@item bash -@pindex @command{bash} -Required to run @command{dev/dist.sh}. -@item coreutils -@pindex @command{coreutils} -@command{ln} and @command{readlink} are used in the @command{ttyponies} subscript -of @command{dev/dist.sh}. -@item util-say>=2 -Used by @command{dev/dist.sh 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 -@pindex @command{make} - -@menu -* From upstream:: Installing manually from upstream (GitHub repository). -* Package repositories:: Packages distributed in OS package repositories. -* Uninstalling:: 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 @file{setup.py} -@pindex @command{./setup.py} -@pindex @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{./setup.py install} or @command{python3 setup.py install}. This will install -@command{ponysay} into @file{/usr}, normally meaning you need to run as root, e.g. by -running @command{sudo ./setup.py 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}. To install the Spanish manual add the -option @option{--with-man-es} when running @command{./setup.py}. - - - -@node Custom installations -@subsection Custom installations -@cindex customised installations -@cindex installation customisation -@cindex @file{setup.py} -@pindex @command{./setup.py} -@pindex @command{./configure} -@pindex @command{make} -@cindex configure - -With the exception for with @option{--with-everything} and @option{--with-nothing}, -every option that starts with @option{--with-} or @option{--without-} exists in both -variants. @option{--with-} options install parts of the package. @option{--without-} -options skips installation of parts of the packages. With the same exception, -@option{--without-} options take not arguments and @option{--with-} optionally takes -an argument, if no argument is provided a default argument is implied. - -The configuration script recognised the following options, the default values for -options with arguments are written after the equality sign (@code{=}) in the option: - -@table @option -@item --everything -@itemx --with-everything -@opindex @option{--everything} -@opindex @option{--with-everything} -Install everything that is not explicity excluded. - -@item --minimal -@opindex @option{--minimal} -Install only the essentials. Note that this can vary depending on version. Currently -this means that the commands, xterm ponies and legal documents is installed. - -@item --nothing -@itemx --with-nothing -@opindex @option{--nothing} -@opindex @option{--with-nothing} -Install nothing, except legal documents, that is not explicity included. - -@item --with-ponysay -@itemx --with-ponysay-command=/usr/bin/ponysay -@opindex @option{--with-ponysay} -@opindex @option{--without-ponysay} -@opindex @option{--with-ponysay-command} -@opindex @option{--without-ponysay-command} -Install the ponysay command, and set file name. (Default) - -@item --with-ponythink -@itemx --with-ponythink-command=/usr/bin/ponythink -@opindex @option{--with-ponythink} -@opindex @option{--without-ponytink} -@opindex @option{--with-ponythink-command} -@opindex @option{--without-ponytink-command} -Install the ponythink command, and set file name. (Default) - -@item --with-shared-cache=/var/cache/ponysay -@opindex @option{--with-shared-cache} -@opindex @option{--without-shared-cache} -Install a user shared cache, this is only used by KMS ponies so far. (Default) - -@item --with-bash -@item --with-bash-completion=/usr/share/bash-completion/completions/ponysay -@opindex @option{--with-bash} -@opindex @option{--without-bash} -@opindex @option{--with-bash-completion} -@opindex @option{--without-bash-completion} -Install auto-completion for installed commands in GNU Bash. Select the file name -for the installed script for the ponysay command, the other commands modifies this -file name. (Default) - -@item --with-fish -@itemx --with-fish-completion=/usr/share/fish/completions/ponysay.fish -@opindex @option{--with-fish} -@opindex @option{--without-fish} -@opindex @option{--with-fish-completion} -@opindex @option{--without-fish-completion} -Install auto-completion for installed commands in Friendly interactive shell. -Select the file name for the installed script for the ponysay command, the other -commands modifies this file name. (Default) - -@item --with-zsh -@itemx --with-zsh-completion=/usr/share/zsh/site-functions/_ponysay -@opindex @option{--with-zsh} -@opindex @option{--without-zsh} -@opindex @option{--with-zsh-completion} -@opindex @option{--without-zsh-completion} -Install auto-completion for installed commands in the zsh shell. -Select the file name for the installed script for the ponysay command, the other -commands modifies this file name. (Default) - -@item --with-shell -@itemx --with-shell-completion=/usr/share -@opindex @option{--with-shell} -@opindex @option{--without-shell} -@opindex @option{--with-bash} -@opindex @option{--without-bash} -@opindex @option{--with-fish} -@opindex @option{--without-fish} -@opindex @option{--with-zsh} -@opindex @option{--without-zsh} -@opindex @option{--with-shell-completion} -@opindex @option{--without-shell-completion} -@opindex @option{--with-bash-completion} -@opindex @option{--without-bash-completion} -@opindex @option{--with-fish-completion} -@opindex @option{--without-fish-completion} -@opindex @option{--with-zsh-completion} -@opindex @option{--without-zsh-completion} -Macro for @option{--with-bash}, @option{--with-fish} and @option{--with-zsh}. -The argument is the used share/ directory that all shells have in common. - -@item --with-pdf -@itemx --with-pdf-manual=/usr/doc -@opindex @option{--with-pdf} -@opindex @option{--without-pdf} -@opindex @option{--with-pdf-manual} -@opindex @option{--without-pdf-manual} -Install PDF manual, and select directory for it. - -@item --with-pdf-compression -@itemx --with-pdf-manual-compression=gz -@opindex @option{--with-pdf} -@opindex @option{--with-pdf-manual} -@opindex @option{--with-pdf-compression} -@opindex @option{--without-pdf-compression} -@opindex @option{--with-pdf-manual-compression} -@opindex @option{--without-pdf-manual-compression} -Compress PDF manual, select compression by file name extension. This option -does not imply @option{--with-pdf}. (Default) - -@item --with-info -@itemx --with-info-manual=/usr/share/info -@opindex @option{--with-info} -@opindex @option{--without-info} -@opindex @option{--with-info-manual} -@opindex @option{--without-info-manual} -Install @command{info} manual, and select directory for it. (Default) - -@item --with-info-install -@itemx --with-info-manual-install=My Little Ponies for your terminal -@opindex @option{--with-info-install} -@opindex @option{--without-info-install} -@opindex @option{--with-info-manual-install} -@opindex @option{--without-info-manual-install} -Use @command{install-info} when installing @command{info} manual. Set the -description for the manual. This option does not imply @option{--with-info}. (Default) - -@item --with-info-compression -@itemx --with-info-manual-compression=gz -@opindex @option{--with-info} -@opindex @option{--with-info-compression} -@opindex @option{--without-info-compression} -@opindex @option{--with-info-manual} -@opindex @option{--with-info-manual-compression} -@opindex @option{--without-info-manual-compression} -Compress @command{info} manual, select compression by file name extension. -This option does not imply @option{--with-info}. (Default) - -@item --with-man-en -@itemx --with-manpage-en -@itemx --with-man-manual-en -@itemx --with-en-man -@itemx --with-en-manpage -@itemx --with-en-man-manual=/usr/share/man -@opindex @option{--with-man-en} -@opindex @option{--without-man-en} -@opindex @option{--with-manpage-en} -@opindex @option{--without-manpage-en} -@opindex @option{--with-man-manual-en} -@opindex @option{--without-man-manual-en} -@opindex @option{--with-en-man} -@opindex @option{--without-en-man} -@opindex @option{--with-en-manpage} -@opindex @option{--without-en-manpage} -@opindex @option{--with-en-man-manual} -@opindex @option{--without-en-man-manual} -Install English @command{man} manual. Set directory for @command{man} manuals. -(Default) - -@item --with-man-es -@itemx --with-manpage-es -@itemx --with-man-manual-es -@itemx --with-es-man -@itemx --with-es-manpage -@itemx --with-es-man-manual=/usr/share/man -@opindex @option{--with-man-es} -@opindex @option{--without-man-es} -@opindex @option{--with-manpage-es} -@opindex @option{--without-manpage-es} -@opindex @option{--with-man-manual-es} -@opindex @option{--without-man-manual-es} -@opindex @option{--with-es-man} -@opindex @option{--without-es-man} -@opindex @option{--with-es-manpage} -@opindex @option{--without-es-manpage} -@opindex @option{--with-es-man-manual} -@opindex @option{--without-es-man-manual} -Install Spanish @command{man} manual. Set directory for @command{man} manuals. - -@item --with-man -@itemx --with-manpage -@itemx --with-man-manual -@opindex @option{--with-man} -@opindex @option{--without-man} -@opindex @option{--with-manpage} -@opindex @option{--without-manpage} -@opindex @option{--with-man-manual} -@opindex @option{--without-man-manual} -Macro for all @option{--with-man-LANG}. - -@item --with-man-en-compression -@itemx --with-manpage-en-compression -@itemx --with-man-manual-en-compression -@itemx --with-en-man-compression -@itemx --with-en-manpage-compression -@itemx --with-en-man-manual-compression=gz -@opindex @option{--with-man-en-compression} -@opindex @option{--without-man-en-compression} -@opindex @option{--with-manpage-en-compression} -@opindex @option{--without-manpage-en-compression} -@opindex @option{--with-man-manual-en-compression} -@opindex @option{--without-man-manual-en-compression} -@opindex @option{--with-en-man-compression} -@opindex @option{--without-en-man-compression} -@opindex @option{--with-en-manpage-compression} -@opindex @option{--without-en-manpage-compression} -@opindex @option{--with-en-man-manual-compression} -@opindex @option{--without-en-man-manual-compression} -Compress English @command{man} manual, select compression by file name extension. -This option does not imply @option{--with-man-en}. (Default) - -@item --with-man-es-compression -@itemx --with-manpage-es-compression -@itemx --with-man-manual-es-compression -@itemx --with-es-man-compression -@itemx --with-es-manpage-compression -@itemx --with-es-man-manual-compression=gz -@opindex @option{--with-man-es-compression} -@opindex @option{--without-man-es-compression} -@opindex @option{--with-manpage-es-compression} -@opindex @option{--without-manpage-es-compression} -@opindex @option{--with-man-manual-es-compression} -@opindex @option{--without-man-manual-es-compression} -@opindex @option{--with-es-man-compression} -@opindex @option{--without-es-man-compression} -@opindex @option{--with-es-manpage-compression} -@opindex @option{--without-es-manpage-compression} -@opindex @option{--with-es-man-manual-compression} -@opindex @option{--without-es-man-manual-compression} -Compress Spanish @command{man} manual, select compression by file name extension. -This option does not imply @option{--with-man-es}. (Default) - -@item --with-man-compression -@itemx --with-manpage-compression -@itemx --with-man-manual-compression -@opindex @option{--with-man-compression} -@opindex @option{--without-man-compression} -@opindex @option{--with-manpage-compression} -@opindex @option{--without-manpage-compression} -@opindex @option{--with-man-manual-compression} -@opindex @option{--without-man-manual-compression} -Macro for all @option{--with-man-LANG-compression}. - -@item --man-section-ponysay -@itemx --man-sectionpage-ponysay -@itemx --ponysay-man-section -@itemx --ponysay-manpage-section=6 -@opindex @option{--man-section-ponysay} -@opindex @option{--manpage-section-ponysay} -@opindex @option{--ponysay-man-section} -@opindex @option{--ponysay-manpage-section} -Change the section for the @command{ponysay} manpage. - -@item --man-section-cowsay -@itemx --manpage-section-cowsay -@itemx --cowsay-man-section -@itemx --cowsay-manpage-section=1 -@opindex @option{--man-section-cowsay} -@opindex @option{--manpage-section-cowsay} -@opindex @option{--cowsay-man-section} -@opindex @option{--cowsay-manpage-section} -Change the section for the @command{cowsay} manpage. - -@item --man-section-fortune -@itemx --manpage-section-fortune -@itemx --fortune-man-section -@itemx --fortune-manpage-section=6 -@opindex @option{--man-section-fortune} -@opindex @option{--manpage-section-fortune} -@opindex @option{--fortune-man-section} -@opindex @option{--fortune-manpage-section} -Change the section for the @command{fortune} manpage. - -@item --with-ponies=/usr/share/ponysay/ponies -@opindex @option{--with-ponies} -@opindex @option{--without-ponies} -Install standard xterm ponies, and select installation directory for them. (Default) - -@item --with-ttyponies=/usr/share/ponysay/ttyponies -@opindex @option{--with-ttyponies} -@opindex @option{--without-ttyponies} -Install standard tty ponies, and select installation directory for them. (Default) - -@item --with-extraponies=/usr/share/ponysay/extraponies -@opindex @option{--with-extraponies} -@opindex @option{--without-extraponies} -Install extra xterm ponies, and select installation directory for them. (Default) - -@item --with-extrattyponies=/usr/share/ponysay/extrattyponies -@opindex @option{--with-extrattyponies} -@opindex @option{--without-extrattyponies} -Install extra tty ponies, and select installation directory for them. (Default) - -@item --with-quotes=/usr/share/ponysay/quotes -@opindex @option{--with-quotes} -@opindex @option{--without-quotes} -Install pony quotes, and select installation directory for them. (Default) - -@item --with-balloons=/usr/share/ponysay/balloons -@opindex @option{--with-balloons} -@opindex @option{--without-balloons} -Install balloon styles, and select installation directory for them. (Default) - -@item --with-ucs -@itemx --with-ucs-names=/usr/share/ponysay/ucsmap -@opindex @option{--with-ucs} -@opindex @option{--without-ucs} -@opindex @option{--with-ucs-names} -@opindex @option{--without-ucs-names} -Install UCS pony names, and select installation file name for the map. (Default) - -@item --without-custom-env-python -@opindex @option{--without-custom-env-python} -Let the installer set the @command{env} name for @command{python} in @file{ponysay}. -(Default) - -@item --with-custom-env-python=python3 -@opindex @option{--with-custom-env-python} -Set the @command{env} name for @command{python} in @file{ponysay}. - -@item --prefix=/usr -@opindex @option{--prefix} -Set a prefix to all implicit directories. - -@item --private -@opindex @option{--private} -Change all implicit configurations to fit local user a installation -for the current user. - -@item --opt -@opindex @option{--opt} -Change all implicit directories to fit installation to @file{/opt}. - -@item --bin-dir=/usr/bin -@opindex @option{--bin-dir} -Set the system's directory for command executables. - -@item --lib-dir=/usr/lib/ponysay -@opindex @option{--lib-dir} -Set the system's directory for non-command executables. Currently their -is not non-executable library, so this options has no effect, but bleeding -edge distributors should specify it if it differs from prefered. - -@item --libexec-dir=/usr/libexec/ponysay -@opindex @option{--libexec-dir} -Set the system's directory for non-command executables. Currently their -is not non-command executables, so this options has no effect, but bleeding -edge distributors should specify it if it differs from prefered. - -@item --share-dir=/usr/share -@opindex @option{--share-dir} -Set the system's directory for resource files. - -@item --cache-dir=/var/cache -@opindex @option{--cache-dir} -Set the system's directory for cache directories. - -@item --dest-dir= -@opindex @option{--dest-dir} -Set off environment for installation. - -@item --linking=symbolic -@opindex @option{--linking} -Set how to link identical files. Directories cannot be hard linked on most -systems, therefore directories or always symbolically linked of hard linked -is specified. -Recognised arguments are @code{copy}, @code{hard} and @code{symbolic}. -@code{copy} implies that files and directories are not linked, but duplicated. -@command{ponysay -L} will give the same output as @command{ponysay -l} if @code{copy} -or @code{hard} is used. This is because it does link reading and not content or -inode comparison. -@end table - -Recognised compressions are @option{gz} which uses @option{gzip -9}, and @option{xz} -which uses @option{xz -9e}. @option{xz} is still exotic to most programs, using -it is not recommended. Distributors are strongly disencouraged to compression for the -PDF manual and should use @option{--without-pdf-compression}. - -You can run @command{./setup.py [OPTIONS] view} to make sure everything is correct -before building and installing. - - -@node Package repositories -@section Package repositories -@cindex package repositories - -@menu -* Arch Linux:: Packages for Arch Linux. -* Arch Linux ARM:: Packages for Arch Linux ARM. -* Chakra:: Packages for Chakra. -* Debian GNU/Linux:: Packages for Debian GNU/Linux and Ubuntu. -* Gentoo Linux:: Packages for Gentoo Linux. -* Source Mage GNU/Linux:: Packages for Source Mage GNU/Linux. -@end menu - - -@node Arch Linux -@subsection Arch Linux -@cindex arch linux - -The official Arch Linux package repositories contains @command{ponysay} as -@w{@code{community/ponysay}} (developer maintained). The Arch Linux User Repository -(AUR) contains a bleeding edge git version of @command{ponysay} as -@w{@code{ponysay-git}} (user maintained). - - -@node Arch Linux ARM -@subsection Arch Linux ARM -@cindex arch linux arm - -@w{@code{community/ponysay}} from Arch Linux (@ref{Arch Linux}) is also available -for Arch Linux ARM. - - -@node Chakra -@subsection Chakra -@cindex chakra - -Chakra users can install from (CCR) a stable version named a @code{ponysay} -(developer maintained Arch Linux mirror), additionally a git verion of ponysay is -available as @code{ponysay-git} (developer maintained Arch Linux mirror). - - -@node Debian GNU/Linux -@subsection 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} -(user maintained), and PPA:s can be found at -@url{https://launchpad.net/~vincent-c/+archive/ppa} (user maintained) and -@url{https://launchpad.net/~blazemore/+archive/ponysay} (user maintained). - - -@node Gentoo Linux -@subsection 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}} (developer maintained). - - -@node Source Mage GNU/Linux -@subsection Source Mage GNU/Linux -@cindex source mage gnu/linux - -The spell @w{@code{util/ponysay}} (user maintained) is available in Grimoire for -Source Mage @w{GNU/Linux}. - - -@node Uninstalling -@section Uninstalling -@cindex uninstalling - -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 an uninstallation of old files run @command{make uninstall-old}. - - - -@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 Universal 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 placing an ESC character before the dollar sign. - -There are three predefined 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 whose 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 compiling, 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, and is the basis for how the -compiled files are named. In the ponymap ponies with the same quotes are on the -same line join together 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 identical to the -compiled quote files, except that their name contains just the first pony. - - -@node Balloon style files -@section Balloon style files -@cindex balloon style files -@cindex bubble style files -@pindex 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 defined on separate lines, by -their name and their value separated with a colon (@code{name:value}), if the name is -empty it continues the last one on a 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 defined 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 left 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 -@pindex linux vt -@cindex clearing tty -@cindex kms -@cindex kernel mode setting - -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 setting - -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 Setting (KMS) support to -keep the colours from being messed up when 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 truncation is done internally in the Python script, before that it -was done in a custom C program @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 previous, C, program it supported -UTF-8 by assuming 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. Another difference is that -the background colours are not reset, instead ANSI colours after the truncation point -are still printed. - - -@node Languages -@section Languages -@cindex languages -@cindex script languages -@cindex program languages - -Before version 2.0 @command{ponysay} was written primarily in GNU Bash script; 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}, it is also 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 -@opindex @option{--onelist} -@opindex @option{++onelist} -@opindex @option{--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 truncation 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 character encoding. However in Unicode -6.1 their are four ranges of combining characters, these do not take up any -width in proper terminal, we therefore have a class in the code named @code{UCS} -that help us take them into consideration when determine the length of a string. - -Some ponies have names that contain 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 -parsed, and contains a UCS name and a ASCII:ised name. The UCS name comes first, -followed by the ASCII:ised name that the UCS name should replace or link towards. -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. Please update it when fit. -@* - -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: -@pindex util-say -@pindex @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 - -@* -@pindex 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 use PNG -files as argument the for @command{ponysay -f}, this requires 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{dev/dist.sh ttyponies} after -adding the ponies to @file{ponies/}, running @command{dev/dist.sh 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{dev/dist.sh 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, these lines 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} instead 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 so everypony can see it. - -@* -The following is a reference distribution written in Arch Linux's PKGBUILD format. -It is not complete, proper, verbose enough or well written, it just contains the -core of an stable @command{git} distribution. - -@cartouche -@example -pkgname=ponysay -pkgver=2.5 -pkgrel=1 -arch=(any) -pkgdesc="Cowsay reimplementation for ponies" -url="https://github.com/erkin/ponysay" -license=(WTFPL "GNU FDL v1.3") -depends=(python>=3 coreutils) -optdepends=("util-say>=2: Improved TTY support with KMS and PNG files") -makedepends=(git texinfo info gzip python>=3) - -build() -@{ cd "$srcdir"; git clone git://github.com/erkin/ponysay.git ponysay - cd ponysay ; git checkout "$pkgver" - - ./setup.py --everything --without-pdf-compression \ - --bin-dir=/usr/bin --dest-dir="$pkgdir" build -@} - -package() -@{ cd "$srcdir/ponysay"; ./setup.py prebuilt -@} -@end example -@end cartouche - - - -@node Terminology -@chapter Terminology -@cindex terminology - -@table @i -@item MLP:FiM -@cindex MLP:FiM -The television show My Little Pony: Friendship is Magic. - -@item My Little Pony -@cindex my little pony -The successor to My Pretty Pony, the toy not the short story by Stephen King. - -@item TTY -@itemx Linux VT -@cindex tty -@pindex linux vt -Linux's native terminal emulator. The name TTY comes from the file names for the -devices used for terminals by Linux VT, which is @file{/dev/tty*}. - -@item KMS -@itemx Kernel Mode Setting -@cindex kms -@cindex kernel mode setting -A feature in Linux allowing mode setting in kernel-space, this gives the TTY, -for example better colour support. I would go to Wikipedia for more information. - -@item ttyponies -@cindex ttyponies -Pony files used in TTY. - -@item kmsponies -@cindex kmsponies -Pony files generated for use in TTY with custom TTY colour palette and KMS support. - -@item extraponies -@itemx extra ponies -@cindex extraponies -@cindex extra ponies -Pony files of ponies that are not a part of MLP:FiM. -@item standard ponies -@cindex standard ponies - -Pony files of ponies that are a part of MLP:FiM. -@item systemponies -@itemx sysponies -@cindex systemponies -@cindex sysponies -Pony files located in @file{/usr/share/ponysay}. - -@item homeponies -@itemx usrponies -@cindex homeponies -@cindex usrponies -Pony files located in @file{~/.local/share/ponysay}. - -@item browser ponies -@cindex browser ponies -@cindex desktop ponies -A JavaScript program which is the source for most of our ponies. It is a port of -@i{desktop ponies}. - -@item ponification -@cindex ponification -The process of converting English text to Equestrian English. - -@item Equestrian English -@cindex Equestrian English -The English dialect spoken by the ponies in MLP:FiM, the basic role is that it -is American English with as many words and parts of words as possible exchanged -to words having to do with ponies, including the work `pony' itself. This is -normally the language we, the developers, write in, except we may use another -English, e.g. British English, as the base language. - -@item best.pony -@cindex best.pony -The pony you think is [the] best pony. It should be a symlink pony. It is a feature -affecting the @option{-f}, @option{-F} and @option{-q} options. - -@item pony symlink -@itemx symlink pony -@cindex pony symlink -@cindex symlink pony -A pony file that is a symbolic link to another pony file. Symbolic links can be -created with the command @command{ln -s TARGET SYMLINK}. - -@item ponyquotes -@cindex ponyquotes -A feature enabling ponies to quote them self from MLP:FiM. - -@item environment variables -@cindex environment variables -Variables stored to the environment with the command @command{export VARIABLE=VALUE}. -The variable name is often written with the prefix @code{$} due to have they are read -in shell, using the command @command{echo $VARIABLE}. - -@item UCS -@itemx Universal Character Set -@cindex ucs -@cindex universal character set -The set of of character, develop by the Unicode Consortium. It defined a partially filled -space of @math{2^{31}} characters, some of which are not glyphs. - -@item combining characters -@cindex combining characters -Character that have zero width and is used to compose characters with diacritical when -there is no precomposed character to use. - -@item ASCII -@itemx ASCII character -@cindex ascii -@cindex character -American Standard Code for Information Interchange (ASCII) defines 128 characters, some -are not glyphs. It contains control characters, basic punctuation, the decimal digit, -and lower case and upper case English alphabet characters @code{a-z}. - -@item short options -@cindex short options -Command line arguments starting with either exactly one hyphen (@code{-}) or exactly one -plus sign (@code{+}), and have exactly one character beyond that. They may be argumentless, -argumented, optionally argumented, or variadic (consumes all following arguments). - -@item long options -@cindex long options -Command line arguments starting with either at least two hyphens (@code{-}) or at least two -plus signs (@code{+}), beyond that they have at least one character, but often at least one -work. They by be argumentless, argumented, optionally argumented, or variadic (consumes all -following arguments). - -@item completion -@itemx auto-completion -@itemx shell completion -@itemx shell auto-completion -@cindex completion -@cindex auto-completion -@cindex shell completion -@cindex shell auto-completion -Provided by a shell dependent script, argument suggestion is provided of then by pressing -the tab key. - -@item ANSI escape sequences -@itemx escape sequences -@cindex ANSI escape sequences -@cindex escape sequences -Character sequences starting with a ESC character, with a special interpretation for terminals -standardise by ANSI. - -@item ANSI colour sequences -@itemx ANSI colours -@itemx colour sequences -@cindex ANSI colour sequences -@cindex ANSI colours -@cindex colour sequences -ANSI escape sequences defining a colour or other formatting, known as CSI m, a sequence starting -with CSI and ending with an @code{m}. This is extended to 256 colours, from 16 colours, by -@command{xterm} which is de facto standardise. - -@item CSI -@cindex CSI -The character combination ESC followed by @code{[}, used in standardised ANSI escape sequences. - -@item OSI -@cindex OSI -The character combination ESC followed by @code{]}, used in non-standardised ANSI escape -sequences. -@end table - - - -@node Change log -@appendix Change log -@cindex change log -@cindex versions -@cindex previous releases - -@heading Version 2.9.1 -@itemize @bullet -@item -Bug fix: correction in the -W option broke the -o option. -@end itemize - - -@heading Version 2.9 -@itemize @bullet -New ponies: @file{pinkieumbrelahatfear}, @file{twilighttime} -@item -New extraponies: @file{molestia} (Tumblr) -@item -The option @option{-q} works like @option{-f} and @option{-F}, it takes one argument, and -may be used multiple times for more arguments. -@item -The old option @option{-q} is renamed to @option{--q}. -@item -The options @option{--f} and @option{--F} has been added. -@item -Weighted distance for autocorrection on pony names and boolean style name is set to 5, rather -than unlimited. Currently this cannot be modified (without editing the source code.) -@item -If file descriptor 3 is definied when @command{ponysay} is executed, extra information is -printed to it. -@item -Arguments starting with @code{n} or @code{i} is allowed for @option{-W}. -@end itemize - - -@heading Version 2.8 -@itemize @bullet -@item -New ponies: @file{airheart}, @file{bastionyorsets}, @file{gustavelegrand}, @file{milkyway}, -@file{peppermoon}, @file{pinkacopter}, @file{pinkiefly}, @file{pinkieparade}, -@file{pinkieumbrellahat}, @file{shiningarmorwedding}, @file{soaringofficer}, -@file{starlight}, @file{sunnyrays}, @file{sweatiesing}, @file{tenderheart}, @file{tom}, -@file{twilightspike}, @file{zecorabalance} -@item -New extraponies: @file{applejack} (Tumblr), @file{applejack-63}, @file{artemis}, @file{blueberry}, -@file{butterscotch}, @file{drhoovesdiscorded} (Tumblr), @file{duskshine}, @file{elusive}, -@file{rainbowblitz} -@item -Pony symlink added: -@itemize @bullet -@item @file{georgewashingtony} @arrow{} @file{bastionyorsets} -@end itemize -@item -Support for explicit hyphenation using soft hyphens had been added to the word wrapper. -@item -Support for explicit non-word wrapping using non-breaking space had been added to the word wrapper. -@item -The word wrapper colours the inserted hyphens in red. -@item -Support for terminal capabilities emulation with the flags @option{-X}, @option{-V} and @option{-K}. -@item -Support for printing just the pony, using the flag @option{-o}. -@item -Colouring option flags are added. -@item -Automatic correction of incorrectly spelled pony names and balloon style names added. -@end itemize - - -@heading Version 2.7 -@itemize @bullet -@item -New ponies: @file{basil}, @file{cloudkicker}, @file{cerberus}, @file{cow}, @file{derpysad}, -@file{flowertrio}, @file{frederickhorseshoepin}, @file{horsemd}, @file{jeffletroski}, -@file{jesuspezuna}, @file{joe}, @file{joetuxedo}, @file{manticore}, -@file{meadownsong}, @file{meliot}, @file{pinkiegummydisguise}, @file{seaswirl}, -@file{theodoredonaldkerabatsos}, @file{turf}, @file{waltercoltchak} -@item -New extraponies: @file{blueballblitz} (Varous fanfics, Shadowbolt), @file{drhooves1}, -@file{drhooves2}, @file{drhooves3}, @file{drhooves4}, @file{drhooves5}, @file{drhooves6}, -@file{drhooves7}, @file{drhooves8}, @file{drhooves9}, @file{drhooves10}, @file{drhooves11}, -@file{nyx} (Fanfic: Past Sins), @file{nyxdisguised} (Fanfic: Past Sins), -@file{pinkaminacupcake} (Fanfic) -@item -@file{cracky} is renamed to @file{crackle}. -@end itemize - - -@heading Version 2.6 - -@itemize @bullet -@item -New ponies: @file{applebloomdance}, @file{blueberry}, @file{blueberrycake}, @file{blueharvest}, -@file{candylicious}, @file{cherrycola}, @file{cracky}, @file{cutiemarkcrusaders}, -@file{derpybags}, @file{derpycloud}, @file{firestreak}, @file{hughjelly}, @file{lemonhearts}, -@file{lyrabonbon}, @file{noi}, @file{pictureperfect}, @file{poppycock}, @file{quickfix}, -@file{silverspeed}, @file{rainbowhurricane}, @file{rainbowshadowbolt}, @file{silverspeed}, -@file{surprise} (wonderbolt), @file{thunderlane}, @file{timeturner}, @file{twilightthebearded} -@item -New extraponies: @file{faust} (alicorn), @file{maria} (Moonstuck, seapony), @file{posey} (Tumblr), -@file{slanderpony}, @file{sparkler} (Tumblr), @file{twilight} (Tumblr) -@item -Pony symlink added: -@itemize @bullet -@item @file{bonbonlyra} @arrow{} @file{lyrabonbon} -@item @file{epona} @arrow{} @file{quickfix} -@item @file{clockwork} @arrow{} @file{quickfix} -@item @file{drhooves} @arrow{} @file{timeturner} -@item @file{lotusbloosom} @arrow{} @file{lotus} -@end itemize -@item -@file{doctor} and @file{doctornohat} has become extraponies, -because their mane style is differenct from in the TV show. -And @file{timeturner} no longer links to any of them. -@item -@command{./configure} and @command{make} is no longer support. -@end itemize - - -@heading Version 2.5.1 - -@itemize @bullet -@item -New extraponies: @file{sealyra} -@item -Build system as compatibility with standard GNU Make build system. -@end itemize - - -@heading Version 2.5 - -@itemize @bullet -@item -Brand new highly configurable build system. -@item -UTF-8 as I/O encoding is enforced. (Critical bug fix for ASCII locale users.) -@end itemize - - -@heading Version 2.4 - -Nothing worth mentioning. - -@b{Note}: Identifies itself as version 2.3 - - -@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 -New extraponies: @file{fyrefly} (Tumblr), @file{surprise} (Tumblr), @file{woona} -(moonstuck), @file{woonanohat} (moonstuck) -@item -Pony symlink added: -@itemize @bullet -@item @file{pinkieoink} @arrow{} @file{oinkoinkoink} -@end itemize -@item -Support for non-MLP:FiM ponies (known as extraponies). -@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 mentioning. - - -@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}. -@item -Pony symlink added: -@itemize @bullet -@item @file{sindy} @arrow{} @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} @arrow{} @file{nightlight} -@item @file{elsie} @arrow{} @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 -@opindex @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} @arrow{} @file{sparkler} -@item @file{berrypinch} @arrow{} @file{ruby} -@item @file{craftycrate} @arrow{} @file{boxxy} -@item @file{magnum} @arrow{} @file{raritysdad} -@item @file{pearl} @arrow{} @file{raritysmom} -@item @file{powderrouge} @arrow{} @file{sindy} -@item @file{royalribbo} @arrow{} @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} @arrow{} @{@file{pokey} @arrow{} @file{perrypierce}@}. -@item -@opindex @option{-L} -Option @option{-L} added, lists ponies with symlink mapping. -@item -Support for extension: ponyquotes4ponysay. -@item -@opindex @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} @arrow{} @file{vinyl} -@item @file{fillycadance} @arrow{} @file{fillycadence} -@item @file{horsepower} @arrow{} @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} @arrow{} @file{carrot} -@item @file{goldenharvest} @arrow{} @file{carrot} -@item @file{harpass} @arrow{} @file{lyra} -@item @file{heartstrings} @arrow{} @file{lyra} -@item @file{lulamoon} @arrow{} @file{trixie} -@item @file{minuette} @arrow{} @file{colgate} -@item @file{noteworthy} @arrow{} @file{blues} -@item @file{perry} @arrow{} @file{pokey} -@item @file{pokeypierce} @arrow{} @file{pokey} -@item @file{timeturner} @arrow{} @file{doctornohat} -@item @file{trixielulamoon} @arrow{} @file{trixie} -@item @file{twilightvelvet} @arrow{} @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 -@opindex @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 -@opindex @option{-W} -Support for @option{-W} option. -@item -Select random pony if not specified. -@item -@opindex @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 -@opindex @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 Daniel ``gtmanfred'' Wallace -@item Jannis ``sycoso'' -@item ``spider-mario'' -@end itemize - - - -@node Ponysay license -@appendix Ponysay license - -Ponysay is release by Erkin Batu Altunbaş et al. @* -Copyright @copyright{} 2012 Erkin Batu Altunbaş et al. - -@* - -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 - -@* - -@cartouche -@verbatim - DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE - Version 2, December 2004 - -Copyright © 2004 Sam Hocevar <sam@hocevar.net> - -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 verbatim -@end cartouche - -@node GNU Free Documentation License -@appendix GNU Free Documentation License -@include fdl.texinfo - - -@node Concept and program index -@appendix Concept and program index -@printindex pg - -@node Variable and option index -@appendix Variable and option index -@printindex vr - - -@bye - |