428 lines
17 KiB
Markdown
428 lines
17 KiB
Markdown
# hledger-ui
|
|
|
|
This doc is for version **1.12** (dev). []{.docversions}
|
|
|
|
\$toc\$
|
|
|
|
## NAME
|
|
|
|
hledger-ui - curses-style interface for the hledger accounting tool
|
|
|
|
## SYNOPSIS
|
|
|
|
`hledger-ui [OPTIONS] [QUERYARGS]`\
|
|
`hledger ui -- [OPTIONS] [QUERYARGS]`
|
|
|
|
## DESCRIPTION
|
|
|
|
hledger is a cross-platform program for tracking money, time, or any
|
|
other commodity, using double-entry accounting and a simple, editable
|
|
file format. hledger is inspired by and largely compatible with
|
|
ledger(1).
|
|
|
|
<style>
|
|
.highslide img {max-width:200px; border:0;}
|
|
.highslide-caption {color:white; background-color:black;}
|
|
</style>
|
|
<div style="float:right; max-width:200px; text-align:right;">
|
|
|
|
<a href="images/hledger-ui/hledger-ui-sample-acc2.png" class="highslide" onclick="return hs.expand(this)"><img src="images/hledger-ui/hledger-ui-sample-acc2.png" title="Accounts screen with query and depth limit" /></a>
|
|
<a href="images/hledger-ui/hledger-ui-sample-acc.png" class="highslide" onclick="return hs.expand(this)"><img src="images/hledger-ui/hledger-ui-sample-acc.png" title="Accounts screen" /></a>
|
|
<a href="images/hledger-ui/hledger-ui-sample-acc-greenterm.png" class="highslide" onclick="return hs.expand(this)"><img src="images/hledger-ui/hledger-ui-sample-acc-greenterm.png" title="Accounts screen with greenterm theme" /></a>
|
|
<a href="images/hledger-ui/hledger-ui-sample-txn.png" class="highslide" onclick="return hs.expand(this)"><img src="images/hledger-ui/hledger-ui-sample-txn.png" title="Transaction screen" /></a>
|
|
<a href="images/hledger-ui/hledger-ui-sample-reg.png" class="highslide" onclick="return hs.expand(this)"><img src="images/hledger-ui/hledger-ui-sample-reg.png" title="Register screen" /></a>
|
|
<!-- <br clear=all> -->
|
|
<a href="images/hledger-ui/hledger-ui-bcexample-acc.png" class="highslide" onclick="return hs.expand(this)"><img src="images/hledger-ui/hledger-ui-bcexample-acc.png" title="beancount example accounts" /></a>
|
|
<a href="images/hledger-ui/hledger-ui-bcexample-acc-etrade-cash.png" class="highslide" onclick="return hs.expand(this)"><img src="images/hledger-ui/hledger-ui-bcexample-acc-etrade-cash.png" title="beancount example's etrade cash subaccount" /></a>
|
|
<a href="images/hledger-ui/hledger-ui-bcexample-acc-etrade.png" class="highslide" onclick="return hs.expand(this)"><img src="images/hledger-ui/hledger-ui-bcexample-acc-etrade.png" title="beancount example's etrade investments, all commoditiess" /></a>
|
|
|
|
</div>
|
|
|
|
hledger-ui is hledger's curses-style interface, providing an efficient
|
|
full-window text UI for viewing accounts and transactions, and some
|
|
limited data entry capability. It is easier than hledger's command-line
|
|
interface, and sometimes quicker and more convenient than the web
|
|
interface.
|
|
|
|
Note hledger-ui has some different defaults: - it generates rule-based
|
|
transactions and postings by default (--forecast and --auto are always
|
|
on). - it hides transactions dated in the future by default (change this
|
|
with --future or the F key). Experimental.
|
|
|
|
Like hledger, it reads data from one or more files in hledger journal,
|
|
timeclock, timedot, or CSV format specified with `-f`, or
|
|
`$LEDGER_FILE`, or `$HOME/.hledger.journal` (on windows, perhaps
|
|
`C:/Users/USER/.hledger.journal`). For more about this see hledger(1),
|
|
hledger\_journal(5) etc.
|
|
|
|
## OPTIONS
|
|
|
|
Note: if invoking hledger-ui as a hledger subcommand, write `--` before
|
|
options as shown above.
|
|
|
|
Any QUERYARGS are interpreted as a hledger search query which filters
|
|
the data.
|
|
|
|
`--watch`
|
|
: watch for data and date changes and reload automatically
|
|
|
|
`--theme=default|terminal|greenterm`
|
|
: use this custom display theme
|
|
|
|
`--register=ACCTREGEX`
|
|
: start in the (first) matched account's register screen
|
|
|
|
`--change`
|
|
: show period balances (changes) at startup instead of historical
|
|
balances
|
|
|
|
`-F --flat`
|
|
: show accounts as a list (default)
|
|
|
|
`-T --tree`
|
|
: show accounts as a tree
|
|
|
|
`--future`
|
|
: show transactions dated later than today (normally hidden)
|
|
|
|
hledger input options:
|
|
|
|
`-f FILE --file=FILE`
|
|
: use a different input file. For stdin, use - (default:
|
|
`$LEDGER_FILE` or `$HOME/.hledger.journal`)
|
|
|
|
`--rules-file=RULESFILE`
|
|
: Conversion rules file to use when reading CSV (default: FILE.rules)
|
|
|
|
`--separator=CHAR`
|
|
: Field separator to expect when reading CSV (default: ',')
|
|
|
|
`--alias=OLD=NEW`
|
|
: rename accounts named OLD to NEW
|
|
|
|
`--anon`
|
|
: anonymize accounts and payees
|
|
|
|
`--pivot FIELDNAME`
|
|
: use some other field or tag for the account name
|
|
|
|
`-I --ignore-assertions`
|
|
: ignore any failing balance assertions
|
|
|
|
hledger reporting options:
|
|
|
|
`-b --begin=DATE`
|
|
: include postings/txns on or after this date
|
|
|
|
`-e --end=DATE`
|
|
: include postings/txns before this date
|
|
|
|
`-D --daily`
|
|
: multiperiod/multicolumn report by day
|
|
|
|
`-W --weekly`
|
|
: multiperiod/multicolumn report by week
|
|
|
|
`-M --monthly`
|
|
: multiperiod/multicolumn report by month
|
|
|
|
`-Q --quarterly`
|
|
: multiperiod/multicolumn report by quarter
|
|
|
|
`-Y --yearly`
|
|
: multiperiod/multicolumn report by year
|
|
|
|
`-p --period=PERIODEXP`
|
|
: set start date, end date, and/or reporting interval all at once
|
|
using [period expressions](manual.html#period-expressions) syntax
|
|
(overrides the flags above)
|
|
|
|
`--date2`
|
|
: match the secondary date instead (see command help for other
|
|
effects)
|
|
|
|
`-U --unmarked`
|
|
: include only unmarked postings/txns (can combine with -P or -C)
|
|
|
|
`-P --pending`
|
|
: include only pending postings/txns
|
|
|
|
`-C --cleared`
|
|
: include only cleared postings/txns
|
|
|
|
`-R --real`
|
|
: include only non-virtual postings
|
|
|
|
`-NUM --depth=NUM`
|
|
: hide/aggregate accounts or postings more than NUM levels deep
|
|
|
|
`-E --empty`
|
|
: show items with zero amount, normally hidden (and vice-versa in
|
|
hledger-ui/hledger-web)
|
|
|
|
`-B --cost`
|
|
: convert amounts to their cost at transaction time (using the
|
|
[transaction price](journal.html#transaction-prices), if any)
|
|
|
|
`-V --value`
|
|
: convert amounts to their market value on the report end date (using
|
|
the most recent applicable [market
|
|
price](journal.html#market-prices), if any)
|
|
|
|
`--auto`
|
|
: apply [automated posting
|
|
rules](journal.html#automated-posting-rules) to modify transactions.
|
|
|
|
`--forecast`
|
|
: apply [periodic transaction](journal.html#periodic-transactions)
|
|
rules to generate future transactions, to 6 months from now or
|
|
report end date.
|
|
|
|
When a reporting option appears more than once in the command line, the
|
|
last one takes precedence.
|
|
|
|
Some reporting options can also be written as [query
|
|
arguments](#queries).
|
|
|
|
hledger help options:
|
|
|
|
`-h --help`
|
|
: show general usage (or after COMMAND, command usage)
|
|
|
|
`--version`
|
|
: show version
|
|
|
|
`--debug[=N]`
|
|
: show debug output (levels 1-9, default: 1)
|
|
|
|
A @FILE argument will be expanded to the contents of FILE, which should
|
|
contain one command line option/argument per line. (To prevent this,
|
|
insert a `--` argument before.)
|
|
|
|
## KEYS
|
|
|
|
`?` shows a help dialog listing all keys. (Some of these also appear in
|
|
the quick help at the bottom of each screen.) Press `?` again (or
|
|
`ESCAPE`, or `LEFT`) to close it. The following keys work on most
|
|
screens:
|
|
|
|
The cursor keys navigate: `right` (or `enter`) goes deeper, `left`
|
|
returns to the previous screen,
|
|
`up`/`down`/`page up`/`page down`/`home`/`end` move up and down through
|
|
lists. Vi-style (`h`/`j`/`k`/`l`) and Emacs-style
|
|
(`CTRL-p`/`CTRL-n`/`CTRL-f`/`CTRL-b`) movement keys are also supported.
|
|
A tip: movement speed is limited by your keyboard repeat rate, to move
|
|
faster you may want to adjust it. (If you're on a mac, the Karabiner app
|
|
is one way to do that.)
|
|
|
|
With shift pressed, the cursor keys adjust the report period, limiting
|
|
the transactions to be shown (by default, all are shown).
|
|
`shift-down/up` steps downward and upward through these standard report
|
|
period durations: year, quarter, month, week, day. Then,
|
|
`shift-left/right` moves to the previous/next period. `t` sets the
|
|
report period to today. With the `--watch` option, when viewing a
|
|
"current" period (the current day, week, month, quarter, or year), the
|
|
period will move automatically to track the current date. To set a
|
|
non-standard period, you can use `/` and a `date:` query.
|
|
|
|
`/` lets you set a general filter query limiting the data shown, using
|
|
the same [query terms](/hledger.html#queries) as in hledger and
|
|
hledger-web. While editing the query, you can use [CTRL-a/e/d/k, BS,
|
|
cursor
|
|
keys](http://hackage.haskell.org/package/brick-0.7/docs/Brick-Widgets-Edit.html#t:Editor);
|
|
press `ENTER` to set it, or `ESCAPE`to cancel. There are also keys for
|
|
quickly adjusting some common filters like account depth and transaction
|
|
status (see below). `BACKSPACE` or `DELETE` removes all filters, showing
|
|
all transactions.
|
|
|
|
As mentioned above, hledger-ui shows auto-generated periodic
|
|
transactions, and hides future transactions (auto-generated or not) by
|
|
default. `F` toggles showing and hiding these future transactions. This
|
|
is similar to using a query like `date:-tomorrow`, but more convenient.
|
|
(experimental)
|
|
|
|
`ESCAPE` removes all filters and jumps back to the top screen. Or, it
|
|
cancels a minibuffer edit or help dialog in progress.
|
|
|
|
`CTRL-l` redraws the screen and centers the selection if possible
|
|
(selections near the top won't be centered, since we don't scroll above
|
|
the top).
|
|
|
|
`g` reloads from the data file(s) and updates the current screen and any
|
|
previous screens. (With large files, this could cause a noticeable
|
|
pause.)
|
|
|
|
`I` toggles balance assertion checking. Disabling balance assertions
|
|
temporarily can be useful for troubleshooting.
|
|
|
|
`a` runs command-line hledger's add command, and reloads the updated
|
|
file. This allows some basic data entry.
|
|
|
|
`A` is like `a`, but runs the
|
|
[hledger-iadd](http://hackage.haskell.org/package/hledger-iadd) tool,
|
|
which provides a curses-style interface. This key will be available if
|
|
`hledger-iadd` is installed in \$PATH.
|
|
|
|
`E` runs \$HLEDGER\_UI\_EDITOR, or \$EDITOR, or a default
|
|
(`emacsclient -a "" -nw`) on the journal file. With some editors (emacs,
|
|
vi), the cursor will be positioned at the current transaction when
|
|
invoked from the register and transaction screens, and at the error
|
|
location (if possible) when invoked from the error screen.
|
|
|
|
`q` quits the application.
|
|
|
|
Additional screen-specific keys are described below.
|
|
|
|
## SCREENS
|
|
|
|
### Accounts screen
|
|
|
|
This is normally the first screen displayed. It lists accounts and their
|
|
balances, like hledger's balance command. By default, it shows all
|
|
accounts and their latest ending balances (including the balances of
|
|
subaccounts). if you specify a query on the command line, it shows just
|
|
the matched accounts and the balances from matched transactions.
|
|
|
|
Account names are shown as a flat list by default. Press `T` to toggle
|
|
tree mode. In flat mode, account balances are exclusive of subaccounts,
|
|
except where subaccounts are hidden by a depth limit (see below). In
|
|
tree mode, all account balances are inclusive of subaccounts.
|
|
|
|
To see less detail, press a number key, `1` to `9`, to set a depth
|
|
limit. Or use `-` to decrease and `+`/`=` to increase the depth limit.
|
|
`0` shows even less detail, collapsing all accounts to a single total.
|
|
To remove the depth limit, set it higher than the maximum account depth,
|
|
or press `ESCAPE`.
|
|
|
|
`H` toggles between showing historical balances or period balances.
|
|
Historical balances (the default) are ending balances at the end of the
|
|
report period, taking into account all transactions before that date
|
|
(filtered by the filter query if any), including transactions before the
|
|
start of the report period. In other words, historical balances are what
|
|
you would see on a bank statement for that account (unless disturbed by
|
|
a filter query). Period balances ignore transactions before the report
|
|
start date, so they show the change in balance during the report period.
|
|
They are more useful eg when viewing a time log.
|
|
|
|
`U` toggles filtering by [unmarked status](/journal.html#status),
|
|
including or excluding unmarked postings in the balances. Similarly, `P`
|
|
toggles pending postings, and `C` toggles cleared postings. (By default,
|
|
balances include all postings; if you activate one or two status
|
|
filters, only those postings are included; and if you activate all
|
|
three, the filter is removed.)
|
|
|
|
`R` toggles real mode, in which [virtual
|
|
postings](/journal.html#virtual-postings) are ignored.
|
|
|
|
`Z` toggles nonzero mode, in which only accounts with nonzero balances
|
|
are shown (hledger-ui shows zero items by default, unlike command-line
|
|
hledger).
|
|
|
|
Press `right` or `enter` to view an account's transactions register.
|
|
|
|
### Register screen
|
|
|
|
This screen shows the transactions affecting a particular account, like
|
|
a check register. Each line represents one transaction and shows:
|
|
|
|
- the other account(s) involved, in abbreviated form. (If there are
|
|
both real and virtual postings, it shows only the accounts affected
|
|
by real postings.)
|
|
|
|
- the overall change to the current account's balance; positive for an
|
|
inflow to this account, negative for an outflow.
|
|
|
|
- the running historical total or period total for the current
|
|
account, after the transaction. This can be toggled with `H`.
|
|
Similar to the accounts screen, the historical total is affected by
|
|
transactions (filtered by the filter query) before the report start
|
|
date, while the period total is not. If the historical total is not
|
|
disturbed by a filter query, it will be the running historical
|
|
balance you would see on a bank register for the current account.
|
|
|
|
Transactions affecting this account's subaccounts will be included in
|
|
the register if the accounts screen is in tree mode, or if it's in flat
|
|
mode but this account has subaccounts which are not shown due to a depth
|
|
limit. In other words, the register always shows the transactions
|
|
contributing to the balance shown on the accounts screen.\
|
|
Tree mode/flat mode can be toggled with `T` here also.
|
|
|
|
`U` toggles filtering by [unmarked status](/journal.html#status),
|
|
showing or hiding unmarked transactions. Similarly, `P` toggles pending
|
|
transactions, and `C` toggles cleared transactions. (By default,
|
|
transactions with all statuses are shown; if you activate one or two
|
|
status filters, only those transactions are shown; and if you activate
|
|
all three, the filter is removed.)q
|
|
|
|
`R` toggles real mode, in which [virtual
|
|
postings](/journal.html#virtual-postings) are ignored.
|
|
|
|
`Z` toggles nonzero mode, in which only transactions posting a nonzero
|
|
change are shown (hledger-ui shows zero items by default, unlike
|
|
command-line hledger).
|
|
|
|
Press `right` (or `enter`) to view the selected transaction in detail.
|
|
|
|
### Transaction screen
|
|
|
|
This screen shows a single transaction, as a general journal entry,
|
|
similar to hledger's print command and journal format
|
|
(hledger\_journal(5)).
|
|
|
|
The transaction's date(s) and any cleared flag, transaction code,
|
|
description, comments, along with all of its account postings are shown.
|
|
Simple transactions have two postings, but there can be more (or in
|
|
certain cases, fewer).
|
|
|
|
`up` and `down` will step through all transactions listed in the
|
|
previous account register screen. In the title bar, the numbers in
|
|
parentheses show your position within that account register. They will
|
|
vary depending on which account register you came from (remember most
|
|
transactions appear in multiple account registers). The \#N number
|
|
preceding them is the transaction's position within the complete
|
|
unfiltered journal, which is a more stable id (at least until the next
|
|
reload).
|
|
|
|
### Error screen
|
|
|
|
This screen will appear if there is a problem, such as a parse error,
|
|
when you press g to reload. Once you have fixed the problem, press g
|
|
again to reload and resume normal operation. (Or, you can press escape
|
|
to cancel the reload attempt.)
|
|
|
|
## ENVIRONMENT
|
|
|
|
**COLUMNS** The screen width to use. Default: the full terminal width.
|
|
|
|
**LEDGER\_FILE** The journal file path when not specified with `-f`.
|
|
Default: `~/.hledger.journal` (on windows, perhaps
|
|
`C:/Users/USER/.hledger.journal`).
|
|
|
|
## FILES
|
|
|
|
Reads data from one or more files in hledger journal, timeclock,
|
|
timedot, or CSV format specified with `-f`, or `$LEDGER_FILE`, or
|
|
`$HOME/.hledger.journal` (on windows, perhaps
|
|
`C:/Users/USER/.hledger.journal`).
|
|
|
|
## BUGS
|
|
|
|
The need to precede options with `--` when invoked from hledger is
|
|
awkward.
|
|
|
|
`-f-` doesn't work (hledger-ui can't read from stdin).
|
|
|
|
`-V` affects only the accounts screen.
|
|
|
|
When you press `g`, the current and all previous screens are
|
|
regenerated, which may cause a noticeable pause with large files. Also
|
|
there is no visual indication that this is in progress.
|
|
|
|
`--watch` is not yet fully robust. It works well for normal usage, but
|
|
many file changes in a short time (eg saving the file thousands of times
|
|
with an editor macro) can cause problems at least on OSX. Symptoms
|
|
include: unresponsive UI, periodic resetting of the cursor position,
|
|
momentary display of parse errors, high CPU usage eventually subsiding,
|
|
and possibly a small but persistent build-up of CPU usage until the
|
|
program is restarted.
|