mirror of
https://github.com/starr-dusT/dotfiles.git
synced 2025-02-18 18:57:32 -08:00
workable qtile done
This commit is contained in:
parent
d4cdc063d7
commit
2cddce50eb
1
.bashrc
1
.bashrc
@ -21,7 +21,6 @@ alias mpv='mpv --title="mpv"'
|
||||
alias dot='/usr/bin/git --git-dir=$HOME/.dots --work-tree=$HOME'
|
||||
dot config --local status.showUntrackedFiles no
|
||||
|
||||
|
||||
#export PATH="$PATH:$(ruby -e 'print Gem.user_dir')/bin"
|
||||
#export GEM_HOME=$(ruby -e 'print Gem.user_dir')
|
||||
|
||||
|
0
.config/qtile/.projectile
Executable file
0
.config/qtile/.projectile
Executable file
@ -1,302 +0,0 @@
|
||||
+TITLE: Custom Qtile Config
|
||||
#+PROPERTY: header-args :tangle config.py
|
||||
|
||||
* Table of Contents
|
||||
:PROPERTIES:
|
||||
:TOC: :include all :depth 3
|
||||
:END:
|
||||
:CONTENTS:
|
||||
:END:
|
||||
* Imports
|
||||
|
||||
Import needed python modules.
|
||||
|
||||
#+begin_src python
|
||||
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
|
||||
import os, subprocess, json
|
||||
#+end_src
|
||||
* Variables
|
||||
|
||||
Set variable used later in the config, often a handful of times.
|
||||
|
||||
#+begin_src python
|
||||
|
||||
# Use the "Windows" key for mod
|
||||
mod = "mod4"
|
||||
# Determine terminal with this nifty function
|
||||
terminal = guess_terminal()
|
||||
# Define workspace names
|
||||
groups = [Group(i) for i in "123456789"]
|
||||
# Generate group binding hotkeys
|
||||
dgroups_key_binder = None
|
||||
# List of rule objects (currently empty)
|
||||
dgroups_app_rules = []
|
||||
# Set mouse functionality
|
||||
follow_mouse_focus = True
|
||||
bring_front_click = False
|
||||
cursor_warp = False
|
||||
# Set fullscreen options
|
||||
auto_fullscreen = True
|
||||
focus_on_window_activation = "smart"
|
||||
# Set floating layout options
|
||||
floating_layout = layout.Floating(float_rules=[
|
||||
{'wmclass': 'Wine'},
|
||||
{'wmclass': 'Steam'},
|
||||
])
|
||||
|
||||
wal_loc = os.path.expanduser('~/.cache/wal/colors.json')
|
||||
wal = json.load(open(wal_loc))
|
||||
spacer_len = 3
|
||||
|
||||
#+end_src
|
||||
|
||||
* Keys
|
||||
** Window Management Binds
|
||||
|
||||
#+begin_src python
|
||||
# Start keys block
|
||||
keys = [
|
||||
# Close focused window
|
||||
Key([mod], "q",
|
||||
lazy.window.kill(),
|
||||
),
|
||||
|
||||
# Rotate through the available layout algorithms
|
||||
Key([mod], "space",
|
||||
lazy.next_layout(),
|
||||
),
|
||||
Key([mod, "shift"], "space",
|
||||
lazy.prev_layout(),
|
||||
),
|
||||
# Switch between windows
|
||||
Key([mod], "h",
|
||||
lazy.layout.left(),
|
||||
),
|
||||
Key([mod], "l",
|
||||
lazy.layout.right(),
|
||||
),
|
||||
Key([mod], "j",
|
||||
lazy.layout.down(),
|
||||
),
|
||||
Key([mod], "k",
|
||||
lazy.layout.up(),
|
||||
),
|
||||
|
||||
# Move windows on screen
|
||||
Key([mod, "shift"], "h",
|
||||
lazy.layout.shuffle_left(),
|
||||
lazy.layout.client_to_next(),
|
||||
lazy.layout.flip_left(),
|
||||
),
|
||||
Key([mod, "shift"], "l",
|
||||
lazy.layout.shuffle_right(),
|
||||
lazy.layout.client_to_previous(),
|
||||
lazy.layout.flip_right(),
|
||||
),
|
||||
Key([mod, "shift"], "j",
|
||||
lazy.layout.shuffle_down(),
|
||||
lazy.layout.flip_down(),
|
||||
),
|
||||
Key([mod, "shift"], "k",
|
||||
lazy.layout.shuffle_up(),
|
||||
lazy.layout.flip_up(),
|
||||
),
|
||||
# Resize windows on screen
|
||||
Key([mod, "control"], "h",
|
||||
lazy.layout.grow_left(),
|
||||
lazy.layout.shrink()
|
||||
),
|
||||
Key([mod, "control"], "l",
|
||||
lazy.layout.grow_right(),
|
||||
lazy.layout.grow()
|
||||
),
|
||||
Key([mod, "control"], "j",
|
||||
lazy.layout.grow_down(),
|
||||
),
|
||||
Key([mod, "control"], "k",
|
||||
lazy.layout.grow_up(),
|
||||
),
|
||||
# Return sizes to default
|
||||
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"),
|
||||
# Toggle between physical screens
|
||||
Key([mod], "comma", lazy.to_screen(0),
|
||||
desc="Toggle between split and unsplit sides of stack"),
|
||||
Key([mod], "period", lazy.to_screen(1),
|
||||
desc="Toggle between split and unsplit sides of stack"),
|
||||
# Toggle fullscreen
|
||||
Key([mod], "f", lazy.window.toggle_fullscreen(),
|
||||
desc="Toggle fullscreen"),
|
||||
# Toggle floating
|
||||
Key([mod], "t", lazy.window.toggle_floating(),
|
||||
desc="Toggle floating"),
|
||||
#+end_src
|
||||
|
||||
** Open Binds
|
||||
|
||||
#+begin_src python
|
||||
# Spawn terminal
|
||||
Key([mod], "Return", lazy.spawn(terminal),
|
||||
desc="Launch terminal"),
|
||||
# Spawn rofi drun
|
||||
Key([mod], "w", lazy.spawn("rofi -show drun"),
|
||||
desc="Launch rofi -drun"),
|
||||
# Spawn rofi window
|
||||
Key([mod, "shift"], "w", lazy.spawn("rofi -show window"),
|
||||
desc="Launch rofi -window"),
|
||||
|
||||
#+end_src
|
||||
|
||||
** System Utility Binds
|
||||
#+begin_src python
|
||||
# Recompile and restart qtile
|
||||
Key([mod, "control"], "r", lazy.restart(), desc="Restart Qtile"),
|
||||
# Quit qtile
|
||||
Key([mod, "control"], "q", lazy.shutdown(), desc="Shutdown Qtile"),
|
||||
# Qtile's in-built launcher
|
||||
Key([mod], "r", lazy.spawncmd(),
|
||||
desc="Spawn a command using a prompt widget"),
|
||||
# Start gamemoded
|
||||
Key([mod], "g", lazy.spawn("gamemoded -r"),
|
||||
desc="Start gamemode"),
|
||||
# Stop gamemoded
|
||||
Key([mod, "shift"], "g", lazy.spawn("killall gamemoded"),
|
||||
desc="Stop gamemode"),
|
||||
]
|
||||
#+end_src
|
||||
** Mouse Binds
|
||||
#+begin_src python
|
||||
# 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()),
|
||||
]
|
||||
#+end_src
|
||||
* Groups
|
||||
#+begin_src python
|
||||
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),
|
||||
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)),
|
||||
])
|
||||
|
||||
#+end_src
|
||||
* Layouts
|
||||
#+begin_src python
|
||||
layouts = [
|
||||
layout.Columns(border_focus = wal['colors']['color2'],
|
||||
border_normal = wal['colors']['color0'], margin = 2),
|
||||
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(),
|
||||
]
|
||||
#+end_src
|
||||
|
||||
* Defaults
|
||||
#+begin_src python
|
||||
|
||||
widget_defaults = dict(
|
||||
font='JetBrains Mono Nerd Font',
|
||||
fontsize=10,
|
||||
padding=3,
|
||||
background = wal['colors']['color0']
|
||||
)
|
||||
extension_defaults = widget_defaults.copy()
|
||||
|
||||
#+end_src
|
||||
|
||||
* Screens
|
||||
#+begin_src python
|
||||
|
||||
screens = [
|
||||
Screen(
|
||||
top=bar.Bar(
|
||||
[
|
||||
# Group Box
|
||||
widget.GroupBox(active = wal['colors']['color0'],
|
||||
inactive = wal['colors']['color0'],
|
||||
urgent_text = wal['colors']['color0'],
|
||||
background = wal['colors']['color1'],
|
||||
this_current_screen_border = wal['colors']['color2'],
|
||||
other_screen_border = wal['colors']['color2'],
|
||||
urgent_border = wal['colors']['color6'],
|
||||
highlight_method='block',
|
||||
rounded = False,
|
||||
hide_unused=True),
|
||||
widget.TextBox(text='\uE0B0',
|
||||
fontsize=17,
|
||||
padding=0,
|
||||
foreground=wal['colors']['color1']),
|
||||
# Window Name
|
||||
widget.Spacer(length = spacer_len,
|
||||
background = wal['colors']['color0']),
|
||||
widget.WindowName(),
|
||||
# Prompt
|
||||
widget.Prompt(),
|
||||
# Volume
|
||||
widget.TextBox(text = '\uE0B2', fontsize = 17,
|
||||
padding = 0, foreground = wal['colors']['color2'],
|
||||
background = wal['colors']['color0']),
|
||||
widget.TextBox(text = ' ', fontsize = 14,
|
||||
foreground = wal['colors']['color0'],
|
||||
background = wal['colors']['color2']),
|
||||
widget.PulseVolume(foreground = wal['colors']['color0'],
|
||||
background = wal['colors']['color2']),
|
||||
widget.Spacer(length = spacer_len,
|
||||
background = wal['colors']['color2']),
|
||||
# Clock
|
||||
widget.TextBox(text = '\uE0B2', fontsize = 17,
|
||||
padding = 0, foreground = wal['colors']['color1'],
|
||||
background = wal['colors']['color2']),
|
||||
widget.Clock(format='%Y-%m-%d %a %I:%M %p',
|
||||
background = wal['colors']['color1'],
|
||||
foreground = wal['colors']['color0']),
|
||||
widget.Spacer(length = spacer_len,
|
||||
background = wal['colors']['color1']),
|
||||
widget.CurrentLayout(scale=0.6),
|
||||
],
|
||||
20,
|
||||
),
|
||||
),
|
||||
]
|
||||
#+end_src
|
||||
* Autostart
|
||||
#+begin_src python
|
||||
|
||||
@hook.subscribe.startup_once
|
||||
def autostart():
|
||||
home = os.path.expanduser('~/.config/qtile/autostart.sh')
|
||||
subprocess.call([home])
|
||||
|
||||
#+end_src
|
@ -1,247 +1,27 @@
|
||||
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
|
||||
import os, subprocess, json
|
||||
from libqtile import hook
|
||||
from settings.keys import mod, keys
|
||||
from settings.groups import groups
|
||||
from settings.layouts import layouts, floating_layout
|
||||
from settings.widgets import widget_defaults, extension_defaults
|
||||
from settings.screens import screens
|
||||
from settings.mouse import mouse
|
||||
from settings.path import qtile_path
|
||||
|
||||
# Use the "Windows" key for mod
|
||||
mod = "mod4"
|
||||
# Determine terminal with this nifty function
|
||||
terminal = guess_terminal()
|
||||
# Define workspace names
|
||||
groups = [Group(i) for i in "123456789"]
|
||||
# Generate group binding hotkeys
|
||||
dgroups_key_binder = None
|
||||
# List of rule objects (currently empty)
|
||||
dgroups_app_rules = []
|
||||
# Set mouse functionality
|
||||
follow_mouse_focus = True
|
||||
bring_front_click = False
|
||||
cursor_warp = False
|
||||
# Set fullscreen options
|
||||
auto_fullscreen = True
|
||||
focus_on_window_activation = "smart"
|
||||
# Set floating layout options
|
||||
floating_layout = layout.Floating(float_rules=[
|
||||
{'wmclass': 'Wine'},
|
||||
{'wmclass': 'Steam'},
|
||||
])
|
||||
|
||||
wal_loc = os.path.expanduser('~/.cache/wal/colors.json')
|
||||
wal = json.load(open(wal_loc))
|
||||
spacer_len = 3
|
||||
|
||||
# Start keys block
|
||||
keys = [
|
||||
# Close focused window
|
||||
Key([mod], "q",
|
||||
lazy.window.kill(),
|
||||
),
|
||||
|
||||
# Rotate through the available layout algorithms
|
||||
Key([mod], "space",
|
||||
lazy.next_layout(),
|
||||
),
|
||||
Key([mod, "shift"], "space",
|
||||
lazy.prev_layout(),
|
||||
),
|
||||
# Switch between windows
|
||||
Key([mod], "h",
|
||||
lazy.layout.left(),
|
||||
),
|
||||
Key([mod], "l",
|
||||
lazy.layout.right(),
|
||||
),
|
||||
Key([mod], "j",
|
||||
lazy.layout.down(),
|
||||
),
|
||||
Key([mod], "k",
|
||||
lazy.layout.up(),
|
||||
),
|
||||
|
||||
# Move windows on screen
|
||||
Key([mod, "shift"], "h",
|
||||
lazy.layout.shuffle_left(),
|
||||
lazy.layout.client_to_next(),
|
||||
lazy.layout.flip_left(),
|
||||
),
|
||||
Key([mod, "shift"], "l",
|
||||
lazy.layout.shuffle_right(),
|
||||
lazy.layout.client_to_previous(),
|
||||
lazy.layout.flip_right(),
|
||||
),
|
||||
Key([mod, "shift"], "j",
|
||||
lazy.layout.shuffle_down(),
|
||||
lazy.layout.flip_down(),
|
||||
),
|
||||
Key([mod, "shift"], "k",
|
||||
lazy.layout.shuffle_up(),
|
||||
lazy.layout.flip_up(),
|
||||
),
|
||||
# Resize windows on screen
|
||||
Key([mod, "control"], "h",
|
||||
lazy.layout.grow_left(),
|
||||
lazy.layout.shrink()
|
||||
),
|
||||
Key([mod, "control"], "l",
|
||||
lazy.layout.grow_right(),
|
||||
lazy.layout.grow()
|
||||
),
|
||||
Key([mod, "control"], "j",
|
||||
lazy.layout.grow_down(),
|
||||
),
|
||||
Key([mod, "control"], "k",
|
||||
lazy.layout.grow_up(),
|
||||
),
|
||||
# Return sizes to default
|
||||
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"),
|
||||
# Toggle between physical screens
|
||||
Key([mod], "comma", lazy.to_screen(0),
|
||||
desc="Toggle between split and unsplit sides of stack"),
|
||||
Key([mod], "period", lazy.to_screen(1),
|
||||
desc="Toggle between split and unsplit sides of stack"),
|
||||
# Toggle fullscreen
|
||||
Key([mod], "f", lazy.window.toggle_fullscreen(),
|
||||
desc="Toggle fullscreen"),
|
||||
# Toggle floating
|
||||
Key([mod], "t", lazy.window.toggle_floating(),
|
||||
desc="Toggle floating"),
|
||||
|
||||
# Spawn terminal
|
||||
Key([mod], "Return", lazy.spawn(terminal),
|
||||
desc="Launch terminal"),
|
||||
# Spawn rofi drun
|
||||
Key([mod], "w", lazy.spawn("rofi -show drun"),
|
||||
desc="Launch rofi -drun"),
|
||||
# Spawn rofi window
|
||||
Key([mod, "shift"], "w", lazy.spawn("rofi -show window"),
|
||||
desc="Launch rofi -window"),
|
||||
|
||||
# Recompile and restart qtile
|
||||
Key([mod, "control"], "r", lazy.restart(), desc="Restart Qtile"),
|
||||
# Quit qtile
|
||||
Key([mod, "control"], "q", lazy.shutdown(), desc="Shutdown Qtile"),
|
||||
# Qtile's in-built launcher
|
||||
Key([mod], "r", lazy.spawncmd(),
|
||||
desc="Spawn a command using a prompt widget"),
|
||||
# Start gamemoded
|
||||
Key([mod], "g", lazy.spawn("gamemoded -r"),
|
||||
desc="Start gamemode"),
|
||||
# Stop gamemoded
|
||||
Key([mod, "shift"], "g", lazy.spawn("killall gamemoded"),
|
||||
desc="Stop gamemode"),
|
||||
]
|
||||
|
||||
# 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()),
|
||||
]
|
||||
|
||||
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),
|
||||
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 = wal['colors']['color2'],
|
||||
border_normal = wal['colors']['color0'], margin = 2),
|
||||
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(),
|
||||
]
|
||||
|
||||
widget_defaults = dict(
|
||||
font='JetBrains Mono Nerd Font',
|
||||
fontsize=10,
|
||||
padding=3,
|
||||
background = wal['colors']['color0']
|
||||
)
|
||||
extension_defaults = widget_defaults.copy()
|
||||
|
||||
screens = [
|
||||
Screen(
|
||||
top=bar.Bar(
|
||||
[
|
||||
# Group Box
|
||||
widget.GroupBox(active = wal['colors']['color0'],
|
||||
inactive = wal['colors']['color0'],
|
||||
urgent_text = wal['colors']['color0'],
|
||||
background = wal['colors']['color1'],
|
||||
this_current_screen_border = wal['colors']['color2'],
|
||||
other_screen_border = wal['colors']['color2'],
|
||||
urgent_border = wal['colors']['color6'],
|
||||
highlight_method='block',
|
||||
rounded = False,
|
||||
hide_unused=True),
|
||||
widget.TextBox(text='\uE0B0',
|
||||
fontsize=17,
|
||||
padding=0,
|
||||
foreground=wal['colors']['color1']),
|
||||
# Window Name
|
||||
widget.Spacer(length = spacer_len,
|
||||
background = wal['colors']['color0']),
|
||||
widget.WindowName(),
|
||||
# Prompt
|
||||
widget.Prompt(),
|
||||
# Volume
|
||||
widget.TextBox(text = '\uE0B2', fontsize = 17,
|
||||
padding = 0, foreground = wal['colors']['color2'],
|
||||
background = wal['colors']['color0']),
|
||||
widget.TextBox(text = ' ', fontsize = 14,
|
||||
foreground = wal['colors']['color0'],
|
||||
background = wal['colors']['color2']),
|
||||
widget.PulseVolume(foreground = wal['colors']['color0'],
|
||||
background = wal['colors']['color2']),
|
||||
widget.Spacer(length = spacer_len,
|
||||
background = wal['colors']['color2']),
|
||||
# Clock
|
||||
widget.TextBox(text = '\uE0B2', fontsize = 17,
|
||||
padding = 0, foreground = wal['colors']['color1'],
|
||||
background = wal['colors']['color2']),
|
||||
widget.Clock(format='%Y-%m-%d %a %I:%M %p',
|
||||
background = wal['colors']['color1'],
|
||||
foreground = wal['colors']['color0']),
|
||||
widget.Spacer(length = spacer_len,
|
||||
background = wal['colors']['color1']),
|
||||
widget.CurrentLayout(scale=0.6),
|
||||
],
|
||||
20,
|
||||
),
|
||||
),
|
||||
]
|
||||
from os import path
|
||||
import subprocess
|
||||
|
||||
# Autostart
|
||||
@hook.subscribe.startup_once
|
||||
def autostart():
|
||||
home = os.path.expanduser('~/.config/qtile/autostart.sh')
|
||||
subprocess.call([home])
|
||||
subprocess.call([path.join(qtile_path, 'autostart.sh')])
|
||||
|
||||
# Basic settings
|
||||
main = None
|
||||
dgroups_key_binder = None
|
||||
dgroups_app_rules = []
|
||||
follow_mouse_focus = True
|
||||
bring_front_click = False
|
||||
cursor_warp = True
|
||||
auto_fullscreen = True
|
||||
focus_on_window_activation = 'urgent'
|
||||
wmname = 'LG3D'
|
||||
|
18
.config/qtile/settings/groups.py
Normal file
18
.config/qtile/settings/groups.py
Normal file
@ -0,0 +1,18 @@
|
||||
from libqtile.config import Key, Group
|
||||
from libqtile.command import lazy
|
||||
from settings.keys import mod, keys
|
||||
|
||||
# Define groups I have
|
||||
groups = [Group(i) for i in [
|
||||
"1", "2", "3", "4", "5", "6", "7", "8", "9",
|
||||
]]
|
||||
|
||||
# Define keybinds for groups
|
||||
for i, group in enumerate(groups):
|
||||
actual_key = str(i + 1)
|
||||
keys.extend([
|
||||
# Switch to workspace N
|
||||
Key([mod], actual_key, lazy.group[group.name].toscreen()),
|
||||
# Send window to workspace N
|
||||
Key([mod, "shift"], actual_key, lazy.window.togroup(group.name))
|
||||
])
|
77
.config/qtile/settings/keys.py
Normal file
77
.config/qtile/settings/keys.py
Normal file
@ -0,0 +1,77 @@
|
||||
from libqtile.config import EzKey
|
||||
from libqtile.command import lazy
|
||||
|
||||
# Set mod key to the "windows" key
|
||||
mod = "mod4"
|
||||
|
||||
# Define keybinds
|
||||
keys = [EzKey(k[0], *k[1:]) for k in [
|
||||
|
||||
# ------ Movement ------ #
|
||||
# Navigate between windows
|
||||
("M-h", lazy.layout.left()),
|
||||
("M-j", lazy.layout.down()),
|
||||
("M-k", lazy.layout.up()),
|
||||
("M-l", lazy.layout.right()),
|
||||
# Switch focus between two screens
|
||||
("M-<comma>", lazy.to_screen(0)),
|
||||
("M-<period>", lazy.to_screen(1)),
|
||||
# Move windows around
|
||||
("M-S-h", lazy.layout.shuffle_left(),
|
||||
lazy.layout.swap_left()),
|
||||
("M-S-j", lazy.layout.shuffle_down()),
|
||||
("M-S-k", lazy.layout.shuffle_up()),
|
||||
("M-S-l", lazy.layout.shuffle_right(),
|
||||
lazy.layout.swap_right()),
|
||||
# Resize windows
|
||||
("M-C-h", lazy.layout.grow_left().when('bsp'),
|
||||
lazy.layout.shrink().when(['monadtall', 'monadwide'])),
|
||||
("M-C-j", lazy.layout.grow_down().when('bsp')),
|
||||
("M-C-k", lazy.layout.grow_up().when('bsp')),
|
||||
("M-C-l", lazy.layout.grow_right().when('bsp'),
|
||||
lazy.layout.grow().when(['monadtall', 'monadwide'])),
|
||||
("M-C-n", lazy.layout.normalize()),
|
||||
# Swap master and stack
|
||||
("M-<space>", lazy.layout.flip().when(['monadtall', 'monadwide']),
|
||||
lazy.layout.rotate().when(['stack'])),
|
||||
|
||||
# ------ Window State Changes ------ #
|
||||
# Kill focused window
|
||||
("M-q", lazy.window.kill()),
|
||||
# Toggle Floating
|
||||
("M-t", lazy.window.toggle_floating()),
|
||||
|
||||
# ------ Progam Launching ------ #
|
||||
# Program launcher
|
||||
("M-w", lazy.spawn("rofi -show drun")),
|
||||
("M-S-w", lazy.spawn("rofi -show window")),
|
||||
# Open Programs
|
||||
("M-<Return>", lazy.spawn("alacritty")),
|
||||
("M-S-<Return>", lazy.spawn("alacritty -e vifm")),
|
||||
("M-b", lazy.spawn("brave")),
|
||||
("M-d", lazy.spawn("discord")),
|
||||
("M-e", lazy.spawn("emacs")),
|
||||
("M-g", lazy.spawn("lutris")),
|
||||
# Scratchpad toggles
|
||||
|
||||
# ------ System + Utils ------- #
|
||||
# Resart qtile
|
||||
("M-S-r", lazy.restart()),
|
||||
# Quit qtile
|
||||
("M-S-q", lazy.shutdown()),
|
||||
# Switch between layouts
|
||||
("M-<Tab>", lazy.next_layout()),
|
||||
("M-S-<Tab>", lazy.prev_layout()),
|
||||
# Screenshot
|
||||
("M-s", lazy.spawn("flameshot gui")),
|
||||
# Gamemode
|
||||
("M-S-g", lazy.spawn('toggle_gamemode')),
|
||||
# Manage computer audio
|
||||
("<XF86AudioLowerVolume>",
|
||||
lazy.spawn("pactl set-sink-volume @DEFAULT_SINK@ -2%")),
|
||||
("<XF86AudioRaiseVolume>",
|
||||
lazy.spawn("pactl set-sink-volume @DEFAULT_SINK@ +2%")),
|
||||
("<XF86AudioMute>",
|
||||
lazy.spawn("pactl set-sink-mute @DEFAULT_SINK@ toggle")),
|
||||
|
||||
]]
|
31
.config/qtile/settings/layouts.py
Normal file
31
.config/qtile/settings/layouts.py
Normal file
@ -0,0 +1,31 @@
|
||||
from libqtile import layout
|
||||
from settings.wal import wal
|
||||
|
||||
# Layout configs
|
||||
layout_conf = {
|
||||
'border_focus': wal['colors']['color2'],
|
||||
'border_normal': wal['colors']['color0'],
|
||||
'border_width': 1,
|
||||
'margin': 2,
|
||||
}
|
||||
|
||||
# Define the layouts I have
|
||||
layouts = [
|
||||
layout.MonadTall(**layout_conf),
|
||||
layout.Max(**layout_conf),
|
||||
layout.Stack(num_stacks=2, **layout_conf),
|
||||
layout.MonadWide(**layout_conf),
|
||||
layout.Matrix(columns=2, **layout_conf),
|
||||
layout.Zoomy(**layout_conf),
|
||||
layout.Bsp(**layout_conf),
|
||||
]
|
||||
|
||||
# Define floating rules
|
||||
floating_layout = layout.Floating(
|
||||
float_rules=[
|
||||
{'wmclass': 'Steam'},
|
||||
{'wmclass': 'Wine'},
|
||||
],
|
||||
border_focus=wal['colors']['color2'],
|
||||
border_width=1,
|
||||
)
|
14
.config/qtile/settings/mouse.py
Normal file
14
.config/qtile/settings/mouse.py
Normal file
@ -0,0 +1,14 @@
|
||||
from libqtile.config import Drag, Click
|
||||
from libqtile.command import lazy
|
||||
from settings.keys import mod
|
||||
|
||||
# Define mouse binds
|
||||
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())
|
||||
]
|
4
.config/qtile/settings/path.py
Normal file
4
.config/qtile/settings/path.py
Normal file
@ -0,0 +1,4 @@
|
||||
from os import path
|
||||
|
||||
# Define the path for qtile
|
||||
qtile_path = path.join(path.expanduser('~'), ".config", "qtile")
|
8
.config/qtile/settings/screens.py
Normal file
8
.config/qtile/settings/screens.py
Normal file
@ -0,0 +1,8 @@
|
||||
from libqtile.config import Screen
|
||||
from libqtile import bar
|
||||
from settings.widgets import primary_widgets
|
||||
|
||||
# Define the screens (and bars)
|
||||
screens = [
|
||||
Screen(top=bar.Bar(primary_widgets, size=20))
|
||||
]
|
6
.config/qtile/settings/wal.py
Normal file
6
.config/qtile/settings/wal.py
Normal file
@ -0,0 +1,6 @@
|
||||
from os.path import expanduser
|
||||
from json import load
|
||||
|
||||
# Get color config from pywal
|
||||
wal_loc = expanduser('~/.cache/wal/colors.json')
|
||||
wal = load(open(wal_loc))
|
57
.config/qtile/settings/widgets.py
Normal file
57
.config/qtile/settings/widgets.py
Normal file
@ -0,0 +1,57 @@
|
||||
from libqtile import widget
|
||||
from settings.wal import wal
|
||||
|
||||
spacer_len = 3
|
||||
|
||||
widget_defaults = dict(
|
||||
font='JetBrains Mono Nerd Font',
|
||||
fontsize=10,
|
||||
padding=3,
|
||||
background = wal['colors']['color0']
|
||||
)
|
||||
extension_defaults = widget_defaults.copy()
|
||||
|
||||
primary_widgets = [
|
||||
# Group Box
|
||||
widget.GroupBox(active = wal['colors']['color0'],
|
||||
inactive = wal['colors']['color0'],
|
||||
urgent_text = wal['colors']['color0'],
|
||||
background = wal['colors']['color1'],
|
||||
this_current_screen_border = wal['colors']['color2'],
|
||||
other_screen_border = wal['colors']['color2'],
|
||||
urgent_border = wal['colors']['color6'],
|
||||
highlight_method='block',
|
||||
rounded = False,
|
||||
hide_unused=True),
|
||||
widget.TextBox(text='\uE0B0',
|
||||
fontsize=17,
|
||||
padding=0,
|
||||
foreground=wal['colors']['color1']),
|
||||
# Window Name
|
||||
widget.Spacer(length = spacer_len,
|
||||
background = wal['colors']['color0']),
|
||||
widget.WindowName(),
|
||||
# Prompt
|
||||
widget.Prompt(),
|
||||
# Volume
|
||||
widget.TextBox(text = '\uE0B2', fontsize = 17,
|
||||
padding = 0, foreground = wal['colors']['color2'],
|
||||
background = wal['colors']['color0']),
|
||||
widget.TextBox(text = ' ', fontsize = 14,
|
||||
foreground = wal['colors']['color0'],
|
||||
background = wal['colors']['color2']),
|
||||
widget.PulseVolume(foreground = wal['colors']['color0'],
|
||||
background = wal['colors']['color2']),
|
||||
widget.Spacer(length = spacer_len,
|
||||
background = wal['colors']['color2']),
|
||||
# Clock
|
||||
widget.TextBox(text = '\uE0B2', fontsize = 17,
|
||||
padding = 0, foreground = wal['colors']['color1'],
|
||||
background = wal['colors']['color2']),
|
||||
widget.Clock(format='%Y-%m-%d %a %I:%M %p',
|
||||
background = wal['colors']['color1'],
|
||||
foreground = wal['colors']['color0']),
|
||||
widget.Spacer(length = spacer_len,
|
||||
background = wal['colors']['color1']),
|
||||
widget.CurrentLayout(scale=0.6),
|
||||
]
|
@ -46,10 +46,11 @@
|
||||
(doct '(("personal" :keys "p"
|
||||
:children (("todo" :keys "t"
|
||||
:file org-capture-todo
|
||||
:template ("* TODO %? :@home:" "%U"))
|
||||
:template ("* TODO %? :@home:" "%a" "%U"))
|
||||
("question" :keys "q"
|
||||
:file org-capture-todo
|
||||
:template ("* TODO Find out %? :question:@home:"
|
||||
"%a"
|
||||
"%U"))
|
||||
("habit" :keys "h"
|
||||
:file org-capture-todo
|
||||
|
@ -481,10 +481,11 @@ Allowable tags: @work, @home, note, question, habit
|
||||
(doct '(("personal" :keys "p"
|
||||
:children (("todo" :keys "t"
|
||||
:file org-capture-todo
|
||||
:template ("* TODO %? :@home:" "%U"))
|
||||
:template ("* TODO %? :@home:" "%a" "%U"))
|
||||
("question" :keys "q"
|
||||
:file org-capture-todo
|
||||
:template ("* TODO Find out %? :question:@home:"
|
||||
"%a"
|
||||
"%U"))
|
||||
("habit" :keys "h"
|
||||
:file org-capture-todo
|
||||
|
7
.gitignore
vendored
7
.gitignore
vendored
@ -38,8 +38,5 @@
|
||||
|
||||
### ~/.config/retroarch
|
||||
!/.config/qtile
|
||||
/.config/qtile/*
|
||||
!/.config/qtile/autostart.sh
|
||||
!/.config/qtile/config.org
|
||||
!/.config/qtile/config.py
|
||||
|
||||
/.config/qtile/__pycache__
|
||||
/.config/qtile/settings/__pycache__
|
||||
|
Loading…
x
Reference in New Issue
Block a user