mirror of
https://github.com/erkin/ponysay.git
synced 2024-11-22 12:27:59 +01:00
550 lines
18 KiB
Text
550 lines
18 KiB
Text
\input texinfo @c -*-texinfo-*-
|
||
|
||
@c %**start of header
|
||
@setfilename ponysay.info
|
||
@settitle Ponysay
|
||
@afourpaper
|
||
@documentencoding UTF-8
|
||
@documentlanguage en
|
||
@finalout
|
||
@c %**end of header
|
||
@set VERSION 1.1
|
||
|
||
@copying
|
||
This manual is for ponysay
|
||
(version @value{VERSION}),
|
||
|
||
Copyright @copyright{} 2012 Mattias Andrée
|
||
|
||
@quotation
|
||
Permission is granted to copy, distribute and/or modify this document
|
||
under the terms of the GNU Free Documentation License, Version 1.3 or
|
||
any later version published by the Free Software Foundation; with no
|
||
Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
|
||
Texts. A copy of the license is included in the section entitled
|
||
``GNU Free Documentation License''.
|
||
@end quotation
|
||
@end copying
|
||
|
||
@ifnottex
|
||
@node Top
|
||
@top Ponysay: ponies for your terminal
|
||
@insertcopying
|
||
@end ifnottex
|
||
|
||
@titlepage
|
||
@title Ponysay
|
||
@subtitle A cowsay wrapper for ponies.
|
||
@subtitle Covers ponysay version @value{VERSION}.
|
||
@author by Mattias Andrée
|
||
|
||
@page
|
||
@vskip 0pt plus 1filll
|
||
@insertcopying
|
||
@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:: Environment variables.
|
||
* Limitations:: Limitations.
|
||
* Problems and requests:: Reports and requests.
|
||
* Dependencies:: Dependencies.
|
||
* Installing:: Installing.
|
||
@c Extensions
|
||
@c Inner workings->Pony anatomy
|
||
* Contributing:: Contributing.
|
||
* Ponysay constributors:: Ponysay constributors.
|
||
* Ponysay license:: Ponysay license.
|
||
* GNU Free Documentation License:: Copying and sharing this manual.
|
||
* Concept index:: Concept index.
|
||
@end menu
|
||
|
||
|
||
|
||
|
||
@node Overview
|
||
@chapter Overview
|
||
@cindex overview
|
||
|
||
@command{ponysay} displays an image of a My Little Pony pony saying some text provided
|
||
by the user in a terminal. It is a wrapper for @command{cowsay}. If message is not
|
||
provided, e.g. by piping, it accepts standard input. The pony saying the given message
|
||
is printed on standard output.
|
||
|
||
@command{ponythink} is to @command{ponysay} as @command{cowthink} is to @command{cowsay}.
|
||
|
||
|
||
|
||
|
||
@node Invoking ponysay
|
||
@chapter Invoking @command{ponysay}
|
||
@cindex invoking
|
||
@cindex options
|
||
@cindex arguments
|
||
@cindex ponythink
|
||
|
||
The format for running the @command{ponysay} program is:
|
||
|
||
@example
|
||
ponysay [@var{option}@dots{}] [@var{message}]
|
||
ponythink [@var{option}@dots{}] [@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 -h
|
||
Show summary of options.
|
||
|
||
@item -v
|
||
Show version of program.
|
||
|
||
@item -f PONY
|
||
Specify the pony that should printed, this can either be a file name or
|
||
a pony name printed by @command{ponysay -l}. If it is a file name with
|
||
a relative path and does not include a `@code{/}', it must begin with
|
||
`@code{./}', this is a @command{cowsay} issue. 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.
|
||
|
||
@item -q [PONY...]
|
||
This option requires the extension @command{ponyquotes4ponysay}. By using
|
||
this option, a pony will be printed with quotes from her in My Litte Pony:
|
||
Friendship is Magic. The pony will be selected randomly, at least one pony
|
||
is added as an argument after @command{-q}.
|
||
|
||
@item -W COLUMN
|
||
Specify the screen column where the message should be wrapped,
|
||
this is by default 40, which is inherited from @command{cowsay}.
|
||
|
||
@item -l
|
||
Lists all installed ponies. If the extension @command{ponyquotes4ponysay}
|
||
is installed the ponies which have quotes, i.e. can be used with the
|
||
@command{-q} option, will be mark by being printed in bold or bright
|
||
(depending on the terminal.)
|
||
|
||
@item -L
|
||
Lists all installed ponies. If the extension @command{ponyquotes4ponysay}
|
||
is installed the ponies which have quotes, i.e. can be used with the
|
||
@command{-q} option, will be mark by being printed in bold or bright
|
||
(depending on the terminal.) This options differs from @command{-l} by
|
||
printed symonym ponies (symbolic links) inside brackes after their
|
||
target ponies.
|
||
@end table
|
||
|
||
If neither @command{-q} is used nor any @var{message} is specified, @command{ponysay}
|
||
will read the message from stdin (standard input); however, if no arguments
|
||
are used that nothing is piped to stdin, a help message will be printed.
|
||
If you want to use @command{ponysay} without arguments and enter the message
|
||
by hand, you can run @code{cat | ponysay}.
|
||
|
||
|
||
|
||
@node Advanced usage
|
||
@chapter Advanced usage of @command{ponysay}.
|
||
@cindex advanced usage
|
||
|
||
@cindex fortune
|
||
If you have @command{fortune} installed -- this program may be named
|
||
@command{fortune-mod} in your GNU/Linux distributions package reposity --
|
||
you can run @code{fortune | ponysay} to get a random pony reading a
|
||
random fortune cookie.
|
||
|
||
@cindex on startup
|
||
By adding @code{fortune | ponysay} to the end [easiest way] of your
|
||
@code{~/.bashrc} -- or equivalent for your shell if use do not use GNU Bash
|
||
(standard shell for most distributions now adays) -- you will get the
|
||
effect described in the previous paragraph every time you open a terminal.
|
||
|
||
@cindex tty
|
||
@cindex linux vt
|
||
If you use TTY and have a custom colour palette, you should also add to your
|
||
@code{~/.bashrc}, before @code{fortune | ponysay}:
|
||
@example
|
||
[[ "$TERM" = "linux" ]] &&
|
||
function ponysay
|
||
@{ exec ponysay "$@@"
|
||
#RESET PALETTE HERE
|
||
@}
|
||
@end example
|
||
|
||
@cindex ponification
|
||
@cindex ponypipe
|
||
You can ponify text (i.e. replaces words search as ``everyone'' with ``everypony'')
|
||
by using @code{fortune | ponypipe} instead of using @command{fortune}.
|
||
@command{ponypipe} can be downloaded from @url{https://github.com/maandree/ponypipe}.
|
||
Alternatively use 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}.
|
||
Their is also a large sed script, similar to @command{ponypipe}: @url{http://www.reddit.com/r/mylittlelinux/comments/srixi/using_ponysay_with_a_ponified_fortune_warning/}
|
||
|
||
|
||
@node Environment
|
||
@chapter Environment variables
|
||
@cindex environment variables
|
||
@cindex truncation
|
||
|
||
@command{ponysay} supports the follow environment variables:
|
||
|
||
@table @option
|
||
@item PONYSAY_BOTTOM
|
||
@cindex PONYSAY_BOTTOM
|
||
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 buttom
|
||
to be printed rather the the beginning you can export @code{PONYSAY_BOTTOM}
|
||
with the value @code{yes}, @code{y} or @code{1}.
|
||
|
||
@item PONYSAY_SHELL_LINES
|
||
@cindex PONYSAY_SHELL_LINES
|
||
Under TTY (Linux VT), if the output is larger the the screen's height, two
|
||
lines are left blank. If you want more, or less, blank lines you can export
|
||
@code{PONYSAY_SHELL_LINES} with the value of how many blank lines you want.
|
||
Naturally this takes effect if the output is not actually larger than the
|
||
screen.
|
||
|
||
@item PONYSAY_FULL_WIDTH
|
||
@cindex PONYSAY_FULL_WIDTH
|
||
You can export @code{PONYSAY_FULL_WIDTH} with the value @code{no}, @code{n}
|
||
or @code{0}, if you do not want the output to be truncated on the width to
|
||
fit the terminal.
|
||
|
||
@item PONYSAY_TRUNCATE_HEIGHT
|
||
@cindex PONYSAY_TRUNCATE_HEIGHT
|
||
Export @code{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.
|
||
@end table
|
||
|
||
|
||
|
||
|
||
@node Limitations
|
||
@chapter Limitations
|
||
@cindex limitations
|
||
|
||
@menu
|
||
* Terminals:: Limitations on terminals.
|
||
* Cowsay:: Limitations on cowsay,
|
||
@end menu
|
||
|
||
|
||
@node Terminals
|
||
@section Terminals
|
||
|
||
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}.
|
||
|
||
On Linux's native terminal Linux VT (TTY) it works less well, and not good at all with
|
||
Kernal Mode Settings (KMS) support. See @url{https://github.com/erkin/ponysay/issues/1}
|
||
for more information. @command{ponysay} clears the screen before printing to TTY, this
|
||
is because if your graphics driver supports KMS, the colours will be messed by when the
|
||
ponies position moves on the screen, this is also reason why the output is truncated on
|
||
the height in TTY by default.
|
||
|
||
Due to extreme limitations in @command{9term} @command{ponysay} will never be able to
|
||
run on it.
|
||
|
||
Most terminals have support for 256 colours, we do however only use the top 240 colours;
|
||
this is because the lower 16 colours are usally, 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 (except for @math{2^{24}} + full transparency.)
|
||
|
||
|
||
@node Cowsay
|
||
@section Cowsay
|
||
|
||
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 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.
|
||
|
||
@cindex figlet
|
||
@cindex tiolet
|
||
@command{cowsay}'s word wrapping handles single line breaks as normal blankspaces,
|
||
this messes up messaged created with programs seach as @command{figlet} and @command{TOIlet}.
|
||
|
||
|
||
|
||
@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
|
||
|
||
@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 @option
|
||
@item bash
|
||
Required for the main script [file: @command{ponysay}].
|
||
@item cowsay
|
||
This is a wrapper for @command{cowsay}.
|
||
@item coreutils
|
||
The main script [file: @command{ponysay}] uses @command{stty}, @command{cut},
|
||
@command{ls}, @command{cat}, @command{sort}, @command{readlink}, @command{pwd},
|
||
@command{head} and @command{tail}.
|
||
@item sed
|
||
Used to remove @code{.pony} from pony names when running @command{ponysay -l}
|
||
and @command{ponysay -L}.
|
||
@item perl
|
||
Required to run @command{ponysay -l} and @command{ponysay -L}.
|
||
@end table
|
||
|
||
@node Optional runtime dependencies
|
||
@section Optional runtime dependencies
|
||
@cindex extensions
|
||
@cindex ponyquotes4ponysay
|
||
|
||
@table @option
|
||
@item ponyquotes4ponysay
|
||
For support of My Little Pony quotes with associated pony: the @code{-q} option.
|
||
It can be downloaded at @url{https://github.com/maandree/ponyquotes4ponysay}.
|
||
@end table
|
||
|
||
|
||
@node Package building dependencies
|
||
@section Package building dependencies
|
||
|
||
@table @option
|
||
@item gcc
|
||
Used for compiling @command{ponysaytruncater.c}.
|
||
@item gzip
|
||
Used for compressing manpages.
|
||
@item make
|
||
Required to run the make script.
|
||
@item coreutils
|
||
The make script uses @command{install}, @command{unlink}, @command{rm}, @command{ln},
|
||
@command{mkdir} and @command{cp}.
|
||
@end table
|
||
|
||
|
||
@node Dependencies for pony providers
|
||
@section Dependencies for pony providers
|
||
@cindex contributing
|
||
|
||
@table @option
|
||
@item make
|
||
Required to run @command{make -B ttyponies`}.
|
||
@item coreutils
|
||
@command{ln} and @command{readlink} are used in the @command{ttyponies} subscript.
|
||
@item bash
|
||
Used in the ttyponies subscript.
|
||
@item util-say
|
||
Used by @command{make ttyponies} to build ttyponies from xterm ponies.
|
||
It can be downloaded at @url{https://github.com/maandree/util-say}.
|
||
@end table
|
||
|
||
|
||
|
||
@node Installing
|
||
@chapter Installing
|
||
@cindex installing
|
||
@cindex make
|
||
|
||
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 @command{clone} the project URL
|
||
@url{https://github.com/erkin/ponysay.git}.
|
||
|
||
In the terminal,@command{cd} into the ponysay directory and execute
|
||
@command{make && make install}. This will install @command{ponysay} into the
|
||
@code{/usr}, meaning you may need to run @command{make install} as root,
|
||
e.g. by running @command{sudo make install}.
|
||
|
||
Now you will be to use ponysay, run: @command{ponysay "I am just the cutest pony!"},
|
||
or if have a specific pony in your mind: @command{ponysay -f pinkie "Partay!~"}.
|
||
|
||
@command{ponysay} comes with a manpage in section 6, @command{man 6 ponysay}
|
||
(or just @command{man ponysay}). The man page is also available in Spanish:
|
||
@command{man -L es 6 ponysay}.
|
||
|
||
|
||
|
||
@node Contributing
|
||
@chapter 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:
|
||
@url{https://github.com/maandree/unisay/tree/develop/dev/newponies}
|
||
@*
|
||
|
||
New ponies can be created from regular images by using util-say, which is available
|
||
at @url{https://github.com/maandree/util-say}.
|
||
@command{img2xterm} (@url{https://github.com/rossy2401/img2xterm}) was used earlier,
|
||
but util-say tries do 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.)
|
||
|
||
Using util-say:
|
||
@example
|
||
img2ponysay -2 -- SOURCE_IMAGE > PONY_FILE
|
||
|
||
PONY_FILE should end with .pony and be localed in ponies/
|
||
|
||
Omit -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
|
||
|
||
@*
|
||
@cindex ttypony
|
||
When a pony is added please also add a ttypony version, i.e. the pony files used in TTY,
|
||
but if you don't please state so in the pull request so we do not miss the create it;
|
||
the simplest way to do this is to run @command{make -B ttyponies} after adding the ponies
|
||
to @code{ponies/}, running @command{make -B ttyponies} will build (or rebuild) all
|
||
ttyponies with a pony present in @code{ponies/}, and creates all needed symlinks.
|
||
|
||
To be able to run @command{make -B ttyponies} you must have the packages listed under
|
||
@ref{Dependencies for pony providers}.
|
||
|
||
|
||
|
||
|
||
@node Ponysay constributors
|
||
@appendix Ponysay constributors
|
||
|
||
Active developers of ponysay:
|
||
@itemize @bullet
|
||
@item Erkin Batu Altunbaş
|
||
@item Mattias Andrée
|
||
@item Sven-Hendrik Haase
|
||
@item Pablo Lezaeta
|
||
@item Jan Alexander Steffens
|
||
@end itemize
|
||
@*
|
||
Patchers and other contributors of ponysay:
|
||
@itemize @bullet
|
||
@item Elis Axelsson
|
||
@item Duane Bekaert
|
||
@item Kyah Rindlisbacher
|
||
@item James Ross-Gowan
|
||
@item Louis Taylor
|
||
@item Jannis
|
||
@end itemize
|
||
|
||
|
||
@node Ponysay license
|
||
@appendix Ponysay license
|
||
|
||
Ponysay is Free Software (yet not Open Source) and in licensed under the terms
|
||
of Do What The Fuck You Want To Public Licese (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 neighbor (freedom 2).
|
||
@item
|
||
The freedom to distribute copies of your modified versions to others (freedom 3). By doing this you can give the whole community a chance to benefit from your changes. Access to the source code is a precondition for this.
|
||
@end itemize
|
||
|
||
@*
|
||
|
||
@center DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
|
||
@center Version 2, December 2004
|
||
|
||
Copyright @copyright{} 2012 Erkin Batu Altunbaş
|
||
|
||
@quotation
|
||
Everyone is permitted to copy and distribute verbatim or modified
|
||
copies of this license document, and changing it is allowed as long
|
||
as the name is changed.
|
||
|
||
DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
|
||
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
||
|
||
0. You just DO WHAT THE FUCK YOU WANT TO.
|
||
@end quotation
|
||
|
||
|
||
|
||
@node GNU Free Documentation License
|
||
@appendix GNU Free Documentation License
|
||
@include fdl.texinfo
|
||
|
||
@node Concept index
|
||
@appendix Concept index
|
||
@printindex cp
|
||
|
||
|
||
@bye
|
||
|