| Commit message (Collapse) | Author |
|
That helps remove duplicated code and rustc/cargo will now also show
dead code correctly.
|
|
I can't think of any reason you would want this disabled by default -
trailing whitespace means nothing, breaks dedupe, and wastes a few bytes
closes #3387
## Checks
- [ ] I am happy for maintainers to push small adjustments to this PR,
to speed up the review cycle
- [ ] I have checked that there are no existing pull requests for the
same thing
|
|
|
|
This PR fixes:
+ #3154
+ #3164
+ #3166
It changes the following:
+ Pass ATUIN_SESSION to tmux popup
+ Use `command rm` to bypass user-defined configs
+ Disable tmux popup by default
## Checks
- [x] I am happy for maintainers to push small adjustments to this PR,
to speed up the review cycle
- [x] I have checked that there are no existing pull requests for the
same thing
---------
Co-authored-by: Ellie Huxtable <ellie@elliehuxtable.com>
|
|
This is related to:
- #3090
- #1906
---
## No longer relevant:
~I often just hold the backspace key to clear the query line in Atuin,
and the change in #3090 makes it no longer possible: it accepts the
current history entry instead.~ 🤯
~It may be a muscle memory thing, but it also feels wrong to me for the
left key to accept the current entry. I'd prefer for it to do nothing
when the cursor is at the start of the line (I've set
`exit_past_line_start = false` in my config).~
~This PR makes the new behavior configurable: it adds an
`accept_past_empty_line` setting (naming is *hard*, feel free to find a
better name) which lets you disable it. It also updates the `[keys]`
docs.~
BTW wouldn't setting the `accept_past_line_start` and
`accept_with_backspace` settings to `true` (maybe by default) have the
same effect as what #3090 introduced?
## Checks
- [x] I am happy for maintainers to push small adjustments to this PR,
to speed up the review cycle
- [x] I have checked that there are no existing pull requests for the
same thing
|
|
This is a "continuation" of #1177 - which was a draft that used FIFOs
(named pipes) to get output from the popup, however this causes popup
not being closed properly, so in this PR I use tmpfile to store the
result and read after popup closes. @ellie could you review this PR
please?
P.S. Thank you @immae for sharing your idea!
## Feature
+ Option to use tmux popup window in `config.toml`
+ Customize window width/height in `config.toml`
+ Tmux display-popup for `zsh, bash, fish`
## Checks
- [x] I am happy for maintainers to push small adjustments to this PR,
to speed up the review cycle
- [x] I have checked that there are no existing pull requests for the
same thing
---------
Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>
|
|
<!-- Thank you for making a PR! Bug fixes are always welcome, but if
you're adding a new feature or changing an existing one, we'd really
appreciate if you open an issue, post on the forum, or drop in on
Discord -->
## Checks
- [ ] I am happy for maintainers to push small adjustments to this PR,
to speed up the review cycle
- [ ] I have checked that there are no existing pull requests for the
same thing
|
|
Configure the interactive search UI appearance. Resolves #998
```toml
[ui]
columns = ["duration", "time", "command"]
```
### `columns`
Default: `["duration", "time", "command"]`
Columns to display in the interactive search, from left to right. The
selection
indicator (`" > "`) is always shown first implicitly.
Each column can be specified as:
- A simple string (uses default width): `"duration"`
- An object with type and optional width/expand: `{ type = "directory",
width = 30 }`
#### Available column types
| Column | Default Width | Description |
| --------- | ------------- |
----------------------------------------------- |
| duration | 5 | Command execution duration (e.g., "123ms") |
| time | 8 | Relative time since execution (e.g., "59m ago") |
| datetime | 16 | Absolute timestamp (e.g., "2025-01-22 14:35") |
| directory | 20 | Working directory (truncated if too long) |
| host | 15 | Hostname |
| user | 10 | Username |
| exit | 3 | Exit code (colored by success/failure) |
| command | * | The command itself (expands by default) |
#### Column options
- **type**: The column type (required when using object format)
- **width**: Custom width in characters (optional, uses default if not
specified)
- **expand**: If `true`, the column fills remaining space. Default is
`true` for `command`, `false` for others. Only one column should have
`expand = true`.
#### Examples
```toml
# Minimal - more space for commands
columns = ["duration", "command"]
# With custom directory width
columns = ["duration", { type = "directory", width = 30 }, "command"]
# Show host for multi-machine sync users
columns = ["duration", "time", "host", "command"]
# Show exit codes prominently
columns = ["exit", "duration", "command"]
# Make directory expand instead of command
columns = ["duration", "time", { type = "directory", expand = true }, { type = "command", expand = false }]
```
|
|
|
|
<!-- Thank you for making a PR! Bug fixes are always welcome, but if
you're adding a new feature or changing an existing one, we'd really
appreciate if you open an issue, post on the forum, or drop in on
Discord -->
## Checks
- [x] I am happy for maintainers to push small adjustments to this PR,
to speed up the review cycle
- [x] I have checked that there are no existing pull requests for the
same thing
|
|
I wanted to use `command_chaining` to write a pipeline (`cmdA | cmdB`)
and was genuinely surprised it didn't work.
## Checks
- [x] I am happy for maintainers to push small adjustments to this PR,
to speed up the review cycle
- [x] I have checked that there are no existing pull requests for the
same thing
|
|
This change introduces (optional) acceptance keys of Backspace and Left
Arrow, when at the start of a line. These two are common muscle memory
actions for users.
The configuration defaults to false so as not to disrupt existing user
patterns.
This also adds a test that exercises the various acceptance modes, which
as it turns out was quite easy to do.
I discussed this on discord where [Ellie suggested I raised an
issue](https://discord.com/channels/954121165239115808/1421180955657244703/1422642337481228400),
but I felt like a PR would be more tangiable. I've tested this locally
and I'm very happy with how these keys work, it fits my needs well.
`exit_past_line_start` and `accept_past_line_start` can technically
co-exist. When this happens `accept_past_line_start` takes precedence.
Is this okay, or should we reconsider the config? Perhaps
`acceptance_keys = []` would be better here? I'm very open to changes
here.
<!-- Thank you for making a PR! Bug fixes are always welcome, but if
you're adding a new feature or changing an existing one, we'd really
appreciate if you open an issue, post on the forum, or drop in on
Discord -->
## Checks
- [x] I am happy for maintainers to push small adjustments to this PR,
to speed up the review cycle
- [x] I have checked that there are no existing pull requests for the
same thing
|
|
|
|
session start
This mode mimics the default behavior for many shells.
|
|
- Config option: show_numeric_shortcuts (default: true)
- When false, hide 1–9 numeric badges; keep indicator on selected row
- Example key added to example config.toml
|
|
|
|
* feat: command chaining
Allow for smart completion of commands ending in && or ||
* fmt
|
|
|
|
* feat: make new arrow key behavior configurable
The arrow key behavior in interactive search was changed in #2453,
make it configurable via keys.exit_past_line_start and
keys.accept_past_line_end
* Update crates/atuin-client/config.toml
* Update crates/atuin-client/config.toml
* Update crates/atuin-client/config.toml
* I've made so many typos with these, sorry
---------
Co-authored-by: Ellie Huxtable <ellie@elliehuxtable.com>
|
|
|
|
* feat: add always_show_tabs setting
* feat(ultracompact): extra-compact options
* feat(ultracompact): enable via auto_hide_height
* feat(ultracompact): clarify comment
* fix(theming): minor tidyup to theming comment
* chore: rustfmt/clippy corrections
* chore: testing if CI issue was transient
|
|
* fix(theme): let the base colour remain unchanged
* fix(theme): split out default
* fix(theme): make base theme 'default' not an empty string
* wip(theme): return styles, not colors
* wip(theme): tidy up module structure a little
* wip(theme): removed unhandled references to foreground_color
* chore: fix cargo fmt
* feat(theme): allow crossterm-deserializable colors
|
|
* Added "fixed" to preview strategy
Uses max_preview_height as a fixed value to prevent the list from
"jumping".
* Added test for new setting
|
|
* wip: add theme
* feat(theme): basic theming approach
* feat(theme): adds theming support
* fix: split out palette without compact inspector
* fix(theme): tidy up implementation
* fix(theme): correct yaml to toml
* fix(theme): typo in comments
* chore: cheer up clippy
* fix(themes): ensure tests cannot hit real loading directory
* chore: rustfmt
* chore: rebase
* feat(themes): add rgb hexcode support
* fix(theme): add tests
* fix(theme): use builtin log levels and correct debug test
* feat(theme): adds the ability to derive from a non-base theme
* fix(theme): warn if the in-file name of a theme does not match the filename
* chore: tidy for rustfmt and clippy
* chore: tidy for rustfmt and clippy
|
|
|
|
This avoids issues with clients attempting to connect to the daemon
while it's starting, systemd creates the socket early and will queue
connections up until the daemon is ready to accept them.
|
|
|
|
* fix: gracefully exit on windows
* feat(daemon): tcp support for windows
* feat(daemon): add tcp port configuration
* fix: logging and fix compiler error
* docs: add build dependency to the readme
fix(docs): move a line up
* fix: missing field error
* docs: adds the daemon section to the default config
* fix: clippy and fmt
* feat: Update README.md
Co-authored-by: Ellie Huxtable <ellie@elliehuxtable.com>
* refactor: changes tcp port and other stuff as per request
* fix(config): update default tcp port in example config
* fix: complier error on unix
* refactor: make the cfg stuff look better
---------
Co-authored-by: Ellie Huxtable <ellie@elliehuxtable.com>
|
|
|
|
* refactor: preview_auto to use enum and different option
* fix: typo
|
|
I'd like to tidy up the root a little, and it's nice to have all the
rust crates in one place
|
|
* feat: show preview auto
* refactor: preview_auto
|
|
|
|
* Add config setting for showing tabs
* Added semicolon
|
|
* feat(stats): add linux sysadmin commands to common_subcommands
I've been using atuin on my Linux box for some time now and I have
noticed that a few commands that are used rather often are not in the
list of common_subcommands.
This change adds these commands to the list.
* feat(stats): I forgot 'apt'
|
|
* Normalize formatting
This makes the commented bits unifed and makes lists multiline and
always adds the trailing comma.
* Add nix to default config
Since we are big fans of it ;)
|
|
* feat(client): add config option keys.scroll_exits
If the config option is set the `false`, using the up/down key won't
exit the TUI when scrolled past the first/last entry.
Example:
```
[keys]
scroll_exits = false
```
The default is `true`, which is the current behavior.
* Update atuin/src/command/client/search/interactive.rs
Co-authored-by: Koichi Murase <myoga.murase@gmail.com>
* refactor: add option to config.toml
---------
Co-authored-by: Koichi Murase <myoga.murase@gmail.com>
|
|
|
|
|
|
|
|
* Allow specifying a timezone in history search/list
* Fix clippy complaints
* Add a bit more comment on supporting named timezones
* Add rudimentary tests
* Ditch local timezone test
* Timezone configuration support
* Set default timezone to `local`
* `--tz` -> `--timezone`
`--tz` is kept as a visible alias
|
|
* feat: add prefers_reduced_motion flag
* use NO_MOTION, and ensure type is bool
* update default config
---------
Co-authored-by: Ellie Huxtable <ellie@elliehuxtable.com>
|
|
* feat: make history list format configurable
* Update atuin-client/config.toml
* review: run format
---------
Co-authored-by: Ellie Huxtable <ellie@elliehuxtable.com>
|
|
* feat(search): make cursor style configurable
The vim mode of the interactive Atuin search changes the cursor style
on a mode change, but the current implementation has the following
issues.
* The terminal's cursor style set by the Atuin search remains after
Atuin exits. This causes an inconsistency with the shell's setting
for the cursor style.
* Also, the cursor style for each keymap mode is currently hardcoded
in the source code, which is not necessarily consistent with the
user's cursor-style setting in the shell.
* Since the current implementation does not set the cursor style for
the initial keymap mode but only sets the cursor style when the
keymap mode is changed, it also causes inconsistency in the cursor
style and the actual keymap when the shell's keymap and Atuin's
initial keymap mode are different.
This patch solves those issues by introducing an opt-in configuration
variable `keymap_cursor`. By default, the vim mode does not change
the cursor style because there is no way to automatically determine
the cursor style consistent with the shell settings. We enable the
feature only when the user specifies the preferred cursor style in
each mode in their config. Also, the cursor style is set on the
startup of the Atuin search (based on the initial keymap mode) and is
reset on the termination of the Atuin search (based on the shell's
keymap mode that started the Atuin search).
* chore(settings): remove dependency on crossterm
|
|
* fix: add acquire timeout to sqlite database connection
This should fix #1503
I wasn't able to trigger enough IO pressure for the SQL connection to be
a problem.
This adds `local_timeout` to the client config. This is a float, and
represents the number of seconds (units in line with the other timeouts,
though those are ints). Users may well want to reduce this if they
regularly have issues, but by default I think 2s is fine and avoids a
non-responsive system in bad situations.
* tests
|
|
* feat(search): introduce keymap-dependent vim-mode
* fix(zsh): provide widgets with specific keymaps
* fix(settings): unify "vim" and "keymap_mode"
|
|
* feat(config): add vim option to config
* feat(ui): simple vim mode
* fix(windows): windows sadly doesn't support the stuff
* feat(ui): blinking
* fix(merge)
* revert: reverts some debugging stuff
* feat(ui): changes the defaut to insert, don't know what should be the default
* feat(ui): implements some vim parity
* doc: adds this to the docs
* docs(keybindings): adds vim mode keybindsings to the list of keybindings
* refactor: rustfmt and remove the docs for pr in own repo
* refactor: use execute!
* Update atuin/src/command/client/search/interactive.rs
---------
Co-authored-by: Ellie Huxtable <ellie@elliehuxtable.com>
|
|
|
|
|
|
|