updated antidote in prep for usage on laptop

This commit is contained in:
eeleater 2024-08-16 00:02:15 +02:00
parent ef46d0e0a0
commit 48b4d418af
39 changed files with 1 additions and 1403 deletions

View file

@ -1,48 +0,0 @@
import = ["./dracula.toml"]
[env]
TERM = "xterm-256color"
[font]
size = 10
[font.bold]
family = "FiraCode Nerd Font"
style = "Bold"
[font.bold_italic]
family = "FiraCode Nerd Font"
style = "Bold Italic"
[font.italic]
family = "FiraCode Nerd Font"
style = "Italic"
[font.normal]
family = "FiraCode Nerd Font"
style = "Regular"
[[keyboard.bindings]]
action = "Paste"
key = "V"
mods = "Control|Shift"
[[keyboard.bindings]]
action = "Copy"
key = "C"
mods = "Control|Shift"
[scrolling]
history = 99999
[shell]
args = ["--login"]
program = "/usr/bin/zsh"
[window]
opacity = 0.95
title = "Alacritty"
[window.class]
general = "Alacritty"
instance = "Alacritty"

View file

@ -1,76 +0,0 @@
# Dracula theme for Alacritty
# https://draculatheme.com/alacritty
#
# Color palette
# https://spec.draculatheme.com
#
# Instructions
# https://github.com/alacritty/alacritty/blob/master/extra/man/alacritty.5.scd
[colors.primary]
background = "#282a36"
foreground = "#f8f8f2"
bright_foreground = "#ffffff"
[colors.cursor]
text = "#282a36"
cursor = "#f8f8f2"
[colors.vi_mode_cursor]
text = "CellBackground"
cursor = "CellForeground"
[colors.selection]
text = "CellForeground"
background = "#44475a"
[colors.normal]
black = "#21222c"
red = "#ff5555"
green = "#50fa7b"
yellow = "#f1fa8c"
blue = "#bd93f9"
magenta = "#ff79c6"
cyan = "#8be9fd"
white = "#f8f8f2"
[colors.bright]
black = "#6272a4"
red = "#ff6e6e"
green = "#69ff94"
yellow = "#ffffa5"
blue = "#d6acff"
magenta = "#ff92df"
cyan = "#a4ffff"
white = "#ffffff"
[colors.search.matches]
foreground = "#44475a"
background = "#50fa7b"
[colors.search.focused_match]
foreground = "#44475a"
background = "#ffb86c"
[colors.footer_bar]
background = "#282a36"
foreground = "#f8f8f2"
[colors.hints.start]
foreground = "#282a36"
background = "#f1fa8c"
[colors.hints.end]
foreground = "#f1fa8c"
background = "#282a36"

View file

@ -1,78 +0,0 @@
tap "homebrew/bundle"
tap "homebrew/command-not-found"
tap "homebrew/core"
tap "homebrew/services"
tap "kdabir/tap"
tap "msoap/tools"
tap "xwmx/taps"
tap "yxdunc/tools"
brew "asciinema"
brew "perl"
brew "asdf"
brew "bat"
brew "brotli"
brew "node"
brew "gettext"
brew "bitwarden-cli"
brew "bottom"
brew "bpytop"
brew "cheat"
brew "chezmoi"
brew "choose-rust"
brew "util-linux"
brew "curlie"
brew "direnv"
brew "dog"
brew "duf"
brew "dust"
brew "libgit2"
brew "exa"
brew "fd"
brew "llvm"
brew "gh"
brew "git-delta"
brew "glances"
brew "grex"
brew "gron"
brew "hexyl"
brew "httpie"
brew "hub"
brew "hyperfine"
brew "ipinfo-cli"
brew "jc"
brew "jq"
brew "lf"
brew "lnav"
brew "lsd"
brew "mcfly"
brew "miller"
brew "name-that-hash"
brew "navi"
brew "nmap"
brew "ripgrep"
brew "w3m"
brew "nb"
brew "nghttp2"
brew "procs"
brew "pywhat"
brew "ranger"
brew "rm-improved"
brew "rust"
brew "scc"
brew "sd"
brew "shellcheck"
brew "spark"
brew "speedtest-cli"
brew "starship"
brew "tokei"
brew "up"
brew "viddy"
brew "wget"
brew "wgetpaste"
brew "whalebrew"
brew "xh"
brew "xsv"
brew "zoxide"
brew "kdabir/tap/has"
brew "msoap/tools/shell2http"
brew "yxdunc/tools/lipl"

View file

@ -1,38 +0,0 @@
from libqtile import bar, widget
from colors import colors
def base(fg='foreground', bg='background'):
return { 'foreground': colors[fg], 'background': colors[bg] }
widget_defaults = {
'font': 'FiraCode Mono Nerd Font',
'fontsize': 12,
'padding': 5,
'foreground': colors['black'],
'background': colors['background']
}
group_box = {
'fontsize': 28,
'active': colors['purple'],
'inactive': colors['purple'],
'highlight_method': 'line',
'this_current_screen_border': colors['green']
}
green = { 'background': colors['green'] }
yellow = { 'background': colors['yellow'] }
widgets_list = [
widget.GroupBox(**group_box),
widget.WindowName(**base(fg='yellow')),
widget.Memory(**yellow),
widget.Battery(**green),
widget.Volume(**yellow),
widget.CapsNumLockIndicator(**green),
widget.CurrentLayout(**yellow),
widget.Clock(format='%A, %B %d (%T)', **green),
widget.Systray()
]
top = bar.Bar(widgets_list, 30)

View file

@ -1,9 +0,0 @@
import json
import os
theme = 'nord'
user = os.path.expanduser('~')
with open(user + "/.config/qtile/themes/" + theme + ".json") as theme_json:
colors = json.load(theme_json)

View file

@ -1,15 +0,0 @@
import subprocess
import os
from libqtile import hook
from keys import keys
from groups import groups
from screens import screens
from bars import widget_defaults
from layouts import layouts, floating_layout
#@hook.subscribe.startup_once
# def start_once():
# user = os.path.expanduser('~')
# subprocess.call([user + '/.config/qtile/scripts/autostart.sh'])

View file

@ -1,20 +0,0 @@
from libqtile.config import Group, ScratchPad, DropDown
group_names = [
("WWW", {'layout': 'treetab', 'label': ''}),
("DEV", {'layout': 'monadtall', 'label': ''}),
("SYS", {'layout': 'treetab', 'label': ''}),
("VMS", {'layout': 'monadtall', 'label': ''}),
("DOC", {'layout': 'monadtall', 'label': ''}),
("IRC", {'layout': 'monadtall', 'label': ''}),
("MUS", {'layout': 'monadtall', 'label': ''}),
("VID", {'layout': 'monadtall', 'label': ''}),
("GFX", {'layout': 'floating', 'label': ''})
]
terminals = [
DropDown("term", "kitty", height = 0.65, width = 0.85, warp_pointer = False)
]
groups = [Group(name, **kwargs) for name, kwargs in group_names]
groups.append(ScratchPad("DRP", dropdowns = terminals))

View file

@ -1,62 +0,0 @@
from libqtile.config import Key, Drag, Click
from libqtile.lazy import lazy
from groups import group_names
mod = ["mod4"]
modshift = ["mod4", "shift"]
modctrl = ["mod4", "control"]
ctrl = ["control"]
keys = [
# Standard Controls
Key(modshift, "d", lazy.window.kill(), desc='kill active window'),
Key(modctrl, "r", lazy.restart(), desc='reload qtile config'),
Key(modctrl, "l", lazy.spawn('xdg-screensaver lock'), desc='lock screen'),
Key(modshift, "q", lazy.spawn('rofi -show p -modi p:rofi-power-menu'), desc="shutdown menu"),
Key(mod, "Tab", lazy.spawn('rofi -show window'), desc='window menu'),
# Treetab controls
Key(modctrl, "Up", lazy.layout.section_up(), desc='Move up a section in treetab'),
Key(modctrl, "Down", lazy.layout.section_down(), desc='Move down a section in treetab'),
# Window controls
Key(mod, "Up", lazy.layout.up(), desc='Move focus up in current stack pane'),
Key(mod, "Down", lazy.layout.down(), desc='Move focus down in current stack pane'),
Key(mod, "Left", lazy.layout.shrink(), lazy.layout.decrease_nmaster(), desc='Shrink window (MonadTall), decrease number in master pane (Tile)'),
Key(mod, "Right", lazy.layout.grow(), lazy.layout.increase_nmaster(), desc='Expand window (MonadTall), increase number in master pane (Tile)'),
Key(modshift, "Down", lazy.layout.shuffle_down(), desc='Move windows down in current stack'),
Key(modshift, "Up", lazy.layout.shuffle_up(), desc='Move windows up in current stack'),
Key(modctrl, "f", lazy.window.toggle_floating(), desc='toggle floating'),
Key(mod, "n", lazy.layout.normalize(), desc='normalize window size ratios'),
Key(mod, "m", lazy.layout.maximize(), desc='toggle window between minimum and maximum sizes'),
# Stack controls
Key(modshift, "space", lazy.layout.rotate(), lazy.layout.flip(), desc='Switch which side main pane occupies (XmonadTall)'),
Key(mod, "space", lazy.layout.next(), desc='Switch window focus to other pane(s) of stack'),
Key(modctrl, "Return", lazy.layout.toggle_split(), desc='Toggle between split and unsplit sides of stack'),
# run programs
Key(mod, "Return", lazy.spawn('rofi -show drun'), desc='launcher'),
Key(modshift, "r", lazy.spawn('pcmanfm'), desc='filebrowser'),
Key(modshift, "p", lazy.spawn('bwmenu'), desc='passwordmenu'),
Key(ctrl, "space", lazy.group["DRP"].dropdown_toggle("term")),
# sound + brightness
Key([], "XF86AudioMute", lazy.spawn('pactl set-sink-mute @DEFAULT_SINK@ toggle')),
Key([], "XF86AudioMicMute", lazy.spawn('pactl set-source-mute @DEFAULT_SOURCE@ toggle')),
Key([], "XF86AudioLowerVolume", lazy.spawn('pactl set-sink-volume @DEFAULT_SINK@ -5%')),
Key([], "XF86AudioRaiseVolume", lazy.spawn('pactl set-sink-volume @DEFAULT_SINK@ +5%')),
Key([], "XF86MonBrightnessUp", lazy.spawn('brightnessctl set +10%')),
Key([], "XF86MonBrightnessDown", lazy.spawn('brightnessctl set 10%-'))
]
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, (name, kwargs) in enumerate(group_names, 1):
keys.append(Key(mod, str(i), lazy.group[name].toscreen()))
keys.append(Key(modshift, str(i), lazy.window.togroup(name)))

View file

@ -1,53 +0,0 @@
from libqtile import layout
from libqtile.config import Match
from colors import colors
layout_theme = {
"border_width": 1,
"margin": 5,
"border_focus": colors['green'],
"border_normal": colors['cyan']
}
treetab_layout = {
"font": "FiraCode Nerd Font",
"fontsize": 10,
"sections": [""],
"section_fontsize": 8,
"bg_color": colors['background'],
"active_bg": colors['foreground'],
"active_fg": colors['background'],
"inactive_bg": colors['background'],
"inactive_fg": colors['white'],
"padding_y": 5,
"section_top": 10,
"panel_width": 100
}
layouts = [
# layout.MonadWide(**layout_theme),
# layout.Bsp(**layout_theme),
# layout.Stack(num_stacks=2, **layout_theme),
# layout.Columns(**layout_theme),
# layout.RatioTile(**layout_theme),
# layout.VerticalTile(**layout_theme),
# layout.Matrix(**layout_theme),
layout.MonadTall(**layout_theme),
# layout.Max(**layout_theme),
# layout.Tile(shift_windows=True, **layout_theme),
layout.TreeTab(**treetab_layout),
layout.Floating(**layout_theme)
]
floatrules = [
*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
]
floating_layout = layout.Floating(float_rules = floatrules, border_width = 0)

View file

@ -1,170 +0,0 @@
import json
import subprocess
from libqtile import layout, bar, widget, hook
from libqtile.command import lazy
from libqtile.config import Key, Screen, Group, Drag, Click
@hook.subscribe.startup_once
def start_once():
subprocess.call(['/home/eeleater/.config/qtile/scripts/autostart.sh'])
terminal = "kitty"
mod = ["mod4"]
modshift = ["mod4", "shift"]
modctrl = ["mod4", "control"]
keys = [
# Standard Controls
Key(modshift, "d", lazy.window.kill(), desc='kill active window'),
Key(modctrl, "r", lazy.restart(), desc='reload qtile config'),
Key(modctrl, "l", lazy.spawn("xdg-screensaver lock"), desc='lock screen'),
Key(modshift, "q", lazy.spawn("rofi -show p -modi p:rofi-power-menu"), desc="shutdown menu"),
Key(mod, "Tab", lazy.spawn("rofi -show window"), desc='window menu'),
# Treetab controls
Key(modctrl, "Up", lazy.layout.section_up(), desc='Move up a section in treetab'),
Key(modctrl, "Down", lazy.layout.section_down(), desc='Move down a section in treetab'),
# Window controls
Key(mod, "Up", lazy.layout.up(), desc='Move focus up in current stack pane'),
Key(mod, "Down", lazy.layout.down(), desc='Move focus down in current stack pane'),
Key(mod, "Left", lazy.layout.shrink(), lazy.layout.decrease_nmaster(), desc='Shrink window (MonadTall), decrease number in master pane (Tile)'),
Key(mod, "Right", lazy.layout.grow(), lazy.layout.increase_nmaster(), desc='Expand window (MonadTall), increase number in master pane (Tile)'),
Key(modshift, "Down", lazy.layout.shuffle_down(), desc='Move windows down in current stack'),
Key(modshift, "Up", lazy.layout.shuffle_up(), desc='Move windows up in current stack'),
Key(modctrl, "f", lazy.window.toggle_floating(), desc='toggle floating'),
Key(mod, "n", lazy.layout.normalize(), desc='normalize window size ratios'),
Key(mod, "m", lazy.layout.maximize(), desc='toggle window between minimum and maximum sizes'),
# Stack controls
Key(modshift, "space", lazy.layout.rotate(), lazy.layout.flip(), desc='Switch which side main pane occupies (XmonadTall)'),
Key(mod, "space", lazy.layout.next(), desc='Switch window focus to other pane(s) of stack'),
Key(modctrl, "Return", lazy.layout.toggle_split(), desc='Toggle between split and unsplit sides of stack'),
# run programs
Key(mod, "Return", lazy.spawn(terminal + ' --single-instance'), desc='terminal'),
Key(modshift, "Return", lazy.spawn("rofi -show drun"), desc='launcher'),
Key(modshift, "r", lazy.spawn("pcmanfm"), desc='filebrowser'),
Key(modshift, "p", lazy.spawn("bwmenu"), desc='passwordmenu'),
# sound + brightness
Key([], "XF86AudioMute", lazy.spawn("pactl set-sink-mute @DEFAULT_SINK@ toggle")),
Key([], "XF86AudioMicMute", lazy.spawn("pactl set-source-mute @DEFAULT_SOURCE@ toggle")),
Key([], "XF86AudioLowerVolume", lazy.spawn("pactl set-sink-volume @DEFAULT_SINK@ -5%")),
Key([], "XF86AudioRaiseVolume", lazy.spawn("pactl set-sink-volume @DEFAULT_SINK@ +5%")),
Key([], "XF86MonBrightnessUp", lazy.spawn("brightnessctl set +10%")),
Key([], "XF86MonBrightnessDown", lazy.spawn("brightnessctl set 10%-"))
]
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())
]
# GROUPS
group_names = [
("WWW", {'layout': 'treetab', 'label': ''}),
("DEV", {'layout': 'monadtall', 'label': ''}),
("SYS", {'layout': 'monadtall', 'label': ''}),
("VMS", {'layout': 'monadtall', 'label': ''}),
("DOC", {'layout': 'monadtall', 'label': ''}),
("IRC", {'layout': 'monadtall', 'label': ''}),
("MUS", {'layout': 'monadtall', 'label': ''}),
("VID", {'layout': 'monadtall', 'label': ''}),
("GFX", {'layout': 'floating', 'label': ''})
]
groups = [Group(name, **kwargs) for name, kwargs in group_names]
for i, (name, kwargs) in enumerate(group_names, 1):
keys.append(Key(mod, str(i), lazy.group[name].toscreen()))
keys.append(Key(modshift, str(i), lazy.window.togroup(name)))
# LAYOUTS
layout_theme = {"border_width": 1, "margin": 5, "border_focus": "53bdfa", "border_normal": "01060e"}
treetab_layout = {
"font": "FiraCode Nerd Font",
"fontsize": 10,
"sections": [""],
"section_fontsize": 8,
"bg_color": "141414",
"active_bg": "90C435",
"active_fg": "000000",
"inactive_bg": "384323",
"inactive_fg": "a0a0a0",
"padding_y": 5,
"section_top": 10,
"panel_width": 100
}
layouts = [
# layout.MonadWide(**layout_theme),
# layout.Bsp(**layout_theme),
# layout.Stack(num_stacks=2, **layout_theme),
# layout.Columns(**layout_theme),
# layout.RatioTile(**layout_theme),
# layout.VerticalTile(**layout_theme),
# layout.Matrix(**layout_theme),
layout.MonadTall(**layout_theme),
# layout.Max(**layout_theme),
# layout.Tile(shift_windows=True, **layout_theme),
layout.TreeTab(**treetab_layout),
layout.Floating(**layout_theme)
]
# COLORS
theme = 'hopscotch'
with open("/home/eeleater/.config/qtile/themes/" + theme + ".json") as theme_json:
colors = json.load(theme_json)
def base(fg='foreground', bg='background'):
return {'foreground': colors[fg], 'background': colors[bg]}
# DEFAULTS
widget_defaults = {'font': 'FiraCode Mono Nerd Font', 'fontsize': 12, 'padding': 5, 'foreground': colors['black'], 'background': colors['background']}
extension_defaults = widget_defaults.copy()
group_box = {
'fontsize': 25,
'active': colors['purple'],
'inactive': colors['purple'],
'highlight_method': 'line',
'this_current_screen_border': colors['green']
}
pacman = { 'update_interval': 1800 }
clock = { 'format': '%A, %B %d (%T)' }
wid_bg_one = { 'background': colors['green'] }
wid_bg_two = { 'background': colors['yellow'] }
widgets_list = [
widget.GroupBox(**group_box),
widget.WindowName(**base(fg='yellow')),
widget.Pacman(**pacman, **wid_bg_one),
widget.TextBox(text="Updates", **wid_bg_one),
widget.Memory(**wid_bg_two),
widget.Battery(**wid_bg_one),
widget.Volume(**wid_bg_two),
widget.CapsNumLockIndicator(**wid_bg_one),
widget.CurrentLayout(**wid_bg_two),
widget.Clock(**wid_bg_one, **clock),
widget.Systray()
]
screens = [Screen(top=bar.Bar(widgets_list, 25))]
floating_layout = layout.Floating(float_rules=[
{'wmclass': 'confirm'}, {'wmclass': 'dialog'},
{'wmclass': 'download'}, {'wmclass': 'error'},
{'wmclass': 'file_progress'}, {'wmclass': 'notification'},
{'wmclass': 'splash'}, {'wmclass': 'toolbar'},
{'wmclass': 'confirmreset'}, {'wmclass': 'makebranch'},
{'wmclass': 'maketag'}, {'wmclass': 'ssh-askpass'},
{'wmclass': 'microsoft teams - preview'},
{'wname': 'branchdialog'}, {'wname': 'pinentry-gtk-2'},
{'wname': 'pinentry'}, {'wname': 'Welcome to PyCharm'},
{'wname': 'Kali'}
])

View file

@ -1,127 +0,0 @@
from pathlib import Path
from libqtile import bar, widget
from colors import theme, border_color
icon_theme_path = Path.home() / '{{ icon_dir | replace(user_dir + '/', '') }}'
bar_size = 36
groupbox = {
'center_aligned': True,
'foreground': theme['very_light_white'],
'inactive': theme['gray'],
'other_current_screen_border': theme['gray'],
'this_current_screen_border': theme['dark_blue'],
'this_screen_border': theme['dark_blue'],
'urgent_border': theme['red'],
'urgent_text': theme['red']}
sep = {
'linewidth': 2,
'size_percent': 100,
'padding': 12}
soft_sep = {
'linewidth': 2,
'size_percent': 70,
'foreground': theme['dark_gray'],
'padding': 7}
tasklist = {
'border': border_color,
'max_title_width': 200,
'txt_floating': '🗗',
'txt_maximized': '🗖',
'txt_minimized': '🗕'}
volume = {'theme_path': icon_theme_path}
clock = {
'timezone': 'Europe/Paris',
'format': '%B %-d, %H:%M'}
music = widget.Mpris2(
background=theme['dark_blue'],
name='spotify',
scroll_chars=0,
stop_pause_text='',
display_metadata=['xesam:title', 'xesam:artist'],
objname="org.mpris.MediaPlayer2.spotify")
disk = widget.DF(
update_interval=3600,
warn_space=5,
format='{p} ({uf}{m})')
updates = widget.CheckUpdates(
distro='Arch_checkupdates',
display_format='{updates}',
execute='termite -e "pikaur -Syu"',
colour_have_updates=theme['dark_blue'],
colour_no_updates=theme['dark_green'],
update_interval=600)
battery = widget.Battery(
foreground=theme['green'],
low_percentage=0.10,
low_foreground=theme['red'],
update_delay=10,
format='{percent:.0%} {hour:d}:{min:02d} {watt:.2}W')
battery_icon = widget.BatteryIcon(
theme_path=icon_theme_path,
update_interval=120)
systray = widget.Systray(
icon_size=24
)
main_bar = bar.Bar(
[
widget.GroupBox(**groupbox, visible_groups=['a', 's', 'd', 'f',
'music', 'chat', 'game']),
widget.Sep(**sep),
widget.Volume(**volume),
music,
widget.TaskList(**tasklist),
systray,
widget.Sep(**sep),
disk,
updates,
widget.Sep(**soft_sep),
battery_icon,
battery,
widget.Sep(**soft_sep),
widget.Clock(**clock),
], bar_size)
bar1 = bar.Bar(
[
widget.GroupBox(**groupbox, visible_groups=['a', 's', 'd', 'f', 'game']),
widget.Sep(**sep),
widget.Volume(**volume),
music,
widget.TaskList(**tasklist),
systray,
widget.Sep(**sep),
disk,
updates,
widget.Sep(**soft_sep),
widget.Clock(**clock),
], bar_size)
bar2 = bar.Bar(
[
widget.GroupBox(**groupbox, visible_groups=['u', 'i', 'o', 'p', 'music', 'chat']),
widget.Sep(**sep),
widget.Volume(**volume),
widget.TaskList(**tasklist),
battery_icon,
battery,
widget.Sep(**soft_sep),
widget.Clock(**clock),
], bar_size)

View file

@ -1,40 +0,0 @@
# gruvbox
theme = {
'dark_black': '{{ theme.dark_black }}',
'black': '{{ theme.black }}',
'light_black': '{{ theme.light_black }}',
'very_light_black': '{{ theme.very_light_black }}',
'dark_gray': '{{ theme.dark_gray }}',
'gray': '{{ theme.gray }}',
'light_gray': '{{ theme.light_gray }}',
'very_light_gray': '{{ theme.very_light_gray }}',
'dark_white': '{{ theme.dark_white }}',
'white': '{{ theme.white }}',
'light_white': '{{ theme.light_white }}',
'very_light_white': '{{ theme.very_light_white }}',
'dark_red': '{{ theme.dark_red }}',
'red': '{{ theme.red }}',
'dark_green': '{{ theme.dark_green }}',
'green': '{{ theme.green }}',
'dark_yellow': '{{ theme.dark_yellow }}',
'yellow': '{{ theme.yellow }}',
'dark_blue': '{{ theme.dark_blue }}',
'blue': '{{ theme.blue }}',
'dark_purple': '{{ theme.dark_purple }}',
'purple': '{{ theme.purple }}',
'dark_teal': '{{ theme.dark_teal }}',
'teal': '{{ theme.teal }}',
'dark_orange': '{{ theme.dark_orange }}',
'orange': '{{ theme.orange }}',
}
border_color = theme['white']

View file

@ -1,131 +0,0 @@
import re
from subprocess import run
from pathlib import Path
from typing import List
from libqtile import layout, hook
from libqtile.config import Group, Match, Screen, Rule
from bars import main_bar, bar1, bar2
from keys import keys, mouse, sc, get_backlight_keys
from colors import border_color, theme
from util import qtile_func
from util.monitor import enable_monitor
keys = keys
mouse = mouse
screens: List[Screen] = []
groups = [
Group('game', layouts=[layout.Max()], persist=False, init=False,
matches=[Match(wm_class=['Steam'])], label=''),
Group('chat', layouts=[layout.Max()], persist=False, init=False,
matches=[Match(wm_class=['discord'])], label=''),
Group('music', layouts=[layout.Max()], persist=False, init=False,
matches=[Match(wm_class=[re.compile('spotify', re.I)])], label=''),
]
float_rules = [
{'wmclass': 'confirm'},
{'wmclass': 'dialog'},
{'wmclass': 'download'},
{'wmclass': 'error'},
{'wmclass': 'file_progress'},
{'wmclass': 'notification'},
{'wmclass': 'splash'},
{'wmclass': 'toolbar'},
{'wmclass': 'Xephyr'},
{'wmclass': 'feh'},
{'wmclass': 'Sms.py'},
{'wmclass': 'leagueclientux.exe'},
{'wmclass': 'Gcr-prompter'},
{'wmclass': 'scrcpy'},
{'wname': 'Friends'},
]
floating_layout = layout.Floating(border_focus=f'#{border_color}',
float_rules=float_rules)
layouts = [
layout.Max(),
layout.Stack(num_stacks=2, border_focus=f'#{border_color}')
]
widget_defaults = {'font': 'DejaVu Sans',
'fontsize': 18,
'padding': 4,
'foreground': theme['very_light_white'],
'background': theme['dark_black']}
def setup_monitors(qtile):
monitors = qtile.conn.monitors
nb_monitors = len(monitors)
if nb_monitors == 1:
run('xrandr --auto'.split())
elif nb_monitors == 2:
laptop_monitor = None
other_monitor = None
for monitor in monitors:
if monitor.name.startswith('eDP'):
laptop_monitor = monitor
else:
other_monitor = monitor
enable_monitor(other_monitor, primary=True, side='left-of',
relative_monitor=laptop_monitor)
def setup_screens(qtile, screens, groups):
nb_monitors = len(qtile.conn.monitors)
if nb_monitors == 1:
screens.append(Screen(top=main_bar))
groups += [Group(i) for i in 'asdf']
else:
screens += [Screen(top=bar1), Screen(top=bar2)]
groups += [Group(i) for i in 'asdfuiop']
def main(qtile):
global keys
setup_monitors(qtile)
setup_screens(qtile, screens, groups)
keys += get_backlight_keys(qtile)
def wallpaper():
wallpaper_path = Path.home() / '.wallpaper'
run(['feh', '--bg-scale', wallpaper_path])
@hook.subscribe.startup
def autostart():
wallpaper()
sc.set_profile('analog')
@hook.subscribe.addgroup
def go_to_group(qtile, group):
try:
qtile.groupMap[group].cmd_toscreen()
except AttributeError:
pass
@hook.subscribe.screen_change
def configure_monitors(qtile, ev):
setup_monitors(qtile)
qtile.cmd_restart()
dgroups_app_rules: List[Rule] = []
dgroups_key_binder = None
follow_mouse_focus = False
bring_front_click = False
cursor_warp = False
auto_fullscreen = True
focus_on_window_activation = 'focus'
wmname = 'LG3D'

View file

@ -1,124 +0,0 @@
from libqtile.config import Key, Drag
from libqtile.command import lazy
from util.backlight import Backlight
from util.screenshot import screenshot
from util.soundcard import SoundCard
from util import qtile_func
# super = mod4, alt = mod1
mod = 'mod4'
BROWSER = '{{ browser }}'
TERM= '{{ term }}'
MUSIC_PLAYER = 'spotify'
# add 'PlayPause', 'Next' or 'Previous'
spotify_cmd = ('dbus-send --print-reply --dest=org.mpris.MediaPlayer2.spotify '
'/org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.')
amixer_cmd = 'amixer -D pulse set Master'
rofi_cmd = 'rofi -combi-modi window,run -show combi -modi combi -monitor -4'
sc = SoundCard('alsa_card.pci-0000_00_1f.3')
def app_or_group(group, app):
"""Go to app if already open else open it."""
def f(qtile):
if group in {'music'}:
qtile.cmd_to_screen(1)
try:
qtile.groupMap[group].cmd_toscreen()
except KeyError:
qtile.cmd_spawn(app)
return f
def go_to_group(group):
"""The groups 'asdf' are accessible on screen 1, 'uiop' on screen 2."""
def f(qtile):
if group in 'asdf':
qtile.cmd_to_screen(0)
qtile.groupMap[group].cmd_toscreen()
elif group in 'uiop':
qtile.cmd_to_screen(1)
qtile.groupMap[group].cmd_toscreen()
return f
# TODO: make this function work for more than two monitors
def get_backlight_keys(qtile):
monitors = qtile.conn.monitors
keys = []
for monitor in monitors:
bl = Backlight(ctrl=monitor.backlight_ctrl)
if monitor.name.startswith('eDP'):
keys.append(Key([], 'XF86MonBrightnessUp', lazy.function(bl.change_backlight('inc'))))
keys.append(Key([], 'XF86MonBrightnessDown', lazy.function(bl.change_backlight('dec'))))
keys.append(Key([], 'F7', lazy.function(bl.turn_off_screen(monitor.x))))
else:
keys.append(Key([mod], 'Up', lazy.function(bl.change_backlight('inc'))))
keys.append(Key([mod], 'Down', lazy.function(bl.change_backlight('dec'))))
keys.append(Key([mod], 'F7', lazy.function(bl.turn_off_screen(monitor.x))))
return keys
keys = [
Key([mod, 'control'], 'p', lazy.spawn('xbacklight -set 50')),
Key([mod], 'k', lazy.layout.down()), # noqa
Key([mod], 'j', lazy.layout.up()), # noqa
Key([mod], 'space', lazy.layout.next()), # noqa
Key([mod, 'control'], 'k', lazy.layout.shuffle_down()), # noqa
Key([mod, 'control'], 'j', lazy.layout.shuffle_up()), # noqa
Key([mod, 'shift'], 'h', lazy.layout.client_to_previous()), # noqa
Key([mod, 'shift'], 'l', lazy.layout.client_to_next()), # noqa
Key([mod, 'shift'], 'space', lazy.layout.rotate()), # noqa
Key([mod, 'shift'], 'Return', lazy.layout.toggle_split()), # noqa
Key([mod], 'slash', lazy.screen.toggle_group()), # noqa
Key([mod], 'x', lazy.window.kill()), # noqa
Key([mod], 'y', lazy.window.toggle_floating()), # noqa
Key([mod], '1', lazy.to_screen(0)), # noqa
Key([mod], '2', lazy.to_screen(1)), # noqa
Key([mod], 'Tab', lazy.next_layout()), # noqa
Key([mod, 'control'], 'r', lazy.restart()), # noqa
Key([mod, 'control'], 'q', lazy.shutdown()), # noqa
# Audio
Key([], 'XF86AudioMute', lazy.spawn(amixer_cmd + ' 1+ toggle')), # noqa
Key([], 'XF86AudioRaiseVolume', lazy.spawn(amixer_cmd + ' 5%+')), # noqa
Key([], 'XF86AudioLowerVolume', lazy.spawn(amixer_cmd + ' 5%-')), # noqa
Key([], 'XF86AudioPlay', lazy.spawn(spotify_cmd + 'PlayPause')), # noqa
Key([], 'XF86AudioNext', lazy.spawn(spotify_cmd + 'Next')), # noqa
Key([], 'XF86AudioPrev', lazy.spawn(spotify_cmd + 'Previous')), # noqa
Key([mod], 'bracketleft', lazy.function(sc.change_sink('prev'))), # noqa
Key([mod], 'bracketright', lazy.function(sc.change_sink('next'))), # noqa
Key([], 'F8', lazy.function(sc.swap_profile())), # noqa
# Apps
Key([mod], 't', lazy.spawn(rofi_cmd)), # noqa
Key([mod], 'Return', lazy.spawn(TERM)), # noqa
Key([mod], 'b', lazy.spawn(BROWSER)), # noqa
Key([mod], 'g', lazy.function(app_or_group('game', 'steam'))), # noqa
Key([mod], 'n', lazy.function(app_or_group('chat', 'discord'))), # noqa
Key([mod], 'm', lazy.function(app_or_group('music', MUSIC_PLAYER))), # noqa
# Screenshots
Key([], 'Print', lazy.function(screenshot())), # noqa
Key(['control'], 'Print', lazy.spawn('deepin-screenshot')), # noqa
]
for i in 'asdfuiop':
keys.append(Key([mod], i, lazy.function(go_to_group(i)))) # noqa
keys.append(Key([mod, 'shift'], i, lazy.window.togroup(i))) # noqa
mouse = [
Drag([mod], "Button1", lazy.window.set_position_floating(),
start=lazy.window.get_position()),
Drag([mod, 'control'], "Button1", lazy.window.set_size_floating(),
start=lazy.window.get_size()),
]

View file

@ -1,23 +0,0 @@
from functools import wraps
from subprocess import run, PIPE
from typing import Callable, Any
import parse
def qtile_func(func: Callable[..., Any]) -> Callable[..., Any]:
"""
This decorator makes a function suitable to be used as a parameter for
`lazy.function()` by making the wrapped function return a function that
takes the qtile instance as first parameter.
"""
@wraps(func)
def wrapper(*args, **kwargs):
def f(qtile):
func(*args, **kwargs)
return f
return wrapper
def notify(summary: str, body: str, urgency: str='normal') -> None:
run(['notify-send', '-u', urgency, summary, body])

View file

@ -1,50 +0,0 @@
from subprocess import run, PIPE
from typing import Optional
from pynput import mouse
from . import qtile_func
class Backlight:
def __init__(self, ctrl: Optional[str]=None) -> None:
self.command = ['xbacklight']
if ctrl:
self.command += ['-ctrl', ctrl]
def _get_brightness(self) -> int:
return int(run(self.command + ['-get'], stdout=PIPE).stdout)
def _set_brightness(self, percentage: int) -> None:
run(self.command + [f'-set', str(percentage)])
@qtile_func
def change_backlight(self, action: str) -> None:
"""
Increase or decrease bightness.
Takes 'dec' or 'inc' as parameter. Goes 1% percent at a time from
1% to 40% and 10% at a time from 40% to 100%.
"""
brightness = self._get_brightness()
if brightness != 1 or action != 'dec':
if (brightness > 49 and action == 'dec') \
or (brightness > 39 and action == 'inc'):
run(self.command + [f'-{action}', '10', '-fps', '10'])
else:
run(self.command + [f'-{action}', '1'])
@qtile_func
def turn_off_screen(self, screen_offset: int) -> None:
"""
Turn off the laptop's screen.
Use xset if there is only one screen, else, set backlight to
zero. In both case, moving the mouse will turn on the screen.
"""
current_brightness = self._get_brightness()
self._set_brightness(0)
def on_move(x: int, y: int):
if x > screen_offset:
self._set_brightness(current_brightness)
raise mouse.Listener.StopException
mouse.Listener(on_move=on_move).start()

View file

@ -1,24 +0,0 @@
from subprocess import run
from pathlib import Path
from typing import Optional
from libqtile.log_utils import logger
from libqtile.xcbq import Monitor
from .backlight import Backlight
Side = str # one of 'left-of', 'right-of', 'above', 'below' or 'same-as'
def enable_monitor(monitor: Monitor, primary: bool=False, side: Optional[Side]=None,
relative_monitor: Optional[Monitor]=None) -> None:
command = ['xrandr', '--output', monitor.name, '--auto']
if primary:
command += ['--primary']
if side:
if not relative_monitor:
raise Exception('Need a monitor to be relative to')
command += ['--{}'.format(side), relative_monitor.name]
run(command)
logger.info(f'Running command: {" ".join(command)}')

View file

@ -1,16 +0,0 @@
from time import time
from pathlib import Path
from subprocess import run, PIPE
from . import qtile_func
@qtile_func
def screenshot(save: bool=True, copy: bool=True) -> None:
shot = run(['maim'], stdout=PIPE)
if save:
path = Path.home() / 'Pictures'
path /= f'screenshot_{str(int(time() * 100))}.png'
with open(path, 'wb') as sc:
sc.write(shot.stdout)
if copy:
run('xclip -sel clip -t image/png'.split(), input=shot.stdout)

View file

@ -1,79 +0,0 @@
from subprocess import run, PIPE
import parse
from . import qtile_func, notify
class SoundCard():
def __init__(self, primary_card_name):
self.primary_card = primary_card_name
def get_current_sink(self):
cp = run(['pactl', 'info'], stdout=PIPE)
output = cp.stdout.decode('utf-8')
return parse.search('Default Sink: {}\n', output)[0]
def list_sinks(self):
"""Generator that yields for each sink, the sink and card name."""
cp = run(['pactl', 'list', 'sinks'], stdout=PIPE)
output = cp.stdout.decode('utf-8')
for sink in output.split('\nSink'):
sink_name = parse.search('Name: {}\n', sink)[0]
card_name = parse.search('alsa.card_name = "{}"', sink)[0]
yield sink_name, card_name
def set_new_sink(self, sink_card_tuple):
run(['pactl', 'set-default-sink', sink_card_tuple[0]])
def list_sink_inputs(self):
cp = run(['pactl', 'list', 'short', 'sink-inputs'], stdout=PIPE)
output = cp.stdout.decode('utf-8')
return {line.split()[0] for line in output.split('\n') if line}
def move_sink_input(self, name, new_sink):
run(['pactl', 'move-sink-input', name, new_sink])
def get_current_profile(self):
cp = run(['pactl', 'list', 'cards'], stdout=PIPE)
cp = run(['grep', 'Active'], stdout=PIPE, input=cp.stdout)
return 'hdmi' if b'hdmi' in cp.stdout else 'analog'
def set_profile(self, profile):
cmd = f'output:{profile}-stereo+input:analog-stereo'
run(['pactl', 'set-card-profile', self.primary_card, cmd])
@qtile_func
def change_sink(self, direction):
sinks = list(self.list_sinks())
# get the index of the tuple containing the current default sink
current_sink = self.get_current_sink()
for index, tup in enumerate(sinks):
if current_sink in tup:
default_sink_index = index
break
if direction == 'next':
new_sink = sinks[default_sink_index - 1]
elif direction == 'prev':
new_sink = sinks[(default_sink_index + 1) % len(sinks)]
self.set_new_sink(new_sink)
notify('Sound Card', new_sink[1])
# move current sink inputs, if any, to the new default sink
sink_inputs = self.list_sink_inputs()
if sink_inputs:
for sink_input in sink_inputs:
self.move_sink_input(sink_input, new_sink[0])
@qtile_func
def swap_profile(self):
profile = self.get_current_profile()
if profile == 'analog':
self.set_profile('hdmi')
notify('Sound Profile', 'HDMI')
elif profile == 'hdmi':
self.set_profile('analog')
notify('Sound Profile', 'Analog')

View file

@ -1,9 +0,0 @@
import subprocess
from libqtile import widget
class CheckUpdates(widget.CheckUpdates):
def __init__(self, **config):
super().__init__(**config)
self.cmd_dict.update({'Arch': ('pikaur -Sup', 0)})

View file

@ -1,5 +0,0 @@
from libqtile.config import Screen
from bars import top
screens = [Screen(top=top)]

View file

@ -1,19 +0,0 @@
#!/bin/bash
function run {
if ! pgrep "$1"; then
"$@" &
fi
}
setxkbmap -layout de
run nm-applet
run xfce4-power-manager
run blueberry-tray
run picom
run volumeicon
# run deadd-notification-center
run /usr/bin/lxqt-policykit-agent
run nitrogen --restore

View file

@ -1,12 +0,0 @@
{
"black": "#01060e",
"red": "#ea6c73",
"green": "#91b362",
"yellow": "#f9af4f",
"blue": "#53bdfa",
"purple": "#fae994",
"cyan": "#90e1c6",
"white": "#c7c7c7",
"background": "#brb1ad",
"foreground": "#0a0e14"
}

View file

@ -1,12 +0,0 @@
{
"black": "#21222c",
"red": "#ff5555",
"green": "#50fa7b",
"yellow": "#ffcb6b",
"blue": "#82aaff",
"purple": "#c792ea",
"cyan": "#8be9fd",
"white": "#f8f8f2",
"background": "#212121",
"foreground": "#f8f8f2"
}

View file

@ -1,12 +0,0 @@
{
"black": "#322931",
"red": "#dd464c",
"green": "#8fc13e",
"yellow": "#fdcc59",
"blue": "#1290bf",
"purple": "#c85e7c",
"cyan": "#149b93",
"white": "#b9b5b8",
"background": "#322931",
"foreground": "#b9b5b8"
}

View file

@ -1,12 +0,0 @@
{
"black": "#000000",
"red": "#ff5370",
"green": "#c3e88d",
"yellow": "#ffcb6b",
"blue": "#82aaff",
"purple": "#c792ea",
"cyan": "#89ddff",
"white": "#ffffff",
"background": "#212121",
"foreground": "#eeffff"
}

View file

@ -1,12 +0,0 @@
{
"black": "#3b4252",
"red": "#bf616a",
"green": "#a3be8c",
"yellow": "#ebcb8b",
"blue": "#81a1c1",
"purple": "#b48ead",
"cyan": "#88c0d0",
"white": "#e5e9f0",
"background": "#2e3440",
"foreground": "#d8dee9"
}

View file

@ -1,12 +0,0 @@
{
"black": "#131613",
"red": "#e06c75",
"green": "#98c379",
"yellow": "#d19a66",
"blue": "#61afef",
"purple": "#c678dd",
"cyan": "#56b6c2",
"white": "#abb2bf",
"background": "#282c34",
"foreground": "#abb2bf"
}

View file

@ -1,12 +0,0 @@
{
"black": "#5a5a5a",
"red": "#ca372d",
"green": "#4d7b3a",
"yellow": "#d4d697",
"blue": "#4387cf",
"purple": "#b86cb4",
"cyan": "#72d5c6",
"white": "#ced4cd",
"background": "#191919",
"foreground": "#c3cac2"
}

View file

@ -1,12 +0,0 @@
{
"black": "#241f2b",
"red": "#91284c",
"green": "#23801c",
"yellow": "#b49d27",
"blue": "#6580b0",
"purple": "#674d96",
"cyan": "#8aaabe",
"white": "#524966",
"background": "#100815",
"foreground": "#514968"
}

View file

@ -1,12 +0,0 @@
{
"black": "#17384c",
"red": "#d15123",
"green": "#027c9b",
"yellow": "#fca02f",
"blue": "#1e4950",
"purple": "#68d4f1",
"cyan": "#50a3b5",
"white": "#deb88d",
"background": "#09141b",
"foreground": "#deb88d"
}

View file

@ -1,12 +0,0 @@
{
"black": "#000000",
"red": "#b84131",
"green": "#7da900",
"yellow": "#c4a500",
"blue": "#62a3c4",
"purple": "#ba8acc",
"cyan": "#207383",
"white": "#a1a1a1",
"background": "#1b1b1b",
"foreground": "#f7f7f7"
}

View file

@ -1,12 +0,0 @@
{
"black": "#6e5346",
"red": "#e35b00",
"green": "#5cab96",
"yellow": "#e3cd7b",
"blue": "#0f548b",
"purple": "#e35b00",
"cyan": "#06afc7",
"white": "#f0f1ce",
"background": "#0a1e24",
"foreground": "#ecf0c1"
}

View file

@ -1,12 +0,0 @@
{
"black": "#000000",
"red": "#b04b57",
"green": "#87b379",
"yellow": "#e5c179",
"blue": "#7d8fa4",
"purple": "#a47996",
"cyan": "#85a7a5",
"white": "#b3b8c3",
"background": "#20242d",
"foreground": "#b3b8c3"
}

View file

@ -1,12 +0,0 @@
{
"black": "#050505",
"red": "#e9897c",
"green": "#b6377d",
"yellow": "#ecebbe",
"blue": "#a9cdeb",
"purple": "#75507b",
"cyan": "#c9caec",
"white": "#f2f2f2",
"background": "#1a1a1a",
"foreground": "#acacab"
}

View file

@ -1,12 +0,0 @@
{
"black": "#000000",
"red": "#d54e53",
"green": "#b9ca4a",
"yellow": "#e7c547",
"blue": "#7aa6da",
"purple": "#c397d8",
"cyan": "#70c0b1",
"white": "#ffffff",
"background": "#000000",
"foreground": "#eaeaea"
}

View file

@ -1,8 +0,0 @@
add_newline = false
format = """$env_var $all"""
[env_var.DISTROICON]
format = '[$env_value](white)'
variable = "DISTROICON"
disabled = false

View file

@ -1,8 +0,0 @@
abbr -g "g"="git"
abbr -g "git m"="git checkout main"
abbr -g "git rei"="git rebase -i"
abbr -g "git reim"="git rebase -i main"
abbr -g "git ri"="git rebase -i"
abbr "m"="git checkout main"
abbr "rei"="git rebase -i"
abbr "reim"="git rebase -i main"

View file

@ -1,6 +1,3 @@
# lscolors
trapd00r/LS_COLORS
# ohmyzsh # ohmyzsh
getantidote/use-omz getantidote/use-omz
ohmyzsh/ohmyzsh path:lib ohmyzsh/ohmyzsh path:lib
@ -12,6 +9,7 @@ ohmyzsh/ohmyzsh path:plugins/fzf
ohmyzsh/ohmyzsh path:plugins/ssh-agent ohmyzsh/ohmyzsh path:plugins/ssh-agent
# utility plugins # utility plugins
trapd00r/LS_COLORS
3v1n0/zsh-bash-completions-fallback 3v1n0/zsh-bash-completions-fallback
mroth/evalcache mroth/evalcache
zpm-zsh/colorize zpm-zsh/colorize