TUI rendering broken in Konsole
Closed this issue · 3 comments
Description
Hi,
rmpc seems to be borked when running in Konsole:
It flashes a single frame correctly and then breaks.
It does work correctly if i swap to another terminal emulator e.g. kitty:
I could look into this myself, but pointers would be helpful if anyone can offer any. (honestly I would just start using kitty or something else, I have no particular fondness for konsole)
Steps to reproduce
- open Konsole
- run
rmpc
- see busted tui from description
Expected behavior
- the tui should be rendered correctly :)
What terminal emulator are you running rmpc in?
konsole 24.08.3
rmpc debuginfo
rmpc debuginfo
rmpc 0.6.0 git Arch Linux
Config path /home/john/.config/rmpc/config.ron
Theme path None
MPD:
Address "127.0.0.1:6600"
Resolved Address IpAndPort("127.0.0.1:6600")
MPD_HOST unset
MPD_PORT unset
Youtube playback:
Cache dir None
ffmpeg installed ffmpeg version n7.1 Copyright (c) 2000-2024 the FFmpeg developers
ffprobe installed ffprobe version n7.1 Copyright (c) 2007-2024 the FFmpeg developers
yt-dlp not installed Version not available
python3 installed Python 3.12.7
python-mutagen not installed NOT PRESENT
Image protocol:
Requested Auto
Resolved Kitty
TMUX false
ueberzugpp not installed Version not available
Config file
rmpc config
#![enable(implicit_some)]
#![enable(unwrap_newtypes)]
#![enable(unwrap_variant_newtypes)]
(
address: "127.0.0.1:6600",
password: None,
theme: None,
cache_dir: None,
on_song_change: None,
volume_step: 5,
scrolloff: 0,
wrap_navigation: false,
enable_mouse: true,
status_update_interval_ms: 1000,
select_current_song_on_change: false,
album_art: (
method: Auto,
max_size_px: (width: 600, height: 600),
),
keybinds: (
global: {
":": CommandMode,
",": VolumeDown,
"s": Stop,
".": VolumeUp,
"c": ToggleSingle,
"<Tab>": NextTab,
"<S-Tab>": PreviousTab,
"1": SwitchToTab("Queue"),
"2": SwitchToTab("Directories"),
"3": SwitchToTab("Artists"),
"4": SwitchToTab("Albums"),
"5": SwitchToTab("Playlists"),
"6": SwitchToTab("Search"),
"q": Quit,
"x": ToggleRandom,
">": NextTrack,
"<": PreviousTrack,
"f": SeekForward,
"v": ToggleConsume,
"p": TogglePause,
"z": ToggleRepeat,
"b": SeekBack,
"~": ShowHelp,
"I": ShowCurrentSongInfo,
"O": ShowOutputs,
},
navigation: {
"k": Up,
"j": Down,
"h": Left,
"l": Right,
"<Up>": Up,
"<Down>": Down,
"<Left>": Left,
"<Right>": Right,
"<C-k>": PaneUp,
"<C-j>": PaneDown,
"<C-h>": PaneLeft,
"<C-l>": PaneRight,
"<C-u>": UpHalf,
"N": PreviousResult,
"a": Add,
"A": AddAll,
"r": Rename,
"n": NextResult,
"g": Top,
"<Space>": Select,
"G": Bottom,
"<CR>": Confirm,
"i": FocusInput,
"J": MoveDown,
"<C-d>": DownHalf,
"/": EnterSearch,
"<C-c>": Close,
"<Esc>": Close,
"K": MoveUp,
"D": Delete,
},
queue: {
"D": DeleteAll,
"<CR>": Play,
"<C-s>": Save,
"a": AddToPlaylist,
"d": Delete,
"i": ShowInfo,
},
),
search: (
case_sensitive: false,
mode: Contains,
tags: [
(value: "any", label: "Any Tag"),
(value: "artist", label: "Artist"),
(value: "album", label: "Album"),
(value: "albumartist", label: "Album Artist"),
(value: "title", label: "Title"),
(value: "filename", label: "Filename"),
(value: "genre", label: "Genre"),
],
),
tabs: [
(
name: "Queue",
border_type: None,
pane: Split(
direction: Horizontal,
panes: [(size: "40%", pane: Pane(AlbumArt)), (size: "60%", pane: Pane(Queue))],
),
),
(
name: "Directories",
border_type: None,
pane: Pane(Directories),
),
(
name: "Artists",
border_type: None,
pane: Pane(Artists),
),
(
name: "Album Artists",
border_type: None,
pane: Pane(AlbumArtists),
),
(
name: "Albums",
border_type: None,
pane: Pane(Albums),
),
(
name: "Playlists",
border_type: None,
pane: Pane(Playlists),
),
(
name: "Search",
border_type: None,
pane: Pane(Search),
),
],
)
Relevant log output
rmpc log
2024-11-18T15:51:33.129794338Z DEBUG src/main.rs:212 message="rmpc started" rev="Arch Linux"
2024-11-18T15:51:33.176427920Z INFO src/deps.rs:99 message="Dependency check" name="ffmpeg" installed="true" version="ffmpeg version n7.1 Copyright (c) 2000-2024 the FFmpeg developers"
2024-11-18T15:51:33.225873790Z INFO src/deps.rs:99 message="Dependency check" name="ffprobe" installed="true" version="ffprobe version n7.1 Copyright (c) 2007-2024 the FFmpeg developers"
2024-11-18T15:51:33.225939734Z INFO src/deps.rs:99 message="Dependency check" name="yt-dlp" installed="false" version="Version not available"
2024-11-18T15:51:33.226009185Z INFO src/deps.rs:99 message="Dependency check" name="ueberzugpp" installed="false" version="Version not available"
2024-11-18T15:51:33.229257313Z INFO src/deps.rs:99 message="Dependency check" name="python3" installed="true" version="Python 3.12.7"
2024-11-18T15:51:33.232668798Z DEBUG src/utils.rs:234 message="devattr response" buf=""\u{1b}_Gi=31;OK\u{1b}\\\u{1b}[?62;1;4c\0""
2024-11-18T15:51:33.232684257Z DEBUG src/config/mod.rs:293 message="Image method resolved" resolved="Kitty" requested="Auto" is_tmux="false"
2024-11-18T15:51:33.232952321Z DEBUG src/mpd/client.rs:139 message="MPD client initiazed" name="command" addr="IpAndPort("127.0.0.1:6600")" version="0.23.5" handshake="OK MPD 0.23.5"
2024-11-18T15:51:33.233962771Z INFO src/context.rs:35 message="Supported commands by server" supported_commands="{"repeat", "rm", "seekid", "moveoutput", "listplaylist", "playlist", "single", "subscribe", "toggleoutput", "listall", "seek", "unmount", "stop", "unsubscribe", "commands", "listmounts", "close", "save", "outputset", "idle", "clearerror", "mixrampdelay", "playlistinfo", "replay_gain_mode", "enableoutput", "password", "seekcur", "albumart", "volume", "addid", "clear", "getvol", "listallinfo", "move", "searchaddpl", "readpicture", "decoders", "listplaylists", "currentsong", "consume", "getfingerprint", "playlistadd", "playlistdelete", "rangeid", "searchadd", "sticker", "addtagid", "listpartitions", "add", "swap", "kill", "playlistfind", "tagtypes", "ping", "notcommands", "status", "sendmessage", "crossfade", "listfiles", "newpartition", "outputs", "binarylimit", "rescan", "delete", "list", "delpartition", "mount", "count", "moveid", "mixrampdb", "channels", "plchanges", "pause", "search", "playlistclear", "deleteid", "findadd", "prio", "random", "swapid", "lsinfo", "prioid", "setvol", "stats", "update", "rename", "urlhandlers", "shuffle", "partition", "cleartagid", "listplaylistinfo", "playid", "playlistmove", "playlistsearch", "readcomments", "next", "plchangesposid", "play", "disableoutput", "readmessages", "load", "playlistid", "replay_gain_status", "config", "find", "previous"}"
2024-11-18T15:51:33.234100691Z INFO src/context.rs:42 message="Resolved config" config="Config { address: IpAndPort("127.0.0.1:6600"), password: None, cache_dir: None, volume_step: 5, scrolloff: 0, wrap_navigation: false, keybinds: KeyConfig { global: {Key { key: Char('I'), modifiers: KeyModifiers(SHIFT) }: ShowCurrentSongInfo, Key { key: Char('c'), modifiers: KeyModifiers(0x0) }: ToggleSingle, Key { key: Char('5'), modifiers: KeyModifiers(0x0) }: SwitchToTab(TabName("Playlists")), Key { key: Char(','), modifiers: KeyModifiers(0x0) }: VolumeDown, Key { key: Char(':'), modifiers: KeyModifiers(0x0) }: CommandMode, Key { key: Char('.'), modifiers: KeyModifiers(0x0) }: VolumeUp, Key { key: Char('v'), modifiers: KeyModifiers(0x0) }: ToggleConsume, Key { key: Char('z'), modifiers: KeyModifiers(0x0) }: ToggleRepeat, Key { key: Char('~'), modifiers: KeyModifiers(0x0) }: ShowHelp, Key { key: Char('4'), modifiers: KeyModifiers(0x0) }: SwitchToTab(TabName("Albums")), Key { key: Char('b'), modifiers: KeyModifiers(0x0) }: SeekBack, Key { key: Char('<'), modifiers: KeyModifiers(0x0) }: PreviousTrack, Key { key: Char('>'), modifiers: KeyModifiers(0x0) }: NextTrack, Key { key: Char('f'), modifiers: KeyModifiers(0x0) }: SeekForward, Key { key: Char('O'), modifiers: KeyModifiers(SHIFT) }: ShowOutputs, Key { key: BackTab, modifiers: KeyModifiers(SHIFT) }: PreviousTab, Key { key: Char('1'), modifiers: KeyModifiers(0x0) }: SwitchToTab(TabName("Queue")), Key { key: Tab, modifiers: KeyModifiers(0x0) }: NextTab, Key { key: Char('6'), modifiers: KeyModifiers(0x0) }: SwitchToTab(TabName("Search")), Key { key: Char('q'), modifiers: KeyModifiers(0x0) }: Quit, Key { key: Char('p'), modifiers: KeyModifiers(0x0) }: TogglePause, Key { key: Char('2'), modifiers: KeyModifiers(0x0) }: SwitchToTab(TabName("Directories")), Key { key: Char('x'), modifiers: KeyModifiers(0x0) }: ToggleRandom, Key { key: Char('s'), modifiers: KeyModifiers(0x0) }: Stop, Key { key: Char('3'), modifiers: KeyModifiers(0x0) }: SwitchToTab(TabName("Artists"))}, navigation: {Key { key: Char('r'), modifiers: KeyModifiers(0x0) }: Rename, Key { key: Char('c'), modifiers: KeyModifiers(CONTROL) }: Close, Key { key: Char('k'), modifiers: KeyModifiers(CONTROL) }: PaneUp, Key { key: Enter, modifiers: KeyModifiers(0x0) }: Confirm, Key { key: Char('k'), modifiers: KeyModifiers(0x0) }: Up, Key { key: Char('G'), modifiers: KeyModifiers(SHIFT) }: Bottom, Key { key: Char('j'), modifiers: KeyModifiers(0x0) }: Down, Key { key: Char('A'), modifiers: KeyModifiers(SHIFT) }: AddAll, Key { key: Char('j'), modifiers: KeyModifiers(CONTROL) }: PaneDown, Key { key: Up, modifiers: KeyModifiers(0x0) }: Up, Key { key: Char('i'), modifiers: KeyModifiers(0x0) }: FocusInput, Key { key: Right, modifiers: KeyModifiers(0x0) }: Right, Key { key: Char('l'), modifiers: KeyModifiers(0x0) }: Right, Key { key: Char('h'), modifiers: KeyModifiers(0x0) }: Left, Key { key: Char('h'), modifiers: KeyModifiers(CONTROL) }: PaneLeft, Key { key: Char('a'), modifiers: KeyModifiers(0x0) }: Add, Key { key: Esc, modifiers: KeyModifiers(0x0) }: Close, Key { key: Char('K'), modifiers: KeyModifiers(SHIFT) }: MoveUp, Key { key: Char('D'), modifiers: KeyModifiers(SHIFT) }: Delete, Key { key: Char('g'), modifiers: KeyModifiers(0x0) }: Top, Key { key: Char('u'), modifiers: KeyModifiers(CONTROL) }: UpHalf, Key { key: Left, modifiers: KeyModifiers(0x0) }: Left, Key { key: Char('N'), modifiers: KeyModifiers(SHIFT) }: PreviousResult, Key { key: Char('l'), modifiers: KeyModifiers(CONTROL) }: PaneRight, Key { key: Char('n'), modifiers: KeyModifiers(0x0) }: NextResult, Key { key: Char(' '), modifiers: KeyModifiers(0x0) }: Select, Key { key: Down, modifiers: KeyModifiers(0x0) }: Down, Key { key: Char('d'), modifiers: KeyModifiers(CONTROL) }: DownHalf, Key { key: Char('J'), modifiers: KeyModifiers(SHIFT) }: MoveDown, Key { key: Char('/'), modifiers: KeyModifiers(0x0) }: EnterSearch}, albums: {}, artists: {}, directories: {}, playlists: {}, search: {}, queue: {Key { key: Char('d'), modifiers: KeyModifiers(0x0) }: Delete, Key { key: Char('i'), modifiers: KeyModifiers(0x0) }: ShowInfo, Key { key: Char('s'), modifiers: KeyModifiers(CONTROL) }: Save, Key { key: Char('D'), modifiers: KeyModifiers(SHIFT) }: DeleteAll, Key { key: Enter, modifiers: KeyModifiers(0x0) }: Play, Key { key: Char('a'), modifiers: KeyModifiers(0x0) }: AddToPlaylist} }, enable_mouse: true, status_update_interval_ms: Some(1000), select_current_song_on_change: false, theme: UiConfig { draw_borders: true, background_color: None, header_background_color: None, background_color_modal: None, borders_style: Style { fg: Some(Blue), bg: None, underline_color: None, add_modifier: NONE, sub_modifier: NONE }, highlighted_item_style: Style { fg: Some(Blue), bg: None, underline_color: None, add_modifier: BOLD, sub_modifier: NONE }, current_item_style: Style { fg: Some(Black), bg: Some(Blue), underline_color: None, add_modifier: BOLD, sub_modifier: NONE }, highlight_border_style: Style { fg: Some(Blue), bg: None, underline_color: None, add_modifier: NONE, sub_modifier: NONE }, tab_bar: TabBar { enabled: true, active_style: Style { fg: Some(Black), bg: Some(Blue), underline_color: None, add_modifier: BOLD, sub_modifier: NONE }, inactive_style: Style { fg: None, bg: None, underline_color: None, add_modifier: NONE, sub_modifier: NONE } }, column_widths: [20, 38, 42], symbols: SymbolsConfig { song: "S", dir: "D", marker: "M" }, progress_bar: ProgressBarConfig { symbols: ["-", ">", " "], track_style: Style { fg: Some(Rgb(30, 32, 48)), bg: None, underline_color: None, add_modifier: NONE, sub_modifier: NONE }, elapsed_style: Style { fg: Some(Blue), bg: None, underline_color: None, add_modifier: NONE, sub_modifier: NONE }, thumb_style: Style { fg: Some(Blue), bg: Some(Rgb(30, 32, 48)), underline_color: None, add_modifier: NONE, sub_modifier: NONE } }, scrollbar: ScrollbarConfig { symbols: ["│", "█", "▲", "▼"], track_style: Style { fg: Some(White), bg: None, underline_color: None, add_modifier: NONE, sub_modifier: NONE }, ends_style: Style { fg: Some(White), bg: None, underline_color: None, add_modifier: NONE, sub_modifier: NONE }, thumb_style: Style { fg: Some(Blue), bg: None, underline_color: None, add_modifier: NONE, sub_modifier: NONE } }, show_song_table_header: true, song_table_format: [SongTableColumn { prop: Property { kind: Property(Artist), style: Some(Style { fg: None, bg: None, underline_color: None, add_modifier: NONE, sub_modifier: NONE }), default: Some(Property { kind: Text("Unknown"), style: Some(Style { fg: None, bg: None, underline_color: None, add_modifier: NONE, sub_modifier: NONE }), default: None }) }, label: "Artist", width_percent: 20, alignment: Left }, SongTableColumn { prop: Property { kind: Property(Title), style: Some(Style { fg: None, bg: None, underline_color: None, add_modifier: NONE, sub_modifier: NONE }), default: Some(Property { kind: Text("Unknown"), style: Some(Style { fg: None, bg: None, underline_color: None, add_modifier: NONE, sub_modifier: NONE }), default: None }) }, label: "Title", width_percent: 35, alignment: Left }, SongTableColumn { prop: Property { kind: Property(Album), style: Some(Style { fg: Some(White), bg: None, underline_color: None, add_modifier: NONE, sub_modifier: NONE }), default: Some(Property { kind: Text("Unknown Album"), style: Some(Style { fg: Some(White), bg: None, underline_color: None, add_modifier: NONE, sub_modifier: NONE }), default: None }) }, label: "Album", width_percent: 30, alignment: Left }, SongTableColumn { prop: Property { kind: Property(Duration), style: Some(Style { fg: None, bg: None, underline_color: None, add_modifier: NONE, sub_modifier: NONE }), default: Some(Property { kind: Text("-"), style: Some(Style { fg: None, bg: None, underline_color: None, add_modifier: NONE, sub_modifier: NONE }), default: None }) }, label: "Duration", width_percent: 15, alignment: Right }], header: HeaderConfig { rows: [HeaderConfigRow { left: [Property { kind: Text("["), style: Some(Style { fg: Some(Yellow), bg: None, underline_color: None, add_modifier: BOLD, sub_modifier: NONE }), default: None }, Property { kind: Property(Status(State)), style: Some(Style { fg: Some(Yellow), bg: None, underline_color: None, add_modifier: BOLD, sub_modifier: NONE }), default: None }, Property { kind: Text("]"), style: Some(Style { fg: Some(Yellow), bg: None, underline_color: None, add_modifier: BOLD, sub_modifier: NONE }), default: None }], center: [Property { kind: Property(Song(Title)), style: Some(Style { fg: None, bg: None, underline_color: None, add_modifier: BOLD, sub_modifier: NONE }), default: Some(Property { kind: Text("No Song"), style: Some(Style { fg: None, bg: None, underline_color: None, add_modifier: BOLD, sub_modifier: NONE }), default: None }) }], right: [Property { kind: Property(Widget(Volume)), style: Some(Style { fg: Some(Blue), bg: None, underline_color: None, add_modifier: NONE, sub_modifier: NONE }), default: None }] }, HeaderConfigRow { left: [Property { kind: Property(Status(Elapsed)), style: Some(Style { fg: None, bg: None, underline_color: None, add_modifier: NONE, sub_modifier: NONE }), default: None }, Property { kind: Text(" / "), style: Some(Style { fg: None, bg: None, underline_color: None, add_modifier: NONE, sub_modifier: NONE }), default: None }, Property { kind: Property(Status(Duration)), style: Some(Style { fg: None, bg: None, underline_color: None, add_modifier: NONE, sub_modifier: NONE }), default: None }, Property { kind: Text(" ("), style: Some(Style { fg: None, bg: None, underline_color: None, add_modifier: NONE, sub_modifier: NONE }), default: None }, Property { kind: Property(Status(Bitrate)), style: Some(Style { fg: None, bg: None, underline_color: None, add_modifier: NONE, sub_modifier: NONE }), default: None }, Property { kind: Text(" kbps)"), style: Some(Style { fg: None, bg: None, underline_color: None, add_modifier: NONE, sub_modifier: NONE }), default: None }], center: [Property { kind: Property(Song(Artist)), style: Some(Style { fg: Some(Yellow), bg: None, underline_color: None, add_modifier: BOLD, sub_modifier: NONE }), default: Some(Property { kind: Text("Unknown"), style: Some(Style { fg: Some(Yellow), bg: None, underline_color: None, add_modifier: BOLD, sub_modifier: NONE }), default: None }) }, Property { kind: Text(" - "), style: Some(Style { fg: None, bg: None, underline_color: None, add_modifier: NONE, sub_modifier: NONE }), default: None }, Property { kind: Property(Song(Album)), style: Some(Style { fg: None, bg: None, underline_color: None, add_modifier: NONE, sub_modifier: NONE }), default: Some(Property { kind: Text("Unknown Album"), style: Some(Style { fg: None, bg: None, underline_color: None, add_modifier: NONE, sub_modifier: NONE }), default: None }) }], right: [Property { kind: Property(Widget(States { active_style: Style { fg: Some(White), bg: None, underline_color: None, add_modifier: BOLD, sub_modifier: NONE }, separator_style: Style { fg: Some(White), bg: None, underline_color: None, add_modifier: NONE, sub_modifier: NONE } })), style: Some(Style { fg: Some(DarkGray), bg: None, underline_color: None, add_modifier: NONE, sub_modifier: NONE }), default: None }] }] }, default_album_art: [u8; 58599] }, album_art: AlbumArtConfig { method: Kitty, max_size_px: Size { width: 600, height: 600 } }, on_song_change: None, search: Search { case_sensitive: false, mode: Contains, tags: [SearchableTag { label: "Any Tag", value: "any" }, SearchableTag { label: "Artist", value: "artist" }, SearchableTag { label: "Album", value: "album" }, SearchableTag { label: "Album Artist", value: "albumartist" }, SearchableTag { label: "Title", value: "title" }, SearchableTag { label: "Filename", value: "filename" }, SearchableTag { label: "Genre", value: "genre" }] }, tabs: Tabs { names: [TabName("Queue"), TabName("Directories"), TabName("Artists"), TabName("Album Artists"), TabName("Albums"), TabName("Playlists"), TabName("Search")], tabs: {TabName("Album Artists"): Tab { name: TabName("Album Artists"), panes: Pane(Pane { pane: AlbumArtists, geometry: Geometry { x: 0, y: 0, width: 100, height: 100, taken_size_horiz: 0, taken_size_vert: 0 }, border: NONE, focusable: true, id: Id(5) }) }, TabName("Albums"): Tab { name: TabName("Albums"), panes: Pane(Pane { pane: Albums, geometry: Geometry { x: 0, y: 0, width: 100, height: 100, taken_size_horiz: 0, taken_size_vert: 0 }, border: NONE, focusable: true, id: Id(6) }) }, TabName("Directories"): Tab { name: TabName("Directories"), panes: Pane(Pane { pane: Directories, geometry: Geometry { x: 0, y: 0, width: 100, height: 100, taken_size_horiz: 0, taken_size_vert: 0 }, border: NONE, focusable: true, id: Id(3) }) }, TabName("Playlists"): Tab { name: TabName("Playlists"), panes: Pane(Pane { pane: Playlists, geometry: Geometry { x: 0, y: 0, width: 100, height: 100, taken_size_horiz: 0, taken_size_vert: 0 }, border: NONE, focusable: true, id: Id(7) }) }, TabName("Artists"): Tab { name: TabName("Artists"), panes: Pane(Pane { pane: Artists, geometry: Geometry { x: 0, y: 0, width: 100, height: 100, taken_size_horiz: 0, taken_size_vert: 0 }, border: NONE, focusable: true, id: Id(4) }) }, TabName("Search"): Tab { name: TabName("Search"), panes: Pane(Pane { pane: Search, geometry: Geometry { x: 0, y: 0, width: 100, height: 100, taken_size_horiz: 0, taken_size_vert: 0 }, border: NONE, focusable: true, id: Id(8) }) }, TabName("Queue"): Tab { name: TabName("Queue"), panes: Split { direction: Horizontal, panes: [SubPaneWithPosition { size: Percent(40), pane: Pane(Pane { pane: AlbumArt, geometry: Geometry { x: 0, y: 0, width: 40, height: 100, taken_size_horiz: 0, taken_size_vert: 0 }, border: NONE, focusable: false, id: Id(1) }) }, SubPaneWithPosition { size: Percent(60), pane: Pane(Pane { pane: Queue, geometry: Geometry { x: 40, y: 0, width: 60, height: 100, taken_size_horiz: 0, taken_size_vert: 0 }, border: NONE, focusable: true, id: Id(2) }) }] } }}, active_panes: [Queue, Directories, Artists, AlbumArtists, Albums, Playlists, Search, AlbumArt] } }"
2024-11-18T15:51:33.234337957Z DEBUG src/mpd/client.rs:139 message="MPD client initiazed" name="idle" addr="IpAndPort("127.0.0.1:6600")" version="0.23.5" handshake="OK MPD 0.23.5"
2024-11-18T15:51:33.234429178Z INFO src/main.rs:288 message="Application initialized successfully"
2024-11-18T15:51:33.235223873Z DEBUG src/ui/panes/album_art.rs:82 message="Searching for album art" file=".zips/Full of Hell- Nothing - When No Birds Sang.zip/Full of Hell, Nothing - When No Birds Sang - 01 Rose Tinted World.flac"
2024-11-18T15:51:33.242418542Z INFO src/deps.rs:99 message="Dependency check" name="python-mutagen" installed="false" version="NOT PRESENT"
2024-11-18T15:51:33.246508553Z DEBUG src/ui/panes/album_art.rs:84 message="Found album art" elapsed="11.285181ms" size="2876495"
2024-11-18T15:51:33.247992123Z DEBUG src/ui/image/kitty.rs:98 message="New image received" bytes="2876495"
2024-11-18T15:51:33.248028221Z DEBUG src/ui/image/kitty.rs:152 message="Compressing image data" bytes="2876495"
2024-11-18T15:51:33.248081320Z DEBUG src/utils.rs:318 message="Resolved terminal size" w="496" h="480" size="WindowSize { rows: 38, columns: 156, width: 1254, height: 573 }"
2024-11-18T15:51:33.394610951Z DEBUG src/ui/image/kitty.rs:187 message="Image data compression finished" input_bytes="2876495" compressed_bytes="451328" duration="146.576499ms"
2024-11-18T15:51:33.394843469Z DEBUG src/ui/image/kitty.rs:288 message="Transferring compressed image data" bytes="451328" img_width="480" img_height="480" rows="32" cols="62"
2024-11-18T15:51:33.414391107Z DEBUG src/ui/image/kitty.rs:306 message="Transfer finished" duration="19.548069ms"
Hi,
that is because konsole has only a partial support of kitty's image protocol. It is missing support for unicode placeholders to be more specific. These placeholders are what allows for easy integration of the album art into the component flow of rmpc's tui.
Konsole also has support for sixel and iterm2 protocols which you can enable in the config, but it has issues clearing the screen when the image is supposed to hide. That might be an issue on rmpc's side, but other terminals are clearing properly...
Lastly, there is ueberzugpp which should work fine, but it has its own set of issues with it being an external process and a separate layer window on wayland.
To sum it up, sadly, terminal graphics support is unfortunately quite a mess. Kitty and terminals that support it fully (only kitty and ghostty at the moment as far as I know) are your best bet for rmpc.
ah ok, that all makes a lot of sense, thanks for the reply :) I'll close this then since there's nothing to do here.
fyi rmpc works wonderfully well with the Alacrity fork with sixel support : https://github.com/ayosec/alacritty