diff --git a/.bash_profile b/.bash_profile index 9ec639b..94d4e80 100644 --- a/.bash_profile +++ b/.bash_profile @@ -4,9 +4,7 @@ [[ -f ~/.bashrc ]] && . ~/.bashrc -# if [ -z "${DISPLAY}" ] && [ "${XDG_VTNR}" -eq 1 ]; then -if [ -z "${DISPLAY}" ] && [ "${XDG_VTNR}" == 1 ]; then +#if [ -z "${DISPLAY}"] && [ "${XDG_VTNR}" == 1 ]; then +if [[ ! $DISPLAY && $XDG_VTNR -eq 1 ]]; then exec startx - exec picom -b fi - diff --git a/.bashrc b/.bashrc index a28ad79..019a2d6 100644 --- a/.bashrc +++ b/.bashrc @@ -2,6 +2,9 @@ # ~/.bashrc # +export PYTHONPATH=~/Documents/Course-Material/module-o/book/src +export MANPAGER="sh -c 'col -bx | bat -l man -p'" + # If not running interactively, don't do anything [[ $- != *i* ]] && return @@ -17,12 +20,26 @@ alias config='git --git-dir=$HOME/config-files/ --work-tree=$HOME' # aliases alias ..='cd ..' +alias vi='vim' +alias ip='ip -color=auto' +# vi key bindings +set -o vi PS1='[\u@\h \W]\$ ' # starship prompt eval "$(starship init bash)" -# colorscript -colorscript random +colorscript -e roshar + +case ${TERM} in + + xterm*|rxvt*|alacritty*|Eterm|aterm|kterm|gnome*) + PROMPT_COMMAND=${PROMPT_COMMAND:+$PROMPT_COMMAND; }'printf "\033]0;%s@%s:%s\007" "${USER}" "${HOSTNAME%%.*}" "${PWD/#$HOME/\~}"' + + ;; + screen*) + PROMPT_COMMAND=${PROMPT_COMMAND:+$PROMPT_COMMAND; }'printf "\033_%s@%s:%s\033\\" "${USER}" "${HOSTNAME%%.*}" "${PWD/#$HOME/\~}"' + ;; +esac diff --git a/.config/alacritty/alacritty.yml b/.config/alacritty/alacritty.yml index b4869d1..74d5eed 100644 --- a/.config/alacritty/alacritty.yml +++ b/.config/alacritty/alacritty.yml @@ -7,9 +7,22 @@ # License: MIT # References: # https://github.com/alacritty/alacritty -window: - opacity: .80 +key_bindings: + - { key: Return, mods: Control|Shift, action: SpawnNewInstance } + +dynamic_title: true + +window: + opacity: .95 + +font: + normal: + family: "Hack Nerd Font Mono" + bold: + family: "Hack Nerd Font Mono" + italic: + family: "Hack Nerd Font Mono" colors: primary: diff --git a/.config/fish/abbreviations.fish b/.config/fish/abbreviations.fish new file mode 100644 index 0000000..0d572f9 --- /dev/null +++ b/.config/fish/abbreviations.fish @@ -0,0 +1,11 @@ +abbr ls 'exa --color=auto' +abbr sl 'exa --color=auto' +abbr ll 'exa -la --color=auto' +abbr ip 'ip --color=auto' + +abbr gs 'git status' +abbr gcm 'git commit -m' +abbr config 'git --git-dir=$HOME/config-files/ --work-tree=$HOME' + +abbr .. 'cd ..' +abbr vi 'vim' diff --git a/.config/fish/config.fish b/.config/fish/config.fish index 16f201c..87ce294 100644 --- a/.config/fish/config.fish +++ b/.config/fish/config.fish @@ -1,5 +1,14 @@ +set --export EDITOR "vim" +set --export PF_INFO "ascii title os host kernel uptime pkgs memory wm shell editor palette" + if status is-interactive # Commands to run in interactive sessions can go here end +fish_add_path "$HOME/.local/bin" +export PYTHONPATH="$HOME/Documents/Course-Material/module-o/book/src" +export MANPAGER="sh -c 'col -bx | bat -l man -p'" + +source "$HOME/.config/fish/abbreviations.fish" + starship init fish | source diff --git a/.config/neofetch/config.conf b/.config/neofetch/config.conf index cada780..e564d7f 100644 --- a/.config/neofetch/config.conf +++ b/.config/neofetch/config.conf @@ -14,8 +14,8 @@ print_info() { info "DE" de info "WM" wm info "WM Theme" wm_theme - info "Theme" theme - info "Icons" icons + # info "Theme" theme + # info "Icons" icons info "Terminal" term info "Terminal Font" term_font info "CPU" cpu @@ -24,7 +24,7 @@ print_info() { # info "GPU Driver" gpu_driver # Linux/macOS only # info "CPU Usage" cpu_usage - # info "Disk" disk + info "Disk" disk # info "Battery" battery # info "Font" font # info "Song" song @@ -116,7 +116,7 @@ uptime_shorthand="on" # Example: # on: '1801MiB / 7881MiB (22%)' # off: '1801MiB / 7881MiB' -memory_percent="off" +memory_percent="on" # Change memory output unit. # @@ -249,7 +249,7 @@ cpu_cores="logical" # C: 'Intel i7-6500U (4) @ 3.1GHz [27.2°C]' # F: 'Intel i7-6500U (4) @ 3.1GHz [82.0°F]' # off: 'Intel i7-6500U (4) @ 3.1GHz' -cpu_temp="C" +cpu_temp="on" # GPU @@ -387,7 +387,7 @@ de_version="on" # disk_show=('/'): # 'Disk (/): 74G / 118G (66%)' # -disk_show=('/') +disk_show=('/' '/home') # Disk subtitle. # What to append to the Disk subtitle. diff --git a/pkg.list b/.config/pkg.list similarity index 98% rename from pkg.list rename to .config/pkg.list index 919e348..5b01e96 100644 --- a/pkg.list +++ b/.config/pkg.list @@ -107,7 +107,6 @@ xorgxrdp-glamor 0.2.18-1 xrdp 0.9.19-2 xsel 1.2.0.20200527-2 yasm 1.3.0-5 -yay 11.3.1-1 zip 3.0-10 zsh 5.9-1 nerd-fonts-git 1:2.3.0.RC.r58.g498ebf372-1 @@ -117,4 +116,3 @@ shell-color-scripts 1.1.r105.ae5a9c8-1 spotify-tui 0.25.0-2 xorgxrdp-glamor 0.2.18-1 xrdp 0.9.19-2 -yay 11.3.1-1 diff --git a/.config/qtile/background.jpg b/.config/qtile/background.jpg index 8d79915..1bbc3d6 100644 Binary files a/.config/qtile/background.jpg and b/.config/qtile/background.jpg differ diff --git a/.config/qtile/config.py b/.config/qtile/config.py index c1c1bf1..9c7c81b 100644 --- a/.config/qtile/config.py +++ b/.config/qtile/config.py @@ -24,24 +24,44 @@ # SOFTWARE. from libqtile import bar, layout, widget, extension -from libqtile.config import Click, Drag, Group, Key, Match, Screen +from libqtile.config import Click, Drag, Group, Key, KeyChord, Match, Screen, ScratchPad, DropDown +from libqtile.scripts.main import VERSION from libqtile.lazy import lazy -from libqtile.utils import guess_terminal -from unicodes import left_arrow, right_arrow, right_half_circle, lower_left_triangle -mod = "mod4" -terminal = guess_terminal() -colors = { - 'purple':'52497e', - 'teal':'559d92', - 'dark_orange':'9d6e55', - 'orange':'e7510b', - 'dark_red':'9d5560', - 'dark_blue':'2e3440', - 'blue':'8fbcbb', - 'red':'bf616a', - } +from subprocess import run +mod = 'mod4' +terminal = 'alacritty' +opaque_config = '--config-file /home/roland/.config/alacritty/alacritty-opaque.yml' +terminal_opaque = f'alacritty {opaque_config}' +qtile_config = f'alacritty {opaque_config} -e vim /home/roland/.config/qtile/config.py' +ipython = f'alacritty {opaque_config} -e ipython' +python = f'alacritty {opaque_config} -e python' +vpn_vta = 'alacritty -e /home/roland/.local/bin/vpn' +rdp = 'alacritty -e /home/roland/.local/bin/bjendal' +rofi = 'rofi -combi-modi window,drun,ssh -theme nord -font "hack 10" -show drun -icon-theme "Papirus" -show-icons' +qtile_dir = '/home/roland/.config/qtile/' + +flameshot = '#8800aa' +nord = { + 'nord0':'#2E3440', + 'nord1':'#3B4252', + 'nord2':'#434C5E', + 'nord3':'#4C566A', + 'nord4':'#D8DEE9', + 'nord5':'#E5E9F0', + 'nord6':'#ECEFF4', + 'nord7':'#8FBCBB', + 'nord8':'#88C0D0', + 'nord9':'#81A1C1', + 'nord10':'#5E81AC', + 'nord11':'#BF616A', + 'nord12':'#D08770', + 'nord13':'#EBCB8B', + 'nord14':'#A3BE8C', + 'nord15':'#B48EAD', + } +# Keys keys = [ # A list of available commands that can be bound to keys can be found # at https://docs.qtile.org/en/latest/manual/config/lazy.html @@ -57,6 +77,7 @@ keys = [ Key([mod, "shift"], "l", lazy.layout.shuffle_right(), desc="Move window to the right"), Key([mod, "shift"], "j", lazy.layout.shuffle_down(), desc="Move window down"), Key([mod, "shift"], "k", lazy.layout.shuffle_up(), desc="Move window up"), + Key([mod, "shift"], "space", lazy.layout.flip()), # Grow windows. If current window is on the edge of screen and direction # will be to screen edge - window would shrink. Key([mod, "control"], "h", lazy.layout.grow_left(), desc="Grow window to the left"), @@ -68,26 +89,87 @@ keys = [ # Split = all windows displayed # Unsplit = 1 window displayed, like Max layout, but still with # multiple stack panes - Key( - [mod, "shift"], - "Return", - lazy.layout.toggle_split(), - desc="Toggle between split and unsplit sides of stack", - ), + #Key( + #[mod, "shift"], + #"Return", + #lazy.layout.toggle_split(), + #desc="Toggle between split and unsplit sides of stack", + #), Key([mod], "Return", lazy.spawn(terminal), desc="Launch terminal"), # Toggle between different layouts as defined below Key([mod], "Tab", lazy.next_layout(), desc="Toggle between layouts"), Key([mod], "w", lazy.window.kill(), desc="Kill focused window"), Key([mod, "control"], "r", lazy.reload_config(), desc="Reload the config"), Key([mod, "control"], "q", lazy.shutdown(), desc="Shutdown Qtile"), - Key([mod, "control"], "s", lazy.hide_show_bar()), - # Key([mod], "r", lazy.spawncmd(), desc="Spawn a command using a prompt widget"), - Key([mod], "r", lazy.run_extension(extension.DmenuRun( - dmenu_prompt = ">", - ))) + Key([mod], "r", lazy.spawn(rofi), desc="Launch rofi"), + Key([mod], "z", lazy.run_extension(extension.WindowList()), desc="Launch window list"), + # LAUNCH chord + KeyChord([mod], "e", [ + Key([], "e", lazy.group['scratchpad'].dropdown_toggle('term'), desc="Launch Scratchpad Terminal"), + Key([], "i", lazy.group['scratchpad'].dropdown_toggle('ipython'), desc="Launch IPython"), + Key([], "p", lazy.group['scratchpad'].dropdown_toggle('python'), desc="Launch python"), + Key([], "q", lazy.group['scratchpad'].dropdown_toggle('qtile-config'), desc="Launch qtile config"), + Key([], "v", lazy.group['scratchpad'].dropdown_toggle('vpn'), desc="Launch vpn"), + Key([], "x", lazy.group['scratchpad'].dropdown_toggle('xrdp'), desc="Launch xrdp: bjendal"), + Key([], "s", lazy.spawn('passmenu'), desc="Launch pass"), + Key([], "r", lazy.run_extension(extension.DmenuRun(dmenu_prompt = "\uf101")), desc="Launch dmenu"), + # FLAMESHOT chord + KeyChord([], "f", [ + Key([], "f", lazy.spawn('flameshot'), desc="Launch flameshot"), + Key([], "s", lazy.spawn('flameshot gui'), desc="Take screenshot"), + Key([], "a", lazy.spawn('flameshot full'), desc="Take screenshot"), + Key([], "c", lazy.spawn('flameshot full --clipboard'), desc="Take screenshot"), + Key([], "l", lazy.spawn('flameshot launcher'), desc="Take screenshot"), + ], + name='flameshot', + ) + ], + #mode=True, + name="launch", + ), + # TOGGLE chord + KeyChord([mod], "d", [ + Key([], "s", lazy.hide_show_bar(), desc="Toggle show bar"), + # BOXES chord + KeyChord([], "t", [ + Key([], "1", lazy.widget['widget_box_1'].toggle(), desc="Toggle Widget Box 1"), + Key([], "2", lazy.widget['widget_box_2'].toggle(), desc="Toggle Widget Box 2"), + Key([], "3", lazy.widget['widget_box_3'].toggle(), desc="Toggle Widget Box 3"), + Key([], "t", lazy.widget['widget_box_1'].toggle(), + lazy.widget['widget_box_2'].toggle(), + lazy.widget['widget_box_3'].toggle(), + lazy.widget['media_box_1'].toggle(), + lazy.widget['media_box_2'].toggle(), + lazy.widget['media_box_3'].toggle(), desc="Toggle Widget Boxes"), + ], + name="boxes", + ), + ], + name="toggle", + ), + # MEDIA chord + KeyChord([mod], "s", [ + Key([], "s", lazy.widget['spotifyd'].play_pause(), desc="Play - Pause"), + Key([], "h", lazy.widget['spotifyd'].previous(), desc="Previous"), + Key([], "l", lazy.widget['spotifyd'].next(), desc="Next"), + ], + name="media", + ), + Key([mod, "shift"], "u", lazy.group['scratchpad'].dropdown_toggle('hotkeys'), desc="Show Hot Keys"), ] -groups = [Group(i) for i in "123456789"] +# Groups +groups = [Group(i) for i in "123456"] + +discord_match = Match(wm_class="discord") +obsidian_match = Match(wm_class="obsidian") +xrdp_match = Match(wm_class="xfreerdp") +vm_match = Match(wm_class="VirtualBox Machine") +groups.extend([Group("7", label='\ue007')]) +groups.extend([Group("8", matches=[obsidian_match], label='\ue13a')]) +groups.extend([Group("9", matches=[discord_match], label='\uf392')]) +groups.extend([Group("0", matches=[xrdp_match], label='\uf512', init=False, persist=False)]) +groups.extend([Group("o", matches=[vm_match], label='\uf511', init=False, persist=False)]) for i in groups: keys.extend( @@ -97,139 +179,751 @@ for i in groups: [mod], i.name, lazy.group[i.name].toscreen(), - desc="Switch to group {}".format(i.name), + desc=f"Switch to group {i.name}", ), # mod1 + shift + letter of group = switch to & move focused window to group + #Key( + #[mod, "shift"], + #i.name, + #lazy.window.togroup(i.name, switch_group=True), + #desc=f"Switch to & move focused window to group {i.name}", + #), + # Or, use below if you prefer not to switch to that group. + # mod1 + shift + letter of group = move focused window to group Key( [mod, "shift"], i.name, - lazy.window.togroup(i.name, switch_group=True), - desc="Switch to & move focused window to group {}".format(i.name), + lazy.window.togroup(i.name), + desc=f"move focused window to group {i.name}", ), - # Or, use below if you prefer not to switch to that group. - # # mod1 + shift + letter of group = move focused window to group - # Key([mod, "shift"], i.name, lazy.window.togroup(i.name), - # desc="move focused window to group {}".format(i.name)), ] ) +def get_hot_keys(): + mod_keys = { + 'mod4':'Super', + 'shift':'Shift', + 'control':'Control', + 'space':'Space', + } + + hot_keys = [] + + for key in keys: + if isinstance(key, Key): + key_modifiers = ' + '.join([mod_keys[modifier] for modifier in key.modifiers]) + if len(key.key) == 1: + hot_keys.append(f"{key_modifiers} + {key.key}: {key.desc}\n") + elif len(key.key) > 1: + hot_keys.append(f"{key_modifiers} + {key.key.title()}: {key.desc}\n") + for key in keys: + if isinstance(key, KeyChord): + key_modifiers = ' + '.join([mod_keys[modifier] for modifier in key.modifiers]) + hot_keys.append(f"{key_modifiers} + {key.key}: {key.name.upper()}\n") + for sub in key.submappings: + if isinstance(sub, Key): + hot_keys.append(f" {sub.key}: {sub.desc}\n") + elif isinstance(key, KeyChord): + hot_keys.append(f" {sub.key}: {sub.name.upper()}\n") + for map in sub.submappings: + hot_keys.append(f" {map.key}: {map.desc}\n") + + return ''.join(hot_keys) + +hot_key_text = get_hot_keys() + +hotkeys = f'yad --title "Hotkeys" --text-info --scroll --text="{hot_key_text}"' + +groups.extend( + [ScratchPad("scratchpad", [ + DropDown( + "term", + terminal_opaque, + on_focus_lost_hide=False, + opacity=1.0, + height=0.5, + y=0.1, + ), + DropDown( + "ipython", + ipython, + on_focus_lost_hide=False, + opacity=1.0, + height=0.9, + y=0.05, + ), + DropDown( + "python", + python, + on_focus_lost_hide=False, + opacity=1.0, + height=0.9, + y=0.05, + ), + DropDown( + "qtile-config", + qtile_config, + on_focus_lost_hide=False, + opacity=1.0, + height=0.9, + y=0.05, + ), + DropDown( + "vpn", + vpn_vta, + on_focus_lost_hide=True, + opacity=1.0, + height=0.5, + y=0.1, + ), + DropDown( + "xrdp", + rdp, + on_focus_lost_hide=True, + opacity=1.0, + height=0.5, + y=0.1, + ), + DropDown( + "hotkeys", + hotkeys, + on_focus_lost_hide=True, + opacity=1.0, + height=0.5, + y=0.01, + ), + ]) + ]) + layouts = [ #layout.Columns(border_focus_stack=["#d75f5f", "#8f3d3d"], border_width=4), - # Try more layouts by unleashing below layouts. - # layout.Stack(num_stacks=2), - # layout.Bsp(), - # layout.Matrix(), + #layout.Stack(num_stacks=2), + #layout.Bsp(), layout.MonadTall( - border_focus=colors['red'], - border_normal=colors['blue'], - border_width=2, + border_focus=nord['nord11'], + border_normal=nord['nord10'], + border_width=4, + margin=4 + ), + layout.Max(), + layout.MonadThreeCol( + main_centered=True, + new_client_position='after_current', + border_focus=nord['nord11'], + border_normal=nord['nord10'], + border_width=4, margin=4 ), - layout.Max(), - # layout.MonadWide(), - # layout.RatioTile(), - # layout.Tile(), - # layout.TreeTab(), - # layout.VerticalTile(), - layout.Zoomy(), + #layout.MonadWide(), + #layout.RatioTile(), + #layout.Spiral(), + #layout.Tile(), + #layout.TreeTab(), + #layout.VerticalTile(), + #layout.Zoomy(), ] widget_defaults = dict( - #font="sans", - font="Hack Nerd Font Mono", - fontsize=14, - padding=4, + font="FontAwesome", + fontsize=18, + padding=2, ) extension_defaults = widget_defaults.copy() +# Mirrored widgets +net = widget.Net( + background=nord['nord10'], + foreground=nord['nord0'], + interface='net0') + +memory = widget.Memory( + background=nord['nord14'], + foreground=nord['nord0']) + +cpu = widget.CPU( + background=nord['nord13'], + foreground=nord['nord0']) + +cpu_thermal_sensor = widget.ThermalSensor( + background=nord['nord13'], + foreground=nord['nord0'], + tag_sensor='Package id 0', + format='{temp:.0f}{unit}') + +disk_free_root = widget.DF( + background=nord['nord12'], + foreground=nord['nord0'], + warn_space=40, + visible_on_warn=True) + +disk_free_home = widget.DF( + background=nord['nord12'], + foreground=nord['nord0'], + partition='/home', + warn_space=40, + visible_on_warn=True) + +nvme_thermal_sensor = widget.ThermalSensor( + background=nord['nord12'], + foreground=nord['nord0'], + tag_sensor='Composite', + format='NVME: {temp:.0f}{unit}') + +weather = widget.OpenWeather( + background=nord['nord15'], + foreground=nord['nord0'], + cityid='4198514', + app_key='*****', + metric=False) + +chord = widget.Chord( + chords_colors={ + "launch": (nord['nord13'], nord['nord0']), + "flameshot": (nord['nord15'], nord['nord0']), + "toggle": (nord['nord11'], nord['nord0']), + "boxes": (nord['nord12'], nord['nord0']), + "media": (nord['nord14'], nord['nord0']), + }, + name_transform=lambda name: name.upper()) + +clock = widget.Clock( + background=nord['nord11'], + foreground=nord['nord0'], + padding=4, + format="%Y-%m-%d %a %H:%M") + + +def parse_task_text(text): + text = text.replace(' \u2014 Mozilla Firefox','') + text = text.replace(' - qutebrowser','') + text = text.replace(' - Discord','') + return text + + +def get_wallpaper(): + size = run(["xdpyinfo | rg dimensions | awk '{ print $2 }'"], + shell=True, + capture_output=True, + encoding='utf-8') + size = size.stdout.strip() + width, height = size.split('x') + print(f'{size =}', type(size)) + + wallpaper = f'{qtile_dir}not_supported.png' + + match size: + case '3440x1440': + wallpaper = f'{qtile_dir}gunter_wallpaper3440x1440_fill.png' + case '1920x1080': + wallpaper = f'{qtile_dir}gunter_throne.png' + case '3840x1080': + wallpaper = f'{qtile_dir}gunter_throne.png' + case '5760x1080': + wallpaper = f'{qtile_dir}gunter_throne.png' + case '1760x1262': + wallpaper = f'{qtile_dir}gunter_throne_1760x1262.png' + + return wallpaper + screens = [ - Screen( + Screen( #Screen1 bottom=bar.Bar( [ - #widget.CurrentLayout( - #background=colors['dark_blue'], - #), - widget.GroupBox( - background=colors['blue'], - block_highlight_text_color=colors['red'], - disable_drag=True, - #this_screen_border=colors['orange'], - this_current_screen_border=colors['dark_blue'], - #active=colors['dark_blue'], - ), - #lower_left_triangle(colors['blue'], colors['dark_blue']), - right_arrow(colors['dark_blue'], colors['blue']), - # widget.Prompt(), - widget.WindowName( - background=colors['dark_blue'], - ), - widget.Chord( - chords_colors={ - "launch": ("#ff0000", "#ffffff"), - }, - name_transform=lambda name: name.upper(), + widget.CurrentLayoutIcon( + background=nord['nord10'], + foreground=nord['nord4'], + ), + widget.GroupBox( + font="Font Awesome 6 Brands", + background=nord['nord10'], + disable_drag=True, + block_highlight_text_color=nord['nord8'], + this_screen_border=nord['nord13'], + this_current_screen_border=nord['nord11'], + padding=4, + #margin=0, + ), + widget.Spacer( + background=nord['nord0'], + length=4, + ), + widget.WindowCount( + font="Font Awesome 6 Brands", + background=nord['nord0'], + foreground=nord['nord4'], + ), + widget.TaskList( + background=nord['nord0'], + foreground=nord['nord4'], + border=nord['nord11'], + highlight_method='block', + markup_focused='{}', + parse_text=parse_task_text, + margin=2, + padding=2, + ), + chord, + widget.Spacer( + background=nord['nord0'], + length=4, ), - # widget.TextBox("default config", name="default"), - # widget.TextBox("Press <M-r> to spawn", foreground="#d75f5f"), - # NB Systray is incompatible with Wayland, consider using StatusNotifier instead - # widget.StatusNotifier(), widget.Systray( - background=colors['blue'], - ), - widget.OpenWeather( - background=colors['dark_blue'], - #location='Grovetown', - cityid='4198514', - app_key='*****', - metric=False, - ), - #widget.TextBox( - #padding=1, - #background=colors['dark_blue'], - #), - #lower_left_triangle(colors['dark_blue'], colors['blue']), - left_arrow(colors['dark_blue'], colors['blue']), - widget.Net( - background=colors['blue'], - interface='net0', - ), - #widget.TextBox( - #padding=1, - #background=colors['blue'], - #), - #lower_left_triangle(colors['blue'], colors['dark_blue']), - left_arrow(colors['blue'], colors['dark_blue']), - widget.Memory( - background=colors['dark_blue'], - ), - #widget.TextBox( - #padding=1, - #background=colors['dark_blue'], - #), - #lower_left_triangle(colors['dark_blue'], colors['blue']), - left_arrow(colors['dark_blue'], colors['blue']), - widget.ThermalSensor( - format='{tag}: {temp:.0f}{unit}', - background=colors['blue'], - ), - #widget.TextBox( - #padding=1, - #background=colors['blue'], - #), - #lower_left_triangle(colors['blue'], colors['dark_blue']), - left_arrow(colors['blue'], colors['dark_blue']), - widget.Clock( - background=colors['dark_blue'], - format="%Y-%m-%d %a %I:%M %p" - ), - # widget.QuickExit(), + background=nord['nord0'], + icon_size=26, + padding=4, + ), + widget.Spacer( + background=nord['nord0'], + length=6, + ), + widget.WidgetBox( + name='media_box_1', + background=nord['nord0'], + foreground=nord['nord13'], + fontsize=30, + close_button_location='right', + text_closed='\uf100', + text_open='\uf101', + padding=15, + widgets=[ + widget.Mpris2( + name='spotifyd', + #objname=media_player, + format = "{xesam:title} - ({xesam:artist})", + playing_text = " 契 {track}", + paused_text = "  {track}", + width = 400, + scroll_delay = 5, + scroll_interval = 0.25, + scroll_step = 15, + background=nord['nord10'], + foreground=nord['nord0'], + ), + widget.PulseVolume( + font="FontAwesome", + fmt='\uf028 {}', + background=nord['nord0'], + foreground=nord['nord4'], + ), + ], + ), + widget.Spacer( + background=nord['nord0'], + length=4, + ), + widget.WidgetBox( + name='widget_box_1', + background=nord['nord0'], + foreground=nord['nord13'], + fontsize=30, + close_button_location='right', + text_closed='\uf100', + text_open='\uf101', + padding=15, + widgets=[ + widget.OpenWeather( + background=nord['nord15'], + foreground=nord['nord0'], + cityid='4198514', + app_key='*****', + metric=False), + widget.Net( + background=nord['nord10'], + foreground=nord['nord0'], + interface='net0'), + widget.Memory( + background=nord['nord14'], + foreground=nord['nord0']), + widget.CPU( + background=nord['nord13'], + foreground=nord['nord0']), + widget.ThermalSensor( + background=nord['nord13'], + foreground=nord['nord0'], + tag_sensor='Package id 0', + format='{temp:.0f}{unit}'), + widget.DF( + background=nord['nord12'], + foreground=nord['nord0'], + warn_space=40, + visible_on_warn=True), + widget.DF( + background=nord['nord12'], + foreground=nord['nord0'], + partition='/home', + warn_space=40, + visible_on_warn=True), + widget.ThermalSensor( + background=nord['nord12'], + foreground=nord['nord0'], + tag_sensor='Composite', + format='NVME: {temp:.0f}{unit}'), + widget.Spacer( + background=nord['nord0'], + length=8 + ), + ] + ), + widget.Spacer( + background=nord['nord0'], + length=6 + ), + clock, + widget.WidgetBox( + name='shutdown', + background=nord['nord11'], + foreground=nord['nord0'], + fontsize=30, + close_button_location='right', + text_closed='\uf100', + text_open='\uf101', + padding=15, + widgets=[ + widget.QuickExit( + background=nord['nord11'], + foreground=nord['nord0'], + fontsize=24, + default_text='\uf1e2' + ), + ], + ), + widget.Spacer( + background=nord['nord11'], + length=4 + ), ], - size=26, - border_width=[2, 2, 2, 2], # Draw top and bottom borders - border_color=[colors['blue'], colors['blue'], colors['blue'], colors['blue']], + size=32, + border_width=[0, 0, 0, 0], + border_color=[nord['nord10'], nord['nord10'], nord['nord10'], nord['nord10']], margin=4, ), - wallpaper='~/.config/qtile/background.jpg', + wallpaper = get_wallpaper(), + wallpaper_mode='fill', + ), + Screen( # Screen2 + bottom=bar.Bar([ + widget.CurrentLayoutIcon( + background=nord['nord10'], + foreground=nord['nord4'], + ), + widget.GroupBox( + font="Font Awesome 6 Brands", + background=nord['nord10'], + disable_drag=True, + block_highlight_text_color=nord['nord8'], + this_screen_border=nord['nord13'], + this_current_screen_border=nord['nord11'], + padding=4, + ), + widget.Spacer( + background=nord['nord0'], + length=4, + ), + widget.WindowCount( + font="Font Awesome 6 Brands", + background=nord['nord0'], + foreground=nord['nord4'], + ), + widget.TaskList( + background=nord['nord0'], + foreground=nord['nord4'], + border=nord['nord11'], + highlight_method='block', + markup_focused='{}', + parse_text=parse_task_text, + margin=2, + padding=2, + ), + chord, + widget.Spacer( + background=nord['nord0'], + length=6, + ), + widget.WidgetBox( + name='media_box_2', + background=nord['nord0'], + foreground=nord['nord13'], + fontsize=30, + close_button_location='right', + text_closed='\uf100', + text_open='\uf101', + padding=15, + widgets=[ + widget.Mpris2( + name='spotifyd', + #objname=media_player, + format = "{xesam:title} - ({xesam:artist})", + playing_text = " 契 {track}", + paused_text = "  {track}", + width = 400, + scroll_delay = 5, + scroll_interval = 0.25, + scroll_step = 15, + background=nord['nord10'], + foreground=nord['nord0'], + ), + widget.PulseVolume( + font="FontAwesome", + fmt='\uf028 {}', + background=nord['nord0'], + foreground=nord['nord4'], + ), + ], + ), + widget.Spacer( + background=nord['nord0'], + length=4, + ), + widget.WidgetBox( + name='widget_box_2', + background=nord['nord0'], + foreground=nord['nord13'], + fontsize=30, + close_button_location='right', + text_closed='\uf100', + text_open='\uf101', + padding=15, + widgets=[ + widget.OpenWeather( + background=nord['nord15'], + foreground=nord['nord0'], + cityid='4198514', + app_key='*****', + metric=False), + widget.Net( + background=nord['nord10'], + foreground=nord['nord0'], + interface='net0'), + widget.Memory( + background=nord['nord14'], + foreground=nord['nord0']), + widget.CPU( + background=nord['nord13'], + foreground=nord['nord0']), + widget.ThermalSensor( + background=nord['nord13'], + foreground=nord['nord0'], + tag_sensor='Package id 0', + format='{temp:.0f}{unit}'), + widget.DF( + background=nord['nord12'], + foreground=nord['nord0'], + warn_space=40, + visible_on_warn=True), + widget.DF( + background=nord['nord12'], + foreground=nord['nord0'], + partition='/home', + warn_space=40, + visible_on_warn=True), + widget.ThermalSensor( + background=nord['nord12'], + foreground=nord['nord0'], + tag_sensor='Composite', + format='NVME: {temp:.0f}{unit}'), + widget.Spacer( + background=nord['nord0'], + length=8 + ), + ] + ), + widget.Spacer( + background=nord['nord0'], + length=6 + ), + clock, + widget.WidgetBox( + name='shutdown', + background=nord['nord11'], + foreground=nord['nord0'], + fontsize=30, + close_button_location='right', + text_closed='\uf100', + text_open='\uf101', + padding=15, + widgets=[ + widget.QuickExit( + background=nord['nord11'], + foreground=nord['nord0'], + fontsize=24, + default_text='\uf1e2' + ), + ], + ), + widget.Spacer( + background=nord['nord11'], + length=4 + ), + ], + size=32, + border_width=[0, 0, 0, 0], + border_color=[nord['nord10'], nord['nord10'], nord['nord10'], nord['nord10']], + margin=4, + ), + wallpaper = get_wallpaper(), + wallpaper_mode='fill', + ), + Screen( # Screen3 + bottom=bar.Bar([ + widget.CurrentLayoutIcon( + background=nord['nord10'], + foreground=nord['nord4'], + ), + widget.GroupBox( + font="Font Awesome 6 Brands", + background=nord['nord10'], + disable_drag=True, + block_highlight_text_color=nord['nord8'], + this_screen_border=nord['nord13'], + this_current_screen_border=nord['nord11'], + padding=4, + ), + widget.Spacer( + background=nord['nord0'], + length=4, + ), + widget.WindowCount( + font="Font Awesome 6 Brands", + background=nord['nord0'], + foreground=nord['nord4'], + ), + widget.TaskList( + background=nord['nord0'], + foreground=nord['nord4'], + border=nord['nord11'], + highlight_method='block', + markup_focused='{}', + parse_text=parse_task_text, + margin=2, + padding=2, + ), + chord, + widget.Spacer( + background=nord['nord0'], + length=6, + ), + widget.WidgetBox( + name='media_box_3', + background=nord['nord0'], + foreground=nord['nord13'], + fontsize=30, + close_button_location='right', + text_closed='\uf100', + text_open='\uf101', + padding=15, + widgets=[ + widget.Mpris2( + name='spotifyd', + #objname=media_player, + format = "{xesam:title} - ({xesam:artist})", + playing_text = " 契 {track}", + paused_text = "  {track}", + width = 400, + scroll_delay = 5, + scroll_interval = 0.25, + scroll_step = 15, + background=nord['nord10'], + foreground=nord['nord0'], + ), + widget.PulseVolume( + font="FontAwesome", + fmt='\uf028 {}', + background=nord['nord0'], + foreground=nord['nord4'], + ), + ], + ), + widget.Spacer( + background=nord['nord0'], + length=4, + ), + widget.WidgetBox( + name='widget_box_3', + background=nord['nord0'], + foreground=nord['nord13'], + fontsize=30, + close_button_location='right', + text_closed='\uf100', + text_open='\uf101', + padding=15, + widgets=[ + widget.OpenWeather( + background=nord['nord15'], + foreground=nord['nord0'], + cityid='4198514', + app_key='*****', + metric=False), + widget.Net( + background=nord['nord10'], + foreground=nord['nord0'], + interface='net0'), + widget.Memory( + background=nord['nord14'], + foreground=nord['nord0']), + widget.CPU( + background=nord['nord13'], + foreground=nord['nord0']), + widget.ThermalSensor( + background=nord['nord13'], + foreground=nord['nord0'], + tag_sensor='Package id 0', + format='{temp:.0f}{unit}'), + widget.DF( + background=nord['nord12'], + foreground=nord['nord0'], + warn_space=40, + visible_on_warn=True), + widget.DF( + background=nord['nord12'], + foreground=nord['nord0'], + partition='/home', + warn_space=40, + visible_on_warn=True), + widget.ThermalSensor( + background=nord['nord12'], + foreground=nord['nord0'], + tag_sensor='Composite', + format='NVME: {temp:.0f}{unit}'), + widget.Spacer( + background=nord['nord0'], + length=8 + ), + ] + ), + widget.Spacer( + background=nord['nord0'], + length=6 + ), + clock, + widget.WidgetBox( + name='shutdown', + background=nord['nord11'], + foreground=nord['nord0'], + fontsize=30, + close_button_location='right', + text_closed='\uf100', + text_open='\uf101', + padding=15, + widgets=[ + widget.QuickExit( + background=nord['nord11'], + foreground=nord['nord0'], + fontsize=24, + default_text='\uf1e2' + ), + ], + ), + widget.Spacer( + background=nord['nord11'], + length=4 + ), + ], + size=32, + border_width=[0, 0, 0, 0], + border_color=[nord['nord10'], nord['nord10'], nord['nord10'], nord['nord10']], + margin=4, + ), + wallpaper = get_wallpaper(), wallpaper_mode='fill', ), ] @@ -256,9 +950,12 @@ floating_layout = layout.Floating( Match(wm_class="ssh-askpass"), # ssh-askpass Match(title="branchdialog"), # gitk Match(title="pinentry"), # GPG key password entry - ] + ], + border_width=4, + border_focus=nord['nord11'], + border_normal=nord['nord10'], ) -auto_fullscreen = True +auto_fullscreen = False focus_on_window_activation = "smart" reconfigure_screens = True @@ -278,4 +975,34 @@ wl_input_rules = None # We choose LG3D to maximize irony: it is a 3D non-reparenting WM written in # java that happens to be on java's whitelist. # wmname = "LG3D" -wmname = "qtile" +wmname = f"qtile {VERSION}" + +#mod_keys = { + #'mod4':'Super', + #'shift':'Shift', + #'control':'Control', + #'space':'Space', + #} +# +#hot_keys = [] +# +#for key in keys: + #if isinstance(key, Key): + #key_modifiers = ' + '.join([mod_keys[modifier] for modifier in key.modifiers]) + #if len(key.key) == 1: + #hot_keys.append(f"{key_modifiers} + {key.key}: {key.desc}\n") + #elif len(key.key) > 1: + #hot_keys.append(f"{key_modifiers} + {key.key.title()}: {key.desc}\n") +#for key in keys: + #if isinstance(key, KeyChord): + #key_modifiers = ' + '.join([mod_keys[modifier] for modifier in key.modifiers]) + #hot_keys.append(f"{key_modifiers} + {key.key}: {key.name.upper()}\n") + #for sub in key.submappings: + #if isinstance(sub, Key): + #hot_keys.append(f" {sub.key}: {sub.desc}\n") + #elif isinstance(key, KeyChord): + #hot_keys.append(f" {sub.key}: {sub.name.upper()}\n") + #for map in sub.submappings: + #hot_keys.append(f" {map.key}: {map.desc}\n") +# +#print(''.join(hot_keys)) diff --git a/.config/qtile/config.py.old b/.config/qtile/config.py.old new file mode 100644 index 0000000..1de1824 --- /dev/null +++ b/.config/qtile/config.py.old @@ -0,0 +1,440 @@ +# Copyright (c) 2010 Aldo Cortesi +# Copyright (c) 2010, 2014 dequis +# Copyright (c) 2012 Randall Mmeasure_mem='G'# Copyright (c) 2012-2014 Tycho Andersen +# Copyright (c) 2012 Craig Barnes +# Copyright (c) 2013 horsik +# Copyright (c) 2013 Tao Sauvage +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +# SOFTWARE. + +from libqtile import bar, layout, widget, extension +from libqtile.config import Click, Drag, Group, Key, Match, Screen, ScratchPad, DropDown +from libqtile.lazy import lazy +from libqtile.utils import guess_terminal +from unicodes import left_arrow, right_arrow, right_half_circle, lower_left_triangle + +mod = "mod4" +terminal = guess_terminal() +rofi= 'rofi -combi-modi window,drun,ssh -theme nord -font "hack 10" -show drun -icon-theme "Papirus" -show-icons' + +colors = { + 'purple':'#52497e', + 'teal':'#559d92', + 'dark_orange':'#9d6e55', + 'orange':'#e7510b', + 'dark_red':'#9d5560', + 'dark_blue':'#2e3440', + 'light_blue':'#8fbcbb', + 'blue':'#5e81ac', + 'red':'#bf616a', + 'dark_text':'#d8dee9', + } + +nord = { + 'nord0':'#2E3440', + 'nord1':'#3B4252', + 'nord2':'#434C5E', + 'nord3':'#4C566A', + 'nord4':'#D8DEE9', + 'nord5':'#E5E9F0', + 'nord6':'#ECEFF4', + 'nord7':'#8FBCBB', + 'nord8':'#88C0D0', + 'nord9':'#81A1C1', + 'nord10':'#5E81AC', + 'nord11':'#BF616A', + 'nord12':'#D08770', + 'nord13':'#EBCB8B', + 'nord14':'#A3BE8C', + 'nord15':'#B48EAD', + } + +keys = [ + # A list of available commands that can be bound to keys can be found + # at https://docs.qtile.org/en/latest/manual/config/lazy.html + # Switch between windows + Key([mod], "h", lazy.layout.left(), desc="Move focus to left"), + Key([mod], "l", lazy.layout.right(), desc="Move focus to right"), + Key([mod], "j", lazy.layout.down(), desc="Move focus down"), + Key([mod], "k", lazy.layout.up(), desc="Move focus up"), + Key([mod], "space", lazy.layout.next(), desc="Move window focus to other window"), + # Move windows between left/right columns or move up/down in current stack. + # Moving out of range in Columns layout will create new column. + Key([mod, "shift"], "h", lazy.layout.shuffle_left(), desc="Move window to the left"), + Key([mod, "shift"], "l", lazy.layout.shuffle_right(), desc="Move window to the right"), + Key([mod, "shift"], "j", lazy.layout.shuffle_down(), desc="Move window down"), + Key([mod, "shift"], "k", lazy.layout.shuffle_up(), desc="Move window up"), + # Grow windows. If current window is on the edge of screen and direction + # will be to screen edge - window would shrink. + Key([mod, "control"], "h", lazy.layout.grow_left(), desc="Grow window to the left"), + Key([mod, "control"], "l", lazy.layout.grow_right(), desc="Grow window to the right"), + Key([mod, "control"], "j", lazy.layout.grow_down(), desc="Grow window down"), + Key([mod, "control"], "k", lazy.layout.grow_up(), desc="Grow window up"), + Key([mod], "n", lazy.layout.normalize(), desc="Reset all window sizes"), + # Toggle between split and unsplit sides of stack. + # Split = all windows displayed + # Unsplit = 1 window displayed, like Max layout, but still with + # multiple stack panes + Key( + [mod, "shift"], + "Return", + lazy.layout.toggle_split(), + desc="Toggle between split and unsplit sides of stack", + ), + Key([mod], "Return", lazy.spawn(terminal), desc="Launch terminal"), + # Toggle between different layouts as defined below + Key([mod], "Tab", lazy.next_layout(), desc="Toggle between layouts"), + Key([mod], "w", lazy.window.kill(), desc="Kill focused window"), + Key([mod, "control"], "r", lazy.reload_config(), desc="Reload the config"), + Key([mod, "control"], "q", lazy.shutdown(), desc="Shutdown Qtile"), + Key([mod, "control"], "s", lazy.hide_show_bar()), + # Key([mod], "r", lazy.spawncmd(), desc="Spawn a command using a prompt widget"), + Key([mod], "r", lazy.run_extension(extension.DmenuRun(dmenu_prompt = ">"))), + Key([mod], "q", lazy.spawn(rofi), desc="Launch rofi"), + Key([mod], "z", lazy.run_extension(extension.WindowList())), +] + +groups = [Group(i) for i in "123456789"] + +for i in groups: + keys.extend( + [ + # mod1 + letter of group = switch to group + Key( + [mod], + i.name, + lazy.group[i.name].toscreen(), + desc="Switch to group {}".format(i.name), + ), + # mod1 + shift + letter of group = switch to & move focused window to group + #Key( + #[mod, "shift"], + #i.name, + #lazy.window.togroup(i.name, switch_group=True), + #desc="Switch to & move focused window to group {}".format(i.name), + #), + # Or, use below if you prefer not to switch to that group. + # # mod1 + shift + letter of group = move focused window to group + Key( + [mod, "shift"], + i.name, + lazy.window.togroup(i.name), + desc="move focused window to group {}".format(i.name) + ), + ] + ) + +layouts = [ + #layout.Columns(border_focus_stack=["#d75f5f", "#8f3d3d"], border_width=4), + # Try more layouts by unleashing below layouts. + #layout.Stack(num_stacks=2), + #layout.Bsp(), + #layout.Matrix(), + #layout.MonadThreeCol( + #main_centered=True, + #new_client_position='after_current', + #border_focus=colors['red'], + #border_normal=colors['blue'], + #border_width=2, + #margin=4 + #), + layout.MonadTall( + border_focus=colors['red'], + border_normal=colors['blue'], + border_width=2, + margin=8 + ), + #layout.Spiral(), + layout.Max(), + #layout.MonadWide(), + #layout.RatioTile(), + #layout.Tile(), + #layout.TreeTab(), + #layout.VerticalTile(), + #layout.Zoomy(), +] + +widget_defaults = dict( + #font="sans", + font="Hack Nerd Font Mono", + fontsize=14, + padding=4, +) +extension_defaults = widget_defaults.copy() + +screens = [ + Screen( + bottom=bar.Bar( + [ + widget.GroupBox( + background=colors['blue'], + block_highlight_text_color=colors['red'], + disable_drag=True, + this_screen_border=nord['nord11'], + this_current_screen_border=nord['nord13'], + #active=nord['nord6'], + ), + #lower_left_triangle(colors['blue'], colors['dark_blue']), + #right_arrow(colors['dark_blue'], colors['blue']), + # widget.Prompt(), + widget.CurrentLayoutIcon( + background=colors['blue'], + foreground=colors['dark_text'], + ), + widget.WindowCount( + background=colors['dark_blue'], + foreground=colors['dark_text'], + ), + widget.TaskList( + background=colors['dark_blue'], + foreground=colors['dark_text'], + ), + #widget.WindowName( + #background=colors['dark_blue'], + #foreground=colors['dark_text'], + #), + widget.Chord( + chords_colors={ + "launch": ("#ff0000", "#ffffff"), + }, + name_transform=lambda name: name.upper(), + ), + # widget.TextBox("default config", name="default"), + # widget.TextBox("Press <M-r> to spawn", foreground="#d75f5f"), + # NB Systray is incompatible with Wayland, consider using StatusNotifier instead + # widget.StatusNotifier(), + widget.Systray( + background=colors['dark_blue'], + ), + widget.OpenWeather( + background=nord['nord15'], + foreground=colors['dark_blue'], + cityid='4198514', + app_key='*****', + metric=False, + ), + #widget.TextBox( + #padding=1, + #background=colors['dark_blue'], + #), + #lower_left_triangle(colors['dark_blue'], colors['blue']), + #left_arrow(colors['dark_blue'], colors['blue']), + widget.Net( + background=nord['nord10'], + #background=colors['blue'], + foreground=colors['dark_blue'], + interface='net0', + ), + #widget.TextBox( + #padding=1, + #background=colors['blue'], + #), + #lower_left_triangle(colors['blue'], colors['dark_blue']), + #left_arrow(colors['blue'], colors['dark_blue']), + widget.Memory( + background=nord['nord14'], + #background=colors['dark_blue'], + foreground=colors['dark_blue'], + ), + #widget.TextBox( + #padding=1, + #background=colors['dark_blue'], + #), + #lower_left_triangle(colors['dark_blue'], colors['blue']), + #left_arrow(colors['dark_blue'], colors['blue']), + widget.CPU( + background=nord['nord13'], + foreground=colors['dark_blue'], + ), + widget.ThermalSensor( + tag_sensor='Package id 0', + format='{temp:.0f}{unit}', + background=nord['nord13'], + #background=colors['blue'], + foreground=colors['dark_blue'], + ), + widget.DF( + background=nord['nord12'], + foreground=colors['dark_blue'], + warn_sapce=40, + visible_on_warn=True, + ), + widget.DF( + background=nord['nord12'], + foreground=colors['dark_blue'], + partition='/home', + warn_sapce=40, + visible_on_warn=True, + ), + widget.ThermalSensor( + tag_sensor='Composite', + format='NVME:{temp:.0f}{unit}', + background=nord['nord12'], + #background=colors['blue'], + foreground=colors['dark_blue'], + ), + #widget.TextBox( + #padding=1, + #background=colors['blue'], + #), + #lower_left_triangle(colors['blue'], colors['dark_blue']), + #left_arrow(colors['blue'], colors['dark_blue']), + widget.Clock( + background=nord['nord11'], + foreground=colors['dark_blue'], + format="%Y-%m-%d %a %H:%M" + ), + # widget.QuickExit(), + ], + size=26, + border_width=[2, 2, 2, 2], # Draw top and bottom borders + border_color=[colors['blue'], colors['blue'], colors['blue'], colors['blue']], + margin=4, + ), + wallpaper='~/.config/qtile/background.jpg', + wallpaper_mode='fill', + ), + Screen( + bottom=bar.Bar([ + widget.GroupBox( + background=colors['blue'], + block_highlight_text_color=colors['red'], + disable_drag=True, + this_screen_border=nord['nord11'], + this_current_screen_border=nord['nord13'], + #active=nord['nord15'], + ), + widget.CurrentLayoutIcon( + background=colors['blue'], + foreground=colors['dark_blue'], + ), + widget.WindowCount( + background=colors['dark_blue'], + foreground=colors['dark_text'], + ), + widget.TaskList( + background=colors['dark_blue'], + foreground=colors['dark_text'], + ), + #widget.WindowName( + #background=colors['dark_blue'], + #foreground=colors['dark_text'], + #), + widget.Clock( + background=nord['nord11'], + foreground=colors['dark_blue'], + format="%Y-%m-%d %a %H:%M" + ), + ], + size=26, + border_width=[2, 2, 2, 2], # Draw top and bottom borders + border_color=[colors['blue'], colors['blue'], colors['blue'], colors['blue']], + margin=4, + ), + wallpaper='~/.config/qtile/background.jpg', + wallpaper_mode='fill', + ), + Screen( + bottom=bar.Bar([ + widget.GroupBox( + background=colors['blue'], + block_highlight_text_color=colors['red'], + disable_drag=True, + this_screen_border=nord['nord11'], + this_current_screen_border=nord['nord13'], + #active=nord['nord15'], + ), + widget.CurrentLayoutIcon( + background=colors['blue'], + foreground=colors['dark_text'], + ), + widget.WindowCount( + background=colors['dark_blue'], + foreground=colors['dark_text'], + ), + widget.TaskList( + background=colors['dark_blue'], + foreground=colors['dark_text'], + ), + #widget.WindowName( + #background=colors['dark_blue'], + #foreground=colors['dark_text'], + #), + widget.Clock( + background=nord['nord11'], + foreground=colors['dark_blue'], + format="%Y-%m-%d %a %H:%M" + ), + ], + size=26, + border_width=[2, 2, 2, 2], # Draw top and bottom borders + border_color=[colors['blue'], colors['blue'], colors['blue'], colors['blue']], + margin=4, + ), + wallpaper='~/.config/qtile/background.jpg', + wallpaper_mode='fill', + ), +] + +# Drag floating layouts. +mouse = [ + Drag([mod], "Button1", lazy.window.set_position_floating(), start=lazy.window.get_position()), + Drag([mod], "Button3", lazy.window.set_size_floating(), start=lazy.window.get_size()), + Click([mod], "Button2", lazy.window.bring_to_front()), +] + +dgroups_key_binder = None +dgroups_app_rules = [] # type: list +follow_mouse_focus = True +bring_front_click = False +cursor_warp = False +floating_layout = layout.Floating( + float_rules=[ + # Run the utility of `xprop` to see the wm class and name of an X client. + *layout.Floating.default_float_rules, + Match(wm_class="confirmreset"), # gitk + Match(wm_class="makebranch"), # gitk + Match(wm_class="maketag"), # gitk + Match(wm_class="ssh-askpass"), # ssh-askpass + #Match(wm_class="VirtualBox Machine"), # virt box + Match(title="branchdialog"), # gitk + Match(title="pinentry"), # GPG key password entry + ] +) +auto_fullscreen = False +focus_on_window_activation = "smart" +reconfigure_screens = True + +# If things like steam games want to auto-minimize themselves when losing +# focus, should we respect this or not? +auto_minimize = True + +# When using the Wayland backend, this can be used to configure input devices. +wl_input_rules = None + +# XXX: Gasp! We're lying here. In fact, nobody really uses or cares about this +# string besides java UI toolkits; you can see several discussions on the +# mailing lists, GitHub issues, and other WM documentation that suggest setting +# this string if your java app doesn't work correctly. We may as well just lie +# and say that we're a working one by default. +# +# We choose LG3D to maximize irony: it is a 3D non-reparenting WM written in +# java that happens to be on java's whitelist. +# wmname = "LG3D" +wmname = "qtile" diff --git a/.config/spotifyd/spotifyd.conf b/.config/spotifyd/spotifyd.conf index 42a54c5..dc4546f 100644 --- a/.config/spotifyd/spotifyd.conf +++ b/.config/spotifyd/spotifyd.conf @@ -3,7 +3,7 @@ username = "21trp6fa6clzosibpccdvipma" # Your Spotify account password. -# password = "yourpassword" +#password = "" # A command that gets executed and can be used to # retrieve your password. diff --git a/.tmux.conf b/.tmux.conf index 96d1df4..8c31223 100644 --- a/.tmux.conf +++ b/.tmux.conf @@ -19,14 +19,28 @@ bind j select-pane -D bind k select-pane -U bind l select-pane -R -set-option -g status on -set-option -g status-interval 2 -set-option -g status-justify "centre" -set-option -g status-left-length 60 -set-option -g status-right-length 90 -set-option -g status-left "#(~/share/tmux-powerline/powerline.sh left)" -set-option -g status-right "#(~/share/tmux-powerline/powerline.sh right)" -set-hook -g session-created 'run-shell "~/share/tmux-powerline/powerline.sh init"' # prettifies the window-status segments +#set-option -g status on +#set-option -g status-interval 2 +#set-option -g status-justify "centre" +#set-option -g status-left-length 60 +#set-option -g status-right-length 90 +#set-option -g status-left "#(~/share/tmux-powerline/powerline.sh left)" +#set-option -g status-right "#(~/share/tmux-powerline/powerline.sh right)" +#set-hook -g session-created 'run-shell "~/share/tmux-powerline/powerline.sh init"' # prettifies the window-status segments -bind C-[ run '~/share/tmux-powerline/mute_powerline.sh left' # Mute left statusbar. -bind C-] run '~/share/tmux-powerline/mute_powerline.sh right' # Mute right statusbar. +#bind C-[ run '~/share/tmux-powerline/mute_powerline.sh left' # Mute left statusbar. +#bind C-] run '~/share/tmux-powerline/mute_powerline.sh right' # Mute right statusbar. + +# List of plugins +set -g @plugin 'tmux-plugins/tpm' +set -g @plugin 'tmux-plugins/tmux-sensible' +set -g @plugin "arcticicestudio/nord-tmux" + +# Other examples: +# set -g @plugin 'github_username/plugin_name' +# set -g @plugin 'github_username/plugin_name#branch' +# set -g @plugin 'git@github.com:user/plugin' +# set -g @plugin 'git@bitbucket.com:user/plugin' + +# Initialize TMUX plugin manager (keep this line at the very bottom of tmux.conf) +run '~/.tmux/plugins/tpm/tpm' diff --git a/.vimrc b/.vimrc index bb11a37..284b22a 100644 --- a/.vimrc +++ b/.vimrc @@ -9,11 +9,18 @@ set copyindent set number +set laststatus=2 +" +call plug#begin(expand('~/.vim/plugged')) +" Color Scheme +Plug 'arcticicestudio/nord-vim' +Plug 'itchyny/lightline.vim' +Plug 'ap/vim-css-color' +Plug 'ycm-core/YouCompleteMe' +Plug 'preservim/nerdtree' +call plug#end() + colorscheme nord -let g:airline_theme='base16_nord' - -" python3 from powerline.vim import setup as powerline_setup -" python3 powerline_setup() -" python3 del powerline_setup - -" set laststatus=2 +let g:lightline = { + \ 'colorscheme': 'nord', + \ } diff --git a/.xinitrc b/.xinitrc index 159e4d9..d5d8e3e 100644 --- a/.xinitrc +++ b/.xinitrc @@ -8,15 +8,7 @@ sysmodmap=/etc/X11/xinit/.Xmodmap # merge in defaults and keymaps if [ -f $sysresources ]; then - - - - - - - xrdb -merge $sysresources - fi if [ -f $sysmodmap ]; then @@ -24,15 +16,7 @@ if [ -f $sysmodmap ]; then fi if [ -f "$userresources" ]; then - - - - - - - xrdb -merge "$userresources" - fi if [ -f "$usermodmap" ]; then @@ -48,6 +32,5 @@ if [ -d /etc/X11/xinit/xinitrc.d ] ; then unset f fi -# exec /usr/local/bin/dwm -# exec picom -b +picom --animations --no-fading-openclose -b exec qtile start