# Installation Install: * [Ubuntu](#ubuntu) * [Fedora](#fedorarhelcentosscientific) * [Gentoo](#gentoo) * [CentOS](#fedorarhelcentosscientific) * [openSUSE](#opensuse) * [RHEL](#fedorarhelcentosscientific) * [Debian](#debianmint) * [Mint](#debianmint) * [Alpine Linux](#alpine-linux) * [Arch Linux](#archmanjaro-linux) * [Milis Linux](#milis-linux) * [Manjaro Linux](#archmanjaro-linux) * [Scientific Linux](#fedorarhelcentosscientific) * [Haiku OS](#haiku-os) * [macOS](#macos) * [nix package manager](#nix-package-manager) * [Guix package manager](#guix-package-manager) * [MPR package manager](#mpr-package-manager) Build: * [build on any Linux distro](#build-on-any-linux-distro) * [build snap](#build-snap) * [build on Ubuntu](#build-on-ubuntu) * [build on Debian](#build-on-debian) * [build on Fedora](#build-on-fedora) * [build on Windows Subsystem for Linux (WSL)](#build-on-wsl) * [build on Cygwin](#build-on-cygwin) * [build on macOS](#build-on-macos) Tarball: * [build and install tarball](#build-and-install-tarball) Upgrade: * [HSTR 1.x to 2.x](#hstr-1x-to-2x-from-hh-to-hstr) * [HSTR 2.x to 3.x](#hstr-2x-to-3x-ioctl--tiocsti) # Install Install HSTR using a [package](https://pkgs.org/search/?q=hstr) or repository. ## Ubuntu HSTR is [included in Ubuntu 21.10](https://packages.ubuntu.com/search?keywords=hstr) and [newer](https://wiki.ubuntu.com/Releases) releases: ```bash sudo apt install hstr ``` --- Install HSTR on **Ubuntu 21.04 and older** using one-liner: ```bash sudo add-apt-repository ppa:ultradvorka/ppa && sudo apt-get update && sudo apt-get install hstr && hstr --show-configuration >> ~/.bashrc && . ~/.bashrc ``` ... or step by step: ```bash sudo add-apt-repository ppa:ultradvorka/ppa sudo apt-get update sudo apt-get install hstr ``` [Configure](CONFIGURATION.md) HSTR and check its [man page](README.md#documentation). ## Debian/Mint HSTR is [included in Debian 11](https://packages.debian.org/bullseye/hstr) and [newer](https://www.debian.org/releases/) releases: ```bash sudo apt install hstr ``` --- Install HSTR on **Debian 10 and older** from my PPA. Add [PPA](https://www.mindforger.com/debian), trust [GPG key](https://www.mindforger.com/gpgpubkey.txt) and install HSTR: ```bash # add PPA to APT sources: sudo bash -c 'echo -e "\ndeb https://www.mindforger.com/debian stretch main" > /etc/apt/sources.list.d/mindforger.list' # import PPA's GPG key wget -qO - https://www.mindforger.com/gpgpubkey.txt | sudo apt-key add - # update sources sudo apt update # install HSTR sudo apt install hstr ``` [Configure](CONFIGURATION.md) HSTR and check its [man page](README.md#documentation). --- Alternatively you can download and install `.deb` archive from [GitHub releases](https://github.com/dvorka/hstr/releases) section of the project: ```bash wget -O hstr.deb https://github.com/dvorka/hstr/releases/download/./hstr_..-1_amd64.deb # dependencies: apt-get install libncursesw5 libtinfo5 sudo dpkg -i hstr.deb ``` ## Fedora/RHEL/CentOS/Scientific Install HSTR on [Fedora](https://src.fedoraproject.org/rpms/hstr), RHEL, CentOS or Scientific Linux: ```bash sudo dnf install hstr ``` ... or: ```bash sudo yum install hstr ``` [Configure](CONFIGURATION.md) HSTR and check its [man page](README.md#documentation). --- If you want to make sure you have the latest version, then download `.rpm` archive from [GitHub releases](https://github.com/dvorka/hstr/releases) or [pkgs.org](https://pkgs.org/search/?q=hstr) and install it: ```bash sudo dnf install ./hstr-..-2.x86_64.rpm ``` ## openSUSE To install HSTR on openSUSE, please check [software.opensuse.org](https://software.opensuse.org/package/hstr) or [pkgs.org](https://pkgs.org/search/?q=hstr). You can install HSTR as follows: ```bash zypper addrepo https://download.opensuse.org/repositories/home:/lemmy04/15.5/home:lemmy04.repo zypper refresh zypper install hstr ``` [Configure](CONFIGURATION.md) HSTR and check its [man page](README.md#documentation). ## Gentoo To install HSTR on Gentoo run (HSTR has been added to [Portage](https://bugs.gentoo.org/show_bug.cgi?id=527122)): ```bash emerge app-shells/hstr ``` [Configure](CONFIGURATION.md) HSTR and check its [man page](README.md#documentation). ## Alpine Linux To install HSTR on Alpine Linux run the following command as root: ```bash apk add hstr ``` [Configure](CONFIGURATION.md) HSTR and check its [man page](README.md#documentation). ## ALT Linux To install HSTR on ALT Linux, please check [pkgs.org](https://pkgs.org/search/?q=hstr). You can install HSTR as follows: ```bash rpm [p10] http://ftp.altlinux.org/pub/distributions/ALTLinux/autoimports/p10 x86_64 autoimports rpm [p10] http://ftp.altlinux.org/pub/distributions/ALTLinux/autoimports/p10 noarch autoimports sudo apt-get update sudo apt-get install hstr ``` [Configure](CONFIGURATION.md) HSTR and check its [man page](README.md#documentation). ## Arch/Manjaro Linux To install HSTR on Arch or Manjaro Linux download the latest distribution either from [pkgs.org](https://pkgs.org/search/?q=hstr) or [GitHub releases](https://github.com/dvorka/hstr/releases). Use [PKGBUILD](https://wiki.archlinux.org/index.php/PKGBUILD) in the root of the distribution to build package using `makepkg`. To install HSTR from the [Arch User Repository (AUR)](https://aur.archlinux.org/packages/hstr-git/) run `yaourt -S hstr-git` in command line. ## FreeBSD To install HSTR on FreeBSD, please check [pkgs.org](https://pkgs.org/search/?q=hstr). You can install HSTR as follows: ```bash pkg install hstr ``` [Configure](CONFIGURATION.md) HSTR and check its [man page](README.md#documentation). ## Slackware To install HSTR on Slackware, please check [pkgs.org](https://pkgs.org/search/?q=hstr). You can install HSTR as follows: ```bash upgradepkg --install-new hstr-.-x86_64-1cf.txz ``` [Configure](CONFIGURATION.md) HSTR and check its [man page](README.md#documentation). ## Void Linux To install HSTR on Void Linux, please check [pkgs.org](https://pkgs.org/search/?q=hstr). You can install HSTR as follows: ```bash xbps-install -Su hstr ``` [Configure](CONFIGURATION.md) HSTR and check its [man page](README.md#documentation). ## Milis Linux To install HSTR on Milis Linux run the following commands as root: ```bash mps kur hstr ``` [Configure](CONFIGURATION.md) HSTR and check its [man page](README.md#documentation). ## Haiku OS To install HSTR on Haiku OS use [Haiku Depot](https://www.haiku-os.org/docs/userguide/en/applications/haikudepot.html): * https://depot.haiku-os.org/#!/?srchexpr=hstr [Configure](CONFIGURATION.md) HSTR and check its [man page](README.md#documentation). ## macOS Install HSTR on macOS using [Homebrew](https://brew.sh/) ([formula](https://formulae.brew.sh/formula/hstr)): ```bash brew install hstr ``` You can also install HSTR on macOS using [MacPorts](https://www.macports.org) ([port info](https://ports.macports.org/port/hstr/)): ```bash sudo port install hstr ``` [Configure](CONFIGURATION.md) HSTR and check its [man page](README.md#documentation). ## nix package manager To install HSTR using the [nix package manager](https://nixos.org/nix/) e.g. on [NixOS](https://nixos.org/) you can use the [nix derivation for HSTR](https://github.com/NixOS/nixpkgs/blob/master/pkgs/applications/misc/hstr/default.nix): ```bash nix profile install nixpkgs#hstr ``` [Configure](CONFIGURATION.md) HSTR and check its [man page](README.md#documentation). ## Guix package manager To install HSTR in [GuixSD](https://www.gnu.org/software/guix/) or using the standalone [Guix package manager](https://www.gnu.org/software/guix/manual/en/html_node/Binary-Installation.html#Binary-Installation) you can install the `hstr` package, e.g. ```bash guix package -i hstr ``` [Configure](CONFIGURATION.md) HSTR and check its [man page](README.md#documentation). ## MPR package manager To install HSTR in Ubuntu or derivative operating systems using MPR, you can search for `hstr-git` using helper or install it manually using `makedeb -s` [Configure](CONFIGURATION.md) HSTR and check its [man page](README.md#documentation). [MPR package](https://mpr.hunterwittenborn.com/packages/hstr-git) # Build Build HSTR from source code. ## Build on any Linux distro Clone Git repository: ```bash git clone https://github.com/dvorka/hstr.git ``` Create build files using: ```bash cd ./build/tarball && ./tarball-automake.sh && cd ../.. ``` Build and install HSTR using: ```bash ./configure && make && make install ``` [Configure](CONFIGURATION.md) HSTR and check its [man page](README.md#documentation). ## Build snap To build [snap](https://snapcraft.io/) for HSTR first clone Git repository: ```bash git clone https://github.com/dvorka/hstr.git ``` Make sure that you can build HSTR from source code as described in a "Build on ..." section for your distribution. Install [snapcraft](https://snapcraft.io/) and build snap by running snapcraft in the root of Git repository: ```bash $ ls ./snap snapcraft.yaml $ snapcraft ... ``` Find `hstr_0+git..._amd64.snap` in the current directory. ## Build on Ubuntu To build HSTR on Ubuntu clone Git repository: ```bash git clone https://github.com/dvorka/hstr.git ``` Install dependencies: ```bash sudo apt install automake gcc make libncursesw5-dev libreadline-dev ``` Create build files using: ```bash cd ./build/tarball && ./tarball-automake.sh && cd ../.. ``` Build and install HSTR using: ```bash ./configure && make && make install ``` [Configure](CONFIGURATION.md) HSTR and check its [man page](README.md#documentation). ## Build on Debian To build HSTR on Debian clone Git repository: ```bash git clone https://github.com/dvorka/hstr.git ``` Install dependencies: ```bash sudo apt install autotools gcc make pkgconf libncursesw5-dev libreadline-dev ``` Create build files using: ```bash cd ./build/tarball && ./tarball-automake.sh && cd ../.. ``` Build and install HSTR using: ```bash ./configure && make && make install ``` [Configure](CONFIGURATION.md) HSTR and check its [man page](README.md#documentation). ## Build on Fedora To build HSTR on Fedora clone Git repository: ```bash git clone https://github.com/dvorka/hstr.git ``` Install dependencies: ```bash sudo dnf install autotools ncurses-devel readline-devel ``` Create build files using: ```bash cd ./build/tarball && ./tarball-automake.sh && cd ../.. ``` Build and install HSTR using: ```bash ./configure && make && make install ``` [Configure](CONFIGURATION.md) HSTR and check its [man page](README.md#documentation). ## Build on WSL To build HSTR on [Windows Subsystem for Linux (WSL)](https://msdn.microsoft.com/en-us/commandline/wsl/about) clone Git repository: ```bash git clone https://github.com/dvorka/hstr.git ``` Install dependencies: ```bash sudo apt install automake gcc make libncursesw5-dev libreadline-dev ``` Create build files using: ```bash cd ./build/tarball && ./tarball-automake.sh && cd ../.. ``` Build and install `hstr` using: ```bash ./configure && make && make install ``` It's **important** to finish installation by configuration of HSTR binding which ensures propagation of chosen command to the prompt: ```bash hstr --show-configuration >> ~/.bashrc . ~/.bashrc ``` Make sure to **run** HSTR using Ctrl-r (or `hstrwsl`) - otherwise commands will not appear in prompt. [Configure](CONFIGURATION.md) HSTR and check its [man page](README.md#documentation). ## Build on Cygwin To build HSTR on [Cygwin](https://www.cygwin.com) clone Git repository: ```bash git clone https://github.com/dvorka/hstr.git ``` Create build files using: ```bash cd ./build/tarball && ./tarball-automake.sh && cd ../.. ``` Build and install HSTR using: ```bash ./configure && make && make install ``` It's **important** to finish installation by configuration of HSTR binding which ensures propagation of chosen command to the prompt: ```bash hstr --show-configuration >> ~/.bashrc . ~/.bashrc ``` Make sure to **run** HSTR using Ctrl-r (or `hstrcygwin`) - otherwise commands will not appear in prompt. [Configure](CONFIGURATION.md) HSTR and check its [man page](README.md#documentation). ## Build on macOS HSTR can be built on macOS either using [MacPorts](https://www.macports.org/) or [Homebrew](https://brew.sh/). --- To build HSTR using [MacPorts](https://www.macports.org/) install `readline` and `ncurses`: ```bash port install readline port install ncurses ``` Check `portfile` either on [macports.com](https://www.macports.org/ports.php?by=name&substr=hstr) or [GitHub](https://github.com/macports/macports-ports/blob/master/shells/hstr/Portfile): ```bash autoreconf -fvi ./configure CFLAGS=-I/opt/local/include/ LDFLAGS=-L/opt/local/lib make ``` [Configure](CONFIGURATION.md) HSTR and check its [man page](README.md#documentation). --- To build HSTR using [Homebrew](https://brew.sh/): ```bash autoreconf -fvi ./configure CFLAGS=-I$(brew --prefix)/opt/readline/include LDFLAGS=-L$(brew --prefix)/opt/readline/lib make ``` [Configure](CONFIGURATION.md) HSTR and check its [man page](README.md#documentation). # Tarball Download and install HSTR tarball. ## Build and Install Tarball Download latest tarball from [GitHub releases](https://github.com/dvorka/hstr/releases) section. Expand the archive and install HSTR using: ```bash ./configure && make && make install ``` [Configure](CONFIGURATION.md) HSTR and check its [man page](README.md#documentation). # Upgrade HSTR major versions upgrades instructions. ## HSTR 1.x to 2.x: from HH to HSTR Upgrade HSTR using a [package](https://pkgs.org/search/?q=hstr) or repository. If you are `HSTR 1.x` user, please read about [HSTR 2.x changes](https://github.com/dvorka/hstr/releases/tag/2.0). ## HSTR 2.x to 3.x: ioctl / TIOCSTI `TIOCSTI` is an acronym for "Terminal Input Output Control STack Input", and it is a system call used in Unix-like operating systems. The `TIOCSTI` system call allows to insert data into the input buffer of a terminal as if it had been typed by the user. `TIOCSTI` is NOT available at: * Linux kernel >=6.2.0 * Cygwin * WSL HSTR uses `TIOCSTI` to insert a command chosen by the user in HSTR to shell prompt - if `TIOCSTI` is available. Otherwise shell specific line editors features are used. **Therefore it is important to configure HSTR after the installation:** * [HSTR configuration](README.md#configuration)