summaryrefslogtreecommitdiffstats
path: root/video/out
diff options
context:
space:
mode:
authorNRK <nrk@disroot.org>2022-11-22 21:42:30 +0600
committerDudemanguy <random342@airmail.cc>2022-12-05 02:03:25 +0000
commit25b66256d7ff48254b2055a066e29f260414112f (patch)
treea650e5cbbfedfdffbffa723fd01a6388c723dd25 /video/out
parent4574dd5dc6ff75b1fc693afceec59fbcd51ccd4c (diff)
downloadmpv-25b66256d7ff48254b2055a066e29f260414112f.tar.bz2
mpv-25b66256d7ff48254b2055a066e29f260414112f.tar.xz
player: add window-id property
currently only supported on x11. one practical use-case of this is wanting to embed something (such as dmenu) into the mpv window to use as a menu/selection. there might be other use-cases as well (e.g doing some shenanigans with `xdotool` or whatnot). it's currently possible to: * listen for 'current-window-scale' change (to check if the window has been created or not) * call an external tool like `xdo` or `xdotool` and grab the xid from mpv's pid. however it adds unnecessary dependency on external tools when mpv is fully capable of easily providing this information. closes: #10918
Diffstat (limited to 'video/out')
-rw-r--r--video/out/vo.h1
-rw-r--r--video/out/x11_common.c6
2 files changed, 7 insertions, 0 deletions
diff --git a/video/out/vo.h b/video/out/vo.h
index c7ac9c9c59..98e13cd890 100644
--- a/video/out/vo.h
+++ b/video/out/vo.h
@@ -126,6 +126,7 @@ enum mp_voctrl {
VOCTRL_GET_DISPLAY_FPS, // double*
VOCTRL_GET_HIDPI_SCALE, // double*
VOCTRL_GET_DISPLAY_RES, // int[2]
+ VOCTRL_GET_WINDOW_ID, // int64_t*
/* private to vo_gpu and vo_gpu_next */
VOCTRL_EXTERNAL_RESIZE,
diff --git a/video/out/x11_common.c b/video/out/x11_common.c
index 5dc844da4d..b6c191d376 100644
--- a/video/out/x11_common.c
+++ b/video/out/x11_common.c
@@ -2118,6 +2118,12 @@ int vo_x11_control(struct vo *vo, int *events, int request, void *arg)
((int *)arg)[1] = selected_disp->rc.y1 - selected_disp->rc.y0;
return VO_TRUE;
}
+ case VOCTRL_GET_WINDOW_ID: {
+ if (!x11->window)
+ return VO_NOTAVAIL;
+ *(int64_t *)arg = x11->window;
+ return VO_TRUE;
+ }
case VOCTRL_GET_HIDPI_SCALE:
*(double *)arg = x11->dpi_scale;
return VO_TRUE;