- python-gobject
chmod +x watermark
./watermark
#!/usr/bin/env python | |
# -.- encoding: utf-8 -.- | |
''' | |
Dependences: python-gobject | |
''' | |
import os | |
import ctypes | |
import platform | |
import logging | |
import signal | |
import gi | |
gi.require_version('Gtk', '3.0') | |
from gi.repository import Gtk, Gdk, Pango | |
import cairo | |
def set_name(new_name): | |
if platform.system() != 'Linux': | |
logging.warning('Rename process:Unsupported platform') | |
try: | |
libc = ctypes.CDLL('libc.so.6') | |
libc.prctl(15, new_name, 0, 0, 0) | |
return True | |
except: | |
logging.warning("Rename process failed :PID: " + repr(os.getpid())) | |
return False | |
class WaterMark(Gtk.Window): | |
def __init__(self): | |
super(WaterMark, self).__init__() | |
self.setup() | |
self.init_ui() | |
def setup(self): | |
self.set_app_paintable(True) | |
self.set_type_hint(Gdk.WindowTypeHint.DOCK) | |
self.set_keep_below(True) | |
screen = self.get_screen() | |
visual = screen.get_rgba_visual() | |
if visual and screen.is_composited(): | |
self.set_visual(visual) | |
def init_ui(self): | |
self.connect("draw", self.on_draw) | |
self.box = Gtk.Box(orientation=Gtk.Orientation.VERTICAL, spacing=10) | |
self.box.set_homogeneous(False) | |
self.add(self.box) | |
label_atas = Gtk.Label() | |
text = "Activate Windows" #Change this | |
label_atas.set_text(text) | |
fd = Pango.FontDescription("Arial 15") | |
label_atas.set_alignment(0, 1) | |
label_atas.modify_font(fd) | |
label_atas.modify_fg(Gtk.StateFlags.NORMAL, Gdk.color_parse("#A9A9A9")) | |
self.box.pack_start(label_atas, True, True, 0) | |
label_bawah = Gtk.Label() | |
label_bawah.set_text("Go to Settings to activate Windows.") #Change this | |
fd = Pango.FontDescription("Arial 10") | |
label_bawah.set_alignment(0, 1) | |
label_bawah.modify_font(fd) | |
label_bawah.modify_fg(Gtk.StateFlags.NORMAL, Gdk.color_parse("#A9A9A9")) | |
self.box.pack_start(label_bawah, True, True, 0) | |
root_win = Gdk.get_default_root_window() | |
root_height = root_win.get_height() | |
root_width = root_win.get_width() | |
logging.info("Desktop-size: " + | |
repr(root_width) + "x" + repr(root_height)) | |
self.connect("delete-event", Gtk.main_quit) | |
self.show_all() | |
self.set_keep_above(True) | |
self.set_property("skip-taskbar-hint", True) | |
w_width, w_height = self.get_size() | |
logging.info("Window-size: " + repr(w_width) + "x" + repr(w_height)) | |
self.move(root_width - w_width - 90, root_height - w_height - 70) | |
def on_draw(self, wid, cr): | |
cr.set_operator(cairo.OPERATOR_CLEAR) | |
cr.paint() | |
cr.set_operator(cairo.OPERATOR_OVER) | |
def main(): | |
logging.basicConfig(level=logging.DEBUG) | |
WaterMark() | |
Gtk.main() | |
if __name__ == "__main__": | |
signal.signal(signal.SIGINT, signal.SIG_DFL) | |
main() |