LINUX.ORG.RU

Xlib. С ошибками не валится, но не работает.

 , ,


0

1

Есть такой код:

#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <locale.h>
#include <unistd.h>
#include <getopt.h>

#include <X11/Xlib.h>
#include <X11/Xatom.h>
#include <X11/Xutil.h>
#include <X11/Xmu/WinUtil.h>

static struct option long_opts[] =
  {
    {"id", required_argument, NULL, 'i'},
    {0, 0, 0, 0}
  };
static const char * opt_str = "i:";

int main (int argc, char **argv)
{
  Window window_id = 0;
 
  int lindex;
  int opt = getopt_long( argc, argv, opt_str, long_opts, &lindex);
  while( -1 != opt )
    {
      switch( opt )
        {
        case 'i':
          //window_id = strtoul(optarg, NULL, 0);
          sscanf(optarg, "0x%lx", &window_id);
          break;
        default:
          break;
        }
      opt = getopt_long( argc, argv, opt_str, long_opts, &lindex);
    }
 
  Display * dpy = XOpenDisplay(NULL);
  if(!dpy)
    {
      fprintf(stderr, "unable to connect to display\n");
      return 1;
    }

  //int screen_num = DefaultScreen(dpy);
  //Window root = RootWindow(dpy, screen_num);

  //window_id = XmuClientWindow(dpy, window_id);

  XUnmapWindow(dpy, window_id);

  //XActivateScreenSaver(dpy);
  printf("%d\n", window_id);

  return 0;
}
Почему-то не работает. Никакие вызовы функций X* не имеют эффекта.
Компиляция проходит тихо, без ошибок, предупреждений и шума:
gcc -g -lX11 -lXmu main.c 
Запуск, тоже:
> ./a.out --id='0x400181'
4194689
id окна можно узнать с помощью xwininfo.
Подскажите, пожалуйста, что я делаю не так.

★★★★★
Ответ на: комментарий от anonymous

Открыл дисплей и вышел , а чего хотел-то ?

Ну, вобще-то там передаётся в аргументе id окна и вызывается
XUnmapWindow(dpy, window_id);
После чего окно должно скрыться.
Ну, или если раскомментить
XActivateScreenSaver(dpy);
тоже ничего не происходит.
Точно также никакие функции, типа XMoveWindow(dpy, window_id, 1100, 20); никак не влияют на окно.

Bad_ptr ★★★★★
() автор топика
Ответ на: комментарий от XVilka

используйте XCB

спасибо за наводку. А есть для него где-то документация, помимо xcb.freedesktop.org ? А то чё-то у меня freedesktop.org уже несколько дней подряд не работает.

Bad_ptr ★★★★★
() автор топика
Ответ на: комментарий от Bad_ptr

он и у меня не работает сегодня, хотя позавчера работал. Надо подождать. Можно пока посмотреть исходники awesome wm, i3 wm, mcwm

XVilka ★★★★★
()
Ответ на: комментарий от XVilka

Без которого не создать контекст, и не будет никакгого опнгля.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.