Continue work on qtile
This commit is contained in:
		
							parent
							
								
									f5d6e3dae1
								
							
						
					
					
						commit
						6d2124c882
					
				
							
								
								
									
										182
									
								
								qtile/config.py
								
								
								
								
							
							
						
						
									
										182
									
								
								qtile/config.py
								
								
								
								
							|  | @ -1,178 +1,4 @@ | |||
| from libqtile import bar, layout | ||||
| from qtile_extras import widget | ||||
| from libqtile.config import Click, Drag, Group, Key, Match, Screen | ||||
| from libqtile.lazy import lazy | ||||
| from libqtile.utils import guess_terminal | ||||
| from qtile_extras.widget.decorations import PowerLineDecoration | ||||
| 
 | ||||
| class Colors: | ||||
|     background = "#1f2430" | ||||
|     accent = "#002F5F" | ||||
| 
 | ||||
| panel_height = 27 | ||||
| panel_font_size = 12 | ||||
| font = "Ubuntu" | ||||
| widget_defaults = dict( | ||||
|     font=font, padding=0, fontsize=panel_font_size, borderwidth=0 | ||||
| ) | ||||
| 
 | ||||
| powerline_left = { | ||||
|     "decorations": [ | ||||
|         PowerLineDecoration(path="arrow_right") | ||||
|     ] | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| screens = [ | ||||
|     Screen( | ||||
|         top=bar.Bar( | ||||
|             widgets = [ | ||||
|                 widget.TaskList(), | ||||
|                 widget.GroupBox( | ||||
|                     rounded=False, | ||||
|                     inactive="#ffffff", | ||||
|                     active=Colors.background, | ||||
|                     highlight_method="block", | ||||
|                     highlight_color=Colors.accent, | ||||
|                     this_current_screen_border=Colors.accent, | ||||
|                     font="Ubuntu bold", | ||||
|                     padding=9, | ||||
|                 ), | ||||
|                 widget.Spacer(), | ||||
|                 widget.Systray(icon_size=24, background=Colors.background, padding=5, **powerline), | ||||
|                 widget.CPU(background=Colors.background, format="CPU {load_percent}%", **powerline), | ||||
|                 widget.CPU(background=Colors.accent, format="{freq_max}GHz", **powerline), | ||||
|                 widget.Volume(borderwidth=0, background=Colors.background, emoji=False, **powerline), | ||||
|                 widget.Clock( | ||||
|                     foreground="#ffffff", | ||||
|                     background=Colors.accent, | ||||
|                     format="%a %b %d, %H:%M:%S", | ||||
|                     **powerline | ||||
|                 ), | ||||
|                 widget.Sep(padding=7, linewidth=0, background=Colors.accent), | ||||
|             ], | ||||
|             size=panel_height, background=Colors.background, opacity=0.9 | ||||
|         ), | ||||
|         wallpaper="/home/user/.config/qtile/wallpaper.png", | ||||
|         wallpaper_mode="stretch" | ||||
|     ) | ||||
| ] | ||||
| 
 | ||||
| mod = "mod4" | ||||
| terminal = guess_terminal() | ||||
| 
 | ||||
| keys = [ | ||||
|     # A list of available commands that can be bound to keys can be found | ||||
|     # at https://docs.qtile.org/en/latest/manual/config/lazy.html | ||||
|     # Switch between windows | ||||
|     Key([mod], "h", lazy.layout.left(), desc="Move focus to left"), | ||||
|     Key([mod], "l", lazy.layout.right(), desc="Move focus to right"), | ||||
|     Key([mod], "j", lazy.layout.down(), desc="Move focus down"), | ||||
|     Key([mod], "k", lazy.layout.up(), desc="Move focus up"), | ||||
|     Key([mod], "space", lazy.layout.next(), desc="Move window focus to other window"), | ||||
|     # Move windows between left/right columns or move up/down in current stack. | ||||
|     # Moving out of range in Columns layout will create new column. | ||||
|     Key([mod, "shift"], "h", lazy.layout.shuffle_left(), desc="Move window to the left"), | ||||
|     Key([mod, "shift"], "l", lazy.layout.shuffle_right(), desc="Move window to the right"), | ||||
|     Key([mod, "shift"], "j", lazy.layout.shuffle_down(), desc="Move window down"), | ||||
|     Key([mod, "shift"], "k", lazy.layout.shuffle_up(), desc="Move window up"), | ||||
|     # Grow windows. If current window is on the edge of screen and direction | ||||
|     # will be to screen edge - window would shrink. | ||||
|     Key([mod, "control"], "h", lazy.layout.grow_left(), desc="Grow window to the left"), | ||||
|     Key([mod, "control"], "l", lazy.layout.grow_right(), desc="Grow window to the right"), | ||||
|     Key([mod, "control"], "j", lazy.layout.grow_down(), desc="Grow window down"), | ||||
|     Key([mod, "control"], "k", lazy.layout.grow_up(), desc="Grow window up"), | ||||
|     Key([mod], "n", lazy.layout.normalize(), desc="Reset all window sizes"), | ||||
|     # Toggle between split and unsplit sides of stack. | ||||
|     # Split = all windows displayed | ||||
|     # Unsplit = 1 window displayed, like Max layout, but still with | ||||
|     # multiple stack panes | ||||
|     Key( | ||||
|         [mod, "shift"], | ||||
|         "Return", | ||||
|         lazy.layout.toggle_split(), | ||||
|         desc="Toggle between split and unsplit sides of stack", | ||||
|     ), | ||||
|     Key([mod], "Return", lazy.spawn(terminal), desc="Launch terminal"), | ||||
|     # Toggle between different layouts as defined below | ||||
|     Key([mod], "Tab", lazy.next_layout(), desc="Toggle between layouts"), | ||||
|     Key([mod], "q", lazy.window.kill(), desc="Kill focused window"), | ||||
|     Key([mod, "shift"], "r", lazy.reload_config(), desc="Reload the config"), | ||||
|     Key([mod, "control"], "q", lazy.shutdown(), desc="Shutdown Qtile"), | ||||
|     Key([mod], "r", lazy.spawncmd(), desc="Spawn a command using a prompt widget"), | ||||
| ] | ||||
| 
 | ||||
| groups = [Group(i) for i in "123456789"] | ||||
| 
 | ||||
| for i in groups: | ||||
|     keys.extend( | ||||
|         [ | ||||
|             # mod1 + letter of group = switch to group | ||||
|             Key( | ||||
|                 [mod], | ||||
|                 i.name, | ||||
|                 lazy.group[i.name].toscreen(), | ||||
|                 desc="Switch to group {}".format(i.name), | ||||
|             ), | ||||
|             # mod1 + shift + letter of group = switch to & move focused window to group | ||||
|             Key( | ||||
|                 [mod, "shift"], | ||||
|                 i.name, | ||||
|                 lazy.window.togroup(i.name, switch_group=True), | ||||
|                 desc="Switch to & move focused window to group {}".format(i.name), | ||||
|             ), | ||||
|             # Or, use below if you prefer not to switch to that group. | ||||
|             # # mod1 + shift + letter of group = move focused window to group | ||||
|             # Key([mod, "shift"], i.name, lazy.window.togroup(i.name), | ||||
|             #     desc="move focused window to group {}".format(i.name)), | ||||
|         ] | ||||
|     ) | ||||
| 
 | ||||
| layouts = [ | ||||
|     layout.Columns(border_focus_stack=["#d75f5f", "#8f3d3d"], border_width=4), | ||||
|     layout.Max(), | ||||
|     # Try more layouts by unleashing below layouts. | ||||
|     # layout.Stack(num_stacks=2), | ||||
|     # layout.Bsp(), | ||||
|     # layout.Matrix(), | ||||
|     # layout.MonadTall(), | ||||
|     # layout.MonadWide(), | ||||
|     # layout.RatioTile(), | ||||
|     # layout.Tile(), | ||||
|     # layout.TreeTab(), | ||||
|     # layout.VerticalTile(), | ||||
|     # layout.Zoomy(), | ||||
| ] | ||||
| 
 | ||||
| # Drag floating layouts. | ||||
| mouse = [ | ||||
|     Drag([mod], "Button1", lazy.window.set_position_floating(), start=lazy.window.get_position()), | ||||
|     Drag([mod], "Button3", lazy.window.set_size_floating(), start=lazy.window.get_size()), | ||||
|     Click([mod], "Button2", lazy.window.bring_to_front()), | ||||
| ] | ||||
| 
 | ||||
| dgroups_key_binder = None | ||||
| dgroups_app_rules = []  # type: list | ||||
| follow_mouse_focus = True | ||||
| bring_front_click = False | ||||
| cursor_warp = False | ||||
| floating_layout = layout.Floating( | ||||
|     float_rules=[ | ||||
|         # Run the utility of `xprop` to see the wm class and name of an X client. | ||||
|         *layout.Floating.default_float_rules, | ||||
|         Match(wm_class="confirmreset"),  # gitk | ||||
|         Match(wm_class="makebranch"),  # gitk | ||||
|         Match(wm_class="maketag"),  # gitk | ||||
|         Match(wm_class="ssh-askpass"),  # ssh-askpass | ||||
|         Match(title="branchdialog"),  # gitk | ||||
|         Match(title="pinentry"),  # GPG key password entry | ||||
|     ] | ||||
| ) | ||||
| auto_fullscreen = True | ||||
| focus_on_window_activation = "smart" | ||||
| reconfigure_screens = True | ||||
| 
 | ||||
| # If things like steam games want to auto-minimize themselves when losing | ||||
| # focus, should we respect this or not? | ||||
| auto_minimize = False | ||||
| wmname = "LG3D" | ||||
| try: | ||||
|     from main import * | ||||
| except Exception as e: | ||||
|     print(e) | ||||
|  |  | |||
|  | @ -0,0 +1,201 @@ | |||
| from libqtile import bar, layout, hook | ||||
| from qtile_extras import widget | ||||
| from libqtile.config import Click, Drag, Group, Key, Match, Screen | ||||
| from libqtile.lazy import lazy | ||||
| from libqtile.utils import guess_terminal | ||||
| from qtile_extras.widget.decorations import PowerLineDecoration | ||||
| from widgets.volume import Volume | ||||
| 
 | ||||
| class Colors: | ||||
|     background = "#1f2430" | ||||
|     accent = "#002F5F" | ||||
| 
 | ||||
| panel_height = 28 | ||||
| panel_font_size = 13 | ||||
| font = "Ubuntu" | ||||
| 
 | ||||
| powerline_right= { | ||||
|     "decorations": [ | ||||
|         PowerLineDecoration(path="arrow_right", size=10) | ||||
|     ], | ||||
|     "padding": 6 | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| screens = [ | ||||
|     Screen( | ||||
|         top=bar.Bar( | ||||
|             widgets = [ | ||||
|                 widget.TaskList(theme_path="/user/share/icons/Papirus/16x16/"), | ||||
|                 widget.Sep(padding=10, linewidth=0), | ||||
|                 widget.GroupBox( | ||||
|                     rounded=False, | ||||
|                     inactive="#ffffff", | ||||
|                     active="#ffffff", | ||||
|                     highlight_method="block", | ||||
|                     highlight_color=Colors.accent, | ||||
|                     this_current_screen_border=Colors.accent, | ||||
|                     font="Ubuntu bold", | ||||
|                     padding=9, | ||||
|                     hide_unused=True | ||||
|                 ), | ||||
|                 widget.Spacer(), | ||||
|                 widget.Sep(linewidth=0, background=None, **powerline_right), # Workaround for having the last arrow | ||||
|                 widget.Systray(icon_size=24, background=Colors.accent, **powerline_right), | ||||
|                 widget.Memory(format="{MemUsed: .2f}{mm}", measure_mem="G", background=Colors.background, **powerline_right), | ||||
|                 widget.ThermalSensor(tag_sensor='Tctl', background=Colors.accent, **powerline_right), | ||||
|                 widget.CPU(background=Colors.background, format="CPU {load_percent}%", **powerline_right), | ||||
|                 widget.CPU(background=Colors.accent, format="{freq_max}GHz", **powerline_right), | ||||
|                 Volume(size=12, background=Colors.background, theme_path="/usr/share/icons/Papirus/16x16/"), | ||||
|                 Volume(background=Colors.background, **powerline_right), | ||||
|                 widget.Image(filename="/usr/share/icons/Papirus/48x48/apps/org.kde.archUpdate.svg", background=Colors.accent, margin_y=6), | ||||
|                 widget.CheckUpdates(background=Colors.accent, distro="Arch_yay", initial_text="0", no_update_string="0", execute='WINIT_X11_SCALE_FACTOR=1 alacritty -e bash -c "yay ; echo \'\nDone, press any key to exit...\' ; read"', **powerline_right), | ||||
|                 widget.CurrentLayout(background=Colors.background, **powerline_right), | ||||
|                 widget.Clock( | ||||
|                     foreground="#ffffff", | ||||
|                     background=Colors.accent, | ||||
|                     format="%a %b %d, %H:%M:%S", | ||||
|                     **powerline_right | ||||
|                 ), | ||||
|                 widget.Sep(padding=2, linewidth=0, background=Colors.accent), | ||||
|             ], | ||||
|             size=panel_height, background=Colors.background + "99" | ||||
|         ), | ||||
|         wallpaper="/home/user/.config/qtile/wallpaper.png", | ||||
|         wallpaper_mode="stretch" | ||||
|     ), | ||||
|     Screen(wallpaper="/home/user/.config/qtile/wallpaper.png", wallpaper_mode="stretch"), | ||||
|     Screen(wallpaper="/home/user/.config/qtile/wallpaper.png", wallpaper_mode="stretch"), | ||||
| ] | ||||
| 
 | ||||
| 
 | ||||
| mod = "mod4" | ||||
| terminal = guess_terminal() | ||||
| 
 | ||||
| keys = [ | ||||
|     # A list of available commands that can be bound to keys can be found | ||||
|     # at https://docs.qtile.org/en/latest/manual/config/lazy.html | ||||
|     # Switch between windows | ||||
|     Key([mod], "h", lazy.layout.left(), desc="Move focus to left"), | ||||
|     Key([mod], "l", lazy.layout.right(), desc="Move focus to right"), | ||||
|     Key([mod], "j", lazy.layout.down(), desc="Move focus down"), | ||||
|     Key([mod], "k", lazy.layout.up(), desc="Move focus up"), | ||||
|     Key([mod], "f", lazy.window.toggle_floating(), desc="Move focus up"), | ||||
|     Key([mod], "m", lazy.window.toggle_fullscreen(), desc="Move focus up"), | ||||
|     Key([mod], "space", lazy.layout.next(), desc="Move window focus to other window"), | ||||
|     # Move windows between left/right columns or move up/down in current stack. | ||||
|     # Moving out of range in Columns layout will create new column. | ||||
|     Key([mod, "shift"], "h", lazy.layout.shuffle_left(), desc="Move window to the left"), | ||||
|     Key([mod, "shift"], "l", lazy.layout.shuffle_right(), desc="Move window to the right"), | ||||
|     Key([mod, "shift"], "j", lazy.layout.shuffle_down(), desc="Move window down"), | ||||
|     Key([mod, "shift"], "k", lazy.layout.shuffle_up(), desc="Move window up"), | ||||
|     # Grow windows. If current window is on the edge of screen and direction | ||||
|     # will be to screen edge - window would shrink. | ||||
|     Key([mod, "control"], "h", lazy.layout.grow_left(), desc="Grow window to the left"), | ||||
|     Key([mod, "control"], "l", lazy.layout.grow_right(), desc="Grow window to the right"), | ||||
|     Key([mod, "control"], "j", lazy.layout.grow_down(), desc="Grow window down"), | ||||
|     Key([mod, "control"], "k", lazy.layout.grow_up(), desc="Grow window up"), | ||||
|     Key([mod], "n", lazy.layout.normalize(), desc="Reset all window sizes"), | ||||
|     # Toggle between split and unsplit sides of stack. | ||||
|     # Split = all windows displayed | ||||
|     # Unsplit = 1 window displayed, like Max layout, but still with | ||||
|     # multiple stack panes | ||||
|     Key( | ||||
|         [mod, "shift"], | ||||
|         "Return", | ||||
|         lazy.layout.toggle_split(), | ||||
|         desc="Toggle between split and unsplit sides of stack", | ||||
|     ), | ||||
|     Key([mod], "Return", lazy.spawn(terminal), desc="Launch terminal"), | ||||
|     Key([mod], "b", lazy.spawn("firefox"), desc="Launch browser"), | ||||
|     # Toggle between different layouts as defined below | ||||
|     Key([mod], "Tab", lazy.next_layout(), desc="Toggle between layouts"), | ||||
|     Key([mod], "q", lazy.window.kill(), desc="Kill focused window"), | ||||
|     Key([mod, "shift"], "r", lazy.reload_config(), desc="Reload the config"), | ||||
|     Key([mod, "control"], "q", lazy.shutdown(), desc="Shutdown Qtile"), | ||||
|     Key([mod], "r", lazy.spawncmd(), desc="Spawn a command using a prompt widget"), | ||||
| ] | ||||
| 
 | ||||
| groups = [] | ||||
| for s in screens: | ||||
|     for i in list(range(1, 10)) + [0]: | ||||
|         groups.append(Group(str(i), screen_affinity=s)) | ||||
| 
 | ||||
| for i in groups[:10]: | ||||
|     keys.extend( | ||||
|         [ | ||||
|             # mod1 + letter of group = switch to group | ||||
|             Key( | ||||
|                 [mod], | ||||
|                 i.name, | ||||
|                 lazy.group[i.name].toscreen(0), | ||||
|                 desc="Switch to group {}".format(i.name), | ||||
|             ), | ||||
|             # mod1 + shift + letter of group = switch to & move focused window to group | ||||
|             Key( | ||||
|                 [mod, "shift"], | ||||
|                 i.name, | ||||
|                 lazy.window.togroup(i.name, switch_group=True), | ||||
|                 desc="Switch to & move focused window to group {}".format(i.name), | ||||
|             ), | ||||
|             # Or, use below if you prefer not to switch to that group. | ||||
|             # # mod1 + shift + letter of group = move focused window to group | ||||
|             # Key([mod, "shift"], i.name, lazy.window.togroup(i.name), | ||||
|             #     desc="move focused window to group {}".format(i.name)), | ||||
|         ] | ||||
|     ) | ||||
| 
 | ||||
| layout_settings = { | ||||
|     "border_focus": Colors.accent, | ||||
|     "border_normal": "#050f43", | ||||
|     # "border_normal_stack": "#00000000", | ||||
|     # "border_focus_stack": "#00000000", | ||||
|     "border_width": 2, | ||||
|     "margin": 3 | ||||
| } | ||||
| 
 | ||||
| mouse = [ | ||||
|     Drag([mod], "Button1", lazy.window.set_position(), start=lazy.window.get_position()), | ||||
|     Drag([mod], "Button3", lazy.window.set_position(), start=lazy.window.get_size()) | ||||
| ] | ||||
| 
 | ||||
| layouts = [ | ||||
|     layout.Tile(**layout_settings), | ||||
|     layout.Columns(**layout_settings), | ||||
|     layout.Max(), | ||||
|     # Try more layouts by unleashing below layouts. | ||||
|     # layout.Stack(num_stacks=2), | ||||
|     # layout.Bsp(), | ||||
|     # layout.Matrix(), | ||||
|     # layout.MonadTall(), | ||||
|     # layout.MonadWide(), | ||||
|     # layout.RatioTile(), | ||||
|     # layout.TreeTab(), | ||||
|     # layout.VerticalTile(), | ||||
|     # layout.Zoomy(), | ||||
| ] | ||||
| 
 | ||||
| dgroups_key_binder = None | ||||
| dgroups_app_rules = []  # type: list | ||||
| follow_mouse_focus = True | ||||
| bring_front_click = False | ||||
| cursor_warp = False | ||||
| floating_layout = layout.Floating( | ||||
|     float_rules=[ | ||||
|         *layout.Floating.default_float_rules, | ||||
|         Match(wm_class="confirmreset"),  # gitk | ||||
|         Match(wm_class="makebranch"),  # gitk | ||||
|         Match(wm_class="maketag"),  # gitk | ||||
|         Match(wm_class="ssh-askpass"),  # ssh-askpass | ||||
|         Match(title="branchdialog"),  # gitk | ||||
|         Match(title="pinentry"),  # GPG key password entry | ||||
|     ] | ||||
| ) | ||||
| auto_fullscreen = True | ||||
| focus_on_window_activation = "smart" | ||||
| reconfigure_screens = True | ||||
| 
 | ||||
| # If things like steam games want to auto-minimize themselves when losing | ||||
| # focus, should we respect this or not? | ||||
| auto_minimize = False | ||||
| wmname = "LG3D" | ||||
										
											Binary file not shown.
										
									
								
							| After Width: | Height: | Size: 961 KiB | 
										
											Binary file not shown.
										
									
								
							|  | @ -0,0 +1,28 @@ | |||
| from qtile_extras.widget import Volume as QVolume | ||||
| from libqtile import images | ||||
| 
 | ||||
| class Volume(QVolume): | ||||
|     def __init__(self, size=None, **kwargs): | ||||
|         super().__init__(**kwargs) | ||||
|         self.size = size | ||||
| 
 | ||||
|     def setup_images(self): | ||||
|         names = ( | ||||
|             "audio-volume-high", | ||||
|             "audio-volume-low", | ||||
|             "audio-volume-medium", | ||||
|             "audio-volume-muted", | ||||
|         ) | ||||
|         d_images = images.Loader(self.theme_path)(*names) | ||||
|         for name, img in d_images.items(): | ||||
|             new_height = self.size if self.size else self.bar.height - 1 | ||||
|             img.resize(height=new_height) | ||||
|             if img.width > self.length: | ||||
|                 self.length = img.width + self.actual_padding * 2 | ||||
| 
 | ||||
|             if self.size: | ||||
|                 matrix = img.pattern.get_matrix() | ||||
|                 matrix.translate(tx=0, ty=-1 * (self.bar.height -1 - self.size) / 2 - 1) | ||||
|                 img.pattern.set_matrix(matrix) | ||||
| 
 | ||||
|             self.surfaces[name] = img.pattern | ||||
		Loading…
	
		Reference in New Issue