LINUX.ORG.RU

написание собственного wm/de


0

0

Подскажите, с чего начать разбираться в теме написания своего wm или de? Может быть есть некое хауту для чайников и тд? Даже не знаю с какой стороны подступиться к этой теме. Сильно ли будет тормозить гуй написанный на PyQt? Может быть у кого-то есть общие, частные или злосчастные рекомендации? Благодарю

поищите информацию о FVVM (wm с безграничными настройками).

а DE - комплект программ, в который входят все повседневные проги(панели, менеджер файлов, текстовый редактор...)

существующие DE - Gnome, KDE, LXDE (это из тех, которыми пользуются) удовлетворяют запросам современности, а для остальных есть куча WM'ов и сторонних программ, с помощью которых можно самому сформировать своё рабочее окружение на свой вкус...

мне вот достаточно awesome, emacs, geekie, firefox, roxterm, vlc, mc.

jeuta ★★★★
()

Начать писать WM нужно с изучения стандартов FDO и изучения того, как работают X-ы.

CyberTribe ★★
()

> Подскажите, с чего начать разбираться в теме написания своего wm или de?

Почитай сорцы какого-нибудь очень просто wm, например, dwm.

ss-v
()
Ответ на: комментарий от ss-v

например, dwm.

Сорцы dwm ужасны. Лучше смотреть на i3, fvwm, или вообще на

/* TinyWM is written by Nick Welch <mack@incise.org>, 2005.
 *
 * This software is in the public domain
 * and is provided AS IS, with NO WARRANTY. */

#include <X11/Xlib.h>

#define MAX(a, b) ((a) > (b) ? (a) : (b))

int main()
{
    Display * dpy;
    Window root;
    XWindowAttributes attr;
    XButtonEvent start;
    XEvent ev;

    if(!(dpy = XOpenDisplay(0x0))) return 1;

    root = DefaultRootWindow(dpy);

    XGrabKey(dpy, XKeysymToKeycode(dpy, XStringToKeysym("F1")), Mod1Mask, root,
             True, GrabModeAsync, GrabModeAsync);
    XGrabButton(dpy, 1, Mod1Mask, root, True, ButtonPressMask, GrabModeAsync,
                GrabModeAsync, None, None);
    XGrabButton(dpy, 3, Mod1Mask, root, True, ButtonPressMask, GrabModeAsync,
                GrabModeAsync, None, None);

    for(;;)
    {
        XNextEvent(dpy, &ev);
        if(ev.type == KeyPress && ev.xkey.subwindow != None)
            XRaiseWindow(dpy, ev.xkey.subwindow);
        else if(ev.type == ButtonPress && ev.xbutton.subwindow != None)
        {
            XGrabPointer(dpy, ev.xbutton.subwindow, True,
                         PointerMotionMask|ButtonReleaseMask, GrabModeAsync,
                         GrabModeAsync, None, None, CurrentTime);
            XGetWindowAttributes(dpy, ev.xbutton.subwindow, &attr);
            start = ev.xbutton;
        }
        else if(ev.type == MotionNotify)
        {
            int xdiff, ydiff;
            while(XCheckTypedEvent(dpy, MotionNotify, &ev));
            xdiff = ev.xbutton.x_root - start.x_root;
            ydiff = ev.xbutton.y_root - start.y_root;
            XMoveResizeWindow(dpy, ev.xmotion.window,
                              attr.x + (start.button==1 ? xdiff : 0),
                              attr.y + (start.button==1 ? ydiff : 0),
                              MAX(1, attr.width + (start.button==3 ? xdiff : 0)),
                              MAX(1, attr.height + (start.button==3 ? ydiff : 0)));
        }
        else if(ev.type == ButtonRelease)
            XUngrabPointer(dpy, CurrentTime);
    }
}
yoghurt ★★★★★
()
Ответ на: комментарий от yoghurt

> Сорцы dwm ужасны.

И чем они так не понравились?

Лучше смотреть на i3, fvwm, или вообще на

За i3 спасибо :) а fvwm - он жирноват, для того, чтобы просто въехать, что там понаписано, слишком много времени нужно.

ss-v
()
Ответ на: комментарий от ss-v

>За i3 спасибо :) а fvwm - он жирноват, для того, чтобы просто въехать, что там понаписано, слишком много времени нужно.

Если совсем эта тема незнакома то по fvwm достаточно документацию почитать как что работает и настраивается.

Lucky1 ★★★
()

Для начала читай про Х, как работет, зачем нужен. Потом уже читай сорцы какого-нибудь ВМ.

Zhbert ★★★★★
()

Изучать х-сервер и читать сорцы слишком общие рекомендации. Книги есть может какие по xserver, XORG?

dens-dens-dens
() автор топика
Ответ на: комментарий от ss-v

>> Сорцы dwm ужасны.

И чем они так не понравились?

Они в одном файле =) Это, конечно, круто, но производит впечатление некой макаронности. Я как то разглядывал их, но мне быстро надоело

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

> Они в одном файле =) Это, конечно, круто, но производит впечатление некой макаронности. Я как то разглядывал их, но мне быстро надоело

2 KLOC для одного файла не так уж и много, тем более что там код достаточно простой.

ss-v
()

Вдогонку. Может, ну его нахер Qt и писать, используя только XLib. Что в таком случае я потеряю? Портабельность на другие ОС? Кучу удобных библиотечных функций, что ещё?

Не приведет ли это к велосипедному переписыванию функционала Qt/Gtk?

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

> Не приведет ли это к велосипедному переписыванию функционала Qt/Gtk?

qt/gtk как-то не юниксвей. motif твой выбор.

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