summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xautostart.sh11
-rw-r--r--config.py251
2 files changed, 262 insertions, 0 deletions
diff --git a/autostart.sh b/autostart.sh
new file mode 100755
index 0000000..b9dbaec
--- /dev/null
+++ b/autostart.sh
@@ -0,0 +1,11 @@
+#!/bin/bash
+
+#/home/yui/.screenlayout/main.sh
+nitrogen --restore &
+picom -b -D 1 &
+dunst &
+nm-applet &
+volumeicon &
+ckb-next -b &
+lxsession &
+ptxconf &
diff --git a/config.py b/config.py
new file mode 100644
index 0000000..7b584be
--- /dev/null
+++ b/config.py
@@ -0,0 +1,251 @@
+# 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.
+
+from typing import List # noqa: F401
+
+from libqtile import bar, layout, widget, hook, extension
+from libqtile.config import Click, Drag, Group, Key, Screen
+from libqtile.lazy import lazy
+
+import os
+import subprocess
+
+mod = "mod4"
+#terminal = guess_terminal()
+terminal = "alacritty"
+NUM_SCREENS = 3
+town = "Rowville"
+main_font="Inconsolata"
+
+shutdown_commands = {
+ 'logout': 'qtile-cmd -o cmd -f shutdown',
+ 'reload': 'qtile-cmd -o cmd -f restart',
+ 'restart': 'reboot',
+ 'shutdown': 'shutdown now'
+}
+
+keys = [
+ # Switch between windows in current stack pane
+ Key([mod], "Down", lazy.layout.down(),
+ desc="Move focus down in stack pane"),
+ Key([mod], "Up", lazy.layout.up(),
+ desc="Move focus up in stack pane"),
+
+ # Move windows up or down in current stack
+ Key([mod, "control"], "Down", lazy.layout.shuffle_down(),
+ desc="Move window down in current stack "),
+ Key([mod, "control"], "Up", lazy.layout.shuffle_up(),
+ desc="Move window up in current stack "),
+
+ # Switch window focus to other pane(s) of stack
+ Key([mod], "z", lazy.layout.next(),
+ desc="Switch window focus to other pane(s) of stack"),
+
+ # Swap panes of split stack
+ Key([mod, "shift"], "space", lazy.layout.rotate(),
+ desc="Swap panes of split stack"),
+
+ # 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], "w", lazy.window.kill(), desc="Kill focused window"),
+
+ Key([mod], "p", lazy.run_extension(extension.CommandSet(commands=shutdown_commands, foreground="red", selected_background="red", dmenu_font="Source Code Pro-10"
+)), desc="Power menu"),
+ 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"),
+
+ # Custom
+ Key([mod], "d", lazy.spawn("dmenu_run")),
+ Key([mod], "o", lazy.ext),
+ Key([mod], "s", lazy.spawn("pavucontrol")),
+ Key([mod], "f", lazy.spawn("firefox")),
+ Key([mod], "n", lazy.spawn("networkmanager_dmenu")),
+ Key([mod], "r", lazy.spawn("st -e R")),
+ Key([mod], "space", lazy.window.toggle_floating()),
+ Key([mod], "Page_Up", lazy.layout.grow_main()),
+ Key([mod], "Page_Down", lazy.layout.shrink_main()),
+
+
+ # Slimeshot
+ Key(["control"], "Print", lazy.spawn("/home/yui/Documents/slimeshot/run.py")),
+ Key(["control", mod], "Print", lazy.spawn("/home/yui/Documents/slimeshot/run.py --silent -l")),
+ Key(["control", "shift"], "Print", lazy.spawn("/home/yui/Documents/slimeshot/run.py --silent -c")),
+
+]
+
+group_labels = "零一二三四五六七八九十"
+
+
+groups = [Group(i, label=group_labels[int(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, "control"], i.name, lazy.window.togroup(i.name),
+ desc="move focused window to group {}".format(i.name)),
+ ])
+
+
+layout_theme = {
+ "border_width": 2,
+ "margin": 0,
+ "border_focus": "60fcbe"
+}
+
+layouts = [
+ layout.MonadTall(**layout_theme, name="高"),
+ layout.Max(**layout_theme, name="全"),
+ #layout.Stack(**layout_theme, enum_stacks=2, name="半"),
+ # Try more layouts by unleashing below layouts.
+ # layout.Bsp(**layout_theme),
+ # layout.Columns(),
+ # layout.Matrix(**layout_theme, name="田"),
+ layout.MonadWide(**layout_theme, name="広"),
+ # layout.RatioTile(),
+ # layout.Tile(),
+ # layout.TreeTab(),
+ # layout.VerticalTile(),
+ # layout.Zoomy(),
+ #layout.Floating(**layout_theme, name="浮")
+]
+
+widget_defaults = dict(
+ font=main_font,
+ fontsize=12,
+ padding=2,
+)
+extension_defaults = widget_defaults.copy()
+
+def weather_string():
+ raw = subprocess.check_output(["curl", "-s", f"wttr.in/{town}?format=1"]).decode("utf-8")
+ return raw[:-1].replace("+", "")
+
+def open_calendar(lazy):
+ lazy.cmd_spawn("alacritty --hold -e cal -3 -m")
+
+def open_weather(lazy):
+ lazy.cmd_spawn(f"alacritty --hold -e curl -s wttr.in/{town}")
+
+def num_windows_open(group):
+ return len(group.windows)
+
+def init_widgets(size=12, weather=False):
+ widget_list = [
+ widget.CurrentLayout(),
+ widget.GroupBox(highlight_method="line", highlight_color=["222222", "444444"], this_current_screen_border="60fcbe", this_screen_border="60fcbe"),
+ widget.Prompt(),
+ #widget.WindowName(),
+ widget.WindowTabs(),
+ widget.Systray(),
+ #widget.Volume(),
+ #widget.NetGraph(interface="enp4s0"),
+ widget.Clock(format='%Y年%m月%d日 %a %H:%M', mouse_callbacks={"Button1": open_calendar}),
+ #widget.GenPollText(func=weather_string, update_interval=600, mouse_callbacks={"Button1": open_weather}),
+ #widget.Sep(foreground=None),
+ #widget.QuickExit(default_text=" [s▼]", countdown_format="[{}秒]")
+ ]
+ if weather:
+ widget_list.append(widget.GenPollText(func=weather_string, update_interval=600, mouse_callbacks={"Button1": open_weather}))
+
+ for w in widget_list:
+ w.fontsize = size
+ return widget_list
+
+screens = [
+ Screen(top=bar.Bar(init_widgets(14), 20)),
+ Screen(top=bar.Bar(init_widgets(16, True), 24)),
+ Screen(top=bar.Bar(init_widgets(20), 40)),
+]
+
+
+# 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
+main = None # WARNING: this is deprecated and will be removed soon
+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.
+ {'wmclass': 'confirm'},
+ {'wmclass': 'dialog'},
+ {'wmclass': 'download'},
+ {'wmclass': 'error'},
+ {'wmclass': 'file_progress'},
+ {'wmclass': 'notification'},
+ {'wmclass': 'splash'},
+ {'wmclass': 'toolbar'},
+ {'wmclass': 'confirmreset'}, # gitk
+ {'wmclass': 'makebranch'}, # gitk
+ {'wmclass': 'maketag'}, # gitk
+ {'wname': 'branchdialog'}, # gitk
+ {'wname': 'pinentry'}, # GPG key password entry
+ {'wmclass': 'ssh-askpass'}, # ssh-askpass
+ {'wmclass': 'pavucontrol'},
+])
+auto_fullscreen = True
+focus_on_window_activation = "smart"
+
+@hook.subscribe.startup_once
+def autostart():
+ subprocess.Popen(["/home/yui/.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"