Is there a way to make MPV have terminal-only OSD? #3387

TiGR opened this Issue Aug 2, 2016 · 8 comments


None yet

5 participants

TiGR commented Aug 2, 2016

I have one special use for mpv: I play videos on big external LED/Projector screen for large auditory. Thus, I don't need any OSD go on video screen (no messages, no OSC, no progressbar), but I need full OSD in terminal. Thus, in my config profile I have this:


This used to work last year (whatever version of MPV was used then). That is, I could still see all messages (such as changing brightness or panscan) in terminal, but absolutely nothing over the video. I've tried looking through man but the only way I could disable over video OSD was by setting osd-level to 0. But it silences terminal messages also.

I suppose the problem is in this commit: d1a46c2 (use-text-osd removed).

So, the question is: what is the proper way to achieve this in newer versions of MPV? And if there isn't maybe you could revert that commit or make it work somehow?

Using mpv 0.18.1 (and 0.16.0) on Kubuntu 14.04.4 64bit.

garoto commented Aug 4, 2016 edited

Try emulating the old behavior via a custom crafted term-status-msg with the help of the various Property Expansions avaiable.

Something like:
term-status-msg="${playback-time} / ${duration} / (${percent-pos}%)\nVolume: ${volume}%\nPlaylist Pos: ${playlist-pos}/${playlist-count}\nSaturation:\t${saturation}\nBrightness:\t${brightness}\nGamma:\t${gamma}\nZoom:\t${video-zoom}"

Seems to work nicely together with no-osc and osd-level=0 in my brief testing.

TiGR commented Aug 8, 2016 edited

This is quite quirky-hacky way to do what I need. I ended up with this config:


Thus, I just made texts 100% transparent, but this is kinda really dirty and hacky way to just simply disable onscreen display. use-text-osd was quite straightforward and clean way to do this.


Hi, I use mpv to play movies on large screen in summer cinema and large auditory. I compiled the version 0.19 and revert the commit to have use-text-osd again and seems to work well on Kubuntu 14.04.4 64bit, if you want to try, I pass a link to install it.

wm4 commented Aug 25, 2016

Would it help if term-osd=force would disable OSD rendering, or if there were a separate term-osd=always or something similar with the same effect?

@wm4 wm4 added the feature request label Aug 25, 2016
haasn commented Aug 25, 2016 edited

Random thought: What about having a separate osd level for terminal and OSD?

You could also include the setting “auto“ (for terminal: pick the OSD message level if there's no GUI, and vice versa for GUI) to mimic the current behavior (i.e. the new default would have term-osd-level=auto and gui-osd-level=1)

Probaly too messy to implement but it might be a good idea for UX

Edit: Probably too redundant with --term-osd. I think it would be better to just have a --term-osd=only option or so.


Disable OSD rendering with term-osd=only sounds great.

TiGR commented Aug 27, 2016

Yes, that would be nice. The only thing is that I don't think that only is the proper word here. Maybe exclusive would be better? However, it is not that important, only is also fine.

@wm4 wm4 added a commit that closed this issue Aug 28, 2016
@wm4 wm4 player: add option to disable video OSD
Normally, OSD can be disabled with --osd-level=0. But this also disables
terminal OSD, and some users want _only_ the terminal OSD. Add
--video-osd=no, which essentially disables the video OSD.

Ideally, it should probably be possible to control terminal and video
OSD levels independently, but that would require separate OSD timers
(and other state) for both components, so don't do it. But because the
current situation isn't too ideal, add a threat to the manpage that
might be changed in the future.

Fixes #3387.
@wm4 wm4 closed this in 5086b2d Aug 28, 2016
wm4 commented Aug 28, 2016

Implemented a bit differently.

Random thought: What about having a separate osd level for terminal and OSD?

I think this would be ideal, but would require quite some refactoring. At least you'd need to keep OSD state per component (VO/terminal), rather than having a single state.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment