degesch(1)
==========
:doctype: manpage
:manmanual: uirc3 Manual
:mansource: uirc3 {release-version}

Name
----
degesch - terminal-based IRC client

Synopsis
--------
*degesch* [_OPTION_]...

Description
-----------
*degesch* is a scriptable IRC client for the command line.  On the first run
it will welcome you with an introductory message.  Should you ever get lost,
use the */help* command to obtain more information on commands or options.

Options
-------
*-f*, *--format*::
	Format IRC text from the standard input, converting colour sequences and
	other formatting marks to ANSI codes retrieved from the *terminfo*(5)
	database:
+
```
printf '\x02bold\x02\n' | degesch -f
```
+
This feature may be used to preview server MOTD files.

*-h*, *--help*::
	Display a help message and exit.

*-V*, *--version*::
	Output version information and exit.

Key bindings
------------
Most key bindings are inherited from the frontend in use, which is either GNU
Readline or BSD editline.  A few of them, however, are special to the IRC client
or assume a different function.  This is a list of all local overrides and
their respective function names:

*M-p*::
	Go up in history for this buffer (normally mapped to *C-p*).
*M-n*::
	Go down in history for this buffer (normally mapped to *C-n*).
*C-p*, *F5*: *previous-buffer*::
	Switch to the previous buffer in order.
*C-n*, *F6*: *next-buffer*::
	Switch to the next buffer in order.
*M-TAB*: *switch-buffer*::
	Switch to the last buffer, i.e., the one you were in before.
*M-0*, *M-1*, ..., *M-9*: *goto-buffer*::
	Go to the N-th buffer (normally sets a repeat counter).
	Since there is no buffer number zero, *M-0* goes to the tenth one.
*M-!*: *goto-highlight*::
	Go to the first following buffer with an unseen highlight.
*M-a*: *goto-activity*::
	Go to the first following buffer with unseen activity.
*PageUp*: *display-backlog*::
	Show the in-memory backlog for this buffer in the backlog helper,
	which is almost certainly the *less*(1) program.
*M-h*: *display-full-log*::
	Show the log file for this buffer in the backlog helper.
*M-H*: *toggle-unimportant*::
	Hide all join, part and quit messages, as well as all channel mode changes
	that only relate to user channel modes.  Intended to reduce noise in
	channels with lots of people.
*M-e*: *edit-input*::
	Run an editor on the command line, making it easy to edit multiline
	messages.  Remember to save the file before exit.
*M-m*: *insert-attribute*::
	The next key will be interpreted as a formatting mark to insert:
	*c* for colours (optionally followed by numbers for the foreground
	and background), *i* for italics, *b* for bold text, *u* for underlined,
	*x* for struck-through, *v* for inverse text and *o* resets all formatting.
*C-l*: *redraw-screen*::
	Should there be any issues with the display, this will clear the terminal
	screen and redraw all information.

Additionally, *C-w* and *C-u* in editline behave the same as they would in
Readline or the "vi" command mode, even though the "emacs" mode is enabled
by default.

Bindings can be customized in your _.inputrc_ or _.editrc_ file.  Both libraries
support conditional execution based on the program name.  Beware that it is easy
to make breaking changes.

Environment
-----------
*VISUAL*, *EDITOR*::
	The editor program to be launched by the *edit-input* function.
	If neither variable is set, it defaults to *vi*(1).

Files
-----
*degesch* follows the XDG Base Directory Specification.

_~/.config/degesch/degesch.conf_::
	The program's configuration file.  Preferrably use internal facilities, such
	as the */set* command, to make changes in it.

_~/.local/share/degesch/logs/_::
	When enabled by *behaviour.logging*, log files are stored here.

_~/.local/share/degesch/plugins/_::
_/usr/local/share/degesch/plugins/_::
_/usr/share/degesch/plugins/_::
	Plugins are searched for in these directories, in order.

Bugs
----
The editline (libedit) frontend is more of a proof of concept that mostly seems
to work but exhibits bugs that are not our fault.

Reporting bugs
--------------
Use https://git.janouch.name/p/uirc3 to report bugs, request features,
or submit pull requests.

See also
--------
*less*(1), *readline*(3) or *editline*(7)
