595 lines
		
	
	
		
			22 KiB
		
	
	
	
		
			Groff
		
	
	
	
	
	
			
		
		
	
	
			595 lines
		
	
	
		
			22 KiB
		
	
	
	
		
			Groff
		
	
	
	
	
	
| 
 | |
| .TH "HLEDGER-UI" "1" "December 2021" "hledger-ui-1.24.99 " "hledger User Manuals"
 | |
| 
 | |
| 
 | |
| 
 | |
| .SH NAME
 | |
| .PP
 | |
| hledger-ui is a terminal interface (TUI) for the hledger accounting
 | |
| tool.
 | |
| This manual is for hledger-ui 1.24.99.
 | |
| .SH SYNOPSIS
 | |
| .PP
 | |
| \f[C]hledger-ui [OPTIONS] [QUERYARGS]\f[R]
 | |
| .PD 0
 | |
| .P
 | |
| .PD
 | |
| \f[C]hledger ui -- [OPTIONS] [QUERYARGS]\f[R]
 | |
| .SH DESCRIPTION
 | |
| .PP
 | |
| hledger is a reliable, cross-platform set of programs 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).
 | |
| .PP
 | |
| hledger-ui is hledger\[aq]s terminal interface, providing an efficient
 | |
| full-window text UI for viewing accounts and transactions, and some
 | |
| limited data entry capability.
 | |
| It is easier than hledger\[aq]s command-line interface, and sometimes
 | |
| quicker and more convenient than the web interface.
 | |
| .PP
 | |
| Like hledger, it reads data from one or more files in hledger journal,
 | |
| timeclock, timedot, or CSV format specified with \f[C]-f\f[R], or
 | |
| \f[C]$LEDGER_FILE\f[R], or \f[C]$HOME/.hledger.journal\f[R] (on windows,
 | |
| perhaps \f[C]C:/Users/USER/.hledger.journal\f[R]).
 | |
| For more about this see hledger(1), hledger_journal(5) etc.
 | |
| .PP
 | |
| Unlike hledger, hledger-ui hides all future-dated transactions by
 | |
| default.
 | |
| They can be revealed, along with any rule-generated periodic
 | |
| transactions, by pressing the F key (or starting with --forecast) to
 | |
| enable \[dq]forecast mode\[dq].
 | |
| .SH OPTIONS
 | |
| .PP
 | |
| Note: if invoking hledger-ui as a hledger subcommand, write \f[C]--\f[R]
 | |
| before options as shown above.
 | |
| .PP
 | |
| Any QUERYARGS are interpreted as a hledger search query which filters
 | |
| the data.
 | |
| .TP
 | |
| \f[B]\f[CB]-w --watch\f[B]\f[R]
 | |
| watch for data and date changes and reload automatically
 | |
| .TP
 | |
| \f[B]\f[CB]--theme=default|terminal|greenterm\f[B]\f[R]
 | |
| use this custom display theme
 | |
| .TP
 | |
| \f[B]\f[CB]--register=ACCTREGEX\f[B]\f[R]
 | |
| start in the (first) matched account\[aq]s register screen
 | |
| .TP
 | |
| \f[B]\f[CB]--change\f[B]\f[R]
 | |
| show period balances (changes) at startup instead of historical balances
 | |
| .TP
 | |
| \f[B]\f[CB]-l --flat\f[B]\f[R]
 | |
| show accounts as a flat list (default)
 | |
| .TP
 | |
| \f[B]\f[CB]-t --tree\f[B]\f[R]
 | |
| show accounts as a tree
 | |
| .PP
 | |
| hledger input options:
 | |
| .TP
 | |
| \f[B]\f[CB]-f FILE --file=FILE\f[B]\f[R]
 | |
| use a different input file.
 | |
| For stdin, use - (default: \f[C]$LEDGER_FILE\f[R] or
 | |
| \f[C]$HOME/.hledger.journal\f[R])
 | |
| .TP
 | |
| \f[B]\f[CB]--rules-file=RULESFILE\f[B]\f[R]
 | |
| Conversion rules file to use when reading CSV (default: FILE.rules)
 | |
| .TP
 | |
| \f[B]\f[CB]--separator=CHAR\f[B]\f[R]
 | |
| Field separator to expect when reading CSV (default: \[aq],\[aq])
 | |
| .TP
 | |
| \f[B]\f[CB]--alias=OLD=NEW\f[B]\f[R]
 | |
| rename accounts named OLD to NEW
 | |
| .TP
 | |
| \f[B]\f[CB]--anon\f[B]\f[R]
 | |
| anonymize accounts and payees
 | |
| .TP
 | |
| \f[B]\f[CB]--pivot FIELDNAME\f[B]\f[R]
 | |
| use some other field or tag for the account name
 | |
| .TP
 | |
| \f[B]\f[CB]-I --ignore-assertions\f[B]\f[R]
 | |
| disable balance assertion checks (note: does not disable balance
 | |
| assignments)
 | |
| .TP
 | |
| \f[B]\f[CB]-s --strict\f[B]\f[R]
 | |
| do extra error checking (check that all posted accounts are declared)
 | |
| .PP
 | |
| hledger reporting options:
 | |
| .TP
 | |
| \f[B]\f[CB]-b --begin=DATE\f[B]\f[R]
 | |
| include postings/txns on or after this date (will be adjusted to
 | |
| preceding subperiod start when using a report interval)
 | |
| .TP
 | |
| \f[B]\f[CB]-e --end=DATE\f[B]\f[R]
 | |
| include postings/txns before this date (will be adjusted to following
 | |
| subperiod end when using a report interval)
 | |
| .TP
 | |
| \f[B]\f[CB]-D --daily\f[B]\f[R]
 | |
| multiperiod/multicolumn report by day
 | |
| .TP
 | |
| \f[B]\f[CB]-W --weekly\f[B]\f[R]
 | |
| multiperiod/multicolumn report by week
 | |
| .TP
 | |
| \f[B]\f[CB]-M --monthly\f[B]\f[R]
 | |
| multiperiod/multicolumn report by month
 | |
| .TP
 | |
| \f[B]\f[CB]-Q --quarterly\f[B]\f[R]
 | |
| multiperiod/multicolumn report by quarter
 | |
| .TP
 | |
| \f[B]\f[CB]-Y --yearly\f[B]\f[R]
 | |
| multiperiod/multicolumn report by year
 | |
| .TP
 | |
| \f[B]\f[CB]-p --period=PERIODEXP\f[B]\f[R]
 | |
| set start date, end date, and/or reporting interval all at once using
 | |
| period expressions syntax
 | |
| .TP
 | |
| \f[B]\f[CB]--date2\f[B]\f[R]
 | |
| match the secondary date instead (see command help for other effects)
 | |
| .TP
 | |
| \f[B]\f[CB]--today=DATE\f[B]\f[R]
 | |
| override today\[aq]s date (affects relative smart dates, for
 | |
| tests/examples)
 | |
| .TP
 | |
| \f[B]\f[CB]-U --unmarked\f[B]\f[R]
 | |
| include only unmarked postings/txns (can combine with -P or -C)
 | |
| .TP
 | |
| \f[B]\f[CB]-P --pending\f[B]\f[R]
 | |
| include only pending postings/txns
 | |
| .TP
 | |
| \f[B]\f[CB]-C --cleared\f[B]\f[R]
 | |
| include only cleared postings/txns
 | |
| .TP
 | |
| \f[B]\f[CB]-R --real\f[B]\f[R]
 | |
| include only non-virtual postings
 | |
| .TP
 | |
| \f[B]\f[CB]-NUM --depth=NUM\f[B]\f[R]
 | |
| hide/aggregate accounts or postings more than NUM levels deep
 | |
| .TP
 | |
| \f[B]\f[CB]-E --empty\f[B]\f[R]
 | |
| show items with zero amount, normally hidden (and vice-versa in
 | |
| hledger-ui/hledger-web)
 | |
| .TP
 | |
| \f[B]\f[CB]-B --cost\f[B]\f[R]
 | |
| convert amounts to their cost/selling amount at transaction time
 | |
| .TP
 | |
| \f[B]\f[CB]-V --market\f[B]\f[R]
 | |
| convert amounts to their market value in default valuation commodities
 | |
| .TP
 | |
| \f[B]\f[CB]-X --exchange=COMM\f[B]\f[R]
 | |
| convert amounts to their market value in commodity COMM
 | |
| .TP
 | |
| \f[B]\f[CB]--value\f[B]\f[R]
 | |
| convert amounts to cost or market value, more flexibly than -B/-V/-X
 | |
| .TP
 | |
| \f[B]\f[CB]--infer-market-prices\f[B]\f[R]
 | |
| use transaction prices (recorded with \[at] or \[at]\[at]) as additional
 | |
| market prices, as if they were P directives
 | |
| .TP
 | |
| \f[B]\f[CB]--auto\f[B]\f[R]
 | |
| apply automated posting rules to modify transactions.
 | |
| .TP
 | |
| \f[B]\f[CB]--forecast\f[B]\f[R]
 | |
| generate future transactions from periodic transaction rules, for the
 | |
| next 6 months or till report end date.
 | |
| In hledger-ui, also make ordinary future transactions visible.
 | |
| .TP
 | |
| \f[B]\f[CB]--commodity-style\f[B]\f[R]
 | |
| Override the commodity style in the output for the specified commodity.
 | |
| For example \[aq]EUR1.000,00\[aq].
 | |
| .TP
 | |
| \f[B]\f[CB]--color=WHEN (or --colour=WHEN)\f[B]\f[R]
 | |
| Should color-supporting commands use ANSI color codes in text output.
 | |
| \[aq]auto\[aq] (default): whenever stdout seems to be a color-supporting
 | |
| terminal.
 | |
| \[aq]always\[aq] or \[aq]yes\[aq]: always, useful eg when piping output
 | |
| into \[aq]less -R\[aq].
 | |
| \[aq]never\[aq] or \[aq]no\[aq]: never.
 | |
| A NO_COLOR environment variable overrides this.
 | |
| .TP
 | |
| \f[B]\f[CB]--pretty[=WHEN]\f[B]\f[R]
 | |
| Show prettier output, e.g.
 | |
| using unicode box-drawing characters.
 | |
| Accepts \[aq]yes\[aq] (the default) or \[aq]no\[aq] (\[aq]y\[aq],
 | |
| \[aq]n\[aq], \[aq]always\[aq], \[aq]never\[aq] also work).
 | |
| If you provide an argument you must use \[aq]=\[aq], e.g.
 | |
| \[aq]--pretty=yes\[aq].
 | |
| .PP
 | |
| When a reporting option appears more than once in the command line, the
 | |
| last one takes precedence.
 | |
| .PP
 | |
| Some reporting options can also be written as query arguments.
 | |
| .PP
 | |
| hledger help options:
 | |
| .TP
 | |
| \f[B]\f[CB]-h --help\f[B]\f[R]
 | |
| show general or COMMAND help
 | |
| .TP
 | |
| \f[B]\f[CB]--man\f[B]\f[R]
 | |
| show general or COMMAND user manual with man
 | |
| .TP
 | |
| \f[B]\f[CB]--info\f[B]\f[R]
 | |
| show general or COMMAND user manual with info
 | |
| .TP
 | |
| \f[B]\f[CB]--version\f[B]\f[R]
 | |
| show general or ADDONCMD version
 | |
| .TP
 | |
| \f[B]\f[CB]--debug[=N]\f[B]\f[R]
 | |
| show debug output (levels 1-9, default: 1)
 | |
| .PP
 | |
| A \[at]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 \f[C]--\f[R] argument before.)
 | |
| .SH MOUSE
 | |
| .PP
 | |
| In most modern terminals, you can navigate through the screens with a
 | |
| mouse or touchpad:
 | |
| .IP \[bu] 2
 | |
| Use mouse wheel or trackpad to scroll up and down
 | |
| .IP \[bu] 2
 | |
| Click on list items to go deeper
 | |
| .IP \[bu] 2
 | |
| Click on the left margin (column 0), or the blank area at bottom of
 | |
| screen, to go back.
 | |
| .SH KEYS
 | |
| .PP
 | |
| Keyboard gives more control.
 | |
| .PP
 | |
| \f[C]?\f[R] shows a help dialog listing all keys.
 | |
| (Some of these also appear in the quick help at the bottom of each
 | |
| screen.) Press \f[C]?\f[R] again (or \f[C]ESCAPE\f[R], or
 | |
| \f[C]LEFT\f[R], or \f[C]q\f[R]) to close it.
 | |
| The following keys work on most screens:
 | |
| .PP
 | |
| The cursor keys navigate: \f[C]RIGHT\f[R] goes deeper, \f[C]LEFT\f[R]
 | |
| returns to the previous screen,
 | |
| \f[C]UP\f[R]/\f[C]DOWN\f[R]/\f[C]PGUP\f[R]/\f[C]PGDN\f[R]/\f[C]HOME\f[R]/\f[C]END\f[R]
 | |
| move up and down through lists.
 | |
| Emacs-style
 | |
| (\f[C]CTRL-p\f[R]/\f[C]CTRL-n\f[R]/\f[C]CTRL-f\f[R]/\f[C]CTRL-b\f[R])
 | |
| movement keys are also supported (but not vi-style keys, since
 | |
| hledger-1.19, sorry!).
 | |
| A tip: movement speed is limited by your keyboard repeat rate, to move
 | |
| faster you may want to adjust it.
 | |
| (If you\[aq]re on a mac, the karabiner app is one way to do that.)
 | |
| .PP
 | |
| With shift pressed, the cursor keys adjust the report period, limiting
 | |
| the transactions to be shown (by default, all are shown).
 | |
| \f[C]SHIFT-DOWN/UP\f[R] steps downward and upward through these standard
 | |
| report period durations: year, quarter, month, week, day.
 | |
| Then, \f[C]SHIFT-LEFT/RIGHT\f[R] moves to the previous/next period.
 | |
| \f[C]T\f[R] sets the report period to today.
 | |
| With the \f[C]-w/--watch\f[R] option, when viewing a \[dq]current\[dq]
 | |
| 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 \f[C]/\f[R] and a
 | |
| \f[C]date:\f[R] query.
 | |
| .PP
 | |
| \f[C]/\f[R] lets you set a general filter query limiting the data shown,
 | |
| using the same query terms as in hledger and hledger-web.
 | |
| While editing the query, you can use CTRL-a/e/d/k, BS, cursor keys;
 | |
| press \f[C]ENTER\f[R] to set it, or \f[C]ESCAPE\f[R]to cancel.
 | |
| There are also keys for quickly adjusting some common filters like
 | |
| account depth and transaction status (see below).
 | |
| \f[C]BACKSPACE\f[R] or \f[C]DELETE\f[R] removes all filters, showing all
 | |
| transactions.
 | |
| .PP
 | |
| As mentioned above, by default hledger-ui hides future transactions -
 | |
| both ordinary transactions recorded in the journal, and periodic
 | |
| transactions generated by rule.
 | |
| \f[C]F\f[R] toggles forecast mode, in which future/forecasted
 | |
| transactions are shown.
 | |
| .PP
 | |
| \f[C]ESCAPE\f[R] resets the UI state and jumps back to the top screen,
 | |
| restoring the app\[aq]s initial state at startup.
 | |
| Or, it cancels minibuffer data entry or the help dialog.
 | |
| .PP
 | |
| \f[C]CTRL-l\f[R] redraws the screen and centers the selection if
 | |
| possible (selections near the top won\[aq]t be centered, since we
 | |
| don\[aq]t scroll above the top).
 | |
| .PP
 | |
| \f[C]g\f[R] reloads from the data file(s) and updates the current screen
 | |
| and any previous screens.
 | |
| (With large files, this could cause a noticeable pause.)
 | |
| .PP
 | |
| \f[C]I\f[R] toggles balance assertion checking.
 | |
| Disabling balance assertions temporarily can be useful for
 | |
| troubleshooting.
 | |
| .PP
 | |
| \f[C]a\f[R] runs command-line hledger\[aq]s add command, and reloads the
 | |
| updated file.
 | |
| This allows some basic data entry.
 | |
| .PP
 | |
| \f[C]A\f[R] is like \f[C]a\f[R], but runs the hledger-iadd tool, which
 | |
| provides a terminal interface.
 | |
| This key will be available if \f[C]hledger-iadd\f[R] is installed in
 | |
| $path.
 | |
| .PP
 | |
| \f[C]E\f[R] runs $HLEDGER_UI_EDITOR, or $EDITOR, or a default
 | |
| (\f[C]emacsclient -a \[dq]\[dq] -nw\f[R]) 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.
 | |
| .PP
 | |
| \f[C]B\f[R] toggles cost mode, showing amounts in their transaction
 | |
| price\[aq]s commodity (like toggling the \f[C]-B/--cost\f[R] flag).
 | |
| .PP
 | |
| \f[C]V\f[R] toggles value mode, showing amounts\[aq] current market
 | |
| value in their default valuation commodity (like toggling the
 | |
| \f[C]-V/--market\f[R] flag).
 | |
| Note, \[dq]current market value\[dq] means the value on the report end
 | |
| date if specified, otherwise today.
 | |
| To see the value on another date, you can temporarily set that as the
 | |
| report end date.
 | |
| Eg: to see a transaction as it was valued on july 30, go to the accounts
 | |
| or register screen, press \f[C]/\f[R], and add \f[C]date:-7/30\f[R] to
 | |
| the query.
 | |
| .PP
 | |
| At most one of cost or value mode can be active at once.
 | |
| .PP
 | |
| There\[aq]s not yet any visual reminder when cost or value mode is
 | |
| active; for now pressing \f[C]b\f[R] \f[C]b\f[R] \f[C]v\f[R] should
 | |
| reliably reset to normal mode.
 | |
| .PP
 | |
| \f[C]q\f[R] quits the application.
 | |
| .PP
 | |
| Additional screen-specific keys are described below.
 | |
| .SH SCREENS
 | |
| .SS Accounts screen
 | |
| .PP
 | |
| This is normally the first screen displayed.
 | |
| It lists accounts and their balances, like hledger\[aq]s balance
 | |
| command.
 | |
| By default, it shows all accounts and their latest ending balances
 | |
| (including the balances of subaccounts).
 | |
| Accounts which have been declared with an account directive are also
 | |
| listed, even if not yet used (except for empty parent accounts).
 | |
| If you specify a query on the command line, it shows just the matched
 | |
| accounts and the balances from matched transactions.
 | |
| .PP
 | |
| Account names are shown as a flat list by default; press \f[C]t\f[R] to
 | |
| toggle tree mode.
 | |
| In list 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.
 | |
| .PP
 | |
| To see less detail, press a number key, \f[C]1\f[R] to \f[C]9\f[R], to
 | |
| set a depth limit.
 | |
| Or use \f[C]-\f[R] to decrease and \f[C]+\f[R]/\f[C]=\f[R] to increase
 | |
| the depth limit.
 | |
| \f[C]0\f[R] 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 \f[C]ESCAPE\f[R].
 | |
| .PP
 | |
| \f[C]H\f[R] 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.
 | |
| .PP
 | |
| \f[C]U\f[R] toggles filtering by unmarked status, including or excluding
 | |
| unmarked postings in the balances.
 | |
| Similarly, \f[C]P\f[R] toggles pending postings, and \f[C]C\f[R] 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.)
 | |
| .PP
 | |
| \f[C]R\f[R] toggles real mode, in which virtual postings are ignored.
 | |
| .PP
 | |
| \f[C]z\f[R] toggles nonzero mode, in which only accounts with nonzero
 | |
| balances are shown (hledger-ui shows zero items by default, unlike
 | |
| command-line hledger).
 | |
| .PP
 | |
| Press \f[C]RIGHT\f[R] to view an account\[aq]s transactions register.
 | |
| .SS Register screen
 | |
| .PP
 | |
| This screen shows the transactions affecting a particular account, like
 | |
| a check register.
 | |
| Each line represents one transaction and shows:
 | |
| .IP \[bu] 2
 | |
| 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.)
 | |
| .IP \[bu] 2
 | |
| the overall change to the current account\[aq]s balance; positive for an
 | |
| inflow to this account, negative for an outflow.
 | |
| .IP \[bu] 2
 | |
| the running historical total or period total for the current account,
 | |
| after the transaction.
 | |
| This can be toggled with \f[C]H\f[R].
 | |
| 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.
 | |
| .PP
 | |
| Transactions affecting this account\[aq]s subaccounts will be included
 | |
| in the register if the accounts screen is in tree mode, or if it\[aq]s
 | |
| in list 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/list mode can be toggled with \f[C]t\f[R] here also.
 | |
| .PP
 | |
| \f[C]U\f[R] toggles filtering by unmarked status, showing or hiding
 | |
| unmarked transactions.
 | |
| Similarly, \f[C]P\f[R] toggles pending transactions, and \f[C]C\f[R]
 | |
| 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.)
 | |
| .PP
 | |
| \f[C]R\f[R] toggles real mode, in which virtual postings are ignored.
 | |
| .PP
 | |
| \f[C]z\f[R] toggles nonzero mode, in which only transactions posting a
 | |
| nonzero change are shown (hledger-ui shows zero items by default, unlike
 | |
| command-line hledger).
 | |
| .PP
 | |
| Press \f[C]RIGHT\f[R] to view the selected transaction in detail.
 | |
| .SS Transaction screen
 | |
| .PP
 | |
| This screen shows a single transaction, as a general journal entry,
 | |
| similar to hledger\[aq]s print command and journal format
 | |
| (hledger_journal(5)).
 | |
| .PP
 | |
| The transaction\[aq]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).
 | |
| .PP
 | |
| \f[C]UP\f[R] and \f[C]DOWN\f[R] 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\[aq]s position within
 | |
| the complete unfiltered journal, which is a more stable id (at least
 | |
| until the next reload).
 | |
| .SS Error screen
 | |
| .PP
 | |
| 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.)
 | |
| .SH TIPS
 | |
| .SS Watch mode
 | |
| .PP
 | |
| One of hledger-ui\[aq]s best features is the auto-reloading
 | |
| \f[C]-w/--watch\f[R] mode.
 | |
| With this flag, it will update the display automatically whenever
 | |
| changes are saved to the data files.
 | |
| .PP
 | |
| This is very useful when reconciling.
 | |
| A good workflow is to have your bank\[aq]s online register open in a
 | |
| browser window, for reference; the journal file open in an editor
 | |
| window; and hledger-ui in watch mode in a terminal window, eg:
 | |
| .IP
 | |
| .nf
 | |
| \f[C]
 | |
| $ hledger-ui --watch --register checking -C
 | |
| \f[R]
 | |
| .fi
 | |
| .PP
 | |
| As you mark things cleared in the editor, you can see the effect
 | |
| immediately without having to context switch.
 | |
| This leaves more mental bandwidth for your accounting.
 | |
| Of course you can still interact with hledger-ui when needed, eg to
 | |
| toggle cleared mode, or to explore the history.
 | |
| .SS Watch mode limitations
 | |
| .PP
 | |
| There are situations in which it won\[aq]t work, ie the display will not
 | |
| update when you save a change (because the underlying \f[C]inotify\f[R]
 | |
| library does not support it).
 | |
| Here are some that we know of:
 | |
| .IP \[bu] 2
 | |
| Certain editors: saving with \f[C]gedit\f[R], and perhaps any Gnome
 | |
| application, won\[aq]t be detected (#1617).
 | |
| Jetbrains IDEs, such as IDEA, also may not work (#911).
 | |
| .IP \[bu] 2
 | |
| Certain unusual filesystems might not be supported.
 | |
| (All the usual ones on unix, mac and windows are supported.)
 | |
| .PP
 | |
| In such cases, the workaround is to switch to the hledger-ui window and
 | |
| press \f[C]g\f[R] each time you want it to reload.
 | |
| (Actually, see #1617 for another workaround, and let us know if it works
 | |
| for you.)
 | |
| .PP
 | |
| If you leave \f[C]hledger-ui --watch\f[R] running for days, on certain
 | |
| platforms (?), perhaps with many transactions in your journal (?),
 | |
| perhaps with large numbers of other files present (?), you may see it
 | |
| gradually using more and more memory and CPU over time, as seen in
 | |
| \f[C]top\f[R] or Activity Monitor or Task Manager.
 | |
| .PP
 | |
| A workaround is to \f[C]q\f[R]uit and restart it, or to suspend it
 | |
| (\f[C]CTRL-z\f[R]) and restart it (\f[C]fg\f[R]) if your shell supports
 | |
| that.
 | |
| .SH ENVIRONMENT
 | |
| .PP
 | |
| \f[B]COLUMNS\f[R] The screen width to use.
 | |
| Default: the full terminal width.
 | |
| .PP
 | |
| \f[B]LEDGER_FILE\f[R] The journal file path when not specified with
 | |
| \f[C]-f\f[R].
 | |
| Default: \f[C]\[ti]/.hledger.journal\f[R] (on windows, perhaps
 | |
| \f[C]C:/Users/USER/.hledger.journal\f[R]).
 | |
| .PP
 | |
| A typical value is \f[C]\[ti]/DIR/YYYY.journal\f[R], where DIR is a
 | |
| version-controlled finance directory and YYYY is the current year.
 | |
| Or \f[C]\[ti]/DIR/current.journal\f[R], where current.journal is a
 | |
| symbolic link to YYYY.journal.
 | |
| .PP
 | |
| On Mac computers, you can set this and other environment variables in a
 | |
| more thorough way that also affects applications started from the GUI
 | |
| (say, an Emacs dock icon).
 | |
| Eg on MacOS Catalina I have a \f[C]\[ti]/.MacOSX/environment.plist\f[R]
 | |
| file containing
 | |
| .IP
 | |
| .nf
 | |
| \f[C]
 | |
| {
 | |
|   \[dq]LEDGER_FILE\[dq] : \[dq]\[ti]/finance/current.journal\[dq]
 | |
| }
 | |
| \f[R]
 | |
| .fi
 | |
| .PP
 | |
| To see the effect you may need to \f[C]killall Dock\f[R], or reboot.
 | |
| .SH FILES
 | |
| .PP
 | |
| Reads data from one or more files in hledger journal, timeclock,
 | |
| timedot, or CSV format specified with \f[C]-f\f[R], or
 | |
| \f[C]$LEDGER_FILE\f[R], or \f[C]$HOME/.hledger.journal\f[R] (on windows,
 | |
| perhaps \f[C]C:/Users/USER/.hledger.journal\f[R]).
 | |
| .SH BUGS
 | |
| .PP
 | |
| The need to precede options with \f[C]--\f[R] when invoked from hledger
 | |
| is awkward.
 | |
| .PP
 | |
| \f[C]-f-\f[R] doesn\[aq]t work (hledger-ui can\[aq]t read from stdin).
 | |
| .PP
 | |
| \f[C]-V\f[R] affects only the accounts screen.
 | |
| .PP
 | |
| When you press \f[C]g\f[R], 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.
 | |
| .PP
 | |
| \f[C]--watch\f[R] 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.
 | |
| .PP
 | |
| Also, if you are viewing files mounted from another machine,
 | |
| \f[C]-w/--watch\f[R] requires that both machine clocks are roughly in
 | |
| step.
 | |
| 
 | |
| 
 | |
| .SH "REPORTING BUGS"
 | |
| Report bugs at http://bugs.hledger.org
 | |
| (or on the #hledger IRC channel or hledger mail list)
 | |
| 
 | |
| .SH AUTHORS
 | |
| Simon Michael <simon@joyful.com> and contributors
 | |
| 
 | |
| .SH COPYRIGHT
 | |
| 
 | |
| Copyright (C) 2007-2020 Simon Michael.
 | |
| .br
 | |
| Released under GNU GPL v3 or later.
 | |
| 
 | |
| .SH SEE ALSO
 | |
| hledger(1), hledger\-ui(1), hledger\-web(1), ledger(1)
 |