Программное перемещение окон приложений на рабочем столе в Gnome или KDE

Я хочу переместить окно приложения на рабочий стол с помощью программы на C ++. Как мне это сделать, мне нужно решение для обеих ситуаций.

  1. Когда у меня есть исходный код приложения, которое я хочу переместить.

  2. Перемещайте окна другого приложения, написав внешнюю программу.


person rajat    schedule 24.08.2012    source источник
comment
Вы про окна других приложений? Сомневаюсь, что есть стандартный способ. Соответствующие спецификации (EWMH, ICCCM, NET) управляют тем, как клиент взаимодействует с оконным менеджером, но не тем, как он может влиять на других клиентов.   -  person Stefan Majewsky    schedule 24.08.2012


Ответы (1)


Внешний сценарий Bash:

xdotool   search --onlyvisible --class dolphin   windowmove 13 37
#                                         ^                 ^   ^
#                                   window class            X & Y coordinates

Для получения дополнительной информации об этом используйте xdotool search, xdotool windowmove и man xdotool.

Пример C ++:

#include <cstdlib>
#include <string>
#include <sstream>

using namespace std;

int main()
{
    string cls="dolphin";
    int x=13, y=37;

    stringstream s;
    s<<"xdotool search --onlyvisible --class "<<cls<<" windowmove "<<x<<" "<<y;

    system(s.str().c_str());

    return 0;
}

И минимальный пример:

#include <stdlib.h>

int main()
{
    system("xdotool search --onlyvisible --class dolphin windowmove 13 37");
    return 0;
}
person Oleh Prypin    schedule 24.08.2012
comment
что такое оконный класс? как найти класс окна для приложения, которое я хочу переместить? - person rajat; 24.08.2012
comment
@rajat Я думаю, это должно быть то же самое, что и имя процесса. Вам не обязательно использовать эти классы, посмотрите xdotool search информацию. - person Oleh Prypin; 24.08.2012
comment
@rajat Я только что добавил это к ответу. - person Oleh Prypin; 24.08.2012
comment
Большое спасибо! , это было быстро ! - person rajat; 24.08.2012