Advertisement
Guest User

Untitled

a guest
Oct 2nd, 2017
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Vala 1.71 KB | None | 0 0
  1. class Greeter {
  2.  
  3.     private LightDM.Greeter greeter;
  4.     private Gtk.Window main_win;
  5.    
  6.     public Greeter() {
  7.    
  8.         greeter = new LightDM.Greeter();
  9.         main_win = new Gtk.Window();
  10.         var screen = Gdk.Screen.get_default();
  11.         Gdk.Rectangle geo;
  12.  
  13.  
  14.         screen.get_monitor_geometry(screen.get_primary_monitor(), out geo);
  15.         main_win.set_default_size(geo.width, geo.height);
  16.         main_win.move(geo.x, geo.y);
  17.        
  18.         var pixbuf = new Gdk.Pixbuf.from_file ("greeter.png");
  19.         var s = createRootSurface(Gdk.Display.get_default());
  20.         var c = new Cairo.Context(s);
  21.         Gdk.cairo_set_source_pixbuf(c, pixbuf, 0,0);
  22.         c.paint();
  23.  
  24.         Gdk.flush();
  25.         X.ClearWindow (Gdk.X11Display.get_xdisplay (screen.get_display ()), Gdk.X11Window.get_xid (screen.get_root_window ()));
  26.         main_win.show_all();
  27.    
  28.     }
  29.  
  30.     private static Cairo.Surface? createRootSurface(Gdk.Screen screen) {
  31.        
  32.         var visual = screen.get_system_visual();
  33.        
  34.         Gdk.flush();
  35.        
  36.         var display = new X.Display(screen.get_display().get_name());
  37.        
  38.         if (display == null) return null;
  39.                
  40.         display.set_close_down_mode(X.RetainPermanent);
  41.        
  42.         var pixmap = X.CreatePixmap(display, Gdk.X11Window.get_xid(screen.get_root_window()), screen.width(), screen.height(), visual.get_depth());
  43.         unowned X.Display xdisplay = Gdk.X11Display.get_xdisplay(screen.get_display());
  44.         var surface = new Cairo.XlibSurface(xdisplay, pixmap, Gdk.X11Visual.get_xvisual(visual), screen.width(), screen.height());
  45.        
  46.         X.SetWindowBackgroundPixmap(xdisplay, Gdk.X11Window.get_xid(screen.get_root_window()), surface.get_drawable());
  47.        
  48.         return surface;
  49.     }
  50.    
  51.     static int main(string[] args) {
  52.        
  53.         Gtk.init(ref args);
  54.        
  55.         var greeter = new Greeter();
  56.        
  57.         Gtk.main();
  58.        
  59.         return 0;
  60.        
  61.     }
  62.    
  63. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement