log-format=multiline-with-logs flickers a lot on some terminal emulators #1204

Open
opened 2026-05-02 00:07:39 +00:00 by yuki0iq · 1 comment

Describe the bug

multiline-with-logs updates redraw both the bar and running jobs list even when only one of them is changed, leading to flicker in some cases

Steps To Reproduce

  1. Build something with a relatively big closure (like a NixOS system) and a lot of quick fetches and some builds. A reliable way of triggering the bug is by using a chroot store and a package with an uncached override, e.g. like
T="$(mktemp -d --tmpdir nixstore.XXXX)"
printf "%s\n" "$T" # Don't forget to clean this directory afterwards
nix-build -E 'with import <nixpkgs>{};mpv.override{youtubeSupport=false;}' --store "$T" --no-out-link

Expected behavior

If nom-build (nix-output-monitor 2.1.8) is used instead, there is significantly less flicker. Looks like Lix rerenders currently running jobs part even if it's not changed.

nix --version output

$ nix --version
nix (Lix, like Nix) 2.95.1
System type: x86_64-linux
Additional system types: i686-linux, x86_64-v1-linux, x86_64-v2-linux, x86_64-v3-linux
Features: gc, signed-caches
System configuration file: /etc/nix/nix.conf
User configuration files: /home/yuki/.config/nix/nix.conf:/etc/xdg/nix/nix.conf:/home/yuki/.local/share/flatpak/exports/etc/xdg/nix/nix.conf:/var/lib/flatpak/exports/etc/xdg/nix/nix.conf:/home/yuki/.nix-profile/etc/xdg/nix/nix.conf:/home/yuki/.local/state/nix/profile/etc/xdg/nix/nix.conf:/home/yuki/.local/state/nix/profile/etc/xdg/nix/nix.conf:/etc/profiles/per-user/yuki/etc/xdg/nix/nix.conf:/nix/var/nix/profiles/default/etc/xdg/nix/nix.conf:/run/current-system/sw/etc/xdg/nix/nix.conf:/nix/store/8mgs32scnc18ir24js0h2xngznhvqmsm-gnome-settings-daemon-49.1/etc/xdg/nix/nix.conf
Store directory: /nix/store
State directory: /nix/var/nix
Data directory: /nix/store/2sh4cpgxyrvxn7w9snqznhla0xmwsr7g-lix-2.95.1/share

Additional context

I have stumbled upon this behavior on 2.94, and maybe even some time before, but I can't remember. Haven't reported before because I couldn't think of way to make the issue reproduce without resorting to deleting random store paths or resetting state or something, and was too afraid to ask about it

Terminals I tested that have this issue:

  • vte 0.82.3 (ptyxis 50.1, xfce4-terminal 1.2.0)
  • xterm 407
  • rio 0.3.11 (flickers, but rarely)
  • darktile 0.0.11 (nom flickers too)
  • kernel tty 6.18.24 (nom flickers too)

Some terminals do not have this issue, instead "bar" part of multiline jumps up and down as jobs finish and create. These terminals are:

  • kitty 0.46.2
  • alacritty 0.17.0
  • foot 1.26.1
  • ghostty 1.3.1
  • konsole 26.04.0
  • cosmic-term 1.0.10
  • contour 0.6.2.8008
  • wezterm 0-unstable-2026-03-31
## Describe the bug `multiline-with-logs` updates redraw both the bar and running jobs list even when only one of them is changed, leading to flicker in some cases ## Steps To Reproduce 1. Build something with a relatively big closure (like a NixOS system) and a lot of quick fetches and some builds. A reliable way of triggering the bug is by using a chroot store and a package with an uncached override, e.g. like ```shell T="$(mktemp -d --tmpdir nixstore.XXXX)" printf "%s\n" "$T" # Don't forget to clean this directory afterwards nix-build -E 'with import <nixpkgs>{};mpv.override{youtubeSupport=false;}' --store "$T" --no-out-link ``` ## Expected behavior If `nom-build` (nix-output-monitor 2.1.8) is used instead, there is significantly less flicker. Looks like Lix rerenders currently running jobs part even if it's not changed. ## `nix --version` output ``` $ nix --version nix (Lix, like Nix) 2.95.1 System type: x86_64-linux Additional system types: i686-linux, x86_64-v1-linux, x86_64-v2-linux, x86_64-v3-linux Features: gc, signed-caches System configuration file: /etc/nix/nix.conf User configuration files: /home/yuki/.config/nix/nix.conf:/etc/xdg/nix/nix.conf:/home/yuki/.local/share/flatpak/exports/etc/xdg/nix/nix.conf:/var/lib/flatpak/exports/etc/xdg/nix/nix.conf:/home/yuki/.nix-profile/etc/xdg/nix/nix.conf:/home/yuki/.local/state/nix/profile/etc/xdg/nix/nix.conf:/home/yuki/.local/state/nix/profile/etc/xdg/nix/nix.conf:/etc/profiles/per-user/yuki/etc/xdg/nix/nix.conf:/nix/var/nix/profiles/default/etc/xdg/nix/nix.conf:/run/current-system/sw/etc/xdg/nix/nix.conf:/nix/store/8mgs32scnc18ir24js0h2xngznhvqmsm-gnome-settings-daemon-49.1/etc/xdg/nix/nix.conf Store directory: /nix/store State directory: /nix/var/nix Data directory: /nix/store/2sh4cpgxyrvxn7w9snqznhla0xmwsr7g-lix-2.95.1/share ``` ## Additional context I have stumbled upon this behavior on 2.94, and maybe even some time before, but I can't remember. Haven't reported before because I couldn't think of way to make the issue reproduce without resorting to deleting random store paths or resetting state or something, and was too afraid to ask about it Terminals I tested that have this issue: - vte 0.82.3 (ptyxis 50.1, xfce4-terminal 1.2.0) - xterm 407 - rio 0.3.11 (flickers, but rarely) - darktile 0.0.11 (nom flickers too) - kernel tty 6.18.24 (nom flickers too) Some terminals do not have this issue, instead "bar" part of multiline jumps up and down as jobs finish and create. These terminals are: - kitty 0.46.2 - alacritty 0.17.0 - foot 1.26.1 - ghostty 1.3.1 - konsole 26.04.0 - cosmic-term 1.0.10 - contour 0.6.2.8008 - wezterm 0-unstable-2026-03-31
Member

Yes, (currently) the bar implementation is quite basic, and re-renders completely on every change (including to the logs above it). Lix supports synchronized updates which explains the lack of flicker on most of the terminals you mentioned not having the issue, except for Konsole where I don't know what it does better.

Yes, (currently) the bar implementation is quite basic, and re-renders completely on every change (including to the logs above it). Lix supports [synchronized updates](https://gitlab.com/gnachman/iterm2/-/wikis/synchronized-updates-spec) which explains the lack of flicker on most of the terminals you mentioned not having the issue, except for Konsole where I don't know what it does better.
Sign in to join this conversation.
No milestone
No project
No assignees
2 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
lix-project/lix#1204
No description provided.