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)
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())
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
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)
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)
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()
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()
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()
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()
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()
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)
def _ajust_size_window_cb(self, gdk_screen): primary_screen = getScreenGeometry() win = Instance.retrieve("win") win.resize(primary_screen.width(), primary_screen.height())