Repository navigation
Description
mpv Information
mpv v0.41.0 Copyright © 2000-2025 mpv/MPlayer/mplayer2 projects
built on Aug 28 2026 19:44:41
libplacebo version: v7.360.1
FFmpeg version: n9.0.1 (runtime n9.0.2)
FFmpeg library versions:
libavcodec 63.1.101 (runtime 63.1.102)
libavdevice 63.1.101 (runtime 63.1.102)
libavfilter 12.1.101 (runtime 12.1.102)
libavformat 63.1.101 (runtime 63.1.102)
libavutil 61.1.101 (runtime 61.1.102)
libswresample 7.1.101 (runtime 7.1.102)
libswscale 10.1.101 (runtime 10.1.102)Other Information
- Linux version: Arch Linux
- Kernel Version: 7.2.11-arch1-1
- GPU Model: not relevant, reproduces even with --no-video
- Mesa/GPU Driver Version: Mesa 26.2.5-1, but not relevant
- Window Manager and Version: no window manager or compositor, the environment can be reproduced with kmscon-launch-gui for example
- Source of mpv: pacman/extra
evdev is present, consider the environment TTY-stream deficient.
Reproduction Steps
When run barebones in pure TTY-stream deficient DRM envrionments (e.g. when run via kmscon-launch-gui, the standard and only way of running another "GUI" program in kmscon) mpv doesn't react to keyboard and pointer/click events and it's impossible even to quit or close it normally.
Expected Behavior
I expected mpv to react to at least keyboard events and perform the bound actions like seek, speed, quit, etc, as it does when, e.g., run without kmscon-launch-gui (in that case with --no-video option obviously).
Actual Behavior
There was no reaction. Had to kill the process.
Log File
[ 0.002][v][cplayer] mpv v0.41.0 Copyright © 2000-2025 mpv/MPlayer/mplayer2 projects
[ 0.002][v][cplayer] built on Aug 28 2026 19:44:41
[ 0.002][v][cplayer] libplacebo version: v7.360.1
[ 0.002][v][cplayer] FFmpeg version: n9.0.1 (runtime n9.0.2)
[ 0.002][v][cplayer] FFmpeg library versions:
[ 0.002][v][cplayer] libavcodec 63.1.101 (runtime 63.1.102)
[ 0.002][v][cplayer] libavdevice 63.1.101 (runtime 63.1.102)
[ 0.002][v][cplayer] libavfilter 12.1.101 (runtime 12.1.102)
[ 0.002][v][cplayer] libavformat 63.1.101 (runtime 63.1.102)
[ 0.002][v][cplayer] libavutil 61.1.101 (runtime 61.1.102)
[ 0.002][v][cplayer] libswresample 7.1.101 (runtime 7.1.102)
[ 0.002][v][cplayer] libswscale 10.1.101 (runtime 10.1.102)
[ 0.002][v][cplayer] Configuration: -Dbuildtype=plain -Dprefix=/usr -Dlibexecdir=lib -Dsbindir=bin -Dauto_features=auto -Dwrap_mode=nodownload -Db_pie=true -Dpython.bytecompile=1 -Dlibmpv=true -Dgl-x11=enabled -Dcaca=disabled -Dcdda=enabled -Ddrm=enabled -Ddvbin=enabled -Ddvdnav=enabled -Dlibarchive=enabled -Dopenal=enabled -Dsdl2-audio=enabled -Dsdl2-video=enabled -Dsdl2-gamepad=enabled
[ 0.002][v][cplayer] List of enabled features: alsa build-date cdda cplugins cuda-hwaccel cuda-interop dmabuf-interop-gl dmabuf-wayland drm dvbin dvdnav egl egl-drm egl-wayland egl-x11 ffmpeg ffnvcodec gbm gl gl-x11 glibc-thread-name glob glob-posix gpl iconv jack javascript jpeg lcms2 libarchive libass libavdevice libbluray libdl libplacebo linux-fstatfs luajit memfd-create memrchr openal pipewire posix posix-shm ppoll pthread-condattr-setclock pulse rubberband rubberband-3 sdl2-audio sdl2-gamepad sdl2-video sixel sndio sndio-1-9 uchardet vaapi vaapi-drm vaapi-wayland vaapi-x11 vdpau vdpau-gl-x11 vector vk-khr-display vt.h vulkan wayland wayland-protocols-1-32 wayland-protocols-1-38 wayland-protocols-1-39 wayland-protocols-1-41 wayland-protocols-1-44 wayland-protocols-1-47 x11 x11-clipboard xv zimg zimg-st428 zlib
[ 0.002][v][cplayer] Command line options: '--no-config' '--gpu-debug' '--log-file=./output.txt' '--no-video' './test.mp4'
[ 0.002][v][cplayer] mpv v0.41.0 Copyright © 2000-2025 mpv/MPlayer/mplayer2 projects
[ 0.002][v][cplayer] built on Aug 28 2026 19:44:41
[ 0.002][v][cplayer] libplacebo version: v7.360.1
[ 0.002][v][cplayer] FFmpeg version: n9.0.1 (runtime n9.0.2)
[ 0.002][v][cplayer] FFmpeg library versions:
[ 0.002][v][cplayer] libavcodec 63.1.101 (runtime 63.1.102)
[ 0.002][v][cplayer] libavdevice 63.1.101 (runtime 63.1.102)
[ 0.002][v][cplayer] libavfilter 12.1.101 (runtime 12.1.102)
[ 0.002][v][cplayer] libavformat 63.1.101 (runtime 63.1.102)
[ 0.002][v][cplayer] libavutil 61.1.101 (runtime 61.1.102)
[ 0.002][v][cplayer] libswresample 7.1.101 (runtime 7.1.102)
[ 0.002][v][cplayer] libswscale 10.1.101 (runtime 10.1.102)
[ 0.002][v][cplayer] Configuration: -Dbuildtype=plain -Dprefix=/usr -Dlibexecdir=lib -Dsbindir=bin -Dauto_features=auto -Dwrap_mode=nodownload -Db_pie=true -Dpython.bytecompile=1 -Dlibmpv=true -Dgl-x11=enabled -Dcaca=disabled -Dcdda=enabled -Ddrm=enabled -Ddvbin=enabled -Ddvdnav=enabled -Dlibarchive=enabled -Dopenal=enabled -Dsdl2-audio=enabled -Dsdl2-video=enabled -Dsdl2-gamepad=enabled
[ 0.002][v][cplayer] List of enabled features: alsa build-date cdda cplugins cuda-hwaccel cuda-interop dmabuf-interop-gl dmabuf-wayland drm dvbin dvdnav egl egl-drm egl-wayland egl-x11 ffmpeg ffnvcodec gbm gl gl-x11 glibc-thread-name glob glob-posix gpl iconv jack javascript jpeg lcms2 libarchive libass libavdevice libbluray libdl libplacebo linux-fstatfs luajit memfd-create memrchr openal pipewire posix posix-shm ppoll pthread-condattr-setclock pulse rubberband rubberband-3 sdl2-audio sdl2-gamepad sdl2-video sixel sndio sndio-1-9 uchardet vaapi vaapi-drm vaapi-wayland vaapi-x11 vdpau vdpau-gl-x11 vector vk-khr-display vt.h vulkan wayland wayland-protocols-1-32 wayland-protocols-1-38 wayland-protocols-1-39 wayland-protocols-1-41 wayland-protocols-1-44 wayland-protocols-1-47 x11 x11-clipboard xv zimg zimg-st428 zlib
[ 0.002][d][global] home path: '' -> '-'
[ 0.002][d][global] user path: '~~home/' -> ''
[ 0.002][d][global] user path: '~~old_home/' -> ''
[ 0.002][v][cplayer] Setting option 'config' = 'no' (flags = 8)
[ 0.002][v][cplayer] Setting option 'gpu-debug' = '' (flags = 8)
[ 0.002][v][cplayer] Setting option 'log-file' = './output.txt' (flags = 8)
[ 0.002][v][cplayer] Setting option 'video' = 'no' (flags = 8)
[ 0.006][d][osc] Loading lua script @osc.lua...
[ 0.006][d][ytdl_hook] Loading lua script @ytdl_hook.lua...
[ 0.007][d][stats] Loading lua script @stats.lua...
[ 0.007][d][console] Loading lua script @console.lua...
[ 0.007][d][auto_profiles] Loading lua script @auto_profiles.lua...
[ 0.007][d][osc] loading mp.defaults
[ 0.007][d][ytdl_hook] loading mp.defaults
[ 0.007][d][select] Loading lua script @select.lua...
[ 0.007][d][stats] loading mp.defaults
[ 0.007][d][positioning] Loading lua script @positioning.lua...
[ 0.007][d][commands] Loading lua script @commands.lua...
[ 0.007][d][auto_profiles] loading mp.defaults
[ 0.008][d][positioning] loading mp.defaults
[ 0.008][d][ytdl_hook] loading @ytdl_hook.lua
[ 0.008][d][context_menu] Loading lua script @context_menu.lua...
[ 0.009][v][clipboard] Initialized vo clipboard backend.
[ 0.009][d][stats] loading @stats.lua
[ 0.009][v][cplayer] Waiting for scripts...
[ 0.010][d][commands] loading mp.defaults
[ 0.011][d][positioning] loading @positioning.lua
[ 0.011][d][osc] loading @osc.lua
[ 0.011][d][positioning] reading options for positioning
[ 0.011][d][positioning] script-opts/positioning.conf not found.
[ 0.011][d][positioning] lua-settings/positioning.conf not found.
[ 0.011][d][cplayer] Run command: define-section, flags=64, args=[name="input_positioning", contents="", flags="default"]
[ 0.011][d][cplayer] Run command: enable-section, flags=64, args=[name="input_positioning", flags="allow-hide-cursor+allow-vo-dragging"]
[ 0.011][d][cplayer] Run command: define-section, flags=64, args=[name="input_forced_positioning", contents="", flags="force"]
[ 0.011][d][cplayer] Run command: enable-section, flags=64, args=[name="input_forced_positioning", flags="allow-hide-cursor+allow-vo-dragging"]
[ 0.011][d][select] loading mp.defaults
[ 0.012][d][auto_profiles] loading @auto_profiles.lua
[ 0.012][d][ytdl_hook] reading options for ytdl_hook
[ 0.012][d][ytdl_hook] script-opts/ytdl_hook.conf not found.
[ 0.012][d][ytdl_hook] lua-settings/ytdl_hook.conf not found.
[ 0.012][d][console] loading mp.defaults
[ 0.014][d][commands] loading @commands.lua
[ 0.015][d][context_menu] loading mp.defaults
[ 0.015][d][console] loading @console.lua
[ 0.016][d][select] loading @select.lua
[ 0.016][d][context_menu] loading @context_menu.lua
[ 0.017][d][context_menu] reading options for context_menu
[ 0.018][d][context_menu] script-opts/context_menu.conf not found.
[ 0.018][d][stats] reading options for stats
[ 0.018][d][stats] script-opts/stats.conf not found.
[ 0.018][d][stats] lua-settings/stats.conf not found.
[ 0.018][d][select] reading options for select
[ 0.018][d][select] script-opts/select.conf not found.
[ 0.018][d][select] lua-settings/select.conf not found.
[ 0.018][d][context_menu] lua-settings/context_menu.conf not found.
[ 0.018][d][commands] reading options for commands
[ 0.018][d][commands] script-opts/commands.conf not found.
[ 0.018][d][commands] lua-settings/commands.conf not found.
[ 0.019][d][cplayer] Run command: define-section, flags=64, args=[name="input_select", contents="", flags="default"]
[ 0.019][d][cplayer] Run command: enable-section, flags=64, args=[name="input_select", flags="allow-hide-cursor+allow-vo-dragging"]
[ 0.019][d][cplayer] Run command: define-section, flags=64, args=[name="input_forced_select", contents="", flags="force"]
[ 0.019][d][cplayer] Run command: enable-section, flags=64, args=[name="input_forced_select", flags="allow-hide-cursor+allow-vo-dragging"]
[ 0.019][d][cplayer] Run command: define-section, flags=64, args=[name="input_commands", contents="", flags="default"]
[ 0.019][d][cplayer] Run command: enable-section, flags=64, args=[name="input_commands", flags="allow-hide-cursor+allow-vo-dragging"]
[ 0.019][d][cplayer] Run command: define-section, flags=64, args=[name="input_forced_commands", contents="", flags="force"]
[ 0.019][d][cplayer] Run command: enable-section, flags=64, args=[name="input_forced_commands", flags="allow-hide-cursor+allow-vo-dragging"]
[ 0.019][d][auto_profiles] Destroying client handle...
[ 0.019][d][cplayer] Run command: define-section, flags=64, args=[name="input_stats", contents="", flags="default"]
[ 0.019][d][console] reading options for console
[ 0.019][d][console] script-opts/console.conf not found.
[ 0.019][d][console] lua-settings/console.conf not found.
[ 0.019][d][cplayer] Run command: enable-section, flags=64, args=[name="input_stats", flags="allow-hide-cursor+allow-vo-dragging"]
[ 0.020][d][cplayer] Run command: define-section, flags=64, args=[name="input_forced_stats", contents="", flags="force"]
[ 0.020][d][cplayer] Run command: enable-section, flags=64, args=[name="input_forced_stats", flags="allow-hide-cursor+allow-vo-dragging"]
[ 0.020][d][cplayer] Run command: define-section, flags=64, args=[name="showhide", contents="mouse_move script-binding osc/__keybinding1\nmouse_leave script-binding osc/__keybinding2\n", flags="force"]
[ 0.021][d][cplayer] Run command: define-section, flags=64, args=[name="showhide_wc", contents="mouse_move script-binding osc/__keybinding3\nmouse_leave script-binding osc/__keybinding4\n", flags="force"]
[ 0.021][d][cplayer] Run command: enable-section, flags=64, args=[name="showhide", flags="allow-hide-cursor+allow-vo-dragging"]
[ 0.021][d][cplayer] Run command: enable-section, flags=64, args=[name="showhide_wc", flags="allow-hide-cursor+allow-vo-dragging"]
[ 0.021][d][cplayer] Run command: define-section, flags=64, args=[name="input", contents="mbtn_left script-binding osc/__keybinding5\nmbtn_mid script-binding osc/__keybinding6\nmbtn_right script-binding osc/__keybinding7\nshift+mbtn_left script-binding osc/__keybinding8\nwheel_up script-binding osc/__keybinding9\nwheel_down script-binding osc/__keybinding10\nmbtn_left_dbl ignore\nshift+mbtn_left_dbl ignore\nmbtn_right_dbl ignore\n", flags="force"]
[ 0.021][d][cplayer] Run command: enable-section, flags=64, args=[name="input", flags=""]
[ 0.021][d][cplayer] Run command: define-section, flags=64, args=[name="window-controls", contents="mbtn_left script-binding osc/__keybinding11\n", flags="force"]
[ 0.021][d][cplayer] Run command: enable-section, flags=64, args=[name="window-controls", flags=""]
[ 0.021][d][cplayer] Run command: define-section, flags=64, args=[name="input_console", contents="", flags="default"]
[ 0.021][d][cplayer] Run command: enable-section, flags=64, args=[name="input_console", flags="allow-hide-cursor+allow-vo-dragging"]
[ 0.021][d][cplayer] Run command: define-section, flags=64, args=[name="input_forced_console", contents="", flags="force"]
[ 0.021][d][cplayer] Run command: enable-section, flags=64, args=[name="input_forced_console", flags="allow-hide-cursor+allow-vo-dragging"]
[ 0.021][d][osc] reading options for osc
[ 0.021][d][osc] script-opts/osc.conf not found.
[ 0.021][d][osc] lua-settings/osc.conf not found.
[ 0.022][v][cplayer] Set property: user-data/osc/visibility="auto" -> 1
[ 0.022][d][cplayer] Run command: disable-section, flags=64, args=[name="input"]
[ 0.022][d][cplayer] Run command: disable-section, flags=64, args=[name="window-controls"]
[ 0.022][v][cplayer] Set property: user-data/osc/margins={"l":0,"r":0,"t":0,"b":0} -> 1
[ 0.022][v][cplayer] Done loading scripts.
[ 0.022][d][global] state path: 'watch_later' -> '-'
[ 0.022][v][cplayer] Running hook: auto_profiles/on_before_start_file
[ 0.022][v][cplayer] Failed sending hook command auto_profiles/on_before_start_file. Removing hook.
[ 0.022][d][global] state path: 'watch_later' -> '-'
[ 0.022][v][cplayer] Running hook: auto_profiles/on_load
[ 0.022][v][cplayer] Failed sending hook command auto_profiles/on_load. Removing hook.
[ 0.022][v][cplayer] Running hook: ytdl_hook/on_load
[ 0.023][v][cplayer] Running hook: ytdl_hook/on_load
[ 0.023][v][ytdl_hook] playlist hook
[ 0.023][v][ifo_dvdnav] Opening ./test.mp4
[ 0.023][v][cplayer] Set property: user-data/osc/margins={"l":0,"r":0,"t":0,"b":0} -> 1
[ 0.023][d][osc] osc_init
[ 0.024][v][cplayer] Set property: user-data/osc/margins={"l":0,"r":0,"t":0,"b":0} -> 1
[ 0.024][d][osd/libass] ASS library version: 0x1705000 (runtime 0x1705000)
[ 0.024][v][osd/libass] libass API version: 0x1705000
[ 0.024][v][osd/libass] libass source: commit: 0.17.5-0-g4a05d8127f525943ebf45fdc6497c9e665947f0d
[ 0.024][v][osd/libass] Shaper: FriBidi 1.0.16 (SIMPLE) HarfBuzz-ng 15.0.0 (COMPLEX)
[ 0.024][v][osd/libass] Setting up fonts...
[ 0.029][v][bdmv/bluray] Opening ./test.mp4
[ 0.029][v][file] Opening ./test.mp4
[ 0.029][d][file] resize stream to 131072 bytes, drop 0 bytes
[ 0.029][d][file] Stream opened successfully.
[ 0.029][v][demux] Trying demuxers for level=normal.
[ 0.029][d][demux] Trying demuxer: directory (force-level: normal)
[ 0.038][d][demux] Trying demuxer: disc (force-level: normal)
[ 0.038][d][demux] Trying demuxer: edl (force-level: normal)
[ 0.038][d][demux] Trying demuxer: cue (force-level: normal)
[ 0.038][d][demux] Trying demuxer: rawaudio (force-level: normal)
[ 0.038][d][demux] Trying demuxer: rawvideo (force-level: normal)
[ 0.038][d][demux] Trying demuxer: mkv (force-level: normal)
[ 0.038][d][demux] Trying demuxer: libarchive (force-level: normal)
[ 0.039][d][demux] Trying demuxer: lavf (force-level: normal)
[ 0.045][v][lavf] Found 'mov,mp4,m4a,3gp,3g2,mj2' at score=100 size=2048.
[ 0.094][v][demux] Detected file format: mov,mp4,m4a,3gp,3g2,mj2 (libavformat)
[ 0.094][v][cplayer] Opening done: ./test.mp4
[ 0.115][v][osd/libass] Using font provider fontconfig
[ 0.115][v][osd/libass] Done.
[ 0.117][v][find_files] Loading external files in ./
[ 0.117][v][cplayer] Running hook: auto_profiles/on_preloaded
[ 0.117][v][cplayer] Failed sending hook command auto_profiles/on_preloaded. Removing hook.
[ 0.117][v][cplayer] Running hook: ytdl_hook/on_preloaded
[ 0.117][d][cplayer] Run command: define-section, flags=64, args=[name="input_osc", contents="", flags="default"]
[ 0.117][v][lavf] select track 1
[ 0.117][v][lavf] refresh track 1 (audio)
[ 0.117][v][lavf] refresh seek to 0.000000
[ 0.118][v][lavf] execute seek (to 0.000000 flags 32)
[ 0.118][i][cplayer] ○ Video --vid=1 (h264 640x480 25 fps) [default]
[ 0.118][i][cplayer] ● Audio --aid=1 (aac 1ch 44100 Hz 65 kbps) [default]
[ 0.118][v][lavf] seek done
[ 0.118][v][ad] Codec list:
[ 0.118][v][ad] aac - AAC (Advanced Audio Coding)
[ 0.118][v][ad] aac_fixed (aac) - AAC (Advanced Audio Coding)
[ 0.118][v][ad] Opening decoder aac
[ 0.118][v][ad] Requesting 1 threads for decoding.
[ 0.120][v][ad] Selected decoder: aac - AAC (Advanced Audio Coding)
[ 0.120][v][af] User filter list:
[ 0.120][v][af] (empty)
[ 0.120][v][cplayer] Starting playback...
[ 0.121][d][cplayer] Run command: enable-section, flags=64, args=[name="input_osc", flags="allow-hide-cursor+allow-vo-dragging"]
[ 0.121][d][cplayer] Run command: define-section, flags=64, args=[name="input_forced_osc", contents="", flags="force"]
[ 0.121][d][cplayer] Run command: enable-section, flags=64, args=[name="input_forced_osc", flags="allow-hide-cursor+allow-vo-dragging"]
[ 0.122][v][af] [in] 44100Hz mono 1ch floatp
[ 0.122][v][af] [userspeed] 44100Hz mono 1ch floatp
[ 0.122][v][af] [userspeed] (disabled)
[ 0.122][v][af] [convert] 44100Hz mono 1ch floatp
[ 0.122][v][ao] Trying audio driver 'pipewire'
[ 0.122][v][ao/pipewire] requested format: 44100 Hz, mono channels, floatp
[ 0.122][v][ao/pipewire] Headers version: 1.6.8
[ 0.122][v][ao/pipewire] Library version: 1.6.10
[ 0.130][v][ao/pipewire] Core user: ***
[ 0.130][v][ao/pipewire] Core host: ***
[ 0.130][v][ao/pipewire] Core version: 1.6.10
[ 0.130][v][ao/pipewire] Core name: pipewire-0
[ 0.130][d][ao/pipewire] Stream state changed: old_state=unconnected state=connecting error=(null)
[ 0.132][v][ao/pipewire] using soft-buffer of 8820 samples.
[ 0.132][i][cplayer] AO: [pipewire] 44100Hz mono 1ch floatp
[ 0.132][v][cplayer] AO: Description: PipeWire audio output
[ 0.132][v][af] [convert] (disabled)
[ 0.132][v][af] [out] 44100Hz mono 1ch floatp
[ 0.132][d][ao/pipewire] Stream state changed: old_state=connecting state=paused error=(null)
[ 0.133][v][cplayer] audio ready
[ 0.133][v][cplayer] starting audio playback
[ 0.133][v][cplayer] playback restart complete @ 0.023220, audio=playing, video=eof
[ 0.134][d][osc] osc_init
[ 0.135][v][cplayer] Set property: user-data/osc/margins={"l":0,"r":0,"t":0,"b":0} -> 1
[ 0.158][d][ao/pipewire] Stream state changed: old_state=paused state=streaming error=(null)
[ 10.811][d][cplayer] Run command: quit, flags=73, args=[code="4"]
[ 10.811][v][cplayer] EOF code: 5
[ 10.811][d][ad] Uninit decoder.
[ 10.811][d][cplayer] Terminating demuxers...
[ 10.811][d][ao/pipewire] Stream state changed: old_state=streaming state=paused error=(null)
[ 10.812][d][cplayer] Done terminating demuxers.
[ 10.813][v][cplayer] finished playback, success (reason 3)
[ 10.813][v][cplayer] Running hook: ytdl_hook/on_after_end_file
[ 10.813][d][cplayer] Run command: del, flags=64, args=[name="user-data/mpv/ytdl/json-subprocess-result"]
[ 10.813][i][cplayer] Exiting... (Quit)
[ 10.814][d][cplayer] Run command: del, flags=64, args=[name="user-data/mpv/console"]
[ 10.814][d][cplayer] Run command: del, flags=64, args=[name="user-data/osc"]
[ 10.814][d][console] Destroying client handle...
[ 10.814][d][stats] Destroying client handle...
[ 10.814][d][commands] Destroying client handle...
[ 10.814][d][positioning] Destroying client handle...
[ 10.814][d][ytdl_hook] Destroying client handle...
[ 10.814][d][select] Destroying client handle...
[ 10.814][d][context_menu] Destroying client handle...
[ 10.815][d][osc] Destroying client handle...
Sample Files
No response
I carefully read all instruction and confirm that I did the following:
- I tested and confirmed that the issue exists with the latest release version or newer.
- I provided all required information including system and mpv version.
- I produced the log file with the exact same set of files, parameters, and conditions used in "Reproduction Steps", with the addition of
--log-file=output.txt. - I produced the log file while the behaviors described in "Actual Behavior" were actively observed.
- I attached the full, untruncated log file.
- I attached the backtrace in the case of a crash.
Activity
llyyr commentedon Oct 29, 2026
Assuming your log isn't incomplete, mpv didn't receive any inputs in those logs. I don't think this is a mpv bug. mpv works perfectly fine in tty, see what kmscon is doing.
mplevako commentedon Oct 29, 2026
As I see it,
kmscon-launch-guitemporarily releases its exclusive GPU/DRM control so thatmpvcan grab it. Technically there's nokmsconafter that point andmpvruns "alone".Not sure, but as I understood
mpvexpects key presses to arrive throughstdinandkmsconprovides it andmpvworks properly (as I mentioned in the Expected Behavious para.), which is irrelevant as the main problem shows in the specific pure DRM mode, the only mode possible to get any video output frommpv, where nostdinis available.CounterPillow commentedon Oct 29, 2026
Launching from a classic Linux kernel VT will absolutely make mpv's DRM video output/video context give you a stdin.
mplevako commentedon Oct 29, 2026
I run
mpvwithinkmsconviakmscon-launch-guiand in this specific pure DRM modempvdoesn't react to key events 🤷♂️llyyr commentedon Oct 29, 2026
kmscon doesn't forward keyboard input to the terminal while it's backgrounded, and it's neither an X server nor a Wayland compositor. So it doesn't support any of the ways mpv can understand input.
Adding a libinput backend to an app like mpv is silly, so this probably won't ever work without changes to kmscon or running mpv inside a compositor
You can follow kmscon/kmscon#406 (comment)
mplevako commentedon Oct 29, 2026
Why is it silly?
llyyr commentedon Oct 29, 2026
It adds considerable code to mpv for something that only matters for kmscon. mpv is well served by using Wayland/X protocols for input, and /dev/tty directly when running without them.
You can simply run mpv inside a Wayland compositor.
mplevako commentedon Oct 29, 2026
Doesn't seem like a pure DRM environment, does it?
CounterPillow commentedon Oct 29, 2026
llyyr didn't say it was. kmscon is also not a pure DRM environment; specifically, it eats your input here by backgrounding itself but not giving mpv a proper TTY.
llyyr commentedon Oct 29, 2026
no it's not, and neither is kmscon. mpv works perfectly well inside a pure DRM environment, if it doesn't feel free to report a bug.
There's nothing much else to add to this issue, if you want things to work then it's a bug report for kmscon, or a feature request for mpv. Maybe someone will come along to add and maintain a libinput backend in mpv for this use case if they use it often enough.
mplevako commentedon Oct 29, 2026
The now default VT console in Fedora and Gnome OS?
CounterPillow commentedon Oct 29, 2026
Use case for using a broken VT that relies on arbitrary sleeps to not race drm master release?
llyyr commentedon Oct 29, 2026
Report a bug for Fedora and Gnome OS for defaulting to a broken application? Not sure what you want us to do here.
Most likely this is something that was overlooked by them when they made kmscon the default, or deemed not an important enough use case. In either case, you'll have to report the bug to them to get some kind of resolution to your problem, not to mpv.
13 remaining items
[-]No reaction to keyboard events when using kmscon[/-][+]No reaction to keyboard events when run barebones in pure DRM envrionments[/+]CounterPillow commentedon Oct 29, 2026
Again: DRM has no concept of input.
CounterPillow commentedon Oct 29, 2026
@na-na-hi Are keymaps handled by libinput, or will mpv need to grow keymap handling?
kmscon already has handling for keymaps, which means they could provide a proper terminal to applications it launches, which would sidestep this bug in kmscon's emulation of Linux VTs entirely.
mplevako commentedon Oct 29, 2026
Well, then again,
mpvdoes.CounterPillow commentedon Oct 29, 2026
Sure, feel free to use it through the terminal or
--input-ipc-server, both of which work fine regardless of the VO.mplevako commentedon Oct 29, 2026
Sorry, didn't pay attention to that option, but anyhow, having read about it now, I cannot understand how it can help handle keypress events. Could you please elaborate.
[-]No reaction to keyboard events when run barebones in pure DRM envrionments[/-][+]No reaction to keyboard and mouse events when run barebones in pure DRM envrionments[/+]CounterPillow commentedon Oct 29, 2026
It's meant for providing non-terminal non-display-protocol input, such as when you're running with no terminal attached and without X11 or Wayland, using a generic IPC. Your complaint has nothing to do with DRM, and "but mpv has a concept of input" is not a rebuttal to this being unrelated to DRM. What you ran into is that kmscon does not properly emulate VTs, what you want is either for mpv to use libinput or for kmscon to emulate the terminal properly, what you're claiming is that this is mpv not supporting input in a DRM context. mpv supports input in a DRM context, just not for your specific use case, which is kmscon launching mpv without the terminal attached to stdin.
mplevako commentedon Oct 29, 2026
First of all I want you to finally stop fixating on
kmscon. I don't know why there're issues with this IMHO easiest way of reproducing the problem, but, again, I also have nothing against using other options of puttingmpvinside a raw absolutely/totaly/completeley 100% kmscon-free DRM context. I don't know, do you, for example, have any issues with tinkering withsystemdandsystemd-runto achieve that?Second, is it possible to make
mpvreact to mouse events so that it can be closed by clicking the 🗙?CounterPillow commentedon Oct 29, 2026
I will not stop focusing on kmscon. I know you can run mpv without a terminal input in other ways. That does not change that this is fundamentally either a feature request to mpv to add a libinput backend, or a bug report to kmscon to fix its VT emulation, but it's not a bug in mpv's DRM support.
kasper93 commentedon Oct 29, 2026
Can you create PR with such change? Thanks.
na-na-hi commentedon Oct 30, 2026
It is handled similar to wayland, using xkbcommon.
Done.
mplevako commentedon Oct 30, 2026
@Dudemanguy Whenever you have a moment, could you please remove the
down-upstreammislabelling, the issue has already accumulated more than enough confusion and misinterpretation without it.avih commentedon Oct 30, 2026
@mplevako please stop adding comments.
We all undrstand the issue, it's not an mpv issue, and many of your comments don't add new info.
So please take a breath before you comment, and if you think we could live without it, then please don't comment.
[-]No reaction to keyboard and mouse events when run barebones in pure DRM envrionments[/-][+]No reaction to keyboard, pointer, touch, and/or stylus/pen when run barebones in pure TTY-stream deficient DRM envrionments[/+]