Beispiel #1
0
    def autoTile(self):
        settings = Desktop.loadSettings()
        if settings["autoTile"]:
            monitor = getScreenGeometry()
            windows = self.get_screen().get_windows()
            for window in windows:
                half_screen = monitor.width() / 2
                window_x = window.get_geometry()[0]
                if window_x != half_screen or window_x != 0:
                    if not window.is_maximized() and not window.is_minimized():
                        _type = window.get_window_type()
                        if _type == Wnck.WindowType.NORMAL:
                            gravity = Wnck.WindowGravity.STATIC
                            dock_size = 50
                            if self.next_window_pos == "left":
                                self.next_window_pos = "right"
                                x = 0

                            elif self.next_window_pos == "right":
                                self.next_window_pos = "left"
                                x = half_screen

                            geometry_mask = Wnck.WindowMoveResizeMask.X | Wnck.WindowMoveResizeMask.Y | Wnck.WindowMoveResizeMask.WIDTH | Wnck.WindowMoveResizeMask.HEIGHT
                            window.set_geometry(gravity, geometry_mask, x, 0,
                                                half_screen,
                                                monitor.height() - dock_size)
Beispiel #2
0
 def setBackgroundImage(self, image):
     screen = getScreenGeometry()
     pixmap = QPixmap(QImage(image)).scaled(screen.width(), screen.height(),
                                            Qt.KeepAspectRatioByExpanding)
     self.label.setPixmap(pixmap)
     self.label.setGeometry(0, 0, screen.width(),
                            self.label.sizeHint().height())
Beispiel #3
0
 def default_size(self, size: str):
     # Set to 70% screen size
     screen = getScreenGeometry()
     if size == "width":
         return screen.width() * 2 / 3
     elif size == "height":
         return screen.height() * 2 / 3
Beispiel #4
0
    def autoTile(self):
        settings = Desktop.loadSettings()
        if settings["autoTile"]:
            monitor = getScreenGeometry()
            windows = self.get_screen().get_windows()            
            for window in windows:                                
                w_name = window.get_name()
                if not w_name.startswith(self.ignore_windows):
                    half_screen_size = monitor.width() / 2
                    window_x = float(window.get_geometry()[0])
                    window_width = float(window.get_geometry()[2])
                    _type = window.get_window_type()
                    if not window.is_skip_tasklist() and window_x != half_screen_size or window_x != 0.0 \
                            or window_width != half_screen_size and not window.is_maximized() \
                            and not window.is_minimized() and not window.is_fullscreen() \
                            and _type == Wnck.WindowType.NORMAL:
                        gravity = Wnck.WindowGravity.STATIC
                        dock_size = 48
                        if self.next_window_pos == "left":
                            self.next_window_pos = "right"
                            x = 0

                        elif self.next_window_pos == "right":
                            self.next_window_pos = "left"
                            x = half_screen_size

                        geometry_mask = Wnck.WindowMoveResizeMask.X | Wnck.WindowMoveResizeMask.Y | \
                                        Wnck.WindowMoveResizeMask.WIDTH | Wnck.WindowMoveResizeMask.HEIGHT

                        window.set_geometry(gravity, geometry_mask, x, 0, half_screen_size, monitor.height()
                                            - dock_size)
Beispiel #5
0
    def run(self):
        Instance.record("view", JWebView(self.config))

        if self.config['window']["transparent"]:
            from JAK.Utils import JavaScript
            JavaScript.css(
                "body, html {background-color:transparent !important;background-image:none !important;}",
                "JAK")

        if self.config['webview']["addCSS"]:
            from JAK.Utils import JavaScript
            JavaScript.css(self.config['webview']["addCSS"], "user")
            print("Custom CSS detected")

        if self.config['webview']["runJavaScript"]:
            from JAK.Utils import JavaScript
            JavaScript.send(self.config['webview']["runJavaScript"])
            print("Custom JavaScript detected")

        win = Instance.auto("win", JWindow(self.config))
        if self.config['window']["fullScreen"]:
            screen = getScreenGeometry()
            win.resize(screen.width(), screen.height())
        else:
            win.resize(win.default_size("width"), win.default_size("height"))

        win.setFocusPolicy(Qt.WheelFocus)
        win.show()
        win.setFocus()
        win.window_original_position = win.frameGeometry()
        result = self.exec_()
        sys.exit(result)
Beispiel #6
0
 def window_open_cb(self, screen, window):
     _type = window.get_window_type()
     if _type == Wnck.WindowType.DESKTOP:
         pass
     elif _type == Wnck.WindowType.NORMAL:
         monitor = getScreenGeometry()
         self.clearWindows()
         self.autoTile()
Beispiel #7
0
 def set_window_to_corner(self):
     self.move(self.window_original_position.bottomRight())
     # Set to 30% screen size
     screen = getScreenGeometry()
     self.resize(screen.width() * 0.7 / 2, screen.height() * 0.7 / 2)
     self.hide_show_bar()
     self.setWindowFlags(Qt.SplashScreen | Qt.WindowStaysOnTopHint)
     self.show()
Beispiel #8
0
    def __init__(self, config):
        super().__init__()
        self.config = config
        if config["window"]["backgroundImage"]:
            # Transparency must be set to True
            self.label = QLabel(self)
            self.setObjectName("JAKWindow")
            self.setBackgroundImage(config["window"]["backgroundImage"])
        self.video_corner = False
        self.center = getScreenGeometry().center()
        self.setWindowTitle(config['window']["title"])
        self.setWindowFlags(config['window']["setFlags"])
        self.setWAttribute(Qt.WA_DeleteOnClose)
        for attr in config['window']["setAttribute"]:
            self.setWAttribute(attr)

        if config['window']["state"]:
            self.setWindowState(config['window']["state"])

        if config['window']["icon"] and os.path.isfile(
                config['window']["icon"]):
            self.icon = QIcon(config['window']["icon"])
        else:
            print(f"icon not found: {config['window']['icon']}")
            print("loading default icon:")
            self.icon = QIcon.fromTheme("applications-internet")

        view = Instance.retrieve("view")
        if view:
            self.view = view
            self.setCentralWidget(self.view)
            self.view.iconChanged.connect(self._icon_changed)
            if config['webview']["online"]:
                self.view.page().titleChanged.connect(self.status_message)

        if config['window']["transparent"]:
            # Set Background Transparency
            self.setWAttribute(Qt.WA_TranslucentBackground)
            self.setAutoFillBackground(True)

        if config['webview']["online"]:
            # Do not display toolbar or system tray offline
            if config['window']["toolbar"]:
                self.toolbar = JToolbar(self, config['window']["toolbar"],
                                        self.icon, config['window']["title"])
                self.addToolBar(self.toolbar)
            self.setMenuBar(Menu(self, config['window']["menus"]))
        else:
            if config['window']["showHelpMenu"]:
                self.setMenuBar(Menu(self, config['window']["menus"]))
                self.view.page().titleChanged.connect(self.status_message)

        if config['window']["SystemTrayIcon"]:
            self.system_tray = SystemTrayIcon(self.icon, self, config)

        if config["debug"]:
            self.showInspector()
        self._set_icons()
Beispiel #9
0
 def minimize_windows(self):
     self.hide_terminal()
     monitor = getScreenGeometry()
     windows = self.get_screen().get_windows()
     for window in windows:
         w_name = window.get_name()
         if not w_name.startswith(self.ignore_windows):
             window_position = window.get_geometry()
             if not window.is_minimized():
                 _type = window.get_window_type()
                 if _type != Wnck.WindowType.DESKTOP and monitor.width() > window_position[0]:
                     self.minimized_windows.append(window)
                     window.minimize()
Beispiel #10
0
 def minimize_windows(self):
     monitor = getScreenGeometry()
     windows = self.get_screen().get_windows()
     workspace = self.get_screen().get_active_workspace()
     for window in windows:
         if window.has_name() and window.get_name() != "Guake!":
             window_position = window.get_geometry()
             if window.is_in_viewport(
                     workspace) and not window.is_minimized():
                 _type = window.get_window_type()
                 # remove dock windows and select only windows on primary screen
                 if _type == Wnck.WindowType.NORMAL and monitor.width(
                 ) > window_position[0]:
                     self.minimized_windows.append(window)
                     window.minimize()
Beispiel #11
0
    def autoTile(self):
        settings = Desktop.loadSettings()
        if settings["autoTile"]:
            monitor = getScreenGeometry()
            windows = self.get_windows()
            for window in windows:
                actions = window.get_actions()
                if actions & Wnck.WindowActions.MAXIMIZE:
                    w_name = window.get_name()
                    if not w_name.startswith(self.ignore_windows):
                        half_screen_size = float(monitor.width() / 2)
                        window_x = float(window.get_geometry()[0])
                        window_width = float(window.get_geometry()[2])
                        _type = window.get_window_type()
                        if not window.is_skip_tasklist() and window_x != half_screen_size or window_x != 0.0 \
                                or window_width != half_screen_size and not window.is_maximized() \
                                and not window.is_minimized() and not window.is_fullscreen() \
                                and _type == Wnck.WindowType.NORMAL:
                            gravity = Wnck.WindowGravity.STATIC
                            if self.next_window_pos == "left":
                                self.next_window_pos = "right"
                                x = 0

                            elif self.next_window_pos == "right":
                                self.next_window_pos = "left"
                                x = half_screen_size

                            geometry_mask = Wnck.WindowMoveResizeMask.X | Wnck.WindowMoveResizeMask.Y | \
                                            Wnck.WindowMoveResizeMask.WIDTH | Wnck.WindowMoveResizeMask.HEIGHT

                            window.set_geometry(gravity, geometry_mask, x, 0,
                                                half_screen_size,
                                                monitor.height())

                    elif w_name == "Manjaro Linux Installer":
                        window.make_above()
                        window.set_fullscreen(True)
                        window.set_window_type(Wnck.WindowType.SPLASHSCREEN)
Beispiel #12
0
 def _ajust_size_window_cb(self, gdk_screen):
     primary_screen = getScreenGeometry()
     win = Instance.retrieve("win")
     win.resize(primary_screen.width(), primary_screen.height())