horizontal-rule
horizontal rule for the terminal
https://github.com/ExtremaIS/hr-haskell#readme
| Version on this page: | 0.5.0.0 |
| LTS Haskell 24.17: | 0.7.0.0@rev:2 |
| Stackage Nightly 2025-10-29: | 0.7.0.0@rev:2 |
| Latest on Hackage: | 0.7.0.0@rev:2 |
horizontal-rule-0.5.0.0@sha256:3d4e3bff17f13f3b2308232efe24413b8ecd0b4949ce968c56c62b7431669755,2177Module documentation for 0.5.0.0
- HR
- HR.Monad
hr
Overview
hr is a utility for displaying a horizontal rule in a terminal.
It is useful for marking a position in your terminal so that you can easily
find it again. For example, use hr to display a horizontal rule before each
build of a project so that you can easily find the beginning of the output of
the last build.
CLI
Requirements
hr has only been tested on Linux. It might work on Windows and macOS.
Installation
.deb Package Installation
Check the Releases page for .deb packages.
.rpm Package Installation
Check the Releases page for .rpm packages.
Installation From Hackage
Install hr from Hackage using Cabal as follows:
$ cabal v2-install horizontal-rule
Installation From Stackage
Install hr from Stackage using Stack as follows:
$ stack install horizontal-rule
Usage
See the hr man page for usage information.
Examples
The rule fills with width of the terminal by default:
$ hr
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
In cases when the terminal width cannot be determined, a default width is used. This default width can be set with an option:
$ hr -d 78
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
If desired, the rule width can be specified:
$ hr -w 60
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
In cases where the terminal cannot display Unicode, ASCII may be used:
$ hr -a
------------------------------------------------------------------------------
The rule can include the current time:
$ hr -t
━━┫2021-05-27 19:26:09┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
The time format can be specified:
$ hr -t -f "%H:%M:%S.%q"
━━┫19:30:44.861779179000┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
The first line read from STDIN can be used as a note:
$ uname -m | hr -i
━━┫x86_64┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
When input is read, a timeout is used to ensure that hr does not “hang” when
there is no input. The timeout (in milliseconds) can be specified:
$ uname -m | hr -i --timeout 100
━━┫x86_64┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
A note can be specified as one or more arguments:
$ hr unit tests
━━┫unit tests┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Different types of notes can be combined:
$ uname -m | hr -it unit tests
━━┫2021-05-27 19:48:48┣━┫unit tests┣━┫x86_64┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Library
You can easily include horizontal rules in the output of your own Haskell
software by using the library. The Haskell package is named horizontal-rule
in Hackage and Stackage because there is an existing package named
hR.
Project
Links
- Hackage: https://hackage.haskell.org/package/horizontal-rule
- Stackage: https://www.stackage.org/package/horizontal-rule
- GitHub: https://github.com/ExtremaIS/hr-haskell
- GitHub Actions CI: https://github.com/ExtremaIS/hr-haskell/actions
Tags
All releases are tagged in the main branch. Release tags are signed using
the
[email protected] GPG key.
Contribution
Issues and feature requests are tracked on GitHub: https://github.com/ExtremaIS/hr-haskell/issues
Issues may also be submitted via email to [email protected].
License
This project is released under the
MIT License as specified in the
LICENSE file.
Changes
hr-haskell Changelog
This project follows the Haskell package versioning policy, with
versions in A.B.C.D format. A may be incremented arbitrarily for
non-technical reasons, but semantic versioning is otherwise
followed, where A.B is the major version, C is the minor version, and D
is the patch version. Initial development uses versions 0.0.0.D, for which
every version is considered breaking.
The format of this changelog is based on Keep a Changelog, with the following conventions:
- Level-two heading
Unreleasedis used to track changes that have not been released. - Other level-two headings specify the release in
A.B.C.D (YYYY-MM-DD)format, with newer versions above older versions. - Level-three headings are used to categorize changes as follows:
- Breaking
- Non-Breaking
- Changes are listed in arbitrary order and present tense.
0.5.0.0 (2022-03-01)
Breaking
- Rename Haskell package to
horizontal-rule - Refactor API to use
MonadTerminalinstead ofIOdirectly
Non-Breaking
- Add mock tests
- Bump
textdependency version upper bound - Bump
timedependency version upper bound - Bump
optparse-applicativedependency version upper bound
0.4.0.0 (2021-06-25)
Breaking
- Fix
--helpwhen usingoptparse-applicative0.16
Non-Breaking
- Refactor Nix configuration
0.3.0.1 (2021-05-28)
Non-Breaking
- Add library usage example
0.3.0.0 (2021-05-28)
Breaking
- Add library
- Add
--widthand--defaultCLI options - Add
--inputand--timeoutCLI options
0.2.0.1 (2021-05-27)
Non-Breaking
- Fix link in README
- Fix formatting in RPM description
0.2.0.0 (2021-05-26)
Breaking
- Add support for
optparse-applicative0.16
Non-Breaking
- Add
.deband.rpmpackaging - Add Cabal support to
Makefile - Add Cabal tests to GitHub Actions
- Add stan static analysis
0.1.0.3 (2020-11-21)
Non-Breaking
- Use GitHub Actions instead of Travis CI
0.1.0.2 (2020-11-05)
Non-Breaking
- Rename Git default branch to
main - Refactor
Makefile, addSTACK_NIX_PATHsupport - Add
test-allcommand toMakefile - Add Nix configuration
0.1.0.1 (2019-12-29)
Non-Breaking
- Fix operator for compatibility with GHC 8.2.2
0.1.0.0 (2019-12-29)
Breaking
- Initial public release