| @@ -149,6 +149,7 @@ static void set_screensaver(struct vo_x11_state *x11, bool enabled); · 148 unmodified lines |
| 149 | 149 | static void vo_x11_selectinput_witherr(struct vo *vo, Display *display, |
| 150 | 150 | Window w, long event_mask); |
| 151 | 151 | static void vo_x11_setlayer(struct vo *vo, bool ontop); |
| 152 | +static void vo_x11_set_in_taskbar(struct vo *vo, bool in); |
| 152 | 153 | static void vo_x11_xembed_handle_message(struct vo *vo, XClientMessageEvent *ce); |
| 153 | 154 | static void vo_x11_xembed_send_message(struct vo_x11_state *x11, long m[4]); |
| 154 | 155 | static void vo_x11_move_resize(struct vo *vo, bool move, bool resize, |
| @@ -1832,6 +1833,8 @@ void vo_x11_config_vo_window(struct vo *vo) · 1677 unmodified lines |
| 1832 | 1833 | |
| 1833 | 1834 | if (opts->ontop) |
| 1834 | 1835 | vo_x11_setlayer(vo, opts->ontop); |
| 1836 | + if (!opts->show_in_taskbar) |
| 1837 | + vo_x11_set_in_taskbar(vo, opts->show_in_taskbar); |
| 1835 | 1838 | |
| 1836 | 1839 | vo_x11_fullscreen(vo); |
| 1837 | 1840 | |
| @@ -1892,6 +1895,19 @@ static void vo_x11_setlayer(struct vo *vo, bool ontop) · 54 unmodified lines |
| 1892 | 1895 | } |
| 1893 | 1896 | } |
| 1894 | 1897 | |
| 1898 | +static void vo_x11_set_in_taskbar(struct vo *vo, bool in) |
| 1899 | +{ |
| 1900 | + struct vo_x11_state *x11 = vo->x11; |
| 1901 | + if (x11->parent || !x11->window) |
| 1902 | + return; |
| 1903 | + |
| 1904 | + if (x11->wm_type & (vo_wm_SKIP_TASKBAR)) { |
| 1905 | + char *state = "_NET_WM_STATE_SKIP_TASKBAR"; |
| 1906 | + x11_set_ewmh_state(x11, state, !in); |
| 1907 | + MP_VERBOSE(x11, "NET style set skip taskbar (%d).\n", !in); |
| 1908 | + } |
| 1909 | +} |
| 1910 | + |
| 1895 | 1911 | static bool rc_overlaps(struct mp_rect rc1, struct mp_rect rc2) |
| 1896 | 1912 | { |
| 1897 | 1913 | return mp_rect_intersection(&rc1, &rc2); // changes the first argument |
| @@ -2076,6 +2092,8 @@ int vo_x11_control(struct vo *vo, int *events, int request, void *arg) · 178 unmodified lines |
| 2076 | 2092 | vo_x11_fullscreen(vo); |
| 2077 | 2093 | if (opt == &opts->ontop) |
| 2078 | 2094 | vo_x11_setlayer(vo, opts->ontop); |
| 2095 | + if (opt == &opts->show_in_taskbar) |
| 2096 | + vo_x11_set_in_taskbar(vo, opts->show_in_taskbar); |
| 2079 | 2097 | if (opt == &opts->border || opt == &opts->title_bar) |
| 2080 | 2098 | vo_x11_decoration(vo, opts->border, opts->title_bar); |
| 2081 | 2099 | if (opt == &opts->all_workspaces) |