Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class Greeter {
- private LightDM.Greeter greeter;
- private Gtk.Window main_win;
- public Greeter() {
- greeter = new LightDM.Greeter();
- main_win = new Gtk.Window();
- var screen = Gdk.Screen.get_default();
- Gdk.Rectangle geo;
- screen.get_monitor_geometry(screen.get_primary_monitor(), out geo);
- main_win.set_default_size(geo.width, geo.height);
- main_win.move(geo.x, geo.y);
- var pixbuf = new Gdk.Pixbuf.from_file ("greeter.png");
- var s = createRootSurface(Gdk.Display.get_default());
- var c = new Cairo.Context(s);
- Gdk.cairo_set_source_pixbuf(c, pixbuf, 0,0);
- c.paint();
- Gdk.flush();
- X.ClearWindow (Gdk.X11Display.get_xdisplay (screen.get_display ()), Gdk.X11Window.get_xid (screen.get_root_window ()));
- main_win.show_all();
- }
- private static Cairo.Surface? createRootSurface(Gdk.Screen screen) {
- var visual = screen.get_system_visual();
- Gdk.flush();
- var display = new X.Display(screen.get_display().get_name());
- if (display == null) return null;
- display.set_close_down_mode(X.RetainPermanent);
- var pixmap = X.CreatePixmap(display, Gdk.X11Window.get_xid(screen.get_root_window()), screen.width(), screen.height(), visual.get_depth());
- unowned X.Display xdisplay = Gdk.X11Display.get_xdisplay(screen.get_display());
- var surface = new Cairo.XlibSurface(xdisplay, pixmap, Gdk.X11Visual.get_xvisual(visual), screen.width(), screen.height());
- X.SetWindowBackgroundPixmap(xdisplay, Gdk.X11Window.get_xid(screen.get_root_window()), surface.get_drawable());
- return surface;
- }
- static int main(string[] args) {
- Gtk.init(ref args);
- var greeter = new Greeter();
- Gtk.main();
- return 0;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement