summaryrefslogtreecommitdiff
path: root/.config/qtile
diff options
context:
space:
mode:
Diffstat (limited to '.config/qtile')
-rw-r--r--.config/qtile/__pycache__/config.cpython-39.pycbin0 -> 5598 bytes
-rwxr-xr-x.config/qtile/autostart.sh17
-rw-r--r--.config/qtile/config.py240
-rw-r--r--.config/qtile/picom.log0
4 files changed, 257 insertions, 0 deletions
diff --git a/.config/qtile/__pycache__/config.cpython-39.pyc b/.config/qtile/__pycache__/config.cpython-39.pyc
new file mode 100644
index 0000000..73a3383
--- /dev/null
+++ b/.config/qtile/__pycache__/config.cpython-39.pyc
Binary files differ
diff --git a/.config/qtile/autostart.sh b/.config/qtile/autostart.sh
new file mode 100755
index 0000000..b91e584
--- /dev/null
+++ b/.config/qtile/autostart.sh
@@ -0,0 +1,17 @@
+#!/bin/sh
+
+# Window positions from ARandR
+#xrandr --output DVI-D-1 --off --output DP-1 --mode 3840x2160 --pos 4480x0 --rotate normal --output DP-2 --primary --mode 2560x1440 --pos 1920x0 --rotate normal --output HDMI-1 --off --output DP-3 --mode 1920x1080 --pos 0x0 --rotate normal &
+#/home/yui/layout.sh
+
+xrdb -merge ~/.Xresources
+numlockx on &
+lxsession &
+picom &
+nitrogen --restore &
+volumeicon &
+nm-applet &
+#ibus-daemon -drxR &
+fcitx &
+xset s off -dpms
+xscreensaver -no-splash &
diff --git a/.config/qtile/config.py b/.config/qtile/config.py
new file mode 100644
index 0000000..bc1a7f2
--- /dev/null
+++ b/.config/qtile/config.py
@@ -0,0 +1,240 @@
+# Copyright (c) 2010 Aldo Cortesi
+# Copyright (c) 2010, 2014 dequis
+# Copyright (c) 2012 Randall Ma
+# Copyright (c) 2012-2014 Tycho Andersen
+# Copyright (c) 2012 Craig Barnes
+# Copyright (c) 2013 horsik
+# Copyright (c) 2013 Tao Sauvage
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+# SOFTWARE.
+import os
+import subprocess
+from typing import List # noqa: F401
+
+from libqtile import bar, layout, widget, hook
+from libqtile.config import Click, Drag, Group, Key, Match, Screen
+from libqtile.lazy import lazy
+#from libqtile.utils import guess_terminal
+
+mod = "mod4"
+#terminal = guess_terminal()
+terminal = "alacritty"
+selector = "rofi -show drun -show-icons -theme 'Arc-Dark'"
+weather_location = "Melbourne"
+slimeshot = "/home/yui/Scripts/slimeshot.sh/slimeshot.sh"
+
+@hook.subscribe.startup_complete
+def fix_screen_groups():
+ lazy.group['1'].toscreen(1)
+ lazy.group['2'].toscreen(0)
+ lazy.group['3'].toscreen(2)
+
+keys = [
+ # Switch between windows
+ Key([mod], "Left", lazy.layout.left(), desc="Move focus to left"),
+ Key([mod], "Right", lazy.layout.right(), desc="Move focus to right"),
+ Key([mod], "Down", lazy.layout.down(), desc="Move focus down"),
+ Key([mod], "Up", lazy.layout.up(), desc="Move focus up"),
+ Key([mod], "z", 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"], "Left", lazy.layout.shuffle_left(),
+ desc="Move window to the left"),
+ Key([mod, "shift"], "Right", lazy.layout.shuffle_right(),
+ desc="Move window to the right"),
+ Key([mod, "shift"], "Down", lazy.layout.shuffle_down(),
+ desc="Move window down"),
+ Key([mod, "shift"], "Up", 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"], "Left", lazy.layout.grow_left(),
+ desc="Grow window to the left"),
+ Key([mod, "control"], "Right", lazy.layout.grow_right(),
+ desc="Grow window to the right"),
+ Key([mod, "control"], "Down", lazy.layout.grow_down(),
+ desc="Grow window down"),
+ Key([mod, "control"], "Up", lazy.layout.grow_up(), desc="Grow window up"),
+ Key([mod, "control"], "n", lazy.layout.normalize(), desc="Reset all window sizes"),
+
+
+ Key([mod, "control"], "1",
+ lazy.to_screen(1),
+ desc='Keyboard focus to monitor 1'
+ ),
+ Key([mod, "control"], "2",
+ lazy.to_screen(0),
+ desc='Keyboard focus to monitor 2'
+ ),
+ Key([mod, "control"], "3",
+ lazy.to_screen(2),
+ desc='Keyboard focus to monitor 3'
+ ),
+
+
+ # 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], "space", lazy.window.toggle_floating(), desc='Toggle floating'),
+
+ # 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, "control"], "r", lazy.restart(), desc="Restart Qtile"),
+ Key([mod, "control"], "q", lazy.shutdown(), desc="Shutdown Qtile"),
+ Key([mod], "r", lazy.spawncmd(),
+ desc="Spawn a command using a prompt widget"),
+
+ Key([mod], "Return", lazy.spawn(terminal), desc="Launch terminal"),
+ Key([mod], "d", lazy.spawn(selector), desc="Launch rofi"),
+ Key([mod], "f", lazy.spawn("firefox"), desc="Launch firefox"),
+ Key([mod], "e", lazy.spawn("/home/yui/Scripts/emoji.sh"), desc="Launch a emoji rofi"),
+
+
+ Key([mod], "b", lazy.hide_show_bar("top")),
+
+ Key(["control"], "Print", lazy.spawn(f"{slimeshot}")),
+ Key([mod, "control"], "Print", lazy.spawn(f"{slimeshot} l")),
+ Key(["control", "shift"], "Print", lazy.spawn(f"{slimeshot} c")),
+ Key([mod], "j", lazy.group['1'].toscreen(1), lazy.group['2'].toscreen(0), lazy.group['3'].toscreen(2)),
+
+]
+
+group_labels = "零壱弐参四伍六七八九"
+groups = [Group(i, label=group_labels[int(i)]) for i in "123456789"]
+
+for i in groups:
+ keys.append(Key([mod], i.name, lazy.group[i.name].toscreen())) # Switch to another group
+ keys.append(Key([mod, "shift"], i.name, lazy.window.togroup(i.name))) # Send current window to another group
+
+layout_theme = {"border_width": 2,
+ "margin": 8,
+ "border_focus": "e1acff",
+ "border_normal": "1D2330"
+ }
+
+layouts = [
+ #layout.Columns(border_focus_stack='#d75f5f'),
+ layout.Max(**layout_theme, name="全"),
+ # Try more layouts by unleashing below layouts.
+ # layout.Stack(num_stacks=2),
+ # layout.Bsp(),
+ # layout.Matrix(),
+ layout.MonadTall(**layout_theme, name=">>="),
+ # layout.MonadWide(),
+ # layout.RatioTile(),
+ # layout.Tile(),
+ # layout.TreeTab(),
+ # layout.VerticalTile(),
+ # layout.Zoomy(),
+]
+
+widget_defaults = dict(
+ font='IBM Plex Sans',
+ fontsize=16,
+ padding=4,
+)
+extension_defaults = widget_defaults.copy()
+
+
+def generate_widgets(side=False):
+ main_widgets = [
+ widget.CurrentLayout(),
+ widget.GroupBox(highlight_method="border", this_current_screen_border="8981e1", this_screen_border="888888"),
+ widget.Prompt(),
+ widget.WindowTabs(),
+ widget.GenPollUrl(url=f"https://wttr.in/{weather_location}?format=1", json=False, update_interval=600, parse=lambda x: x.replace("+", "").strip()),
+ widget.GenPollUrl(url="https://hirasawa.moe/vax.txt", json=False, update_interval=3600, parse=lambda x: x.decode("UTF-8").split("\t")[1]),
+ #widget.GenPollUrl(url=f"https://hirasawa.moe/vax.txt", json=False, update_interval=3600, parse=lambda x: x.split("\t")[1]),
+ widget.Systray(),
+ widget.Clock(format='%m月%d日 %a %H:%M'),
+ ]
+ side_widgets = [
+ widget.CurrentLayout(),
+ widget.GroupBox(highlight_method="border", this_current_screen_border="8981e1", this_screen_border="888888"),
+ widget.WindowTabs(),
+ widget.Clock(format='%m月%d日 %a %H:%M'),
+ ]
+ return side_widgets if side else main_widgets
+
+
+screens = [
+ Screen(top=bar.Bar(generate_widgets(), 30)),
+ Screen(top=bar.Bar(generate_widgets(side=True), 30)),
+ Screen(top=bar.Bar(generate_widgets(side=True), 30)),
+]
+
+
+# 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='kdenlive'), # kdenlive
+ 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
+
+
+@hook.subscribe.startup_once
+def start_once():
+ home = os.path.expanduser('~')
+ subprocess.call([home + '/.config/qtile/autostart.sh'])
+
+
+# XXX: Gasp! We're lying here. In fact, nobody really uses or cares about this
+# string besides java UI toolkits; you can see several discussions on the
+# mailing lists, GitHub issues, and other WM documentation that suggest setting
+# this string if your java app doesn't work correctly. We may as well just lie
+# and say that we're a working one by default.
+#
+# We choose LG3D to maximize irony: it is a 3D non-reparenting WM written in
+# java that happens to be on java's whitelist.
+wmname = "LG3D"
diff --git a/.config/qtile/picom.log b/.config/qtile/picom.log
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/.config/qtile/picom.log