Bug 2440541 - atuin fish init uses deprecated `bind -k` which is removed in fish 4.x
Summary: atuin fish init uses deprecated `bind -k` which is removed in fish 4.x
Keywords:
Status: CLOSED ERRATA
Alias: None
Product: Fedora
Classification: Fedora
Component: atuin
Version: rawhide
Hardware: x86_64
OS: Linux
unspecified
medium
Target Milestone: ---
Assignee: Cristian Le
QA Contact:
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2026-02-18 07:24 UTC by Anders
Modified: 2026-02-19 12:09 UTC (History)
3 users (show)

Fixed In Version: atuin-18.11.0-1.fc45
Clone Of:
Environment:
Last Closed: 2026-02-19 12:09:52 UTC
Type: ---
Embargoed:


Attachments (Terms of Use)

Description Anders 2026-02-18 07:24:50 UTC
On Fedora 43 with:

- fish 4.2.0
- atuin 18.6.1-10.fc43.x86_64

Starting an interactive fish shell after sourcing atuin results in:

bind: the -k/--key syntax is no longer supported. See `bind --help` and `bind --key-names`

Tracing shows that the Fedora-shipped init script contains deprecated bindings:

/usr/libexec/atuin/atuin-init.fish:
    bind -M insert -k up _atuin_bind_up

(rpm -qf /usr/libexec/atuin/atuin-init.fish -> atuin-18.6.1-10.fc43.x86_64)

Note: `atuin init fish | grep -n "bind -k"` produces no output; the deprecated binding originates from /usr/libexec/atuin/atuin-init.fish shipped in the Fedora RPM.

Fish 4.x removed support for `bind -k` and `bind --key`. As a result, fish prints a warning at startup.

Reproducible: Always

Steps to Reproduce:
1. Install Fedora 43
2. sudo dnf install fish atuin
3. Verify versions:
   fish --version
   atuin --version
4. Add to ~/.config/fish/config.fish:

   if status is-interactive
       atuin init fish | source
   end

5. Start a new fish shell

Actual Results:
Fish prints:
bind: the -k/--key syntax is no longer supported. See `bind --help` and `bind --key-names`

Expected Results:
No warnings should be printed.
Atuin keybindings should use fish 4 compatible syntax.

Suggested Fix:
Replace:
    bind -M insert -k up _atuin_bind_up
With fish 4 compatible escape sequence bindings, e.g.:
    bind -M insert \e\[A _atuin_bind_up
    bind -M insert \eOA _atuin_bind_up
(or conditionally apply bindings based on fish version)

Workaround:
Set ATUIN_NOBIND=true and manually bind keys using fish 4 compatible syntax.

Comment 1 Cristian Le 2026-02-18 15:57:19 UTC
> `atuin init fish | grep -n "bind -k"` produces no output

Interesting. Is it dependent on if fish package is already present? If so, would adding `fish` as a BuildRequires create the format you expect?

If that is the case it sounds like we need to rebuild atuin for each terminal update.

Comment 2 Anders 2026-02-18 16:07:51 UTC
(In reply to Cristian Le from comment #1)
> > `atuin init fish | grep -n "bind -k"` produces no output
> 
> Interesting. Is it dependent on if fish package is already present? If so,
> would adding `fish` as a BuildRequires create the format you expect?
> 
> If that is the case it sounds like we need to rebuild atuin for each
> terminal update.

It does not appear to be related to BuildRequires or whether fish was present at build time.

`atuin init fish` itself does not emit `bind -k`, but the RPM ships a static init script at /usr/libexec/atuin/atuin-init.fish that still contains `bind -k`.

So this looks like a packaging/init-script issue rather than something requiring rebuilds for each fish update.

Comment 3 Cristian Le 2026-02-18 16:40:23 UTC
(In reply to Anders from comment #2)
> It does not appear to be related to BuildRequires or whether fish was
> present at build time.
> 
> `atuin init fish` itself does not emit `bind -k`, but the RPM ships a static
> init script at /usr/libexec/atuin/atuin-init.fish that still contains `bind
> -k`.
> 
> So this looks like a packaging/init-script issue rather than something
> requiring rebuilds for each fish update.

That file is created here https://src.fedoraproject.org/rpms/atuin/blob/rawhide/f/atuin.spec#_146

That said, I just checked on my local file `atuin-18.6.1-10.fc43.x86_64` and I do not find `bind -k`. Can you give me the line number where that is and maybe +- 5 lines around it?

Do you mean the line
```
$ grep -ne "bind.*-k" /usr/libexec/atuin/atuin-init.fish 
79:bind -M insert -k up _atuin_bind_up
```
if that is the case it is from `atuin init fish`
```
$ atuin init fish | grep -ne "bind.*-k"
79:bind -M insert -k up _atuin_bind_up
```
(note the different grep syntax used)

If this is fixed in upstream though, I plan to update atuin to 18.11.0 soon^{tm}

Comment 4 Anders 2026-02-18 18:06:14 UTC
(In reply to Cristian Le from comment #3)
> (In reply to Anders from comment #2)
> > It does not appear to be related to BuildRequires or whether fish was
> > present at build time.
> > 
> > `atuin init fish` itself does not emit `bind -k`, but the RPM ships a static
> > init script at /usr/libexec/atuin/atuin-init.fish that still contains `bind
> > -k`.
> > 
> > So this looks like a packaging/init-script issue rather than something
> > requiring rebuilds for each fish update.
> 
> That file is created here
> https://src.fedoraproject.org/rpms/atuin/blob/rawhide/f/atuin.spec#_146
> 
> That said, I just checked on my local file `atuin-18.6.1-10.fc43.x86_64` and
> I do not find `bind -k`. Can you give me the line number where that is and
> maybe +- 5 lines around it?
> 
> Do you mean the line
> ```
> $ grep -ne "bind.*-k" /usr/libexec/atuin/atuin-init.fish 
> 79:bind -M insert -k up _atuin_bind_up
> ```
> if that is the case it is from `atuin init fish`
> ```
> $ atuin init fish | grep -ne "bind.*-k"
> 79:bind -M insert -k up _atuin_bind_up
> ```
> (note the different grep syntax used)
> 
> If this is fixed in upstream though, I plan to update atuin to 18.11.0
> soon^{tm}

Ah, you're right. This is fixed upstream in 18.9.0
(https://github.com/atuinsh/atuin/issues/2803#issuecomment-3479247506).

On my system:

$ grep -nE 'bind.*-k' /usr/libexec/atuin/atuin-init.fish
79:bind -M insert -k up _atuin_bind_up

My earlier grep was too strict (`grep "bind -k"`), which missed the
`bind -M insert -k ...` form. Using `grep -nE 'bind.*-k'` shows it clearly.

Thanks for double-checking!

Comment 5 Cristian Le 2026-02-18 18:36:36 UTC
Very well. I am updating atuin to 18.11.0 (18.12.1 requires more work) tomorrow and that will close this bug. Thanks for the report.

Comment 6 Fedora Update System 2026-02-19 12:06:30 UTC
FEDORA-2026-9a278688c0 (atuin-18.11.0-1.fc45, rust-metrics-exporter-prometheus-0.17.2-1.fc45, and 2 more) has been submitted as an update to Fedora 45.
https://bodhi.fedoraproject.org/updates/FEDORA-2026-9a278688c0

Comment 7 Fedora Update System 2026-02-19 12:09:52 UTC
FEDORA-2026-9a278688c0 (atuin-18.11.0-1.fc45, rust-metrics-exporter-prometheus-0.17.2-1.fc45, and 2 more) has been pushed to the Fedora 45 stable repository.
If problem still persists, please make note of it in this bug report.


Note You need to log in before you can comment on or make changes to this bug.