Tôi đang cố gắng tạo một ứng dụng Linux - một trình bảo vệ màn hình, trong trường hợp này - và nó đang chứng minh đáng kể khó tìm thông tin về tác vụ đơn giản làm cửa sổ toàn màn hình. Ngay cả mã của các trình bảo vệ màn hình hiện tại cũng không đề cập đến cách họ quản lý nó, và tôi chưa thấy bất kỳ chức năng rõ ràng nào như XRemoveDecoration()
.X11/GLX - Chế độ toàn màn hình?
Sau nhiều dò dẫm xung quanh, tôi đã quản lý để tạo ra một cửa sổ đó là kích thước tương tự như máy tính để bàn, với điều này:
Window win = DefaultRootWindow(disp);
XWindowAttributes getWinAttr;
XGetWindowAttributes(disp, win, &getWinAttr);
win = XCreateWindow(disp, win, 0, 0, getWinAttr.width, getWinAttr.height, 0, vInfo->depth, InputOutput, vInfo->visual, CWBorderPixel|CWColormap|CWEventMask|CWOverrideRedirect, &winAttr);
Nhưng điều đó không làm bất cứ điều gì để thoát khỏi thanh tiêu đề và biên giới. Tôi biết có một cách, rõ ràng - nhưng tôi vẫn chưa tìm thấy bất cứ điều gì thậm chí chỉ theo hướng đó mà không dựa vào một số thư viện lớn khác đang được ném trên đầu trang (mà bảo vệ màn hình hiện có chắc chắn không sử dụng).
EDIT: Vui lòng không xóa thông tin khỏi bài đăng của tôi. Có một lý do rất tốt là tôi đã chỉ ra một cách rõ ràng rằng các trình bảo vệ màn hình hiện tại không sử dụng các thư viện tùy chọn, và đó là vì tôi đã phân tích mã nguồn cho hầu hết ngày hôm qua.
Tôi đã chọn câu trả lời mà hầu hết trả lời trực tiếp câu hỏi và áp dụng cho các ứng dụng nói chung.
Nếu bạn đã tìm thấy câu hỏi này nghiên cứu xscreensavers ... vẫn áp dụng tương tự. Có, xscreensaver có API riêng của nó - đó là phức tạp, và thực sự liên quan đến việc viết nhiều dòng mã hơn (vâng, nghiêm túc). Nếu bạn muốn OpenGL trong trình bảo vệ màn hình của mình, bạn sẽ cần phải trải qua một API khác là (xlockmore, một hệ thống cạnh tranh) và một lớp tương thích dịch nó sang xscreensaver.
Tuy nhiên, xscreensaver có thể chạy bất kỳ chương trình nào có thể sử dụng cửa sổ gốc ảo (xem vroot.h) làm trình bảo vệ màn hình. Vì vậy, lời khuyên của tôi là chỉ làm điều đó - bạn sẽ có nhiều quyền kiểm soát hơn, không giới hạn API và tính di động lớn hơn. (Một ví dụ Tôi nhìn thậm chí có thể biên dịch cho Linux hoặc Windows, với cùng một tập tin!)
+1 cho rõ ràng là đã thực hiện một số nghiên cứu. – Flexo