mirror of
https://github.com/alacritty/alacritty.git
synced 2024-11-18 13:55:23 -05:00
Add shell completions and manpage
* Add manpage Adds a basic manpage that was autogenerated with `help2man` and then slightly adjusted with information from the README.md and better formatting. * Add zsh completions Add completions for the zsh shell. These should be complete and even allow completion of the command inside `--command` and `-e`. * Add bash completions The bash completions are almost on the same level as the zsh completions. The only little thing the bash completions do not do is complete inside of `--command` and `-e`, instead bash just stops completion after these options. * Update readme with manpage and completions Added the install instructions for the manpage and completions to the README.md. Also tweaked the current readme a slight bit because the build section was structured in a slightly confusing way.
This commit is contained in:
parent
7f2b398ad2
commit
f298ebb217
4 changed files with 199 additions and 3 deletions
51
README.md
51
README.md
|
@ -213,6 +213,11 @@ filling in this section of the README.
|
||||||
|
|
||||||
### Building
|
### Building
|
||||||
|
|
||||||
|
**BEFORE YOU RUN IT:** Install the config file as described below; otherwise,
|
||||||
|
many things (such as arrow keys) will not work.
|
||||||
|
|
||||||
|
#### Linux
|
||||||
|
|
||||||
Once all the prerequisites are installed, compiling Alacritty should be easy:
|
Once all the prerequisites are installed, compiling Alacritty should be easy:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
|
@ -220,10 +225,8 @@ cargo build --release
|
||||||
```
|
```
|
||||||
|
|
||||||
If all goes well, this should place a binary at `target/release/alacritty`.
|
If all goes well, this should place a binary at `target/release/alacritty`.
|
||||||
**BEFORE YOU RUN IT:** Install the config file as described below; otherwise,
|
|
||||||
many things (such as arrow keys) will not work.
|
|
||||||
|
|
||||||
### Desktop Entry
|
##### Desktop Entry
|
||||||
|
|
||||||
Many linux distributions support desktop entries for adding applications to
|
Many linux distributions support desktop entries for adding applications to
|
||||||
system menus. To install the desktop entry for Alacritty, run
|
system menus. To install the desktop entry for Alacritty, run
|
||||||
|
@ -233,6 +236,8 @@ sudo cp target/release/alacritty /usr/local/bin # or anywhere else in $PATH
|
||||||
cp Alacritty.desktop ~/.local/share/applications
|
cp Alacritty.desktop ~/.local/share/applications
|
||||||
```
|
```
|
||||||
|
|
||||||
|
#### MacOS
|
||||||
|
|
||||||
To build an application for macOS, run
|
To build an application for macOS, run
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
|
@ -240,6 +245,46 @@ make app
|
||||||
cp -r target/release/osx/Alacritty.app /Applications/
|
cp -r target/release/osx/Alacritty.app /Applications/
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## Manual Page
|
||||||
|
|
||||||
|
Installing the manual page requires the additional dependency `gzip`.
|
||||||
|
To install the manual page, run
|
||||||
|
|
||||||
|
```sh
|
||||||
|
sudo mkdir -p /usr/local/share/man/man1
|
||||||
|
gzip -c alacritty.man | sudo tee /usr/local/share/man/man1/alacritty.1.gz > /dev/null
|
||||||
|
```
|
||||||
|
|
||||||
|
## Shell completions
|
||||||
|
|
||||||
|
To get automatic completions for alacritty's flags and arguments you can install the provided shell completions.
|
||||||
|
|
||||||
|
### Zsh
|
||||||
|
|
||||||
|
To install the completions for zsh, run
|
||||||
|
|
||||||
|
```
|
||||||
|
sudo cp alacritty-completions.zsh /usr/share/zsh/functions/Completion/X/_alacritty
|
||||||
|
```
|
||||||
|
|
||||||
|
### Bash
|
||||||
|
|
||||||
|
To install the completions for bash, you can `source` the `alacritty-completions.bash` in your `~/.bashrc` file.
|
||||||
|
|
||||||
|
If you do not plan to delete the source folder of alacritty, you can run
|
||||||
|
|
||||||
|
```sh
|
||||||
|
echo "source $(pwd)/alacritty-completions.bash" >> ~/.bashrc
|
||||||
|
```
|
||||||
|
|
||||||
|
Otherwise you can copy it to the `~/.bash_completion` folder and source it from there:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
mkdir -p ~/.bash_completion
|
||||||
|
cp alacritty-completions.bash ~/.bash_completion/alacritty
|
||||||
|
echo "source ~/.bash_completion/alacritty" >> ~/.bashrc
|
||||||
|
```
|
||||||
|
|
||||||
## Configuration
|
## Configuration
|
||||||
|
|
||||||
Although it's possible the default configuration would work on your system,
|
Although it's possible the default configuration would work on your system,
|
||||||
|
|
58
alacritty-completions.bash
Normal file
58
alacritty-completions.bash
Normal file
|
@ -0,0 +1,58 @@
|
||||||
|
#/usr/bin/env bash
|
||||||
|
|
||||||
|
# Load completion function
|
||||||
|
complete -F _alacritty alacritty
|
||||||
|
|
||||||
|
# Completion function
|
||||||
|
_alacritty()
|
||||||
|
{
|
||||||
|
local cur prev prevprev opts
|
||||||
|
COMPREPLY=()
|
||||||
|
cur="${COMP_WORDS[COMP_CWORD]}"
|
||||||
|
prev="${COMP_WORDS[COMP_CWORD-1]}"
|
||||||
|
prevprev="${COMP_WORDS[COMP_CWORD-2]}"
|
||||||
|
opts="-h --help -V --version --live-config-reload --no-live-config-reload --print-events -q -qq -v -vv -vvv --ref-test -e --command --config-file -d --dimensions -t --title --working-directory"
|
||||||
|
|
||||||
|
# If `--command` or `-e` is used, stop completing
|
||||||
|
for i in "${!COMP_WORDS[@]}"; do
|
||||||
|
echo "${COMP_WORDS[i]}" >> ./testfile
|
||||||
|
if [[ "${COMP_WORDS[i]}" == "--command" ]] \
|
||||||
|
|| [[ "${COMP_WORDS[i]}" == "-e" ]] \
|
||||||
|
&& [[ "${#COMP_WORDS[@]}" -gt "$(($i + 2))" ]]
|
||||||
|
then
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
# Make sure the Y dimension isn't completed
|
||||||
|
if [[ "${prevprev}" == "--dimensions" ]] || [[ "${prevprev}" == "-d" ]]; then
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Match the previous word
|
||||||
|
case "${prev}" in
|
||||||
|
--command | -e)
|
||||||
|
# Complete all commands in $PATH
|
||||||
|
COMPREPLY=( $(compgen -c -- "${cur}") )
|
||||||
|
return 0;;
|
||||||
|
--config-file)
|
||||||
|
# Path based completion
|
||||||
|
local IFS=$'\n'
|
||||||
|
compopt -o filenames
|
||||||
|
COMPREPLY=( $(compgen -f -- "${cur}") )
|
||||||
|
return 0;;
|
||||||
|
--dimensions | -d | --title | -t)
|
||||||
|
# Don't complete here
|
||||||
|
return 0;;
|
||||||
|
--working-directory)
|
||||||
|
# Directory completion
|
||||||
|
local IFS=$'\n'
|
||||||
|
compopt -o filenames
|
||||||
|
COMPREPLY=( $(compgen -d -- "${cur}") )
|
||||||
|
return 0;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
# Show all flags if there was no previous word
|
||||||
|
COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
|
||||||
|
return 0
|
||||||
|
}
|
23
alacritty-completions.zsh
Normal file
23
alacritty-completions.zsh
Normal file
|
@ -0,0 +1,23 @@
|
||||||
|
#compdef alacritty
|
||||||
|
|
||||||
|
_alacritty() {
|
||||||
|
local context curcontext="$curcontext" state line
|
||||||
|
typeset -A opt_args
|
||||||
|
|
||||||
|
_arguments \
|
||||||
|
"(-h --help)"{-h,--help}"[Prints help information]" \
|
||||||
|
"(-V --version)"{-V,--version}"[Prints version information]" \
|
||||||
|
"(--no-live-config-reload)--live-config-reload[Enable automatic config reloading]" \
|
||||||
|
"(--live-config-reload)--no-live-config-reload[Disable automatic config reloading]" \
|
||||||
|
"--print-events[Print all events to stdout]" \
|
||||||
|
{-q,-qq}"[Reduces the level of verbosity (min is -qq)]" \
|
||||||
|
{-v,-vv,-vvv}"[Increases the level of verbosity (max is -vvv)]" \
|
||||||
|
"--ref-test[Generates ref test]" \
|
||||||
|
"--config-file[Specify an alternative config file]:file:_files" \
|
||||||
|
"(-d --dimensions)"{-d,--dimensions}"[Window dimensions]:dimensions:_guard '<->' width: :_guard '<->' length" \
|
||||||
|
"--title[Defines the window title]:title:" \
|
||||||
|
"--working-directory[Start shell in specified directory]:directory:_dir_list" \
|
||||||
|
"(-e --command)"{-e,--command}"[Execute command (must be last arg)]:program: _command_names -e:*::program arguments: _normal"
|
||||||
|
}
|
||||||
|
|
||||||
|
_alacritty "$@"
|
70
alacritty.man
Normal file
70
alacritty.man
Normal file
|
@ -0,0 +1,70 @@
|
||||||
|
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.5.
|
||||||
|
.TH ALACRITTY "1" "March 2018" "alacritty 0.1.0" "User Commands"
|
||||||
|
.SH NAME
|
||||||
|
alacritty \- a cross-platform, gpu-accelerated terminal emulator
|
||||||
|
.SH "SYNOPSIS"
|
||||||
|
alacritty [FLAGS] [OPTIONS]
|
||||||
|
.SH DESCRIPTION
|
||||||
|
Alacritty is focused on simplicity and performance.
|
||||||
|
.TP
|
||||||
|
The performance goal means it should be faster than any other terminal emulator available.
|
||||||
|
.TP
|
||||||
|
The simplicity goal means that it doesn't have features such as tabs or splits (which can be better provided by a window manager or terminal multiplexer) nor niceties like a GUI config editor.
|
||||||
|
.SH "FLAGS"
|
||||||
|
.TP
|
||||||
|
\fB\-h\fR, \fB\-\-help\fR
|
||||||
|
Prints help information
|
||||||
|
.TP
|
||||||
|
\fB\-\-live\-config\-reload\fR
|
||||||
|
Enable automatic config reloading
|
||||||
|
.TP
|
||||||
|
\fB\-\-no\-live\-config\-reload\fR
|
||||||
|
Disable automatic config reloading
|
||||||
|
.HP
|
||||||
|
\fB\-\-print\-events\fR
|
||||||
|
.TP
|
||||||
|
\fB\-q\fR
|
||||||
|
Reduces the level of verbosity (the min level is \fB\-qq\fR)
|
||||||
|
.TP
|
||||||
|
\fB\-\-ref\-test\fR
|
||||||
|
Generates ref test
|
||||||
|
.TP
|
||||||
|
\fB\-v\fR
|
||||||
|
Increases the level of verbosity (the max level is \fB\-vvv\fR)
|
||||||
|
.TP
|
||||||
|
\fB\-V\fR, \fB\-\-version\fR
|
||||||
|
Prints version information
|
||||||
|
.SH "OPTIONS"
|
||||||
|
.TP
|
||||||
|
\fB\-e\fR, \fB\-\-command\fR <command>...
|
||||||
|
Command and args to execute (must be last argument)
|
||||||
|
.HP
|
||||||
|
\fB\-\-config\-file\fR <config\-file>
|
||||||
|
.IP
|
||||||
|
Specify alternative configuration file [default: $XDG_CONFIG_HOME/alacritty/alacritty.yml]
|
||||||
|
.HP
|
||||||
|
\fB\-d\fR, \fB\-\-dimensions\fR <columns> <lines>
|
||||||
|
.IP
|
||||||
|
Defines the window dimensions. Falls back to size specified by window manager if set to 0x0 [default: 80x24]
|
||||||
|
.TP
|
||||||
|
\fB\-t\fR, \fB\-\-title\fR <title>
|
||||||
|
Defines the window title [default: Alacritty]
|
||||||
|
.TP
|
||||||
|
\fB\-\-working\-directory\fR <working\-directory>
|
||||||
|
Start the shell in the specified working directory
|
||||||
|
.SH "SEE ALSO"
|
||||||
|
See the alacritty github repository at https://github.com/jwilm/alacritty for the full documentation.
|
||||||
|
.SH "BUGS"
|
||||||
|
Found a bug? Please report it at https://github.com/jwilm/alacritty/issues.
|
||||||
|
.SH "AUTHORS"
|
||||||
|
Maintainers:
|
||||||
|
.sp
|
||||||
|
.RS 4
|
||||||
|
.ie n \{\
|
||||||
|
\h'-04'\(bu\h'+03'\c
|
||||||
|
.\}
|
||||||
|
.el \{\
|
||||||
|
.sp -1
|
||||||
|
.IP \(bu 2.3
|
||||||
|
.\}
|
||||||
|
Joe Wilm <joe@jwilm.com>
|
Loading…
Reference in a new issue