diff --git a/dot_config/qtile/.keep b/dot_config/qtile/.keep new file mode 100644 index 0000000..e69de29 diff --git a/dot_config/qtile/__pycache__/.keep b/dot_config/qtile/__pycache__/.keep new file mode 100644 index 0000000..e69de29 diff --git a/dot_config/qtile/__pycache__/bars.cpython-38.pyc b/dot_config/qtile/__pycache__/bars.cpython-38.pyc new file mode 100644 index 0000000..040f56c Binary files /dev/null and b/dot_config/qtile/__pycache__/bars.cpython-38.pyc differ diff --git a/dot_config/qtile/__pycache__/bars.cpython-39.pyc b/dot_config/qtile/__pycache__/bars.cpython-39.pyc new file mode 100644 index 0000000..f3127ae Binary files /dev/null and b/dot_config/qtile/__pycache__/bars.cpython-39.pyc differ diff --git a/dot_config/qtile/__pycache__/colors.cpython-38.pyc b/dot_config/qtile/__pycache__/colors.cpython-38.pyc new file mode 100644 index 0000000..08b6785 Binary files /dev/null and b/dot_config/qtile/__pycache__/colors.cpython-38.pyc differ diff --git a/dot_config/qtile/__pycache__/colors.cpython-39.pyc b/dot_config/qtile/__pycache__/colors.cpython-39.pyc new file mode 100644 index 0000000..6e14d5d Binary files /dev/null and b/dot_config/qtile/__pycache__/colors.cpython-39.pyc differ diff --git a/dot_config/qtile/__pycache__/config-done.cpython-38.pyc b/dot_config/qtile/__pycache__/config-done.cpython-38.pyc new file mode 100644 index 0000000..cdbee4d Binary files /dev/null and b/dot_config/qtile/__pycache__/config-done.cpython-38.pyc differ diff --git a/dot_config/qtile/__pycache__/config.cpython-38.pyc b/dot_config/qtile/__pycache__/config.cpython-38.pyc new file mode 100644 index 0000000..152b4c8 Binary files /dev/null and b/dot_config/qtile/__pycache__/config.cpython-38.pyc differ diff --git a/dot_config/qtile/__pycache__/config.cpython-39.pyc b/dot_config/qtile/__pycache__/config.cpython-39.pyc new file mode 100644 index 0000000..f34d1f7 Binary files /dev/null and b/dot_config/qtile/__pycache__/config.cpython-39.pyc differ diff --git a/dot_config/qtile/__pycache__/groups.cpython-38.pyc b/dot_config/qtile/__pycache__/groups.cpython-38.pyc new file mode 100644 index 0000000..755ce6f Binary files /dev/null and b/dot_config/qtile/__pycache__/groups.cpython-38.pyc differ diff --git a/dot_config/qtile/__pycache__/groups.cpython-39.pyc b/dot_config/qtile/__pycache__/groups.cpython-39.pyc new file mode 100644 index 0000000..db07c52 Binary files /dev/null and b/dot_config/qtile/__pycache__/groups.cpython-39.pyc differ diff --git a/dot_config/qtile/__pycache__/keys.cpython-38.pyc b/dot_config/qtile/__pycache__/keys.cpython-38.pyc new file mode 100644 index 0000000..44e5f60 Binary files /dev/null and b/dot_config/qtile/__pycache__/keys.cpython-38.pyc differ diff --git a/dot_config/qtile/__pycache__/keys.cpython-39.pyc b/dot_config/qtile/__pycache__/keys.cpython-39.pyc new file mode 100644 index 0000000..ac948eb Binary files /dev/null and b/dot_config/qtile/__pycache__/keys.cpython-39.pyc differ diff --git a/dot_config/qtile/__pycache__/layouts.cpython-38.pyc b/dot_config/qtile/__pycache__/layouts.cpython-38.pyc new file mode 100644 index 0000000..6174de4 Binary files /dev/null and b/dot_config/qtile/__pycache__/layouts.cpython-38.pyc differ diff --git a/dot_config/qtile/__pycache__/layouts.cpython-39.pyc b/dot_config/qtile/__pycache__/layouts.cpython-39.pyc new file mode 100644 index 0000000..d4ccd63 Binary files /dev/null and b/dot_config/qtile/__pycache__/layouts.cpython-39.pyc differ diff --git a/dot_config/qtile/__pycache__/screens.cpython-38.pyc b/dot_config/qtile/__pycache__/screens.cpython-38.pyc new file mode 100644 index 0000000..a39eed5 Binary files /dev/null and b/dot_config/qtile/__pycache__/screens.cpython-38.pyc differ diff --git a/dot_config/qtile/__pycache__/screens.cpython-39.pyc b/dot_config/qtile/__pycache__/screens.cpython-39.pyc new file mode 100644 index 0000000..bae51ef Binary files /dev/null and b/dot_config/qtile/__pycache__/screens.cpython-39.pyc differ diff --git a/dot_config/qtile/bars.py b/dot_config/qtile/bars.py new file mode 100644 index 0000000..57a80bc --- /dev/null +++ b/dot_config/qtile/bars.py @@ -0,0 +1,38 @@ +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) diff --git a/dot_config/qtile/colors.py b/dot_config/qtile/colors.py new file mode 100644 index 0000000..bc84a73 --- /dev/null +++ b/dot_config/qtile/colors.py @@ -0,0 +1,6 @@ +import json + +theme = 'nord' + +with open("/home/eeleater/.config/qtile/themes/" + theme + ".json") as theme_json: + colors = json.load(theme_json) diff --git a/dot_config/qtile/config.py b/dot_config/qtile/config.py new file mode 100644 index 0000000..717f201 --- /dev/null +++ b/dot_config/qtile/config.py @@ -0,0 +1,13 @@ +import subprocess + +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(): + subprocess.call(['/home/eeleater/.config/qtile/scripts/autostart.sh']) diff --git a/dot_config/qtile/groups.py b/dot_config/qtile/groups.py new file mode 100644 index 0000000..5180d6d --- /dev/null +++ b/dot_config/qtile/groups.py @@ -0,0 +1,20 @@ +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)) diff --git a/dot_config/qtile/keys.py b/dot_config/qtile/keys.py new file mode 100644 index 0000000..5d30ce8 --- /dev/null +++ b/dot_config/qtile/keys.py @@ -0,0 +1,62 @@ +from libqtile.config import Key, Drag, Click +from libqtile.command 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))) diff --git a/dot_config/qtile/layouts.py b/dot_config/qtile/layouts.py new file mode 100644 index 0000000..be694fa --- /dev/null +++ b/dot_config/qtile/layouts.py @@ -0,0 +1,57 @@ +from libqtile import layout + +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 = [ + {'wmclass': 'confirm'}, + {'wmclass': 'download'}, + {'wmclass': 'error'}, + {'wmclass': 'file_progress'}, + {'wmclass': 'confirmreset'}, + {'wmclass': 'makebranch'}, + {'wmclass': 'maketag'}, + {'wmclass': 'ssh-askpass'}, + {'wname': 'branchdialog'}, + {'wname': 'pinentry-gtk-2'}, + {'wname': 'pinentry'}, + {'wname': 'win0'} +] + +floating_layout = layout.Floating(float_rules = floatrules, border_width = 0) diff --git a/dot_config/qtile/old_configs/.keep b/dot_config/qtile/old_configs/.keep new file mode 100644 index 0000000..e69de29 diff --git a/dot_config/qtile/old_configs/config.py b/dot_config/qtile/old_configs/config.py new file mode 100644 index 0000000..87ce40f --- /dev/null +++ b/dot_config/qtile/old_configs/config.py @@ -0,0 +1,170 @@ +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'} +]) diff --git a/dot_config/qtile/old_configs/sweenu/.keep b/dot_config/qtile/old_configs/sweenu/.keep new file mode 100644 index 0000000..e69de29 diff --git a/dot_config/qtile/old_configs/sweenu/bars.py b/dot_config/qtile/old_configs/sweenu/bars.py new file mode 100644 index 0000000..1d5acf8 --- /dev/null +++ b/dot_config/qtile/old_configs/sweenu/bars.py @@ -0,0 +1,127 @@ +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) diff --git a/dot_config/qtile/old_configs/sweenu/colors.py b/dot_config/qtile/old_configs/sweenu/colors.py new file mode 100644 index 0000000..f4294f6 --- /dev/null +++ b/dot_config/qtile/old_configs/sweenu/colors.py @@ -0,0 +1,40 @@ +# 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'] diff --git a/dot_config/qtile/old_configs/sweenu/config.py b/dot_config/qtile/old_configs/sweenu/config.py new file mode 100644 index 0000000..cca870b --- /dev/null +++ b/dot_config/qtile/old_configs/sweenu/config.py @@ -0,0 +1,131 @@ +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' diff --git a/dot_config/qtile/old_configs/sweenu/keys.py b/dot_config/qtile/old_configs/sweenu/keys.py new file mode 100644 index 0000000..f670047 --- /dev/null +++ b/dot_config/qtile/old_configs/sweenu/keys.py @@ -0,0 +1,124 @@ +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()), +] diff --git a/dot_config/qtile/old_configs/sweenu/util/.keep b/dot_config/qtile/old_configs/sweenu/util/.keep new file mode 100644 index 0000000..e69de29 diff --git a/dot_config/qtile/old_configs/sweenu/util/__main__.py b/dot_config/qtile/old_configs/sweenu/util/__main__.py new file mode 100644 index 0000000..b455da1 --- /dev/null +++ b/dot_config/qtile/old_configs/sweenu/util/__main__.py @@ -0,0 +1,23 @@ +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]) diff --git a/dot_config/qtile/old_configs/sweenu/util/backlight.py b/dot_config/qtile/old_configs/sweenu/util/backlight.py new file mode 100644 index 0000000..c197b19 --- /dev/null +++ b/dot_config/qtile/old_configs/sweenu/util/backlight.py @@ -0,0 +1,50 @@ +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() diff --git a/dot_config/qtile/old_configs/sweenu/util/monitor.py b/dot_config/qtile/old_configs/sweenu/util/monitor.py new file mode 100644 index 0000000..fe4542a --- /dev/null +++ b/dot_config/qtile/old_configs/sweenu/util/monitor.py @@ -0,0 +1,24 @@ +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)}') diff --git a/dot_config/qtile/old_configs/sweenu/util/screenshot.py b/dot_config/qtile/old_configs/sweenu/util/screenshot.py new file mode 100644 index 0000000..c689f81 --- /dev/null +++ b/dot_config/qtile/old_configs/sweenu/util/screenshot.py @@ -0,0 +1,16 @@ +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) diff --git a/dot_config/qtile/old_configs/sweenu/util/soundcard.py b/dot_config/qtile/old_configs/sweenu/util/soundcard.py new file mode 100644 index 0000000..63c3cae --- /dev/null +++ b/dot_config/qtile/old_configs/sweenu/util/soundcard.py @@ -0,0 +1,79 @@ +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') diff --git a/dot_config/qtile/old_configs/sweenu/widgets.py b/dot_config/qtile/old_configs/sweenu/widgets.py new file mode 100644 index 0000000..8ff287e --- /dev/null +++ b/dot_config/qtile/old_configs/sweenu/widgets.py @@ -0,0 +1,9 @@ +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)}) diff --git a/dot_config/qtile/screens.py b/dot_config/qtile/screens.py new file mode 100644 index 0000000..4789a26 --- /dev/null +++ b/dot_config/qtile/screens.py @@ -0,0 +1,5 @@ +from libqtile.config import Screen + +from bars import top + +screens = [Screen(top=top)] diff --git a/dot_config/qtile/scripts/.keep b/dot_config/qtile/scripts/.keep new file mode 100644 index 0000000..e69de29 diff --git a/dot_config/qtile/scripts/executable_autostart.sh b/dot_config/qtile/scripts/executable_autostart.sh new file mode 100644 index 0000000..6f2e081 --- /dev/null +++ b/dot_config/qtile/scripts/executable_autostart.sh @@ -0,0 +1,19 @@ +#!/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 diff --git a/dot_config/qtile/themes/.keep b/dot_config/qtile/themes/.keep new file mode 100644 index 0000000..e69de29 diff --git a/dot_config/qtile/themes/ayu-dark.json b/dot_config/qtile/themes/ayu-dark.json new file mode 100644 index 0000000..d48ac7f --- /dev/null +++ b/dot_config/qtile/themes/ayu-dark.json @@ -0,0 +1,12 @@ +{ + "black": "#01060e", + "red": "#ea6c73", + "green": "#91b362", + "yellow": "#f9af4f", + "blue": "#53bdfa", + "purple": "#fae994", + "cyan": "#90e1c6", + "white": "#c7c7c7", + "background": "#brb1ad", + "foreground": "#0a0e14" +} \ No newline at end of file diff --git a/dot_config/qtile/themes/dracula.json b/dot_config/qtile/themes/dracula.json new file mode 100644 index 0000000..49d79d1 --- /dev/null +++ b/dot_config/qtile/themes/dracula.json @@ -0,0 +1,12 @@ +{ + "black": "#21222c", + "red": "#ff5555", + "green": "#50fa7b", + "yellow": "#ffcb6b", + "blue": "#82aaff", + "purple": "#c792ea", + "cyan": "#8be9fd", + "white": "#f8f8f2", + "background": "#212121", + "foreground": "#f8f8f2" +} \ No newline at end of file diff --git a/dot_config/qtile/themes/hopscotch.json b/dot_config/qtile/themes/hopscotch.json new file mode 100644 index 0000000..4fcf47b --- /dev/null +++ b/dot_config/qtile/themes/hopscotch.json @@ -0,0 +1,12 @@ +{ + "black": "#322931", + "red": "#dd464c", + "green": "#8fc13e", + "yellow": "#fdcc59", + "blue": "#1290bf", + "purple": "#c85e7c", + "cyan": "#149b93", + "white": "#b9b5b8", + "background": "#322931", + "foreground": "#b9b5b8" +} diff --git a/dot_config/qtile/themes/material-darker.json b/dot_config/qtile/themes/material-darker.json new file mode 100644 index 0000000..fa6db4a --- /dev/null +++ b/dot_config/qtile/themes/material-darker.json @@ -0,0 +1,12 @@ +{ + "black": "#000000", + "red": "#ff5370", + "green": "#c3e88d", + "yellow": "#ffcb6b", + "blue": "#82aaff", + "purple": "#c792ea", + "cyan": "#89ddff", + "white": "#ffffff", + "background": "#212121", + "foreground": "#eeffff" +} \ No newline at end of file diff --git a/dot_config/qtile/themes/nord.json b/dot_config/qtile/themes/nord.json new file mode 100644 index 0000000..f6b8731 --- /dev/null +++ b/dot_config/qtile/themes/nord.json @@ -0,0 +1,12 @@ +{ + "black": "#3b4252", + "red": "#bf616a", + "green": "#a3be8c", + "yellow": "#ebcb8b", + "blue": "#81a1c1", + "purple": "#b48ead", + "cyan": "#88c0d0", + "white": "#e5e9f0", + "background": "#2e3440", + "foreground": "#d8dee9" +} diff --git a/dot_config/qtile/themes/one-dark.json b/dot_config/qtile/themes/one-dark.json new file mode 100644 index 0000000..c70a4a2 --- /dev/null +++ b/dot_config/qtile/themes/one-dark.json @@ -0,0 +1,12 @@ +{ + "black": "#131613", + "red": "#e06c75", + "green": "#98c379", + "yellow": "#d19a66", + "blue": "#61afef", + "purple": "#c678dd", + "cyan": "#56b6c2", + "white": "#abb2bf", + "background": "#282c34", + "foreground": "#abb2bf" +} diff --git a/dot_config/qtile/themes/operator.json b/dot_config/qtile/themes/operator.json new file mode 100644 index 0000000..468f1fd --- /dev/null +++ b/dot_config/qtile/themes/operator.json @@ -0,0 +1,12 @@ +{ + "black": "#5a5a5a", + "red": "#ca372d", + "green": "#4d7b3a", + "yellow": "#d4d697", + "blue": "#4387cf", + "purple": "#b86cb4", + "cyan": "#72d5c6", + "white": "#ced4cd", + "background": "#191919", + "foreground": "#c3cac2" +} \ No newline at end of file diff --git a/dot_config/qtile/themes/royal.json b/dot_config/qtile/themes/royal.json new file mode 100644 index 0000000..f34f19a --- /dev/null +++ b/dot_config/qtile/themes/royal.json @@ -0,0 +1,12 @@ +{ + "black": "#241f2b", + "red": "#91284c", + "green": "#23801c", + "yellow": "#b49d27", + "blue": "#6580b0", + "purple": "#674d96", + "cyan": "#8aaabe", + "white": "#524966", + "background": "#100815", + "foreground": "#514968" +} \ No newline at end of file diff --git a/dot_config/qtile/themes/seashells.json b/dot_config/qtile/themes/seashells.json new file mode 100644 index 0000000..930fcaf --- /dev/null +++ b/dot_config/qtile/themes/seashells.json @@ -0,0 +1,12 @@ +{ + "black": "#17384c", + "red": "#d15123", + "green": "#027c9b", + "yellow": "#fca02f", + "blue": "#1e4950", + "purple": "#68d4f1", + "cyan": "#50a3b5", + "white": "#deb88d", + "background": "#09141b", + "foreground": "#deb88d" +} \ No newline at end of file diff --git a/dot_config/qtile/themes/smyck.json b/dot_config/qtile/themes/smyck.json new file mode 100644 index 0000000..a08c684 --- /dev/null +++ b/dot_config/qtile/themes/smyck.json @@ -0,0 +1,12 @@ +{ + "black": "#000000", + "red": "#b84131", + "green": "#7da900", + "yellow": "#c4a500", + "blue": "#62a3c4", + "purple": "#ba8acc", + "cyan": "#207383", + "white": "#a1a1a1", + "background": "#1b1b1b", + "foreground": "#f7f7f7" +} \ No newline at end of file diff --git a/dot_config/qtile/themes/spacedust.json b/dot_config/qtile/themes/spacedust.json new file mode 100644 index 0000000..00976f7 --- /dev/null +++ b/dot_config/qtile/themes/spacedust.json @@ -0,0 +1,12 @@ +{ + "black": "#6e5346", + "red": "#e35b00", + "green": "#5cab96", + "yellow": "#e3cd7b", + "blue": "#0f548b", + "purple": "#e35b00", + "cyan": "#06afc7", + "white": "#f0f1ce", + "background": "#0a1e24", + "foreground": "#ecf0c1" +} \ No newline at end of file diff --git a/dot_config/qtile/themes/spacegray.json b/dot_config/qtile/themes/spacegray.json new file mode 100644 index 0000000..a243554 --- /dev/null +++ b/dot_config/qtile/themes/spacegray.json @@ -0,0 +1,12 @@ +{ + "black": "#000000", + "red": "#b04b57", + "green": "#87b379", + "yellow": "#e5c179", + "blue": "#7d8fa4", + "purple": "#a47996", + "cyan": "#85a7a5", + "white": "#b3b8c3", + "background": "#20242d", + "foreground": "#b3b8c3" +} \ No newline at end of file diff --git a/dot_config/qtile/themes/square.json b/dot_config/qtile/themes/square.json new file mode 100644 index 0000000..28da9a4 --- /dev/null +++ b/dot_config/qtile/themes/square.json @@ -0,0 +1,12 @@ +{ + "black": "#050505", + "red": "#e9897c", + "green": "#b6377d", + "yellow": "#ecebbe", + "blue": "#a9cdeb", + "purple": "#75507b", + "cyan": "#c9caec", + "white": "#f2f2f2", + "background": "#1a1a1a", + "foreground": "#acacab" +} \ No newline at end of file diff --git a/dot_config/qtile/themes/tomorrow-nb.json b/dot_config/qtile/themes/tomorrow-nb.json new file mode 100644 index 0000000..1f4416a --- /dev/null +++ b/dot_config/qtile/themes/tomorrow-nb.json @@ -0,0 +1,12 @@ +{ + "black": "#000000", + "red": "#d54e53", + "green": "#b9ca4a", + "yellow": "#e7c547", + "blue": "#7aa6da", + "purple": "#c397d8", + "cyan": "#70c0b1", + "white": "#ffffff", + "background": "#000000", + "foreground": "#eaeaea" +} \ No newline at end of file