Amirmohammad Mehdipour

Computer Engineering Student | Linux & Philosophy Enthusiast


1. آموزش استفاده از X11 برای برنامه نویسی گرافیکی در لینوکس

این آموزش ترجمه ی فارسی آموزشی نسبتا قدیمی و انگلیسی توسط یک آقای فرانسویه:))))) که این آموزش اینحاست و میتونید ازش استفاده کنید اما من این آموزش رو ساده و خلاصه کردم که شاید نباید میکردم اما شما از روی هر کدوم که خواستید میتونید پیش برید زیاد فرقی به حالتون نمیکنه. فرض رو بر این گرفتم که برنامه نویسی و C بلدید و همینطور یه ذره با لایبرری های گرافیکی ور رفتین.

1.1. اول از اینجا شروع میکنیم

سعی میکنم بیشتر توی کامنتا توضیح بدم که بیشتر کد ببینید و عادت کنید:

		    
#include <X11/Xlib.h> // هر برنامه ی X11 قطعا باید خود X11 رو include کنه
#include <assert.h>   // واسه ی تست کردن مقادیر (به صورت بسیا تنبلانه) :))))))
#include <unistd.h>   // برای استفاده از Sleep

#define NIL (0)  // یه اسم واسه ی پوینتر پوچ
		
		

اول باید به سرور متصل شیم (X11 به صورت کلاینت سرور کار میکنه).

Display *display = XOpenDisplay(NIL);
		    assert(display);
		

XOpenDisplay() وقتی شکست بخوره NIL بر میگردونه.

میخوایم یه پنجره بسازیم ولی این پنچره به رنگ پس زمینه نیاز داره. توی این لایبرری رنگ ها هر کدوم یه Integer هستن که encode شدن.

int black_color = BlackPixel(display, DefaultScreen(display));
		    int white_color = WhitePixel(display, DefaultScreen(display));
		

همون طور که میبینید بیشتر توابع در X11 متغیر display رو صدا میزنن که همون مقدار برگشته از XOpenDisplay است که پارامتر اول توابع هم هست. و این به خاطر ساختار کلاینت سروری X11 هست.

حالا پنجره مون رو میسازیم:

Window w = XCreateSimpleWindow(display, DefaultRootWindow(display), 0, 0, 
                    200, 100, 0, black_color, black_color);
		

فرق بین XCreateSimpleWindow و XCreateWindow در مقدار پارامتر هاشونه(فعلا همینو بدونین کافیه).

ادامه دارد...

Author: Amir

Created: 2026-06-13 Sat 00:22