Add educational note

This commit is contained in:
Serhii Pozhidayev 2026-06-07 23:43:20 +02:00
parent 4bf60d0fbc
commit 383a7a550b

201
README.md
View file

@ -6,7 +6,6 @@ The fast, lightweight and minimalistic Wayland terminal emulator.
[![Packaging status](https://repology.org/badge/vertical-allrepos/foot.svg?columns=4)](https://repology.org/project/foot/versions) [![Packaging status](https://repology.org/badge/vertical-allrepos/foot.svg?columns=4)](https://repology.org/project/foot/versions)
## Index ## Index
1. [Features](#features) 1. [Features](#features)
@ -16,17 +15,17 @@ The fast, lightweight and minimalistic Wayland terminal emulator.
1. [Why the name 'foot'?](#why-the-name-foot) 1. [Why the name 'foot'?](#why-the-name-foot)
1. [Fonts](#fonts) 1. [Fonts](#fonts)
1. [Shortcuts](#shortcuts) 1. [Shortcuts](#shortcuts)
1. [Keyboard](#keyboard) 1. [Keyboard](#keyboard)
1. [Normal mode](#normal-mode) 1. [Normal mode](#normal-mode)
1. [Scrollback search](#scrollback-search) 1. [Scrollback search](#scrollback-search)
1. [Mouse](#mouse) 1. [Mouse](#mouse)
1. [Touchscreen](#touchscreen) 1. [Touchscreen](#touchscreen)
1. [Server (daemon) mode](#server-daemon-mode) 1. [Server (daemon) mode](#server-daemon-mode)
1. [URLs](#urls) 1. [URLs](#urls)
1. [Shell integration](#shell-integration) 1. [Shell integration](#shell-integration)
1. [Current working directory](#current-working-directory) 1. [Current working directory](#current-working-directory)
1. [Jumping between prompts](#jumping-between-prompts) 1. [Jumping between prompts](#jumping-between-prompts)
1. [Piping last command's output](#piping-last-command-s-output) 1. [Piping last command's output](#piping-last-command-s-output)
1. [Alt/meta](#alt-meta) 1. [Alt/meta](#alt-meta)
1. [Backspace](#backspace) 1. [Backspace](#backspace)
1. [Keypad](#keypad) 1. [Keypad](#keypad)
@ -38,57 +37,52 @@ The fast, lightweight and minimalistic Wayland terminal emulator.
1. [Code of Conduct](#code-of-conduct) 1. [Code of Conduct](#code-of-conduct)
1. [Bugs](#bugs) 1. [Bugs](#bugs)
1. [Contact](#contact) 1. [Contact](#contact)
1. [IRC](#irc) 1. [IRC](#irc)
1. [Mastodon](#mastodon) 1. [Mastodon](#mastodon)
1. [Sponsoring/donations](#sponsoring-donations) 1. [Sponsoring/donations](#sponsoring-donations)
1. [License](#license) 1. [License](#license)
## Features ## Features
* Fast (see [benchmarks](doc/benchmark.md), and - Fast (see [benchmarks](doc/benchmark.md), and
[performance](https://codeberg.org/dnkl/foot/wiki/Performance)) [performance](https://codeberg.org/dnkl/foot/wiki/Performance))
* Lightweight, in dependencies, on-disk and in-memory - Lightweight, in dependencies, on-disk and in-memory
* Wayland native - Wayland native
* DE agnostic - DE agnostic
* Server/daemon mode - Server/daemon mode
* User configurable font fallback - User configurable font fallback
* On-the-fly font resize - On-the-fly font resize
* On-the-fly DPI font size adjustment - On-the-fly DPI font size adjustment
* Scrollback search - Scrollback search
* Keyboard driven URL detection - Keyboard driven URL detection
* Color emoji support - Color emoji support
* IME (via `text-input-v3`) - IME (via `text-input-v3`)
* Multi-seat - Multi-seat
* True Color (24bpp) - True Color (24bpp)
* [Styled and colored underlines](https://sw.kovidgoyal.net/kitty/underlines/) - [Styled and colored underlines](https://sw.kovidgoyal.net/kitty/underlines/)
* [Synchronized Updates](https://gitlab.freedesktop.org/terminal-wg/specifications/-/merge_requests/2) support - [Synchronized Updates](https://gitlab.freedesktop.org/terminal-wg/specifications/-/merge_requests/2) support
* [Sixel image support](https://en.wikipedia.org/wiki/Sixel) - [Sixel image support](https://en.wikipedia.org/wiki/Sixel)
![tux-with-foot](doc/sixel-tux-foot.png "Sixel screenshot")
![tux-with-foot](doc/sixel-tux-foot.png "Sixel screenshot")
# Installing # Installing
See [INSTALL.md](INSTALL.md). See [INSTALL.md](INSTALL.md).
## Configuration ## Configuration
**foot** can be configured by creating a file **foot** can be configured by creating a file
`$XDG_CONFIG_HOME/foot/foot.ini` (defaulting to `$XDG_CONFIG_HOME/foot/foot.ini` (defaulting to
`~/.config/foot/foot.ini`). A template for that can usually be found `~/.config/foot/foot.ini`). A template for that can usually be found
in `/etc/xdg/foot/foot.ini` or in `/etc/xdg/foot/foot.ini` or
[here](https://codeberg.org/dnkl/foot/src/branch/master/foot.ini). [here](https://codeberg.org/dnkl/foot/src/branch/master/foot.ini).
Further information can be found in foot's man page `foot.ini(5)`. Further information can be found in foot's man page `foot.ini(5)`.
## Troubleshooting ## Troubleshooting
See the [wiki](https://codeberg.org/dnkl/foot/wiki#user-content-troubleshooting) See the [wiki](https://codeberg.org/dnkl/foot/wiki#user-content-troubleshooting)
## Why the name 'foot'? ## Why the name 'foot'?
I'm bad at names. Most of my projects usually start out as _foo I'm bad at names. Most of my projects usually start out as _foo
@ -105,7 +99,6 @@ As a side note, if you pronounce the _foo_ part of _foot_ the same way
you pronounce _foobar_, then _foot_ sounds a lot like the Swedish word you pronounce _foobar_, then _foot_ sounds a lot like the Swedish word
_fot_, which incidentally means (you guessed it) _foot_. _fot_, which incidentally means (you guessed it) _foot_.
## Fonts ## Fonts
**foot** supports all fonts that can be loaded by _freetype_, **foot** supports all fonts that can be loaded by _freetype_,
@ -119,18 +112,16 @@ fallback fonts to use.
This also means you can configure _each_ fallback font individually; This also means you can configure _each_ fallback font individually;
you want _that_ fallback font to use _this_ size, and you want that you want _that_ fallback font to use _this_ size, and you want that
_other_ fallback font to be _italic_? No problem! _other_ fallback font to be _italic_? No problem!
If a glyph cannot be found in _any_ of the user configured fallback If a glyph cannot be found in _any_ of the user configured fallback
fonts, _then_ fontconfig's list is used. fonts, _then_ fontconfig's list is used.
## Shortcuts ## Shortcuts
These are the default shortcuts. See `man foot.ini` and the example These are the default shortcuts. See `man foot.ini` and the example
`foot.ini` to see how these can be changed. `foot.ini` to see how these can be changed.
### Keyboard ### Keyboard
#### Normal mode #### Normal mode
@ -161,25 +152,24 @@ These are the default shortcuts. See `man foot.ini` and the example
<kbd>ctrl</kbd>+<kbd>shift</kbd>+<kbd>n</kbd> <kbd>ctrl</kbd>+<kbd>shift</kbd>+<kbd>n</kbd>
: Spawn a new terminal. If the shell has been [configured to emit the : Spawn a new terminal. If the shell has been [configured to emit the
OSC 7 escape OSC 7 escape
sequence](https://codeberg.org/dnkl/foot/wiki#user-content-spawning-new-terminal-instances-in-the-current-working-directory), sequence](https://codeberg.org/dnkl/foot/wiki#user-content-spawning-new-terminal-instances-in-the-current-working-directory),
the new terminal will start in the current working directory. the new terminal will start in the current working directory.
<kbd>ctrl</kbd>+<kbd>shift</kbd>+<kbd>o</kbd> <kbd>ctrl</kbd>+<kbd>shift</kbd>+<kbd>o</kbd>
: Enter URL mode, where all currently visible URLs are tagged with a : Enter URL mode, where all currently visible URLs are tagged with a
jump label with a key sequence that will open the URL. jump label with a key sequence that will open the URL.
<kbd>ctrl</kbd>+<kbd>shift</kbd>+<kbd>u</kbd> <kbd>ctrl</kbd>+<kbd>shift</kbd>+<kbd>u</kbd>
: Enter Unicode input mode. : Enter Unicode input mode.
<kbd>ctrl</kbd>+<kbd>shift</kbd>+<kbd>z</kbd> <kbd>ctrl</kbd>+<kbd>shift</kbd>+<kbd>z</kbd>
: Jump to the previous, currently not visible, prompt. Requires [shell : Jump to the previous, currently not visible, prompt. Requires [shell
integration](https://codeberg.org/dnkl/foot/wiki#user-content-jumping-between-prompts). integration](https://codeberg.org/dnkl/foot/wiki#user-content-jumping-between-prompts).
<kbd>ctrl</kbd>+<kbd>shift</kbd>+<kbd>x</kbd> <kbd>ctrl</kbd>+<kbd>shift</kbd>+<kbd>x</kbd>
: Jump to the next prompt. Requires [shell : Jump to the next prompt. Requires [shell
integration](https://codeberg.org/dnkl/foot/wiki#user-content-jumping-between-prompts). integration](https://codeberg.org/dnkl/foot/wiki#user-content-jumping-between-prompts).
#### Scrollback search #### Scrollback search
@ -191,12 +181,12 @@ These are the default shortcuts. See `man foot.ini` and the example
<kbd>ctrl</kbd>+<kbd>w</kbd> <kbd>ctrl</kbd>+<kbd>w</kbd>
: Extend current selection (and thus the search criteria) to the end : Extend current selection (and thus the search criteria) to the end
of the word, or the next word if currently at a word separating of the word, or the next word if currently at a word separating
character. character.
<kbd>ctrl</kbd>+<kbd>shift</kbd>+<kbd>w</kbd> <kbd>ctrl</kbd>+<kbd>shift</kbd>+<kbd>w</kbd>
: Same as <kbd>ctrl</kbd>+<kbd>w</kbd>, except that the only word : Same as <kbd>ctrl</kbd>+<kbd>w</kbd>, except that the only word
separating characters are whitespace characters. separating characters are whitespace characters.
<kbd>ctrl</kbd>+<kbd>v</kbd>, <kbd>ctrl</kbd>+<kbd>shift</kbd>+<kbd>v</kbd>, <kbd>ctrl</kbd>+<kbd>y</kbd>, <kbd>XF86Paste</kbd> <kbd>ctrl</kbd>+<kbd>v</kbd>, <kbd>ctrl</kbd>+<kbd>shift</kbd>+<kbd>v</kbd>, <kbd>ctrl</kbd>+<kbd>y</kbd>, <kbd>XF86Paste</kbd>
: Paste from clipboard into the search buffer. : Paste from clipboard into the search buffer.
@ -209,8 +199,7 @@ These are the default shortcuts. See `man foot.ini` and the example
<kbd>return</kbd> <kbd>return</kbd>
: Finish the search and copy the current match to the primary : Finish the search and copy the current match to the primary
selection selection
### URL mode ### URL mode
@ -220,25 +209,24 @@ These are the default shortcuts. See `man foot.ini` and the example
<kbd>escape</kbd>, <kbd>ctrl</kbd>+<kbd>c</kbd>, <kbd>ctrl</kbd>+<kbd>g</kbd>, <kbd>ctrl</kbd>+<kbd>d</kbd> <kbd>escape</kbd>, <kbd>ctrl</kbd>+<kbd>c</kbd>, <kbd>ctrl</kbd>+<kbd>g</kbd>, <kbd>ctrl</kbd>+<kbd>d</kbd>
: Exit URL mode without launching any URLs : Exit URL mode without launching any URLs
### Mouse ### Mouse
<kbd>left</kbd> - **single-click** <kbd>left</kbd> - **single-click**
: Drag to select; when released, the selected text is copied to the : Drag to select; when released, the selected text is copied to the
_primary_ selection. This feature is **disabled** when client has _primary_ selection. This feature is **disabled** when client has
enabled _mouse tracking_. enabled _mouse tracking_.
: Holding <kbd>shift</kbd> enables selection in mouse tracking enabled : Holding <kbd>shift</kbd> enables selection in mouse tracking enabled
clients. clients.
: Holding <kbd>ctrl</kbd> will create a block selection. : Holding <kbd>ctrl</kbd> will create a block selection.
<kbd>left</kbd> - **double-click** <kbd>left</kbd> - **double-click**
: Selects the _word_ (separated by spaces, period, comma, parenthesis : Selects the _word_ (separated by spaces, period, comma, parenthesis
etc) under the pointer. Hold <kbd>ctrl</kbd> to select everything etc) under the pointer. Hold <kbd>ctrl</kbd> to select everything
under the pointer up to, and until, the next space characters. under the pointer up to, and until, the next space characters.
<kbd>left</kbd> - **triple-click** <kbd>left</kbd> - **triple-click**
: Selects the everything between enclosing quotes, or the entire row : Selects the everything between enclosing quotes, or the entire row
if not inside a quote. if not inside a quote.
<kbd>left</kbd> - **quad-click** <kbd>left</kbd> - **quad-click**
: Selects the entire row. : Selects the entire row.
@ -248,12 +236,12 @@ These are the default shortcuts. See `man foot.ini` and the example
<kbd>right</kbd> <kbd>right</kbd>
: Extend current selection. Clicking immediately extends the : Extend current selection. Clicking immediately extends the
selection, while hold-and-drag allows you to interactively resize selection, while hold-and-drag allows you to interactively resize
the selection. the selection.
<kbd>ctrl</kbd>+<kbd>right</kbd> <kbd>ctrl</kbd>+<kbd>right</kbd>
: Extend the current selection, but force it to be character wise, : Extend the current selection, but force it to be character wise,
rather than depending on the original selection mode. rather than depending on the original selection mode.
<kbd>wheel</kbd> <kbd>wheel</kbd>
: Scroll up/down in history : Scroll up/down in history
@ -261,7 +249,6 @@ These are the default shortcuts. See `man foot.ini` and the example
<kbd>ctrl</kbd>+<kbd>wheel</kbd> <kbd>ctrl</kbd>+<kbd>wheel</kbd>
: Increase/decrease font size : Increase/decrease font size
### Touchscreen ### Touchscreen
<kbd>tap</kbd> <kbd>tap</kbd>
@ -270,8 +257,7 @@ These are the default shortcuts. See `man foot.ini` and the example
<kbd>drag</kbd> <kbd>drag</kbd>
: Scrolls up/down in history. : Scrolls up/down in history.
: Holding for a while before dragging (time delay can be configured) : Holding for a while before dragging (time delay can be configured)
emulates mouse dragging with left button held. emulates mouse dragging with left button held.
## Server (daemon) mode ## Server (daemon) mode
@ -333,7 +319,6 @@ the clipboard. It is unbound by default.
Jump label colors, the URL underline color, and the letters used in Jump label colors, the URL underline color, and the letters used in
the jump label key sequences can be configured. the jump label key sequences can be configured.
## Shell integration ## Shell integration
### Current working directory ### Current working directory
@ -348,7 +333,6 @@ scripted to do this, if they do not support it natively. See the
[wiki](https://codeberg.org/dnkl/foot/wiki#user-content-spawning-new-terminal-instances-in-the-current-working-directory) [wiki](https://codeberg.org/dnkl/foot/wiki#user-content-spawning-new-terminal-instances-in-the-current-working-directory)
for details. for details.
### Jumping between prompts ### Jumping between prompts
Foot can move the current viewport to focus prompts of already Foot can move the current viewport to focus prompts of already
@ -407,7 +391,6 @@ See the
[wiki](https://codeberg.org/dnkl/foot/wiki#user-content-piping-last-command-s-output) [wiki](https://codeberg.org/dnkl/foot/wiki#user-content-piping-last-command-s-output)
for details, and examples for other shells for details, and examples for other shells
## Alt/meta ## Alt/meta
By default, foot prefixes _Meta characters_ with ESC. This corresponds By default, foot prefixes _Meta characters_ with ESC. This corresponds
@ -424,7 +407,6 @@ This can also be disabled programmatically with `rmm` (_reset meta
mode_, `\E[?1034l`), and enabled again with `smm` (_set meta mode_, mode_, `\E[?1034l`), and enabled again with `smm` (_set meta mode_,
`\E[?1034h`). `\E[?1034h`).
## Backspace ## Backspace
Foot transmits DEL (`^?`) on <kbd>backspace</kbd>. This corresponds to Foot transmits DEL (`^?`) on <kbd>backspace</kbd>. This corresponds to
@ -440,7 +422,6 @@ described above **cannot** be changed.
Finally, pressing <kbd>alt</kbd> will prefix the transmitted byte with Finally, pressing <kbd>alt</kbd> will prefix the transmitted byte with
ESC. ESC.
## Keypad ## Keypad
By default, <kbd>Num Lock</kbd> overrides the run-time configuration By default, <kbd>Num Lock</kbd> overrides the run-time configuration
@ -459,7 +440,6 @@ again with `\E[?1035h`).
When disabled, the keypad sends custom escape sequences instead of When disabled, the keypad sends custom escape sequences instead of
numbers, when in _application_ mode. numbers, when in _application_ mode.
## DPI and font size ## DPI and font size
Font sizes are apparently a complex thing. Many applications use a Font sizes are apparently a complex thing. Many applications use a
@ -503,7 +483,6 @@ distance**, the font size will appear to be the same, at all times.
_Note_: if you configure **pixelsize**, rather than **size**, then DPI _Note_: if you configure **pixelsize**, rather than **size**, then DPI
changes will **not** change the font size. Pixels are always pixels. changes will **not** change the font size. Pixels are always pixels.
### Fractional scaling on Wayland ### Fractional scaling on Wayland
For a long time, there was no **true** support for _fractional For a long time, there was no **true** support for _fractional
@ -520,42 +499,40 @@ allows compositors to tell applications the _actual_ scaling
factor. Applications can then scale the image using a _viewport_ factor. Applications can then scale the image using a _viewport_
object, instead of setting a scale factor on the raw pixel buffer. object, instead of setting a scale factor on the raw pixel buffer.
## Supported OSCs ## Supported OSCs
OSC, _Operating System Command_, are escape sequences that interacts OSC, _Operating System Command_, are escape sequences that interacts
with the terminal emulator itself. Foot implements the following OSCs: with the terminal emulator itself. Foot implements the following OSCs:
* `OSC 0` - change window icon + title (but only title is actually - `OSC 0` - change window icon + title (but only title is actually
supported) supported)
* `OSC 2` - change window title - `OSC 2` - change window title
* `OSC 4` - change color palette - `OSC 4` - change color palette
* `OSC 7` - report CWD (see [shell integration](#shell-integration)) - `OSC 7` - report CWD (see [shell integration](#shell-integration))
* `OSC 8` - hyperlink - `OSC 8` - hyperlink
* `OSC 9` - desktop notification - `OSC 9` - desktop notification
* `OSC 10` - change (default) foreground color - `OSC 10` - change (default) foreground color
* `OSC 11` - change (default) background color - `OSC 11` - change (default) background color
* `OSC 12` - change cursor color - `OSC 12` - change cursor color
* `OSC 17` - change highlight (selection) background color - `OSC 17` - change highlight (selection) background color
* `OSC 19` - change highlight (selection) foreground color - `OSC 19` - change highlight (selection) foreground color
* `OSC 22` - set the xcursor (mouse) pointer - `OSC 22` - set the xcursor (mouse) pointer
* `OSC 52` - copy/paste clipboard data - `OSC 52` - copy/paste clipboard data
* `OSC 104` - reset color palette - `OSC 104` - reset color palette
* `OSC 110` - reset default foreground color - `OSC 110` - reset default foreground color
* `OSC 111` - reset default background color - `OSC 111` - reset default background color
* `OSC 112` - reset cursor color - `OSC 112` - reset cursor color
* `OSC 117` - reset highlight background color - `OSC 117` - reset highlight background color
* `OSC 119` - reset highlight foreground color - `OSC 119` - reset highlight foreground color
* `OSC 133` - [shell integration](#shell-integration) - `OSC 133` - [shell integration](#shell-integration)
* `OSC 176` - set app ID - `OSC 176` - set app ID
* `OSC 555` - flash screen (**foot specific**) - `OSC 555` - flash screen (**foot specific**)
* `OSC 777` - desktop notification (only the `;notify` sub-command of - `OSC 777` - desktop notification (only the `;notify` sub-command of
OSC 777 is supported.) OSC 777 is supported.)
See the **foot-ctlseqs**(7) man page for a complete list of supported See the **foot-ctlseqs**(7) man page for a complete list of supported
control sequences. control sequences.
## Programmatically checking if running in foot ## Programmatically checking if running in foot
Foot does **not** set any environment variables that can be used to Foot does **not** set any environment variables that can be used to
@ -589,7 +566,6 @@ which it will reply with `\EP>|foot(version)\E\\`. Version is
e.g. "1.8.2" for a regular release, or "1.8.2-36-g7db8e06f" for a git e.g. "1.8.2" for a regular release, or "1.8.2-36-g7db8e06f" for a git
build. build.
# XTGETTCAP # XTGETTCAP
`XTGETTCAP` is an escape sequence initially introduced by XTerm, and `XTGETTCAP` is an escape sequence initially introduced by XTerm, and
@ -604,9 +580,9 @@ foot's terminfo on remote hosts you SSH into.
XTerm's implementation (as of XTerm-370) only supports querying key XTerm's implementation (as of XTerm-370) only supports querying key
(as in keyboard keys) capabilities, and three custom capabilities: (as in keyboard keys) capabilities, and three custom capabilities:
* `TN` - terminal name - `TN` - terminal name
* `Co` - number of colors (alias for the `colors` capability) - `Co` - number of colors (alias for the `colors` capability)
* `RGB` - number of bits per color channel (different semantics from - `RGB` - number of bits per color channel (different semantics from
the `RGB` capability in file-based terminfo definitions!). the `RGB` capability in file-based terminfo definitions!).
Kitty has extended this, and also supports querying all integer and Kitty has extended this, and also supports querying all integer and
@ -622,11 +598,11 @@ multi-capability queries slightly differently, compared to XTerm.
XTerm will send a single DCS reply, with `;`-separated XTerm will send a single DCS reply, with `;`-separated
capability/value pairs. There are a couple of issues with this: capability/value pairs. There are a couple of issues with this:
* The success/fail flag in the beginning of the response is always `1` - The success/fail flag in the beginning of the response is always `1`
(success), unless the very **first** queried capability is invalid. (success), unless the very **first** queried capability is invalid.
* XTerm will not respond **at all** to an invalid capability, unless - XTerm will not respond **at all** to an invalid capability, unless
it's the first one in the `XTGETTCAP` query. it's the first one in the `XTGETTCAP` query.
* XTerm will end the response at the first invalid capability. - XTerm will end the response at the first invalid capability.
In other words, if you send a large multi-capability query, you will In other words, if you send a large multi-capability query, you will
only get responses up to, but not including, the first invalid only get responses up to, but not including, the first invalid
@ -645,18 +621,15 @@ In addition to queries for terminfo entries, the `query-os-name` query
will be answered with a response of the form `uname=$(uname -s)`, will be answered with a response of the form `uname=$(uname -s)`,
where `$(uname -s)` is the name of the OS foot was compiled for. where `$(uname -s)` is the name of the OS foot was compiled for.
# Credits # Credits
* [Ordoviz](https://codeberg.org/Ordoviz), for designing and - [Ordoviz](https://codeberg.org/Ordoviz), for designing and
contributing foot's [logo](icons/hicolor/48x48/apps/foot.png). contributing foot's [logo](icons/hicolor/48x48/apps/foot.png).
# Code of Conduct # Code of Conduct
See [Code of Conduct](CODE_OF_CONDUCT.md) See [Code of Conduct](CODE_OF_CONDUCT.md)
# Bugs # Bugs
Please report bugs to https://codeberg.org/dnkl/foot/issues Please report bugs to https://codeberg.org/dnkl/foot/issues
@ -674,7 +647,6 @@ The report should contain the following:
with symbols. with symbols.
- Steps to reproduce. The more details the better. - Steps to reproduce. The more details the better.
# Contact # Contact
## IRC ## IRC
@ -684,21 +656,22 @@ channel on
[irc.libera.chat](https://web.libera.chat/?channels=#foot). Logs are [irc.libera.chat](https://web.libera.chat/?channels=#foot). Logs are
available at https://libera.irclog.whitequark.org/foot. available at https://libera.irclog.whitequark.org/foot.
## Mastodon ## Mastodon
Every now and then I post foot related updates on Every now and then I post foot related updates on
[@dnkl@social.treehouse.systems](https://social.treehouse.systems/@dnkl) [@dnkl@social.treehouse.systems](https://social.treehouse.systems/@dnkl)
# Sponsoring/donations # Sponsoring/donations
* Liberapay: https://liberapay.com/dnkl - Liberapay: https://liberapay.com/dnkl
* GitHub Sponsors: https://github.com/sponsors/dnkl - GitHub Sponsors: https://github.com/sponsors/dnkl
[![Donate using Liberapay](https://liberapay.com/assets/widgets/donate.svg)](https://liberapay.com/dnkl/donate) [![Donate using Liberapay](https://liberapay.com/assets/widgets/donate.svg)](https://liberapay.com/dnkl/donate)
# License # License
Foot is released under the [MIT license](LICENSE). Foot is released under the [MIT license](LICENSE).
## Educational Note
This repository is used for learning Git workflow.