├── eww ├── src │ ├── pp.png │ ├── pannel-arrow.png │ └── wk-helper-bg.png ├── colors.scss ├── colors.yuck ├── wttr.py ├── get_wks.py ├── eww.yuck ├── utils.yuck ├── pannel.yuck ├── desk.yuck └── eww.scss ├── src ├── mars1.png ├── mars2.png └── mars3.png ├── rofi ├── colors.rasi ├── dmenu.sh └── dmenu.rasi ├── lightdm ├── usr-share-backgrounds │ ├── pp.png │ └── mars.jpg └── lightdm-gtk-greeter.conf ├── xborders ├── xbd └── config.json ├── qtile ├── autostart.sh ├── lock.sh └── config.py ├── README.md ├── glava ├── bars.glsl └── rc.glsl ├── picom └── picom.conf ├── i3 └── config └── alacritty └── alacritty.yml /eww/src/pp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Egsagon/mars/HEAD/eww/src/pp.png -------------------------------------------------------------------------------- /src/mars1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Egsagon/mars/HEAD/src/mars1.png -------------------------------------------------------------------------------- /src/mars2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Egsagon/mars/HEAD/src/mars2.png -------------------------------------------------------------------------------- /src/mars3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Egsagon/mars/HEAD/src/mars3.png -------------------------------------------------------------------------------- /eww/src/pannel-arrow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Egsagon/mars/HEAD/eww/src/pannel-arrow.png -------------------------------------------------------------------------------- /eww/src/wk-helper-bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Egsagon/mars/HEAD/eww/src/wk-helper-bg.png -------------------------------------------------------------------------------- /rofi/colors.rasi: -------------------------------------------------------------------------------- 1 | *{ 2 | al: #EEEEEE; 3 | bg: #FF7E47; 4 | se: #FF7E47; 5 | fg: #6D4128; 6 | ac: #EEEEEE; 7 | } 8 | -------------------------------------------------------------------------------- /lightdm/usr-share-backgrounds/pp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Egsagon/mars/HEAD/lightdm/usr-share-backgrounds/pp.png -------------------------------------------------------------------------------- /lightdm/usr-share-backgrounds/mars.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Egsagon/mars/HEAD/lightdm/usr-share-backgrounds/mars.jpg -------------------------------------------------------------------------------- /xborders/xbd: -------------------------------------------------------------------------------- 1 | #!/usr/bin/sh 2 | 3 | cd /home/egsagon/docs/sb2/ 4 | killall xborders 5 | ./xborders --config config.json 6 | 7 | echo "\n" 8 | -------------------------------------------------------------------------------- /eww/colors.scss: -------------------------------------------------------------------------------- 1 | $c-com-fg: #19323C; 2 | $c-fg: #6D4128; 3 | $c-com-acc: #FF7E47; 4 | $c-accent: #FF632F; 5 | $c-com-bg: #B0BBBF; 6 | $c-bg: #EEEEEE; 7 | -------------------------------------------------------------------------------- /xborders/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "border-radius": 10, 3 | "border-width": 3, 4 | "border-red": 255, 5 | "border-green": 99, 6 | "border-blue": 47 7 | } -------------------------------------------------------------------------------- /eww/colors.yuck: -------------------------------------------------------------------------------- 1 | (defvar c-com-fg "#19323C") 2 | (defvar c-fg "#6D4128" ) 3 | (defvar c-com-acc "#FF7E47") 4 | (defvar c-accent "#FF632F") 5 | (defvar c-com-bg "#B0BBBF") 6 | (defvar c-bg "#EEEEEE") -------------------------------------------------------------------------------- /rofi/dmenu.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | # ===== ROFI DMENU ===== # 4 | 5 | dir = "$HOME/.config/rofi" 6 | 7 | rofi -no-lazy-grab -show drun -modi drun -theme "$dir/dmenu.rasi" -font "Roboto Regular 10" -------------------------------------------------------------------------------- /qtile/autostart.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/sh 2 | 3 | # Start picom 4 | picom --experimental-backends & 5 | 6 | # Start dunst 7 | killall -9 dunst 8 | dunst & 9 | 10 | # Open eww widgets 11 | eww open-many bar desk 12 | 13 | # Start bain 14 | /home/egsagon/.bain/bain mars & 15 | 16 | # Start flashfocus 17 | flashfocus & -------------------------------------------------------------------------------- /lightdm/lightdm-gtk-greeter.conf: -------------------------------------------------------------------------------- 1 | [greeter] 2 | theme-name = Colloid-Light 3 | icon-theme-name = Colloid-dark-cursors 4 | background = /usr/share/backgrounds/mars.jpg 5 | user-background = false 6 | default-user-image = /usr/share/backgrounds/pp.png 7 | font-name = Source Code Pro Light 10 8 | clock-format = %H:%M 9 | indicators = 10 | 11 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # mars 2 | 3 | This is an attempt at making a light themed rice for my laptop. 4 | 5 | Color scheme (my own): 6 | `#EEEEEE`, `#B0BBBF`, `#FF632F`, `#FF7E47`, `#19323C`. 7 | 8 | ### Specs 9 | 10 | - Distro: Arch Linux 11 | - Wm: i3-gaps 12 | - Compositor: picom-tryone-git 13 | - Widgets: eww 14 | - Terminal: Alacritty 15 | - menu launcher: rofi 16 | 17 | ### Screenshots 18 | 19 | ![img1](src/mars1.png) 20 | ![img2](src/mars2.png) 21 | ![img3](src/mars3.png) 22 | -------------------------------------------------------------------------------- /qtile/lock.sh: -------------------------------------------------------------------------------- 1 | i3lock -c 00000000 \ 2 | -e \ 3 | -S 0 \ 4 | --radius 70 \ 5 | --inside-color EEEEEEFF \ 6 | --ring-color EEEEEEFF \ 7 | --insidever-color EEEEEEFF \ 8 | --ringver-color 0000FFFF \ 9 | --insidewrong-color EEEEEEFF \ 10 | --ringwrong-color FF0000FF \ 11 | --line-color 00000000 \ 12 | --keyhl-color FF632FFF \ 13 | --bshl-color FF0000FF \ 14 | --separator-color 00000000 \ 15 | --verif-text "---" \ 16 | --wrong-text "-x-" \ 17 | --noinput-text "---" \ 18 | --ind-pos "200:540" 19 | -------------------------------------------------------------------------------- /eww/wttr.py: -------------------------------------------------------------------------------- 1 | import json 2 | from os import popen, system 3 | 4 | keys = ['glyph', 'header', 'temp', 'wind'] 5 | glyhps = ['盛', '', '', '殺', '', ''] 6 | 7 | 8 | res = popen('curl wttr.in/paris?format="%c|%C|%t|%w"').read().split('|') 9 | 10 | # TODO: convert emoji to iosveka glyph 11 | 12 | s = res[0].lower() 13 | 14 | if 'sun' in s: res[0] = glyhps[0] 15 | elif 'rain' in s: res[0] = glyhps[-1] 16 | elif 'cloud' in s: res[0] = glyhps[3] 17 | else: res[0] = glyhps[1] 18 | 19 | print(json.dumps(dict(zip(keys, res)))) -------------------------------------------------------------------------------- /eww/get_wks.py: -------------------------------------------------------------------------------- 1 | # ======================================== # 2 | # Script that parses the output of xdotool # 3 | # to get the current number of workspaces. # 4 | # ======================================== # 5 | 6 | from os import popen 7 | from json import dumps 8 | 9 | empty = '' 10 | 11 | # Fetch 12 | wks = [(n + 1, popen(f'xdotool search --desktop {n} --class ".*"').readlines()) for n in range(10)] 13 | cur = str(int(popen('xdotool get_desktop').read().strip()) + 1) 14 | 15 | 16 | # Crop 17 | res = [n if len(wk) else empty for n, wk in wks] 18 | if not cur in res: res[int(cur) - 1] = cur 19 | while res[-1] == empty: res.pop(-1) 20 | 21 | 22 | # Send 23 | res = [{'name': wk, 'focused': wk == cur} for wk in res] 24 | print(dumps(res)) -------------------------------------------------------------------------------- /glava/bars.glsl: -------------------------------------------------------------------------------- 1 | 2 | /* Center line thickness (pixels) */ 3 | #define C_LINE 1 4 | /* Width (in pixels) of each bar */ 5 | #define BAR_WIDTH 10 6 | /* Width (in pixels) of each bar gap */ 7 | #define BAR_GAP 4 8 | /* Outline color */ 9 | #define BAR_OUTLINE #f00 10 | /* Outline width (in pixels, set to 0 to disable outline drawing) */ 11 | #define BAR_OUTLINE_WIDTH 0 12 | /* Amplify magnitude of the results each bar displays */ 13 | #define AMPLIFY 500 14 | /* Whether the current settings use the alpha channel; 15 | enabling this is required for alpha to function 16 | correctly on X11 with `"native"` transparency. */ 17 | #define USE_ALPHA 0 18 | /* How strong the gradient changes */ 19 | #define GRADIENT_POWER 0 20 | /* Bar color changes with height */ 21 | #define GRADIENT (d / GRADIENT_POWER + 1) 22 | /* Bar color */ 23 | #define COLOR (#B0BBBF) 24 | /* Direction that the bars are facing, 0 for inward, 1 for outward */ 25 | #define DIRECTION 0 26 | /* Whether to switch left/right audio buffers */ 27 | #define INVERT 0 28 | /* Whether to flip the output vertically */ 29 | #define FLIP 0 30 | /* Whether to mirror output along `Y = X`, causing output to render on the left side of the window */ 31 | /* Use with `FLIP 1` to render on the right side */ 32 | #define MIRROR_YX 0 33 | 34 | -------------------------------------------------------------------------------- /picom/picom.conf: -------------------------------------------------------------------------------- 1 | ################################# 2 | # Shadows # 3 | ################################# 4 | 5 | shadow = false; 6 | 7 | ################################# 8 | # Fading # 9 | ################################# 10 | 11 | fading = true; 12 | fade-in-step = 0.03; 13 | fade-out-step = 0.03; 14 | 15 | fade-exclude = [ 16 | "name = 'XOSD'", 17 | "name = 'osd_cat'", 18 | "class_g = 'xborder'" 19 | ]; 20 | 21 | ################################# 22 | # Transparency / Opacity # 23 | ################################# 24 | 25 | inactive-opacity = 0.7; 26 | frame-opacity = 0.7; 27 | 28 | inactive-opacity = 0.5; 29 | frame-opacity = 1; 30 | inactive-opacity-override = true; 31 | 32 | focus-exclude = [ 33 | "class_g = 'Cairo-clock'", 34 | "name = 'XOSD'" 35 | ]; 36 | 37 | opacity-rule = [ 38 | "85:class_g = 'Gnome-terminal'", 39 | "100:class_g = 'firefox'" 40 | ]; 41 | 42 | ################################# 43 | # Corners # 44 | ################################# 45 | 46 | corner-radius = 10; 47 | round-borders = 0; 48 | round-borders = 1; 49 | 50 | rounded-corners-exclude = [ 51 | "class_g = 'eww-bar-wks'", 52 | "class_g = 'eww-bar-clock'", 53 | "class_g = 'eww-bar-tray'", 54 | "class_g = 'eww-bar'", 55 | "class_g = 'eww-pannel'", 56 | "class_g = 'eww-wk-helper'", 57 | "class_g = 'eww-desk'", 58 | ]; 59 | 60 | 61 | ################################# 62 | # Background-Blurring # 63 | ################################# 64 | 65 | blur-method = "dual_kawase"; 66 | blur-strength = 5; 67 | blur-background-fixed = true 68 | 69 | blur-kern = "3x3box"; 70 | 71 | blur-background-exclude = [ 72 | "window_type = 'dock'", 73 | "window_type = 'desktop'", 74 | "class_g = 'xborder'", 75 | "_GTK_FRAME_EXTENTS@:c" 76 | ]; 77 | 78 | ################################# 79 | # General Settings # 80 | ################################# 81 | 82 | backend = "glx"; 83 | vsync = true; 84 | 85 | mark-wmwin-focused = true; 86 | mark-ovredir-focused = true; 87 | detect-rounded-corners = true; 88 | detect-client-opacity = true; 89 | 90 | use-damage = false; # true 91 | 92 | wintypes: 93 | { 94 | tooltip = { fade = true; shadow = false; opacity = 0.8; focus = true; full-shadow = false; }; 95 | dock = { shadow = false; }; 96 | dnd = { shadow = false; }; 97 | popup_menu = { opacity = 0.8; }; 98 | dropdown_menu = { opacity = 0.8; }; 99 | }; 100 | -------------------------------------------------------------------------------- /rofi/dmenu.rasi: -------------------------------------------------------------------------------- 1 | /* ===== ROFI DMENU THEME ===== */ 2 | 3 | 4 | /* static colors 5 | 6 | * { 7 | al: #F2F9F1; 8 | bg: #A6D3A0; 9 | se: #A6D3A0; 10 | fg: #656565; 11 | ac: #F2F9F1; 12 | } 13 | 14 | */ 15 | 16 | @import "colors.rasi" 17 | 18 | configuration { 19 | font: "Iosveka 10"; 20 | show-icons: true; 21 | icon-theme: "Papirus"; 22 | display-drun: ""; 23 | drun-display-format: "{name}"; 24 | disable-history: false; 25 | sidebar-mode: false; 26 | } 27 | 28 | window { 29 | transparency: "real"; 30 | background-color: @bg; 31 | text-color: @fg; 32 | border: 3px; 33 | border-color: @se; 34 | border-radius: 15px; 35 | width: 500px; 36 | location: center; 37 | x-offset: 0px; 38 | y-offset: -250px; 39 | } 40 | 41 | prompt { 42 | enabled: true; 43 | padding: 0.30% 1% 0% -0.5%; 44 | background-color: @al; 45 | text-color: @bg; 46 | font: "FantasqueSansMono Nerd Font 12"; 47 | } 48 | 49 | entry { 50 | background-color: @al; 51 | text-color: @bg; 52 | placeholder-color: @bg; 53 | expand: true; 54 | horizontal-align: 0; 55 | placeholder: "Launch"; 56 | padding: 0.35% 0% 0% 0%; 57 | blink: true; 58 | } 59 | 60 | inputbar { 61 | children: [ prompt, entry ]; 62 | background-color: @ac; 63 | text-color: @bg; 64 | expand: false; 65 | border: 0% 0% 0% 0%; 66 | border-radius: 0px; 67 | border-color: @ac; 68 | margin: 0% 0% 0% 0%; 69 | padding: 1.5%; 70 | } 71 | 72 | listview { 73 | background-color: @al; 74 | padding: 0px; 75 | columns: 1; 76 | lines: 6; 77 | spacing: 8px; 78 | cycle: true; 79 | dynamic: true; 80 | layout: vertical; 81 | } 82 | 83 | mainbox { 84 | background-color: @al; 85 | border: 0% 0% 0% 0%; 86 | border-radius: 0% 0% 0% 0%; 87 | border-color: @ac; 88 | children: [ inputbar, listview ]; 89 | spacing: 0%; 90 | padding: 0px; 91 | } 92 | 93 | element { 94 | background-color: @al; 95 | text-color: @fg; 96 | orientation: horizontal; 97 | border-radius: 0%; 98 | padding: 1% 0.5% 1% 0.5%; 99 | } 100 | 101 | element-icon { 102 | background-color: inherit; 103 | text-color: inherit; 104 | horizontal-align: 0.5; 105 | vertical-align: 0.5; 106 | size: 32px; 107 | border: 0px; 108 | } 109 | 110 | element-text { 111 | background-color: transparent; 112 | text-color: inherit; 113 | expand: true; 114 | horizontal-align: 0; 115 | vertical-align: 0.5; 116 | margin: 0% 0.25% 0% 0.25%; 117 | } 118 | 119 | element selected { 120 | text-color: @fg; 121 | border: 3px 0px 3px 0px; 122 | border-radius: 0px; 123 | border-color: @bg; 124 | } 125 | -------------------------------------------------------------------------------- /eww/eww.yuck: -------------------------------------------------------------------------------- 1 | ; -------------- ; 2 | ; EWW BAR CONFIG ; 3 | ; -------------- ; 4 | 5 | (include "./desk.yuck") 6 | (include "./utils.yuck") 7 | (include "./pannel.yuck") 8 | (include "./colors.yuck") 9 | 10 | (include "./test.yuck") 11 | 12 | ; Revealers 13 | (defvar rev-bat false) 14 | (defvar rev-brg false) 15 | (defvar rev-sys false) 16 | 17 | (defvar hv-arrow false) 18 | 19 | ; Date 20 | (defpoll hour :interval "10s" :initial "0" "date +%H:%M") 21 | (defpoll date :interval "1m" :initial "0" "date +%H:%M") 22 | 23 | ; Workspaces 24 | ; (defpoll wks :interval "300ms" :initial "{}" "i3-msg -t get_workspaces") ; on i3 25 | (defpoll wks :interval "300ms" :initial "{}" `echo $(python3 ./get_wks.py)`) ; on qtile 26 | 27 | 28 | (defwidget rev-widget [?var ?varname ?yuck ?icon ?size] 29 | (eventbox 30 | :onhover "eww update ${varname}=true" 31 | :onhoverlost "eww update ${varname}=false" 32 | 33 | (box 34 | :space-evenly false 35 | 36 | (revealer 37 | :reveal var 38 | :duration "150ms" 39 | :transition "slideleft" 40 | :valign "center" 41 | 42 | ;(literal :content "(box :orientation 'vertical' ${yuck})") 43 | (literal :content yuck) 44 | ) 45 | 46 | (label 47 | :text icon 48 | :class "rev-widget" 49 | :style "font-size: ${size}" 50 | ) 51 | ) 52 | ) 53 | ) 54 | 55 | (defwindow bar 56 | :monitor 0 57 | :geometry (geometry 58 | :x 0 :y -16 59 | :width "1890px" :height "60px" 60 | :anchor "bottom center" 61 | ) 62 | 63 | (centerbox 64 | ; Workspaces 65 | (eventbox 66 | :onhover "eww open wk-helper" 67 | :onhoverlost "eww close wk-helper" 68 | (box 69 | :halign "start" 70 | :space-evenly false 71 | 72 | (for wk in wks 73 | (label 74 | :text "${wk['focused'] ? '' : ''}" 75 | :style "color: ${wk['focused'] ? c-accent : c-com-fg}" 76 | :class "wk" 77 | ) 78 | ) 79 | ) 80 | ) 81 | 82 | ; Hour 83 | (box 84 | (label 85 | :text hour 86 | :class "clock" 87 | :tooltip date 88 | ) 89 | ) 90 | 91 | ; Tray 92 | (box 93 | :halign "end" 94 | :valign "center" 95 | :space-evenly false 96 | 97 | (rev-widget 98 | :var rev-bat 99 | :varname "rev-bat" 100 | :yuck "(label :text `bat: ${EWW_BATTERY['BAT0']['capacity']}%`)" 101 | :icon "${{'Discharging': '', 'Charging': ''}[EWW_BATTERY['BAT0']['status']]}" 102 | :size 23 103 | ) 104 | 105 | (rev-widget 106 | :var rev-brg 107 | :varname "rev-brg" 108 | :yuck "(scale :min 8 :max 100 :class 'br-scale' :value 100 :onchange `xrandr --output eDP-1 --brightness $(bc -l <<< 'scale=2; {}/100')`)" 109 | :icon "" 110 | :size 40 111 | ) 112 | 113 | (rev-widget 114 | :var rev-sys 115 | :varname "rev-sys" 116 | ;:yuck "(box (button :class 'sys-btn' :onclick 'eww update open-graph=${!open-graph}; eww ${open-graph ? `close` : `open`} graph' ''))" 117 | :yuck "(box (button :class 'sys-btn' :onclick 'killall tilda; tilda -c htop &' ''))" 118 | :icon "﬙" 119 | :size 40 120 | ) 121 | 122 | (eventbox 123 | :onclick "eww update show-pannel=${!show-pannel}" 124 | :onhover "eww update hv-arrow=true; eww open pannel" 125 | :onhoverlost "eww update hv-arrow=false; eww ${show-pannel ? 'open' : 'close'} pannel" 126 | :class "arrow-box" 127 | 128 | (label 129 | :text "卑" 130 | :angle "${show-pannel ? 0 : -90}" 131 | :style "background-color: ${hv-arrow ? c-bg : c-accent}" 132 | :class "arrow" 133 | ) 134 | ) 135 | ) 136 | ) 137 | ) 138 | -------------------------------------------------------------------------------- /qtile/config.py: -------------------------------------------------------------------------------- 1 | # GTILE CONFIG # 2 | 3 | import subprocess 4 | from os import popen 5 | 6 | from libqtile.lazy import lazy 7 | from libqtile.utils import guess_terminal 8 | from libqtile import bar, layout, widget, hook 9 | from libqtile.config import Click, Drag, Group, Key, Match, Screen 10 | 11 | mod = "mod4" 12 | terminal = guess_terminal() 13 | 14 | @hook.subscribe.startup_once 15 | def autostart(): subprocess.Popen('/home/egsagon/.config/qtile/autostart.sh') 16 | 17 | keys = [ 18 | # Switch between windows 19 | Key([mod], "Left", lazy.layout.left()), 20 | Key([mod], "Right", lazy.layout.right()), 21 | Key([mod], "Down", lazy.layout.down()), 22 | Key([mod], "Up", lazy.layout.up()), 23 | 24 | # Move windows 25 | Key([mod, "shift"], "Left", lazy.layout.shuffle_left()), 26 | Key([mod, "shift"], "Right", lazy.layout.shuffle_right()), 27 | Key([mod, "shift"], "Down", lazy.layout.shuffle_down()), 28 | Key([mod, "shift"], "Up", lazy.layout.shuffle_up()), 29 | 30 | # Resise window 31 | Key([mod, "control"], "Left", lazy.layout.grow_left()), 32 | Key([mod, "control"], "Right", lazy.layout.grow_right()), 33 | Key([mod, "control"], "Down", lazy.layout.grow_down()), 34 | Key([mod, "control"], "Up", lazy.layout.grow_up()), 35 | 36 | # Start terminal 37 | Key([mod], "Return", lazy.spawn(terminal)), 38 | 39 | # Toggle between different layouts as defined below 40 | Key([mod], "Tab", lazy.next_layout()), 41 | 42 | # Toggle floating 43 | Key([mod, 'shift'], 'space', lazy.window.toggle_floating()), 44 | 45 | # WM commands 46 | Key([mod,"shift"], "q", lazy.window.kill()), 47 | Key([mod, "shift"], "r", lazy.reload_config()), 48 | Key([mod, "shift"], "e", lazy.shutdown()), 49 | 50 | # Open rofi 51 | Key([mod], 'd', lazy.function(lambda *_: popen('/home/egsagon/.config/rofi/dmenu.sh'))), 52 | 53 | # Screenshot 54 | Key([mod, 'shift'], 's', lazy.function(lambda *_: popen('flameshot gui'))) 55 | ] 56 | 57 | groups = [Group(i) for i in "123456789"] 58 | 59 | group_keys = [ 60 | 'ampersand', 61 | 'eacute', 62 | 'quotedbl', 63 | 'apostrophe', 64 | 'parenleft', 65 | 'minus', 66 | 'egrave', 67 | 'underscore', 68 | 'agrave', 69 | ] 70 | 71 | for i, key in zip(groups, group_keys): 72 | keys.extend([Key([mod], key, lazy.group[i.name].toscreen()), 73 | Key([mod, "shift"], key, lazy.window.togroup(i.name))]) 74 | 75 | layouts = [ 76 | layout.Columns(border_focus_stack = ["#F00", "#0F0"], 77 | border_focus = '#FF632F', 78 | border_normal = '#FF632F', 79 | border_on_single = True, 80 | border_width = 3, 81 | margin = 16) 82 | ] 83 | 84 | widget_defaults = dict( 85 | font="sans", 86 | fontsize=12, 87 | padding=3, 88 | ) 89 | 90 | extension_defaults = widget_defaults.copy() 91 | 92 | screens = [ 93 | Screen( 94 | bottom = bar.Gap(80), 95 | wallpaper = '/home/egsagon/.bain/images/mars.png', 96 | wallpaper_mode = 'stretch', 97 | ), 98 | ] 99 | 100 | # Drag floating layouts. 101 | mouse = [ 102 | Drag([mod], "Button1", lazy.window.set_position_floating(), start=lazy.window.get_position()), 103 | Drag([mod], "Button3", lazy.window.set_size_floating(), start=lazy.window.get_size()), 104 | Click([mod], "Button2", lazy.window.bring_to_front()), 105 | ] 106 | 107 | dgroups_key_binder = None 108 | dgroups_app_rules = [] # type: list 109 | follow_mouse_focus = True 110 | bring_front_click = False 111 | cursor_warp = False 112 | floating_layout = layout.Floating( 113 | float_rules=[ 114 | *layout.Floating.default_float_rules, 115 | Match(wm_class="confirmreset"), # gitk 116 | Match(wm_class="makebranch"), # gitk 117 | Match(wm_class="maketag"), # gitk 118 | Match(wm_class="ssh-askpass"), # ssh-askpass 119 | Match(title="branchdialog"), # gitk 120 | Match(title="pinentry"), # GPG key password entry 121 | 122 | Match(title="glava") 123 | ], 124 | 125 | border_focus = '#FF632F', 126 | border_normal = '#FF632F', 127 | border_width = 3 128 | ) 129 | 130 | auto_fullscreen = False 131 | focus_on_window_activation = "smart" 132 | reconfigure_screens = True 133 | 134 | auto_minimize = False 135 | wl_input_rules = None 136 | 137 | wmname = "i3" # LG3D qtile i3 138 | -------------------------------------------------------------------------------- /eww/utils.yuck: -------------------------------------------------------------------------------- 1 | (defvar open-graph false) 2 | (defvar tab 1) 3 | 4 | (defwindow graph 5 | :monitor 0 6 | :geometry (geometry 7 | :x -100 :y -700 8 | :width "400px" :height "250px" 9 | :anchor "bottom right" 10 | ) 11 | 12 | (box 13 | :space-evenly false 14 | 15 | ; Tab toggle 16 | (button 17 | :onclick "eww update tab=${tab == 1 ? 2 : 1}" 18 | :class "tab-switch" 19 | 20 | (label 21 | :text "" 22 | :angle 90 23 | ) 24 | ) 25 | 26 | ; Tabs 27 | (box 28 | :orientation "vertical" 29 | :valign "center" 30 | 31 | ; Tab 1 32 | (expander 33 | :expanded "${tab == 1}" 34 | :class "expander" 35 | 36 | (revealer 37 | :reveal "${tab == 1}" 38 | :transition "slidedown" 39 | :duration "100ms" 40 | 41 | (box 42 | :orientation "vertical" 43 | :class "tab-1" 44 | 45 | (overlay 46 | (graph 47 | :value "${EWW_CPU.cores[0].usage}" 48 | :thickness 1 49 | :time-range "1m" 50 | :class "core-graph" 51 | ) 52 | 53 | (graph 54 | :value "${EWW_CPU.cores[1].usage}" 55 | :thickness 1 56 | :time-range "1m" 57 | :class "core-graph" 58 | ) 59 | 60 | (graph 61 | :value "${EWW_CPU.cores[2].usage}" 62 | :thickness 1 63 | :time-range "1m" 64 | :class "core-graph" 65 | ) 66 | 67 | (graph 68 | :value "${EWW_CPU.cores[3].usage}" 69 | :thickness 1 70 | :time-range "1m" 71 | :class "core-graph" 72 | ) 73 | ) 74 | ) 75 | ) 76 | ) 77 | 78 | ; Tab 2 79 | (expander 80 | :expanded "${tab == 2}" 81 | :class "expander" 82 | 83 | (revealer 84 | :reveal "${tab == 2}" 85 | :transition "slideup" 86 | :duration "100ms" 87 | 88 | 89 | (box 90 | :style "background-color: red" 91 | :class "tab-2" 92 | "TEXT" 93 | ) 94 | ) 95 | ) 96 | ) 97 | ) 98 | ) 99 | 100 | (defwindow wk-helper 101 | :monitor 0 102 | :geometry (geometry 103 | :x 30 :y -85 104 | :width "40px" :height "50px" 105 | :anchor "bottom left" 106 | ) 107 | 108 | (box 109 | :orientation "vertical" 110 | 111 | (overlay 112 | (box 113 | :halign "start" 114 | :space-evenly false 115 | 116 | (for wk in wks 117 | (label 118 | :text "${wk['name']}" 119 | :valign "start" 120 | :class "wk-help" 121 | :style "color: ${wk['focused'] ? c-accent : c-com-fg}" 122 | ) 123 | ) 124 | ) 125 | 126 | (image 127 | :path "./src/wk-helper-bg.png" 128 | :image-height 50 129 | ) 130 | ) 131 | ) 132 | ) 133 | 134 | (defwindow gif-settings 135 | :monitor 0 136 | :geometry (geometry 137 | :x "-300px" :y "0px" 138 | :width "150px" :height "50px" 139 | :anchor "center right" 140 | ) 141 | 142 | (combo-box-text 143 | :items "['Cava', 'Mars', 'Cbonsai', 'Cmatrix']" 144 | :onchange "eww close gif-settings; ./gif.sh {}" 145 | ) 146 | ) 147 | 148 | (defwidget confirm [?str ?cmd ?win] 149 | (box 150 | :orientation "vertical" 151 | :class "confirm" 152 | 153 | (label :text str) 154 | 155 | (box 156 | :halign "center" 157 | (button :class "conf-btn" :onclick "eww close ${win}; ${cmd}" "Yes") 158 | (button :class "conf-btn" :onclick "eww close ${win}" "No") 159 | ) 160 | ) 161 | ) 162 | 163 | (defwindow conf-shut 164 | :monitor 0 165 | :geometry (geometry 166 | :x -290 :y -130 167 | :width "250px" :height "100px" 168 | :anchor "bottom right" 169 | ) 170 | 171 | (confirm 172 | :str "Are you sure?" 173 | :cmd "shutdown now" 174 | :win "conf-shut" 175 | ) 176 | ) 177 | 178 | (defwindow conf-rest 179 | :monitor 0 180 | :geometry (geometry 181 | :x -290 :y -130 182 | :width "250px" :height "100px" 183 | :anchor "bottom right" 184 | ) 185 | 186 | (confirm 187 | :str "Are you sure?" 188 | :cmd "reboot" 189 | :win "conf-rest" 190 | ) 191 | ) -------------------------------------------------------------------------------- /i3/config: -------------------------------------------------------------------------------- 1 | # i3 config file (v4) 2 | 3 | set $mod Mod4 4 | font pango:monospace 8 5 | 6 | exec --no-startup-id dex --autostart --environment i3 7 | exec --no-startup-id xss-lock --transfer-sleep-lock -- i3lock --nofork 8 | exec --no-startup-id nm-applet 9 | 10 | # Start dunst 11 | exec_always --no-startup-id dunst 12 | 13 | # Use pactl to adjust volume in PulseAudio. 14 | set $refresh_i3status killall -SIGUSR1 i3status 15 | bindsym XF86AudioRaiseVolume exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ +10% && $refresh_i3status 16 | bindsym XF86AudioLowerVolume exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ -10% && $refresh_i3status 17 | bindsym XF86AudioMute exec --no-startup-id pactl set-sink-mute @DEFAULT_SINK@ toggle && $refresh_i3status 18 | bindsym XF86AudioMicMute exec --no-startup-id pactl set-source-mute @DEFAULT_SOURCE@ toggle && $refresh_i3status 19 | 20 | # Use Mouse+$mod to drag floating windows to their wanted position 21 | floating_modifier $mod 22 | 23 | # start a terminal 24 | bindsym $mod+Return exec alacritty 25 | 26 | # kill focused window 27 | bindsym $mod+Shift+q kill 28 | 29 | # start dmenu (a program launcher) 30 | bindsym $mod+d exec --no-startup-id ~/.config/rofi/dmenu.sh 31 | 32 | # change focus 33 | bindsym $mod+Left focus left 34 | bindsym $mod+Down focus down 35 | bindsym $mod+Up focus up 36 | bindsym $mod+Right focus right 37 | 38 | # move focused window 39 | bindsym $mod+Shift+Left move left 40 | bindsym $mod+Shift+Down move down 41 | bindsym $mod+Shift+Up move up 42 | bindsym $mod+Shift+Right move right 43 | 44 | # split in v/h orientation 45 | bindsym $mod+h split h 46 | bindsym $mod+v split v 47 | 48 | # enter fullscreen mode for the focused container 49 | bindsym $mod+f fullscreen toggle 50 | 51 | # change container layout (stacked, tabbed, toggle split) 52 | bindsym $mod+s layout stacking 53 | bindsym $mod+z layout tabbed 54 | bindsym $mod+e layout toggle split 55 | 56 | # toggle tiling / floating 57 | bindsym $mod+Shift+space floating toggle 58 | 59 | # change focus between tiling / floating windows 60 | bindsym $mod+space focus mode_toggle 61 | 62 | # focus the parent container 63 | bindsym $mod+q focus parent 64 | 65 | # focus the child container 66 | #bindsym $mod+d focus child 67 | 68 | # Define names for default workspaces for which we configure key bindings later on. 69 | # We use variables to avoid repeating the names in multiple places. 70 | set $ws1 "1" 71 | set $ws2 "2" 72 | set $ws3 "3" 73 | set $ws4 "4" 74 | set $ws5 "5" 75 | set $ws6 "6" 76 | set $ws7 "7" 77 | set $ws8 "8" 78 | set $ws9 "9" 79 | set $ws10 "10" 80 | 81 | # switch to workspace 82 | bindsym $mod+ampersand workspace number $ws1 83 | bindsym $mod+eacute workspace number $ws2 84 | bindsym $mod+quotedbl workspace number $ws3 85 | bindsym $mod+apostrophe workspace number $ws4 86 | bindsym $mod+parenleft workspace number $ws5 87 | bindsym $mod+minus workspace number $ws6 88 | bindsym $mod+egrave workspace number $ws7 89 | bindsym $mod+underscore workspace number $ws8 90 | bindsym $mod+ccedilla workspace number $ws9 91 | bindsym $mod+agrave workspace number $ws10 92 | 93 | # move focused container to workspace 94 | bindsym $mod+Shift+ampersand move container to workspace number $ws1 95 | bindsym $mod+Shift+eacute move container to workspace number $ws2 96 | bindsym $mod+Shift+quotedbl move container to workspace number $ws3 97 | bindsym $mod+Shift+apostrophe move container to workspace number $ws4 98 | bindsym $mod+Shift+5 move container to workspace number $ws5 99 | bindsym $mod+Shift+minus move container to workspace number $ws6 100 | bindsym $mod+Shift+egrave move container to workspace number $ws7 101 | bindsym $mod+Shift+underscore move container to workspace number $ws8 102 | bindsym $mod+Shift+ccedilla move container to workspace number $ws9 103 | bindsym $mod+Shift+agrave move container to workspace number $ws10 104 | 105 | # reload the configuration file 106 | bindsym $mod+Shift+c reload 107 | # restart i3 inplace (preserves your layout/session, can be used to upgrade i3) 108 | bindsym $mod+Shift+r restart 109 | # exit i3 (logs you out of your X session) 110 | bindsym $mod+Shift+e exec "i3-nagbar -t warning -m 'You pressed the exit shortcut. Do you really want to exit i3? This will end your X session.' -B 'Yes, exit i3' 'i3-msg exit'" 111 | 112 | # resize window (you can also use the mouse for that) 113 | mode "resize" { 114 | bindsym Left resize shrink width 10 px or 10 ppt 115 | bindsym Down resize grow height 10 px or 10 ppt 116 | bindsym Up resize shrink height 10 px or 10 ppt 117 | bindsym Right resize grow width 10 px or 10 ppt 118 | 119 | # back to normal: Enter or Escape or $mod+r 120 | bindsym Return mode "default" 121 | bindsym Escape mode "default" 122 | bindsym $mod+r mode "default" 123 | } 124 | 125 | bindsym $mod+r mode "resize" 126 | 127 | # Window borders 128 | for_window [class="^.*"] border pixel 0 129 | 130 | # Window color 131 | # Class border backgr. text indica. child_border 132 | client.focused #FF632F #EEEEEE #19323C #FF632F #FF632F 133 | client.focused_inactive #FF632F #EEEEEE #19323C #FF632F #FF632F 134 | client.unfocused #FF632F #EEEEEE #19323C #FF632F #FF632F 135 | client.urgent #FF632F #EEEEEE #19323C #FF632F #FF632F 136 | client.placeholder #FF632F #EEEEEE #19323C #FF632F 137 | 138 | # Start picom 139 | exec_always --no-startup-id killall picom; sleep 0.3; picom 140 | 141 | # Set wallpaper 142 | exec_always --no-startup-id feh --bg-scale ~/Downloads/mars.jpg 143 | 144 | # Gaps 145 | gaps inner 16 146 | gaps bottom 80 147 | 148 | # Allow cmatrix to be in floating mode 149 | for_window [title="mtx"] floating enable 150 | for_window [title="tilda"] floating enable 151 | 152 | # Start bain 153 | exec_always --no-startup-id .bain/bain mars 154 | 155 | # Open eww widgets 156 | <<<<<<< HEAD 157 | exec_always --no-startup-id eww open-many bar desk 158 | ======= 159 | exec_always --no-startup-id eww open bar 160 | >>>>>>> 0744749 (initial) 161 | 162 | # Show or hide wk-helper 163 | exec_always --no-startup-id python3 ./check.py 164 | 165 | # tilda always on top 166 | for_window [class="Tilda"] sticky enable 167 | for_window [class="Tilda"] floating enable 168 | 169 | # Start xborders 170 | exec_always --no-startup-id xbd 171 | 172 | # Open flameshot 173 | bindsym $mod+shift+s exec flameshot gui 174 | 175 | # Stick desk widget 176 | <<<<<<< HEAD 177 | 178 | ======= 179 | no_focus [class="eww-desk"] 180 | >>>>>>> 0744749 (initial) 181 | -------------------------------------------------------------------------------- /eww/pannel.yuck: -------------------------------------------------------------------------------- 1 | (defvar show-pannel false) 2 | 3 | ; (defpoll pctl :interval "2s" :initial "{}" `playerctl metadata -f '{"title":"{{title}}","author":"{{artist}}"}'`) 4 | (defvar pctl `{"title": "None", "author": "None"}`) 5 | 6 | (defwidget prog [?var ?class] 7 | (circular-progress 8 | :value var 9 | :thickness 3 10 | :start-at 35 11 | :clockwise false 12 | :class "prog ${class}" 13 | 14 | (children) 15 | ) 16 | ) 17 | 18 | (defwindow pannel 19 | :monitor 0 20 | :geometry (geometry 21 | :x -16 :y 16 22 | :width "250px" :height "990px" ; pannel-box size: 250px 23 | :anchor "top right" 24 | ) 25 | 26 | :stacking "fg" 27 | 28 | (box 29 | :halign "end" 30 | :valign "fill" 31 | :space-evenly false 32 | 33 | (revealer 34 | :reveal show-pannel 35 | :transition "slideleft" 36 | :duration "400ms" 37 | 38 | (box 39 | :orientation "vertical" 40 | :space-evenly false 41 | 42 | (centerbox 43 | :orientation "vertical" 44 | :halign "center" 45 | :class "pannel-box" 46 | ;:space-evenly false 47 | 48 | ; PP 49 | (image 50 | :path "./src/pp.png" 51 | :class "pp" 52 | :valign "start" 53 | :image-width 180 54 | :image-height 180 55 | ) 56 | 57 | ; Info 58 | (box 59 | :orientation "vertical" 60 | :space-evenly false 61 | 62 | ; System 63 | (box 64 | :halign "center" 65 | 66 | ; Cores 67 | (box 68 | (for core in "${EWW_CPU.cores}" 69 | (progress 70 | :value "${core.usage}" 71 | :orientation "vertical" 72 | :flipped true 73 | :halign "end" 74 | :class "core" 75 | ) 76 | ) 77 | ) 78 | 79 | ; Progs 80 | (box 81 | ;:halign "fill" 82 | :orientation "vertical" 83 | 84 | (prog 85 | :var "${EWW_RAM.used_mem_perc}" 86 | :class "ram" 87 | 88 | (prog 89 | ;:var "${(EWW_RAM.free_swap * 100) / EWW_RAM.total_swap}" 90 | :var 50 91 | :class "swap" 92 | 93 | "RAM" 94 | ) 95 | ) 96 | 97 | (prog 98 | :var "${EWW_NET['wlan0'].NET_DOWN > 99 ? 99 : EWW_NET['wlan0'].NET_DOWN}" 99 | :class "net-up" 100 | 101 | (prog 102 | :var "${EWW_NET['wlan0'].NET_UP > 99 ? 99 : EWW_NET['wlan0'].NET_UP}" 103 | :class "net-down" 104 | 105 | "NET" 106 | ) 107 | ) 108 | ) 109 | ) 110 | 111 | ; Music 112 | (box 113 | :orientation "vertical" 114 | :class "music-box" 115 | 116 | (box 117 | :orientation "vertical" 118 | :class "music-info" 119 | 120 | (label 121 | :text "${pctl.title}" 122 | :limit-width 15 123 | :show-truncated true 124 | ) 125 | 126 | (label 127 | :text "${pctl.author}" 128 | :limit-width 15 129 | :show-truncated true 130 | ) 131 | ) 132 | 133 | (box 134 | :class "music-ctrl" 135 | 136 | (button :onclick "playerctl previous" "玲") 137 | (button :onclick "playerctl play-pause" "") 138 | (button :onclick "playerctl next" "怜") 139 | ) 140 | ) 141 | ) 142 | 143 | ; Tray 144 | (box 145 | :class "tray" 146 | :orientation "vertical" 147 | :valign "end" 148 | 149 | (box 150 | (button 151 | :onclick "eww open conf-shut" 152 | :class "tray-btn shut" 153 | "" 154 | ) 155 | 156 | (button 157 | :onclick "eww open conf-rest" 158 | :class "tray-btn rest" 159 | "ﰇ" 160 | ) 161 | 162 | (button 163 | :onclick "/home/egsagon/.config/qtile/lock.sh" 164 | :class "tray-btn sleep" 165 | "" ;⏾ 166 | ) 167 | ) 168 | ) 169 | ) 170 | 171 | (image 172 | :path "./src/pannel-arrow.png" 173 | :class "pn-arrow" 174 | :valign "end" 175 | ) 176 | 177 | ) 178 | ) 179 | ) 180 | ) 181 | -------------------------------------------------------------------------------- /eww/desk.yuck: -------------------------------------------------------------------------------- 1 | (defvar dhv-br false) 2 | (defvar dhv-sd false) 3 | (defvar tcava false) 4 | 5 | (defpoll wifi-name :interval "2s" :initial "..." `nmcli -t c | grep "wlan0" | cut -d ":" -f 1`) 6 | (defpoll ping :interval "10s" :initial "..." ` ping 8.8.8.8 -c 1 | grep from | awk '{ print $7 }' | cut -d '=' -f 2`) 7 | (defpoll wttr :interval "10m" :initial "{}" `echo $(python3 wttr.py)`) 8 | 9 | (defwidget short [num ?cmd ?link] 10 | (button 11 | :class "sth sth${num}" 12 | :onclick "${cmd ?: 'xdg-open https://${link}&'}" 13 | 14 | (children) 15 | ) 16 | ) 17 | 18 | (defwidget checkbk [onchange var varname ?content] 19 | (eventbox 20 | :onclick "eww update ${varname}=${!var}" ; ${onchange.replace('{}', var)}" 21 | :onclick "eww update ${varname}=${!var}; ${onchange}" 22 | 23 | (label 24 | :halign "end" 25 | :valign "start" 26 | :text "${var ? '${content ?: `+`}' : ''}" 27 | :class "bk" 28 | ) 29 | ) 30 | ) 31 | 32 | (defwindow desk 33 | ;:monitor 0 34 | :geometry (geometry 35 | :x 70 :y 0 36 | :width "500px" :height "700px" 37 | :anchor "center left" 38 | ) 39 | 40 | :stacking "bg" 41 | :focusable false 42 | :screen 1 43 | :wm-ignore false 44 | 45 | (box 46 | ; Left 47 | (box 48 | :class "bx b1" 49 | :orientation "vertical" 50 | 51 | ; Weather 52 | (box 53 | :orientation "vertical" 54 | :valign "center" 55 | 56 | (box 57 | :halign "center" 58 | :space-evenly false 59 | 60 | ;(image 61 | ; :class "wth-img" 62 | ; :path "./src/pp.png" 63 | ; :image-width 80 64 | ;) 65 | 66 | (label 67 | :class "wth-img" 68 | :text "${wttr.glyph}" 69 | ) 70 | 71 | (label 72 | :class "wth-sep" 73 | :text "-" 74 | ) 75 | 76 | (label 77 | :class "wth-header" 78 | :text "${wttr.header}" 79 | :limit-width 16 80 | ) 81 | ) 82 | 83 | (label 84 | :class "wth-desc" 85 | :text "${wttr.temp}, ${wttr.wind}" 86 | ) 87 | ) 88 | 89 | ; Shortcuts 90 | (box 91 | :orientation "vertical" 92 | 93 | (box 94 | :halign "center" 95 | 96 | (short :num "1" :link "github.com" "") 97 | (short :num "2" :cmd "nautilus -w &" "") 98 | (short :num "3" :link "youtube.com" "") 99 | ) 100 | 101 | (box 102 | :halign "center" 103 | (short :num "4" :link "reddit.com" "") 104 | (short :num "5" :cmd "nautilus -w / &" "/") 105 | (short :num "6" :link "google.com" "") 106 | ) 107 | 108 | (box 109 | :halign "center" 110 | (short :num "7" :link "gmail.com" "") 111 | (short :num "8" :cmd "nautilus -w ~/docs/ &" "") 112 | (short :num "9" :cmd "alacritty -e nmtui &" "") 113 | ) 114 | ) 115 | 116 | ; System 117 | (circular-progress 118 | :value "${EWW_CPU['cores'][0].usage}" 119 | :thickness 8 120 | :start-at 25 121 | :class "sys-cpu" 122 | 123 | (circular-progress 124 | :value "${EWW_RAM.used_mem_perc}" 125 | :thickness 8 126 | :start-at 25 127 | :class "sys-ram" 128 | 129 | ;"SYS" 130 | (label 131 | :text "﬙" 132 | :class "sys-icon" 133 | ) 134 | ) 135 | ) 136 | ) 137 | 138 | ; Right 139 | (box 140 | :orientation "vertical" 141 | 142 | (box 143 | :class "bx b2" 144 | :space-evenly false 145 | 146 | (label 147 | :text "ﴽ" 148 | :class "wifi-logo" 149 | ) 150 | 151 | (label 152 | :text "|" 153 | :class "wifi-sep" 154 | ) 155 | 156 | (box 157 | :orientation "vertical" 158 | :valign "center" 159 | :class "wifi-content" 160 | 161 | (label 162 | :text "${wifi-name ?: 'Not connected'}" 163 | :halign "start" 164 | :limit-width 13 165 | ) 166 | 167 | (label 168 | :text "${ping} ms" 169 | :halign "start" 170 | ) 171 | ) 172 | ) 173 | 174 | (box 175 | :orientation "vertical" 176 | :class "bx b3" 177 | 178 | (box 179 | :halign "center" 180 | (eventbox 181 | :onhover "eww update dhv-br=true" 182 | :onhoverlost "eww update dhv-br=false" 183 | 184 | (label 185 | :text "" 186 | :class "desk-lb-sc" 187 | :style "color: ${dhv-br ? c-accent : c-com-fg}" 188 | ) 189 | ) 190 | 191 | (eventbox 192 | :onhover "eww update dhv-sd=true" 193 | :onhoverlost "eww update dhv-sd=false" 194 | 195 | (label 196 | :text "ﱘ" 197 | :class "desk-lb-sc" 198 | :style "color: ${dhv-sd ? c-accent : c-com-fg}" 199 | ) 200 | ) 201 | ) 202 | 203 | (scale 204 | :halign "center" 205 | :valign "center" 206 | :class "desk-scale ${dhv-br ? 'hv-scale' : ''}" 207 | :onchange "xrandr --output eDP-1 --brightness $(bc -l <<< 'scale=2; {}/100')" 208 | 209 | :value 70 210 | ) 211 | 212 | (scale 213 | :halign "center" 214 | :valign "center" 215 | :class "desk-scale ${dhv-sd ? 'hv-scale' : ''}" 216 | :onchange "amixer sset Master {}%" 217 | 218 | :value 35 219 | ) 220 | ) 221 | 222 | (box 223 | :class "bx b4" 224 | 225 | (checkbk 226 | :onchange "${!tcava ? 'glava -d &' : 'killall glava'}" 227 | :var tcava 228 | :varname "tcava" 229 | :content "" 230 | ) 231 | ) 232 | ) 233 | ) 234 | ) 235 | -------------------------------------------------------------------------------- /eww/eww.scss: -------------------------------------------------------------------------------- 1 | @import './colors.scss'; 2 | 3 | * { 4 | all: unset; 5 | color: $c-com-fg; 6 | } 7 | 8 | .bar { 9 | border: 3px solid $c-accent; 10 | border-radius: 10px; 11 | background-color: transparent; 12 | } 13 | 14 | .rev-widget { 15 | font-size: 30px; 16 | margin: 4px; 17 | margin-left: 10px; 18 | margin-right: 10px; 19 | } 20 | 21 | .arrow { 22 | min-width: 100px; 23 | margin: 3px; 24 | margin-bottom: 2px; 25 | background-color: $c-accent; 26 | font-size: 30px; 27 | border-left: 3px solid $c-accent; 28 | border-bottom-right-radius: 6px; 29 | border-top-right-radius: 6px; 30 | margin-left: 20px; 31 | 32 | transition: all ease-in-out 0.3s; 33 | } 34 | 35 | .br-scale *:nth-child(2) { 36 | all: unset; 37 | border: none; 38 | background-color: $c-accent; 39 | border-radius: 10px; 40 | } 41 | 42 | .br-scale trough { 43 | all: unset; 44 | border: 1px solid $c-accent; 45 | min-height: 10px; 46 | min-width: 100px; 47 | margin: 0 20px 0 20px; 48 | border-radius: 10px; 49 | } 50 | 51 | .br-scale trough highlight { 52 | all: unset; 53 | background-color: $c-accent; 54 | border-radius: 10px; 55 | } 56 | 57 | .core-graph:nth-child(1) {color: green;} 58 | .core-graph:nth-child(2) {color: blue;} 59 | .core-graph:nth-child(3) {color: yellow;} 60 | .core-graph:nth-child(4) {color: $c-accent;} 61 | 62 | .tab-switch { 63 | min-width: 40px; 64 | font-size: 30px; 65 | border: none; 66 | border-radius: 0px; 67 | box-shadow: none; 68 | background: none; 69 | } 70 | 71 | .tab-switch:hover { 72 | background-color: $c-accent; 73 | } 74 | 75 | .tab-switch * { 76 | padding: 0; 77 | margin: 0; 78 | } 79 | 80 | .tab-1, .tab-2 { 81 | min-width: 360px; 82 | } 83 | 84 | .tab-1 *, .tab-2 * { 85 | min-height: 100px; 86 | } 87 | 88 | .expander { 89 | all: unset; 90 | border: 1px solid $c-accent; 91 | } 92 | 93 | .clock { 94 | font-size: 20px; 95 | } 96 | 97 | .expander arrow { 98 | all: unset; 99 | } 100 | 101 | .wk, .wk-help { 102 | margin-left: 14px; 103 | margin-right: 14px; 104 | font-size: 20px; 105 | } 106 | 107 | .wk:nth-child(1) { 108 | margin-left: 30px; 109 | } 110 | 111 | .wk-help { 112 | padding-top: 7px; 113 | padding-bottom: 7px; 114 | } 115 | 116 | .wk-helper { 117 | /*background-color: transparentize($color: $c-bg, $amount: 0.1);*/ 118 | background-color: $c-bg; 119 | } 120 | 121 | .wk-help:nth-last-child(1) { 122 | margin-right: 0; 123 | padding-right: 14px; 124 | border-right: 3px solid $c-accent; 125 | } 126 | 127 | .wk-help:only-child { 128 | padding-right: 15px; 129 | } 130 | 131 | .sys-btn { 132 | border: 1.2px solid $c-accent; 133 | padding: 1px 16px; 134 | font-size: 28px; 135 | } 136 | 137 | .pannel { 138 | background-color: transparent; 139 | } 140 | 141 | .pannel-box { 142 | border: 3px solid $c-accent; 143 | border-radius: 10px; 144 | background-color: $c-bg; 145 | min-width: 250px; 146 | 147 | min-height: 956px; 148 | border-bottom: None; 149 | border-bottom-left-radius: 0px; 150 | border-bottom-right-radius: 0px; 151 | } 152 | 153 | .pp { 154 | /*border: 1px solid $c-com-fg;*/ 155 | margin: 10px; 156 | /*border-radius: 50%;*/ 157 | padding-top: 24px; 158 | padding-bottom: 24px; 159 | } 160 | 161 | .tray { 162 | margin-bottom: 10px; 163 | } 164 | 165 | .tray-btn { 166 | font-size: 45px; 167 | margin: 10px; 168 | border: 1px dotted $c-fg; 169 | border-radius: 36%; 170 | transition: all ease-in-out 0.3s; 171 | 172 | margin-bottom: 0px; 173 | margin-top: 8px; 174 | } 175 | 176 | $c-shut: $c-accent; 177 | $c-rest: #B9314F; 178 | $c-sleep: #5FAD41; 179 | 180 | 181 | .shut:hover { 182 | transition: all ease-in-out 0.3s; 183 | background-color: $c-shut; 184 | border-color: $c-shut; 185 | } 186 | 187 | .rest:hover { 188 | transition: all ease-in-out 0.3s; 189 | background-color: $c-rest; 190 | border-color: $c-rest; 191 | } 192 | 193 | .sleep:hover { 194 | transition: all ease-in-out 0.3s; 195 | background-color: $c-sleep; 196 | border-color: $c-sleep; 197 | } 198 | 199 | .tray-btn:hover { 200 | margin-bottom: 8px; 201 | margin-top: 0px; 202 | } 203 | 204 | .tray-btn:hover * { 205 | transition: all ease-in-out 0.3s; 206 | color: $c-bg; 207 | } 208 | 209 | .core { 210 | min-height: 260px; 211 | margin: 8px; 212 | border: 1px solid $c-com-fg; 213 | border-radius: 10px; 214 | padding: 2px; 215 | } 216 | 217 | .core trough * { 218 | background-color: $c-accent; 219 | border-radius: 10px; 220 | } 221 | 222 | .gif-box { 223 | min-height: 350px; 224 | } 225 | 226 | .gif-btn, .gif-btn * { 227 | all: unset; 228 | margin: 0 15px 0 0; 229 | font-size: 30px; 230 | } 231 | 232 | .confirm { 233 | border: 3px solid $c-accent; 234 | border-radius: 10px; 235 | background-color: $c-bg; 236 | } 237 | 238 | .conf-btn { 239 | border: 2px solid $c-fg; 240 | border-radius: 10px; 241 | margin: 4px 10px; 242 | padding: 0 20px; 243 | transition: all ease-in-out .2s; 244 | } 245 | 246 | .conf-btn:hover { 247 | background-color: $c-accent; 248 | } 249 | 250 | .prog, .prog label {color: $c-com-fg;} 251 | 252 | .ram, .net-up { 253 | margin: 8px; 254 | color: $c-accent; 255 | } 256 | 257 | .swap, .net-down {margin: 15px;} 258 | 259 | .pn-arrow { 260 | padding: 0; 261 | margin: -6px; 262 | } 263 | 264 | .music-box { 265 | margin: 10px; 266 | margin-top: 50px; 267 | border-radius: 10px; 268 | background-color: transparentize($color: $c-com-bg, $amount: 0.8); 269 | 270 | /* 271 | background-image: radial-gradient( 272 | farthest-corner at 20px 20px, 273 | $c-accent 0%, 274 | $c-bg 100% 275 | ); 276 | */ 277 | } 278 | 279 | .music-ctrl button { 280 | font-size: 30px; 281 | background-color: transparent; 282 | margin: 8px; 283 | border-radius: 10px; 284 | padding: 10px 0; 285 | transition: all ease-in-out 0.3s; 286 | } 287 | 288 | .music-ctrl button:hover { 289 | background-color: $c-bg; 290 | } 291 | 292 | .music-info *:nth-child(1) { 293 | margin-top: 10px; 294 | font-size: 20px; 295 | } 296 | 297 | .music-info *:nth-child(2) { 298 | font-size: 15px; 299 | } 300 | 301 | .bx { 302 | margin: calc(16px / 2); 303 | border: 3px solid $c-com-bg; 304 | border-radius: 10px; 305 | background-color: transparentize($color: $c-com-bg, $amount: 0.8); 306 | } 307 | 308 | .b4 { 309 | background-color: transparent; 310 | } 311 | 312 | .desk-scale { 313 | min-width: 180px; 314 | background-color: $c-com-bg; 315 | border-radius: 50px; 316 | 317 | transition: all ease-in-out .1s; 318 | } 319 | 320 | .desk-scale slider { 321 | min-width: 20px; 322 | min-height: 20px; 323 | border-radius: 50%; 324 | } 325 | 326 | .desk-scale highlight { 327 | background-color: $c-accent; 328 | border-radius: 50px; 329 | } 330 | 331 | .desk-lb-sc { 332 | font-size: 50px; 333 | color: $c-com-fg; 334 | margin: 0px 25px; 335 | transition: all ease-in-out .1s; 336 | } 337 | 338 | .hv-scale, .desk-scale:hover {border: 3px solid $c-com-fg;} 339 | 340 | .wifi-logo { 341 | margin: 20px; 342 | font-size: 50px; 343 | } 344 | 345 | .wifi-sep { 346 | font-size: 30px; 347 | margin-right: 20px; 348 | } 349 | 350 | .wifi-content *:nth-child(1) { 351 | font-size: 14px; 352 | } 353 | 354 | .sth { 355 | margin: 2px; 356 | padding: 0 20px; 357 | font-size: 50px; 358 | border: 2px solid $c-com-bg; 359 | transition: all ease-in-out .4s; 360 | } 361 | 362 | .sth5 { 363 | font-size: 40px; 364 | // border-color: $c-accent; 365 | } 366 | 367 | .sth1 {border-top-left-radius: 10px;} 368 | .sth3 {border-top-right-radius: 10px;} 369 | .sth7 {border-bottom-left-radius: 10px;} 370 | .sth9 {border-bottom-right-radius: 10px;} 371 | 372 | .sth:hover {background-color: $c-com-acc;} 373 | 374 | .wth-sep { 375 | margin: 10px; 376 | font-size: 25px; 377 | padding-bottom: 3px; 378 | } 379 | 380 | .wth-header { 381 | font-size: 18px; 382 | } 383 | 384 | .wth-desc { 385 | margin-top: -50px; 386 | } 387 | 388 | 389 | .wth-img { 390 | font-size: 80px; 391 | color: $c-accent; 392 | } 393 | 394 | .sys-cpu { 395 | margin: 26px; 396 | color: $c-com-fg; 397 | } 398 | 399 | .sys-ram { 400 | margin: 40px; 401 | color: $c-accent; 402 | } 403 | 404 | .sys-ram, .sys-cpu { 405 | background-color: $c-com-bg; 406 | } 407 | 408 | .bk { 409 | margin: 8px; 410 | min-width: 22px; 411 | min-height: 22px; 412 | color: $c-com-bg; 413 | border-radius: 10px; 414 | border: 1px solid $c-com-bg; 415 | } 416 | 417 | .sys-icon { 418 | font-size: 80px; 419 | color: $c-com-bg; 420 | } 421 | 422 | -------------------------------------------------------------------------------- /glava/rc.glsl: -------------------------------------------------------------------------------- 1 | 2 | /* The module to use. A module is a set of shaders used to produce 3 | the visualizer. The structure for a module is the following: 4 | 5 | module_name [directory] 6 | 1.frag [file: fragment shader], 7 | 2.frag [file: fragment shader], 8 | ... 9 | 10 | Shaders are loaded in numerical order, starting at '1.frag', 11 | continuing indefinitely. The results of each shader (except 12 | for the final pass) is given to the next shader in the list 13 | as a 2D sampler. 14 | 15 | See documentation for more details. */ 16 | #request mod bars 17 | 18 | /* Window hints */ 19 | #request setfloating false 20 | #request setdecorated true 21 | #request setfocused false 22 | #request setmaximized false 23 | 24 | /* Set window background opacity mode. Possible values are: 25 | 26 | "native" - True transparency provided by the compositor. Can 27 | reduce performance on some systems, depending on 28 | the compositor used. 29 | 30 | "xroot" - Maintain a copy of the root window's pixmap 31 | (usually the desktop background) to provide a 32 | pseudo-transparent effect. Useful when no compositor 33 | is available or native transparency isn't nessecary. 34 | Has very little performance impact. 35 | 36 | "none" - Disable window opacity completely. */ 37 | #request setopacity "none" 38 | 39 | /* Whether to mirror left and right audio input channels from PulseAudio.*/ 40 | #request setmirror false 41 | 42 | /* OpenGL context and GLSL shader versions, do not change unless 43 | you *absolutely* know what you are doing. */ 44 | #request setversion 3 3 45 | #request setshaderversion 330 46 | 47 | /* Window title */ 48 | #request settitle "glava" 49 | 50 | /* Window geometry (x, y, width, height) */ 51 | #request setgeometry 330 665 230 215 52 | 53 | /* Window background color (RGB format). 54 | Does not work with `setopacity "xroot"` */ 55 | #request setbg EEEEEE 56 | 57 | /* (X11 only) EWMH Window type. Possible values are: 58 | 59 | "desktop", "dock", "toolbar", "menu", 60 | "utility", "splash", "dialog", "normal" 61 | 62 | This will set _NET_WM_WINDOW_TYPE to _NET_WM_WINDOW_TYPE_(TYPE), 63 | where (TYPE) is the one of the window types listed (after being 64 | converted to uppercase). 65 | 66 | Alternatively, you can set this value to "!", which will cause 67 | the window to be unmanaged. If this is set, then `addxwinstate` 68 | will do nothing, but you can use "!+" and "!-" to stack on top 69 | or below other windows. 70 | */ 71 | #request setxwintype "normal" 72 | 73 | /* (X11 only) EWMH Window state atoms (multiple can be specified). 74 | Possible values are: 75 | 76 | "modal", "sticky", "maximized_vert", "maximized_horz", 77 | "shaded", "skip_taskbar", "skip_pager", "hidden", "fullscreen", 78 | "above", "below", "demands_attention", "focused", "pinned" 79 | 80 | This will add _NET_WM_STATE_(TYPE) atoms to _NET_WM_STATE, 81 | where (TYPE) is one of the window states listed (after being 82 | converted to uppercase). 83 | 84 | The lines below (commented out by default) are of relevance 85 | if you are trying to get GLava to behave as a desktop widget 86 | and your WM is not correctly responding to the "desktop" value 87 | for `setxwintype`. 88 | */ 89 | // #request addxwinstate "sticky" 90 | // #request addxwinstate "skip_taskbar" 91 | // #request addxwinstate "skip_pager" 92 | // #request addxwinstate "above" 93 | // #request addxwinstate "pinned" 94 | 95 | /* (X11 only) Use the XShape extension to support clicking through 96 | the GLava window. Useful when you want to interact with other 97 | desktop windows (icons, menus, desktop shells). Enabled by 98 | default when GLava itself is a desktop window. */ 99 | #request setclickthrough true 100 | 101 | /* Audio source 102 | 103 | When the "pulseaudio" backend is set, this can be a number or 104 | a name of an audio sink or device to record from. Set to "auto" 105 | to use the default output device. 106 | 107 | When the "fifo" backend is set, "auto" is interpreted as 108 | "/tmp/mpd.fifo". Otherwise, a valid path should be provided. */ 109 | #request setsource "auto" 110 | 111 | /* Buffer swap interval (vsync), set to '0' to prevent 112 | waiting for refresh, '1' (or more) to wait for the specified 113 | amount of frames. */ 114 | #request setswap 1 115 | 116 | /* Linear interpolation for audio data frames. Drastically 117 | improves smoothness with configurations that yield low UPS 118 | (`setsamplerate` and `setsamplesize`), or monitors that have 119 | high refresh rates. 120 | 121 | This feature itself, however, will effect performance as it 122 | will have to interpolate data every frame on the CPU. It will 123 | automatically (and temporarily) disable itself if the update 124 | rate is close to, or higher than the framerate: 125 | 126 | if (update_rate / frame_rate > 0.9) disable_interpolation; 127 | 128 | This will delay data output by one update frame, so it can 129 | desync audio with visual effects on low UPS configs. */ 130 | #request setinterpolate true 131 | 132 | /* Frame limiter, set to the frames per second (FPS) desired or 133 | simply set to zero (or lower) to disable the frame limiter. */ 134 | #request setframerate 0 135 | 136 | /* Suspends rendering if a fullscreen window is focused while 137 | GLava is still visible (ie. on another monitor). This prevents 138 | rendering from interfering with other graphically intensive 139 | tasks. 140 | 141 | If GLava is minimized or completely obscured, it will not 142 | render regardless of this option. */ 143 | #request setfullscreencheck false 144 | 145 | /* Enable/disable printing framerate every second. 'FPS' stands 146 | for 'Frames Per Second', and 'UPS' stands for 'Updates Per 147 | Second'. Updates are performed when new data is submitted 148 | by pulseaudio, and require transformations to be re-applied 149 | (thus being a good measure of how much work your CPU has to 150 | perform over time) */ 151 | #request setprintframes true 152 | 153 | /* PulseAudio sample buffer size. Lower values result in more 154 | frequent audio updates (also depends on sampling rate), but 155 | will also require all transformations to be applied much 156 | more frequently (CPU intensive). 157 | 158 | High (>2048, with 22050 Hz) values will decrease accuracy 159 | (as some signals can be missed by transformations like FFT) 160 | 161 | The following settings (@22050 Hz) produce the listed rates: 162 | 163 | Sample UPS Description 164 | - 2048 -> 43.0 (low accuracy, cheap), use with < 60 FPS 165 | - 1024 -> 86.1 (high accuracy, expensive), use with >= 60 FPS 166 | - 512 -> 172.3 (extreme accuracy, very expensive), use only 167 | for graphing accurate spectrum data with 168 | custom modules. 169 | 170 | If the framerate drops below the update rate, the update rate 171 | will be locked to the framerate (to prevent wasting CPU time). 172 | This behaviour means you can use a 1024 sample size on a 60Hz 173 | monitor with vsync enabled to get 60FPS and 60UPS. 174 | 175 | For high refresh rate monitors (120+ Hz), it's recommended to 176 | also stick with the 1024 sample size and use interpolation to 177 | smooth the data, as accuracy beyond this setting is mostly 178 | meaningless for visual purposes. 179 | */ 180 | #request setsamplesize 1024 181 | 182 | /* Audio buffer size to be used for processing and shaders. 183 | Increasing this value can have the effect of adding 'gravity' 184 | to FFT output, as the audio signal will remain in the buffer 185 | longer. 186 | 187 | This value has a _massive_ effect on FFT performance and 188 | quality for some modules. */ 189 | #request setbufsize 4096 190 | 191 | /* PulseAudio sample rate. Lower values can add 'gravity' to 192 | FFT output, but can also reduce accuracy. Most hardware 193 | samples at 44100Hz. 194 | 195 | Lower sample rates also can make output more choppy, when 196 | not using interpolation. It's generally OK to leave this 197 | value unless you have a strange PulseAudio configuration. 198 | 199 | This option does nothing when using the "fifo" audio 200 | backend. Instead, an ideal rate should be be configured 201 | in the application generating the output. */ 202 | #request setsamplerate 22050 203 | 204 | /* ** DEPRECATED ** 205 | Force window geometry (locking the window in place), useful 206 | for some pesky WMs that try to reposition the window when 207 | embedding in the desktop. 208 | 209 | This routinely sends X11 events and should be avoided. */ 210 | #request setforcegeometry false 211 | 212 | /* ** DEPRECATED ** 213 | Force window to be raised (focused in some WMs), useful for 214 | WMs that have their own stacking order for desktop windows. 215 | 216 | This routinely sends X11 events and should be avoided. */ 217 | #request setforceraised false 218 | 219 | /* ** DEPRECATED ** 220 | Scale down the audio buffer before any operations are 221 | performed on the data. Higher values are faster. 222 | 223 | This value can affect the output of various transformations, 224 | since it applies (crude) averaging to the data when shrinking 225 | the buffer. It is reccommended to use `setsamplerate` and 226 | `setsamplesize` to improve performance or accuracy instead. */ 227 | #request setbufscale 1 228 | -------------------------------------------------------------------------------- /alacritty/alacritty.yml: -------------------------------------------------------------------------------- 1 | # Configuration for Alacritty, the GPU enhanced terminal emulator. 2 | 3 | # Any items in the `env` entry below will be added as 4 | # environment variables. Some entries may override variables 5 | # set by alacritty itself. 6 | env: 7 | # TERM variable 8 | # 9 | # This value is used to set the `$TERM` environment variable for 10 | # each instance of Alacritty. If it is not present, alacritty will 11 | # check the local terminfo database and use `alacritty` if it is 12 | # available, otherwise `xterm-256color` is used. 13 | TERM: xterm-256color 14 | 15 | window: 16 | # Window dimensions (changes require restart) 17 | # 18 | # Specified in number of columns/lines, not pixels. 19 | # If both are `0`, this setting is ignored. 20 | #dimensions: 21 | # columns: 0 22 | # lines: 0 23 | 24 | # Window position (changes require restart) 25 | # 26 | # Specified in number of pixels. 27 | # If the position is not set, the window manager will handle the placement. 28 | #position: 29 | # x: 0 30 | # y: 0 31 | 32 | # Window padding (changes require restart) 33 | # 34 | # Blank space added around the window in pixels. This padding is scaled 35 | # by DPI and the specified value is always added at both opposing sides. 36 | padding: 37 | x: 6 38 | y: 6 39 | 40 | # Spread additional padding evenly around the terminal content. 41 | dynamic_padding: false 42 | 43 | # Background opacity 44 | # 45 | # Window opacity as a floating point number from `0.0` to `1.0`. 46 | # The value `0.0` is completely transparent and `1.0` is opaque. 47 | opacity: 1.0 48 | opacity: 0.5 49 | 50 | # Window decorations 51 | # 52 | # Values for `decorations`: 53 | # - full: Borders and title bar 54 | # - none: Neither borders nor title bar 55 | # 56 | # Values for `decorations` (macOS only): 57 | # - transparent: Title bar, transparent background and title bar buttons 58 | # - buttonless: Title bar, transparent background, but no title bar buttons 59 | #decorations: full 60 | 61 | # Startup Mode (changes require restart) 62 | # 63 | # Values for `startup_mode`: 64 | # - Windowed 65 | # - Maximized 66 | # - Fullscreen 67 | # 68 | # Values for `startup_mode` (macOS only): 69 | # - SimpleFullscreen 70 | #startup_mode: Windowed 71 | 72 | # Window title 73 | title: Alacritty 74 | 75 | # Window class (Linux/BSD only): 76 | class: 77 | # Application instance name 78 | instance: Alacritty 79 | # General application class 80 | general: Alacritty 81 | 82 | # GTK theme variant (Linux/BSD only) 83 | # 84 | # Override the variant of the GTK theme. Commonly supported values are `dark` and `light`. 85 | # Set this to `None` to use the default theme variant. 86 | #gtk_theme_variant: None 87 | 88 | scrolling: 89 | # Maximum number of lines in the scrollback buffer. 90 | # Specifying '0' will disable scrolling. 91 | history: 5000 92 | 93 | # Number of lines the viewport will move for every line scrolled when 94 | # scrollback is enabled (history > 0). 95 | #multiplier: 3 96 | 97 | # Scroll to the bottom when new text is written to the terminal. 98 | #auto_scroll: false 99 | 100 | # Spaces per Tab (changes require restart) 101 | # 102 | # This setting defines the width of a tab in cells. 103 | # 104 | # Some applications, like Emacs, rely on knowing about the width of a tab. 105 | # To prevent unexpected behavior in these applications, it's also required to 106 | # change the `it` value in terminfo when altering this setting. 107 | #tabspaces: 8 108 | 109 | # Font configuration 110 | font: 111 | # Normal (roman) font face 112 | normal: 113 | # Font family 114 | # 115 | # Default: 116 | # - (macOS) Menlo 117 | # - (Linux/BSD) monospace 118 | # - (Windows) Consolas 119 | family: Source Code Pro 120 | # family: CodeNewRoman Nerd Font 121 | # family: RobotoMono Nerd Font 122 | # family: Hack 123 | # family: JetBrains Mono 124 | # family: UbuntuMono Nerd Font 125 | # family: Monofur Nerd Font 126 | # family: TerminessTTF Nerd Font 127 | # family: Mononoki Nerd Font 128 | 129 | # The `style` can be specified to pick a specific face. 130 | style: Regular 131 | 132 | # Bold font face 133 | bold: 134 | # Font family 135 | # 136 | # If the bold family is not specified, it will fall back to the 137 | # value specified for the normal font. 138 | family: Source Code Pro 139 | # family: CodeNewRoman Nerd Font 140 | # family: RobotoMono Nerd Font 141 | # family: Hack 142 | # family: JetBrains Mono 143 | # family: UbuntuMono Nerd Font 144 | # family: Monofur Nerd Font 145 | # family: TerminessTTF Nerd Font 146 | # family: Mononoki Nerd Font 147 | 148 | # The `style` can be specified to pick a specific face. 149 | style: Bold 150 | 151 | # Italic font face 152 | italic: 153 | # Font family 154 | # 155 | # If the italic family is not specified, it will fall back to the 156 | # value specified for the normal font. 157 | family: Source Code Pro 158 | # family: CodeNewRoman Nerd Font 159 | # family: RobotoMono Nerd Font 160 | # family: Hack 161 | # family: JetBrains Mono 162 | # family: UbuntuMono Nerd Font 163 | # family: Monofuritalic Nerd Font Mono 164 | # family: TerminessTTF Nerd Font 165 | # family: Mononoki Nerd Font 166 | 167 | # The `style` can be specified to pick a specific face. 168 | style: Italic 169 | 170 | # Bold italic font face 171 | bold_italic: 172 | # Font family 173 | # 174 | # If the bold italic family is not specified, it will fall back to the 175 | # value specified for the normal font. 176 | family: Source Code Pro 177 | # family: CodeNewRoman Nerd Font 178 | # family: RobotoMono Nerd Font 179 | # family: Hack 180 | # family: JetBrains Mono 181 | # family: UbuntuMono Nerd Font 182 | # family: Monofuritalic Nerd Font Mono 183 | # family: TerminessTTF Nerd Font 184 | # family: Mononoki Nerd Font 185 | 186 | # The `style` can be specified to pick a specific face. 187 | style: Bold Italic 188 | 189 | # Point size 190 | size: 8.5 191 | 192 | # Offset is the extra space around each character. `offset.y` can be thought of 193 | # as modifying the line spacing, and `offset.x` as modifying the letter spacing. 194 | offset: 195 | x: 0 196 | y: 1 197 | 198 | # Glyph offset determines the locations of the glyphs within their cells with 199 | # the default being at the bottom. Increasing `x` moves the glyph to the right, 200 | # increasing `y` moves the glyph upwards. 201 | #glyph_offset: 202 | # x: 0 203 | # y: 0 204 | 205 | # Thin stroke font rendering (macOS only) 206 | # 207 | # Thin strokes are suitable for retina displays, but for non-retina screens 208 | # it is recommended to set `use_thin_strokes` to `false` 209 | # 210 | # macOS >= 10.14.x: 211 | # 212 | # If the font quality on non-retina display looks bad then set 213 | # `use_thin_strokes` to `true` and enable font smoothing by running the 214 | # following command: 215 | # `defaults write -g CGFontRenderingFontSmoothingDisabled -bool NO` 216 | # 217 | # This is a global setting and will require a log out or restart to take 218 | # effect. 219 | #use_thin_strokes: true 220 | 221 | # If `true`, bold text is drawn using the bright color variants. 222 | draw_bold_text_with_bright_colors: true 223 | 224 | ####################################### 225 | ## START OF COLOR SCHEMES ## 226 | ####################################### 227 | schemes: 228 | ### Doom One ### 229 | DoomOne: &DoomOne 230 | primary: 231 | background: '#EEEEEE' 232 | foreground: '#19323C' 233 | cursor: 234 | text: CellBackground 235 | cursor: '#FF632F' 236 | selection: 237 | text: CellForeground 238 | background: '#3e4451' 239 | normal: 240 | black: '#19323C' 241 | red: '#FF7E47' 242 | green: '#FF632F' 243 | yellow: '#FF7E47' 244 | blue: '#FF632F' 245 | magenta: '#FF7E47' 246 | cyan: '#FF632F' 247 | white: '#EEEEEE' 248 | bright: 249 | black: '#5b6268' 250 | red: '#da8548' 251 | green: '#4db5bd' 252 | yellow: '#ecbe7b' 253 | blue: '#3071db' # This is 2257a0 in Doom Emacs but I lightened it. 254 | magenta: '#a9a1e1' 255 | cyan: '#46d9ff' 256 | white: '#dfdfdf' 257 | 258 | ### Dracula ### 259 | Dracula: &Dracula 260 | primary: 261 | background: '#282a36' 262 | foreground: '#f8f8f2' 263 | cursor: 264 | text: CellBackground 265 | cursor: CellForeground 266 | vi_mode_cursor: 267 | text: CellBackground 268 | cursor: CellForeground 269 | search: 270 | matches: 271 | foreground: '#44475a' 272 | background: '#50fa7b' 273 | focused_match: 274 | foreground: '#44475a' 275 | background: '#ffb86c' 276 | bar: 277 | background: '#282a36' 278 | foreground: '#f8f8f2' 279 | line_indicator: 280 | foreground: None 281 | background: None 282 | selection: 283 | text: CellForeground 284 | background: '#44475a' 285 | normal: 286 | black: '#000000' 287 | red: '#ff5555' 288 | green: '#50fa7b' 289 | yellow: '#f1fa8c' 290 | blue: '#bd93f9' 291 | magenta: '#ff79c6' 292 | cyan: '#8be9fd' 293 | white: '#bfbfbf' 294 | bright: 295 | black: '#4d4d4d' 296 | red: '#ff6e67' 297 | green: '#5af78e' 298 | yellow: '#f4f99d' 299 | blue: '#caa9fa' 300 | magenta: '#ff92d0' 301 | cyan: '#9aedfe' 302 | white: '#e6e6e6' 303 | dim: 304 | black: '#14151b' 305 | red: '#ff2222' 306 | green: '#1ef956' 307 | yellow: '#ebf85b' 308 | blue: '#4d5b86' 309 | magenta: '#ff46b0' 310 | cyan: '#59dffc' 311 | white: '#e6e6d1' 312 | 313 | ### Gruvbox dark ### 314 | GruvboxDark: &GruvboxDark 315 | # Default colors 316 | primary: 317 | # hard contrast: background = '0x1d2021' 318 | background: '#282828' 319 | # soft contrast: background = '0x32302f' 320 | foreground: '#ebdbb2' 321 | 322 | # Normal colors 323 | normal: 324 | black: '#282828' 325 | red: '#cc241d' 326 | green: '#98971a' 327 | yellow: '#d79921' 328 | blue: '#458588' 329 | magenta: '#b16286' 330 | cyan: '#689d6a' 331 | white: '#a89984' 332 | 333 | # Bright colors 334 | bright: 335 | black: '#928374' 336 | red: '#fb4934' 337 | green: '#b8bb26' 338 | yellow: '#fabd2f' 339 | blue: '#83a598' 340 | magenta: '#d3869b' 341 | cyan: '#8ec07c' 342 | white: '#ebdbb2' 343 | 344 | ### Monokai ### 345 | MonokaiPro: &MonokaiPro 346 | # Default colors 347 | primary: 348 | background: '#2D2A2E' 349 | foreground: '#FCFCFA' 350 | 351 | # Normal colors 352 | normal: 353 | black: '#403E41' 354 | red: '#FF6188' 355 | green: '#A9DC76' 356 | yellow: '#FFD866' 357 | blue: '#FC9867' 358 | magenta: '#AB9DF2' 359 | cyan: '#78DCE8' 360 | white: '#FCFCFA' 361 | 362 | # Bright colors 363 | bright: 364 | black: '#727072' 365 | red: '#FF6188' 366 | green: '#A9DC76' 367 | yellow: '#FFD866' 368 | blue: '#FC9867' 369 | magenta: '#AB9DF2' 370 | cyan: '#78DCE8' 371 | white: '#FCFCFA' 372 | 373 | ### Nord ### 374 | Nord: &Nord 375 | # Default colors 376 | primary: 377 | background: '#2E3440' 378 | foreground: '#D8DEE9' 379 | 380 | # Normal colors 381 | normal: 382 | black: '#3B4252' 383 | red: '#BF616A' 384 | green: '#A3BE8C' 385 | yellow: '#EBCB8B' 386 | blue: '#81A1C1' 387 | magenta: '#B48EAD' 388 | cyan: '#88C0D0' 389 | white: '#E5E9F0' 390 | 391 | # Bright colors 392 | bright: 393 | black: '#4C566A' 394 | red: '#BF616A' 395 | green: '#A3BE8C' 396 | yellow: '#EBCB8B' 397 | blue: '#81A1C1' 398 | magenta: '#B48EAD' 399 | cyan: '#8FBCBB' 400 | white: '#ECEFF4' 401 | 402 | ### Oceanic Next ### 403 | OceanicNext: &OceanicNext 404 | # Default colors 405 | primary: 406 | background: '#1b2b34' 407 | foreground: '#d8dee9' 408 | 409 | # Colors the cursor will use if `custom_cursor_colors` is true 410 | cursor: 411 | text: '#1b2b34' 412 | cursor: '#ffffff' 413 | 414 | # Normal colors 415 | normal: 416 | black: '#343d46' 417 | red: '#EC5f67' 418 | green: '#99C794' 419 | yellow: '#FAC863' 420 | blue: '#6699cc' 421 | magenta: '#c594c5' 422 | cyan: '#5fb3b3' 423 | white: '#d8dee9' 424 | 425 | # Bright colors 426 | bright: 427 | black: '#343d46' 428 | red: '#EC5f67' 429 | green: '#99C794' 430 | yellow: '#FAC863' 431 | blue: '#6699cc' 432 | magenta: '#c594c5' 433 | cyan: '#5fb3b3' 434 | white: '#d8dee9' 435 | 436 | ### Palenight ### 437 | Palenight: &Palenight 438 | # Default colors 439 | primary: 440 | background: '#292d3e' 441 | foreground: '#d0d0d0' 442 | 443 | # Normal colors 444 | normal: 445 | black: '#292d3e' 446 | red: '#f07178' 447 | green: '#c3e88d' 448 | yellow: '#ffcb6b' 449 | blue: '#82aaff' 450 | magenta: '#c792ea' 451 | cyan: '#89ddff' 452 | white: '#d0d0d0' 453 | 454 | # Bright colors 455 | bright: 456 | black: '#434758' 457 | red: '#ff8b92' 458 | green: '#ddffa7' 459 | yellow: '#ffe585' 460 | blue: '#9cc4ff' 461 | magenta: '#e1acff' 462 | cyan: '#a3f7ff' 463 | white: '#ffffff' 464 | 465 | ### Solarized Dark ### 466 | SolarizedDark: &SolarizedDark 467 | # Default colors 468 | primary: 469 | background: '#002b36' # base03 470 | foreground: '#839496' # base0 471 | 472 | # Cursor colors 473 | cursor: 474 | text: '#002b36' # base03 475 | cursor: '#839496' # base0 476 | 477 | # Normal colors 478 | normal: 479 | black: '#073642' # base02 480 | red: '#dc322f' # red 481 | green: '#859900' # green 482 | yellow: '#b58900' # yellow 483 | blue: '#268bd2' # blue 484 | magenta: '#d33682' # magenta 485 | cyan: '#2aa198' # cyan 486 | white: '#eee8d5' # base2 487 | 488 | # Bright colors 489 | bright: 490 | black: '#002b36' # base03 491 | red: '#cb4b16' # orange 492 | green: '#586e75' # base01 493 | yellow: '#657b83' # base00 494 | blue: '#839496' # base0 495 | magenta: '#6c71c4' # violet 496 | cyan: '#93a1a1' # base1 497 | white: '#fdf6e3' # base3 498 | 499 | ### Solarized Light ### 500 | SolarizedLight: &SolarizedLight 501 | # Default colors 502 | primary: 503 | background: '#fdf6e3' # base3 504 | foreground: '#657b83' # base00 505 | 506 | # Cursor colors 507 | cursor: 508 | text: '#fdf6e3' # base3 509 | cursor: '#657b83' # base00 510 | 511 | # Normal colors 512 | normal: 513 | black: '#073642' # base02 514 | red: '#dc322f' # red 515 | green: '#859900' # green 516 | yellow: '#b58900' # yellow 517 | blue: '#268bd2' # blue 518 | magenta: '#d33682' # magenta 519 | cyan: '#2aa198' # cyan 520 | white: '#eee8d5' # base2 521 | 522 | # Bright colors 523 | bright: 524 | black: '#002b36' # base03 525 | red: '#cb4b16' # orange 526 | green: '#586e75' # base01 527 | yellow: '#657b83' # base00 528 | blue: '#839496' # base0 529 | magenta: '#6c71c4' # violet 530 | cyan: '#93a1a1' # base1 531 | white: '#fdf6e3' # base3 532 | 533 | ### Tomorrow Night ### 534 | TomorrowNight: &TomorrowNight 535 | # Default colors 536 | primary: 537 | background: '#1d1f21' 538 | foreground: '#c5c8c6' 539 | 540 | # Colors the cursor will use if `custom_cursor_colors` is true 541 | cursor: 542 | text: '#1d1f21' 543 | cursor: '#ffffff' 544 | 545 | # Normal colors 546 | normal: 547 | black: '#1d1f21' 548 | red: '#cc6666' 549 | green: '#b5bd68' 550 | yellow: '#e6c547' 551 | blue: '#81a2be' 552 | magenta: '#b294bb' 553 | cyan: '#70c0ba' 554 | white: '#373b41' 555 | 556 | # Bright colors 557 | bright: 558 | black: '#666666' 559 | red: '#ff3334' 560 | green: '#9ec400' 561 | yellow: '#f0c674' 562 | blue: '#81a2be' 563 | magenta: '#b77ee0' 564 | cyan: '#54ced6' 565 | white: '#282a2e' 566 | 567 | ###################################################################### 568 | ## SET THEME: Choose ONE color scheme from those in the above list. ## 569 | ## ################################################################### 570 | # Available themes are: 571 | # *DoomOne 572 | # *Dracula 573 | # *GruvboxDark 574 | # *MonokaiPro 575 | # *Nord 576 | # *OceanicNext 577 | # *Palenight 578 | # *SolarizedLight 579 | # *SolarizedDark 580 | # *TomorrowNight 581 | 582 | colors: *DoomOne 583 | 584 | ####################################### 585 | ## END OF COLOR SCHEMES ## 586 | ####################################### 587 | 588 | # Visual Bell 589 | # 590 | # Any time the BEL code is received, Alacritty "rings" the visual bell. Once 591 | # rung, the terminal background will be set to white and transition back to the 592 | # default background color. You can control the rate of this transition by 593 | # setting the `duration` property (represented in milliseconds). You can also 594 | # configure the transition function by setting the `animation` property. 595 | # 596 | # Values for `animation`: 597 | # - Ease 598 | # - EaseOut 599 | # - EaseOutSine 600 | # - EaseOutQuad 601 | # - EaseOutCubic 602 | # - EaseOutQuart 603 | # - EaseOutQuint 604 | # - EaseOutExpo 605 | # - EaseOutCirc 606 | # - Linear 607 | # 608 | # Specifying a `duration` of `0` will disable the visual bell. 609 | #visual_bell: 610 | # animation: EaseOutExpo 611 | # duration: 0 612 | # color: '#ffffff' 613 | 614 | #selection: 615 | #semantic_escape_chars: ",│`|:\"' ()[]{}<>\t" 616 | 617 | # When set to `true`, selected text will be copied to the primary clipboard. 618 | #save_to_clipboard: false 619 | 620 | # Allow terminal applications to change Alacritty's window title. 621 | #dynamic_title: true 622 | 623 | #cursor: 624 | # Cursor style 625 | # 626 | # Values for `style`: 627 | # - ▇ Block 628 | # - _ Underline 629 | # - | Beam 630 | #style: Block 631 | 632 | # If this is `true`, the cursor will be rendered as a hollow box when the 633 | # window is not focused. 634 | #unfocused_hollow: true 635 | 636 | # Live config reload (changes require restart) 637 | #live_config_reload: true 638 | 639 | # Shell 640 | # 641 | # You can set `shell.program` to the path of your favorite shell, e.g. `/bin/fish`. 642 | # Entries in `shell.args` are passed unmodified as arguments to the shell. 643 | # 644 | # Default: 645 | # - (macOS) /bin/bash --login 646 | # - (Linux/BSD) user login shell 647 | # - (Windows) powershell 648 | #shell: 649 | # program: /bin/bash 650 | # args: 651 | # - --login 652 | 653 | # Startup directory 654 | # 655 | # Directory the shell is started in. If this is unset, or `None`, the working 656 | # directory of the parent process will be used. 657 | #working_directory: None 658 | 659 | # WinPTY backend (Windows only) 660 | # 661 | # Alacritty defaults to using the newer ConPTY backend if it is available, 662 | # since it resolves a lot of bugs and is quite a bit faster. If it is not 663 | # available, the the WinPTY backend will be used instead. 664 | # 665 | # Setting this option to `true` makes Alacritty use the legacy WinPTY backend, 666 | # even if the ConPTY backend is available. 667 | #winpty_backend: false 668 | 669 | # Send ESC (\x1b) before characters when alt is pressed. 670 | #alt_send_esc: true 671 | 672 | #debug: 673 | # Display the time it takes to redraw each frame. 674 | #render_timer: false 675 | 676 | # Keep the log file after quitting Alacritty. 677 | #persistent_logging: false 678 | 679 | # Log level 680 | # 681 | # Values for `log_level`: 682 | # - None 683 | # - Error 684 | # - Warn 685 | # - Info 686 | # - Debug 687 | # - Trace 688 | #log_level: Warn 689 | 690 | # Print all received window events. 691 | #print_events: false 692 | 693 | # Record all characters and escape sequences as test data. 694 | #ref_test: false 695 | 696 | #mouse: 697 | # Click settings 698 | # 699 | # The `double_click` and `triple_click` settings control the time 700 | # alacritty should wait for accepting multiple clicks as one double 701 | # or triple click. 702 | #double_click: { threshold: 300 } 703 | #triple_click: { threshold: 300 } 704 | 705 | # If this is `true`, the cursor is temporarily hidden when typing. 706 | #hide_when_typing: false 707 | 708 | #url: 709 | # URL launcher 710 | # 711 | # This program is executed when clicking on a text which is recognized as a URL. 712 | # The URL is always added to the command as the last parameter. 713 | # 714 | # When set to `None`, URL launching will be disabled completely. 715 | # 716 | # Default: 717 | # - (macOS) open 718 | # - (Linux/BSD) xdg-open 719 | # - (Windows) explorer 720 | #launcher: 721 | # program: xdg-open 722 | # args: [] 723 | 724 | # URL modifiers 725 | # 726 | # These are the modifiers that need to be held down for opening URLs when clicking 727 | # on them. The available modifiers are documented in the key binding section. 728 | #modifiers: None 729 | 730 | # Mouse bindings 731 | # 732 | # Mouse bindings are specified as a list of objects, much like the key 733 | # bindings further below. 734 | # 735 | # Each mouse binding will specify a: 736 | # 737 | # - `mouse`: 738 | # 739 | # - Middle 740 | # - Left 741 | # - Right 742 | # - Numeric identifier such as `5` 743 | # 744 | # - `action` (see key bindings) 745 | # 746 | # And optionally: 747 | # 748 | # - `mods` (see key bindings) 749 | #mouse_bindings: 750 | # - { mouse: Middle, action: PasteSelection } 751 | 752 | # Key bindings 753 | # 754 | # Key bindings are specified as a list of objects. For example, this is the 755 | # default paste binding: 756 | # 757 | # `- { key: V, mods: Control|Shift, action: Paste }` 758 | # 759 | # Each key binding will specify a: 760 | # 761 | # - `key`: Identifier of the key pressed 762 | # 763 | # - A-Z 764 | # - F1-F24 765 | # - Key0-Key9 766 | # 767 | # A full list with available key codes can be found here: 768 | # https://docs.rs/glutin/*/glutin/event/enum.VirtualKeyCode.html#variants 769 | # 770 | # Instead of using the name of the keys, the `key` field also supports using 771 | # the scancode of the desired key. Scancodes have to be specified as a 772 | # decimal number. This command will allow you to display the hex scancodes 773 | # for certain keys: 774 | # 775 | # `showkey --scancodes`. 776 | # 777 | # Then exactly one of: 778 | # 779 | # - `chars`: Send a byte sequence to the running application 780 | # 781 | # The `chars` field writes the specified string to the terminal. This makes 782 | # it possible to pass escape sequences. To find escape codes for bindings 783 | # like `PageUp` (`"\x1b[5~"`), you can run the command `showkey -a` outside 784 | # of tmux. Note that applications use terminfo to map escape sequences back 785 | # to keys. It is therefore required to update the terminfo when changing an 786 | # escape sequence. 787 | # 788 | # - `action`: Execute a predefined action 789 | # 790 | # - Copy 791 | # - Paste 792 | # - PasteSelection 793 | # - IncreaseFontSize 794 | # - DecreaseFontSize 795 | # - ResetFontSize 796 | # - ScrollPageUp 797 | # - ScrollPageDown 798 | # - ScrollLineUp 799 | # - ScrollLineDown 800 | # - ScrollToTop 801 | # - ScrollToBottom 802 | # - ClearHistory 803 | # - Hide 804 | # - Minimize 805 | # - Quit 806 | # - ToggleFullscreen 807 | # - SpawnNewInstance 808 | # - ClearLogNotice 809 | # - ReceiveChar 810 | # - None 811 | # 812 | # (macOS only): 813 | # - ToggleSimpleFullscreen: Enters fullscreen without occupying another space 814 | # 815 | # - `command`: Fork and execute a specified command plus arguments 816 | # 817 | # The `command` field must be a map containing a `program` string and an 818 | # `args` array of command line parameter strings. For example: 819 | # `{ program: "alacritty", args: ["-e", "vttest"] }` 820 | # 821 | # And optionally: 822 | # 823 | # - `mods`: Key modifiers to filter binding actions 824 | # 825 | # - Command 826 | # - Control 827 | # - Option 828 | # - Super 829 | # - Shift 830 | # - Alt 831 | # 832 | # Multiple `mods` can be combined using `|` like this: 833 | # `mods: Control|Shift`. 834 | # Whitespace and capitalization are relevant and must match the example. 835 | # 836 | # - `mode`: Indicate a binding for only specific terminal reported modes 837 | # 838 | # This is mainly used to send applications the correct escape sequences 839 | # when in different modes. 840 | # 841 | # - AppCursor 842 | # - AppKeypad 843 | # - Alt 844 | # 845 | # A `~` operator can be used before a mode to apply the binding whenever 846 | # the mode is *not* active, e.g. `~Alt`. 847 | # 848 | # Bindings are always filled by default, but will be replaced when a new 849 | # binding with the same triggers is defined. To unset a default binding, it can 850 | # be mapped to the `ReceiveChar` action. Alternatively, you can use `None` for 851 | # a no-op if you do not wish to receive input characters for that binding. 852 | key_bindings: 853 | # (Windows, Linux, and BSD only) 854 | - { key: V, mods: Control|Shift, action: Paste } 855 | - { key: C, mods: Control|Shift, action: Copy } 856 | - { key: Insert, mods: Shift, action: PasteSelection } 857 | - { key: Key0, mods: Control, action: ResetFontSize } 858 | - { key: Equals, mods: Control, action: IncreaseFontSize } 859 | - { key: Plus, mods: Control, action: IncreaseFontSize } 860 | - { key: Minus, mods: Control, action: DecreaseFontSize } 861 | - { key: F11, mods: None, action: ToggleFullscreen } 862 | - { key: Paste, mods: None, action: Paste } 863 | - { key: Copy, mods: None, action: Copy } 864 | - { key: L, mods: Control, action: ClearLogNotice } 865 | - { key: L, mods: Control, chars: "\x0c" } 866 | - { key: PageUp, mods: None, action: ScrollPageUp, mode: ~Alt } 867 | - { key: PageDown, mods: None, action: ScrollPageDown, mode: ~Alt } 868 | - { key: Home, mods: Shift, action: ScrollToTop, mode: ~Alt } 869 | - { key: End, mods: Shift, action: ScrollToBottom, mode: ~Alt } 870 | 871 | --------------------------------------------------------------------------------