From 21a27a9bda08407c102bfb84ec76b1ab86d3d0ea Mon Sep 17 00:00:00 2001 From: Andrew Scott Date: Fri, 17 Dec 2021 23:19:27 -0500 Subject: [PATCH] Resolve conflicts from git rebase maiN --- .gitignore.single-monitor | 23 ++++++ Xresources | 83 ++++++++++++++++++++++ config/bspwm/bspwmrc | 51 ++++++++++++++ config/polybar/config.ini | 136 ++++++++++++++++++++++++++++++++++++ config/sxhkd/sxhkdrc | 142 ++++++++++++++++++++++++++++++++++++++ install.sh | 82 ++++++++++++++++++++++ xinitrc | 1 + 7 files changed, 518 insertions(+) create mode 100644 .gitignore.single-monitor create mode 100644 Xresources create mode 100755 config/bspwm/bspwmrc create mode 100644 config/polybar/config.ini create mode 100644 config/sxhkd/sxhkdrc create mode 100755 install.sh diff --git a/.gitignore.single-monitor b/.gitignore.single-monitor new file mode 100644 index 0000000..171e3ef --- /dev/null +++ b/.gitignore.single-monitor @@ -0,0 +1,23 @@ +config/* +!config/bspwm +config/bspwm/* +!config/bspwm/bspwmrc +!config/dunst +!config/kitty +!config/nvim +config/nvim/* +!config/nvim/init.vim +!config/polybar +config/polybar/* +!config/polybar/config.ini +!config/polybar/colors.ini +!config/polybar/modules.ini +!config/polybar/custom_modules.ini +!config/ranger +!config/rofi +!config/sxhkd +config/sxhkd/* +!config/sxhkd/sxhkdrc +emacs.d/* +!emacs.d/init.el +!emacs.d/snippets diff --git a/Xresources b/Xresources new file mode 100644 index 0000000..e6c951b --- /dev/null +++ b/Xresources @@ -0,0 +1,83 @@ +! ----------------------------------------------------------------------------- +! Based on: gruvbox-dark.xresources +! Description: Retro groove colorscheme generalized +! Source: https://github.com/morhetz/gruvbox-generalized +! ----------------------------------------------------------------------------- + +Xft.autohint: 0 +Xft.lcdfilter: lcddefault +Xft.hintstyle: hintfull +Xft.hinting: 1 +Xft.antialias: 1 +Xft.rgba: rgb + +! hard contrast: *background: #1d2021 +! medium contrast: *background: #282828 +! soft contrast: *background: #32302f +*background: #1d2021 +*foreground: #ebdbb2 +! Black + DarkGrey +*color0: #282828 +*color8: #928374 +! DarkRed + Red +*color1: #cc241d +*color9: #fb4934 +! DarkGreen + Green +*color2: #98971a +*color10: #b8bb26 +! DarkYellow + Yellow +*color3: #d79921 +*color11: #fabd2f +! DarkBlue + Blue +*color4: #458588 +*color12: #83a598 +! DarkMagenta + Magenta +*color5: #b16286 +*color13: #d3869b +! DarkCyan + Cyan +*color6: #689d6a +*color14: #8ec07c +! LightGrey + White +*color7: #a89984 +*color15: #ebdbb2 + +!!! urxvt +URxvt.perl-ext-common: default,matcher +URxvt*buffered: true +URxvt*saveLines: 5000 +URxvt*cursorBlink: true +URxvt*borderless: 1 +URxvt*internalBorder: 20 +URxvt*scrollBar: false +URxvt.url-launcher: /usr/bin/xdg-open +URxvt.matcher.button: 1 +URxvt.clipboard.autocopy: true + +! do not scroll with output +URxvt*scrollTtyOutput: false +! scroll in relation to buffer (with mouse scroll or Shift+Page Up) +URxvt*scrollWithBuffer: true +! scroll back to the bottom on keypress +URxvt*scrollTtyKeypress: true +! disable scrollback buffer in secondary screen (allows scrolling pager when using 'less' etc) +URxvt.secondaryScreen: 1 +URxvt.secondaryScroll: 0 +! Disable printing the terminal contents when pressing PrintScreen. +URxvt.print-pipe: "cat > /dev/null" +!! copy/paste +! disable default ctrl-shift binding +URxvt.iso14755: false +URxvt.iso14755_52: false +! disable default copy/paste bindings +URxvt.keysym.Control-Meta-c: builtin-string: +URxvt.keysym.Control-Meta-v: builtin-string: +! new copy/paste bindings +URxvt.keysym.Shift-Control-V: eval:paste_clipboard +URxvt.keysym.Shift-Control-C: eval:selection_to_clipboard +!! font +!URxvt.letterSpace: -1 +URxvt.font: xft:Hack:regular:size=12, \ + xft:Font Awesome 5 Brands:Regular:size=10, \ + xft:Font Awesome 5 Free:Solid:size=10, \ + xft:Font Awesome 5 Free:Regular:size=10 + diff --git a/config/bspwm/bspwmrc b/config/bspwm/bspwmrc new file mode 100755 index 0000000..7dd4903 --- /dev/null +++ b/config/bspwm/bspwmrc @@ -0,0 +1,51 @@ +#!/bin/bash + +bspc monitor DP-0 -d 1 2 3 4 5 6 7 8 9 10 + +bspc config border_width 2 +bspc config window_gap 5 +bspc config top_padding 32 +bspc config bottom_padding 0 +bspc config split_ratio 0.50 +bspc config borderless_monocle true +bspc config gapless_monocle true + +bspc rule -a Galculator state=floating +bspc rule -a vlc state=floating +bspc rule -a Blueman-manager state=floating +bspc rule -a Bitwarden state=floating +bspc rule -a Leafpad state=floating + +bspc rule -a firefox desktop='^1' follow=on +bspc rule -a Chromium desktop='^2' follow=on +bspc rule -a Evince desktop='4' follow=on +bspc rule -a Soffice desktop='^4' follow=on +bspc rule -a Xsane desktop='^4' follow=on state=floating +bspc rule -a kitty desktop='^6' follow=on +bspc rule -a Konsole desktop='^6' follow=on +bspc rule -a URxvt desktop='^6' follow=on +bspc rule -a Eclipse desktop='^6' follow=on +bspc rule -a Ranger desktop='^3' follow=on +bspc rule -a Thunar desktop='3' follow=on +bspc rule -a Steam desktop='^5' follow=on state=floating +bspc rule -a Lutris desktop='^5' follow=on state=floating +bspc rule -a origin.exe desktop='^5' state=floating +bspc rule -a Emacs desktop='^7' follow=on state=tiled +bspc rule -a jetbrains-pycharm-ce desktop='^7' follow=on +bspc rule -a Clementine desktop='^8' follow=on +bspc rule -a Spotify desktop='^8' follow=on +bspc rule -a Element desktop='^9' +bspc rule -a Slack desktop='^9' +bspc rule -a tutanota-desktop desktop='^10' + +### Focus on 1st workspace by default +bspc desktop -f 1 + +### Autostart +grep -x sxhkd > /dev/null || sxhkd & +xss-lock -n /usr/lib/xsecurelock/dimmer -l -- xsecurelock & +xidlehook --not-when-audio --not-when-fullscreen --timer 360 "xset s activate" "" & +~/.local/bin/single-polybar-launcher & +sh ~/.fehbg & +dex -ae bspwm & +/usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1 & diff --git a/config/polybar/config.ini b/config/polybar/config.ini new file mode 100644 index 0000000..efbee39 --- /dev/null +++ b/config/polybar/config.ini @@ -0,0 +1,136 @@ + +[global/wm] +include-file = ~/.config/polybar/colors.ini +include-file = ~/.config/polybar/modules.ini +include-file = ~/.config/polybar/custom_modules.ini + +margin-bottom = 0 +margin-top = 0 + +[bar/one] +monitor = DP-0 +monitor-fallback = +monitor-strict = false +enable-ipc = true +override-redirect = true +bottom = false +fixed-center = true +width = 100% +height = 32 +offset-x = 0% +offset-y = 0% +;dpi-x = 216 +;dpi-y = 216 +background = ${color.background} +foreground = ${color.foreground} +radius-top = 0.0 +radius-bottom = 0.0 +line-size = 0 +line-color = ${color.background} +border-bottom-size = 0 +border-bottom-color = ${color.foreground} +padding = 1 +module-margin-left = 1 +module-margin-right = 0 +seperator = +dim-value = 1.0 +locale = en_US.UTF-8 + +font-0 = Hack:size=10;3 +font-1 = Font Awesome 5 Free:style=Solid:size=12;3 +font-2 = Font Awesome 5 Free:style=Regular:size=12;3 +font-3 = Font Awesome 5 Brands:style=Regular:size=12;3 + +modules-left = workspaces sep title +modules-center = spotify +modules-right = keyboard sep pulseaudio-control sep date sep powermenu + +tray-position = right +tray-detached = false +tray-maxsize = 16 +tray-background = ${color.background} +tray-offset-x = 0 +tray-offset-y = 0 +tray-padding = 0 +tray-scale = 1.0 + +wm-name = bspwm +wm-restack = bspwm +scroll-up = bspwm-desknext +scroll-down = bspwm-deskprev +click-left = +click-middle = +click-right = +;scroll-up = bspc desktop -f prev.local +;;scroll-down = bspc desktop -f next.local +;double-click-left = +;double-click-middle = +;double-click-right = +;cursor-click = +;cursor-scroll = +; +;[bar/two] +;monitor = eDP-1 +;monitor-fallback = +;monitor-strict = false +;enable-ipc = true +;override-redirect = true +;bottom = true +;fixed-center = true +;width = 100% +;height = 32 +;offset-x = 0% +;offset-y = 0% +;background = ${color.background} +;foreground = ${color.foreground} +;radius-top = 0.0 +;radius-bottom = 0.0 +;line-size = 0 +;line-color = ${color.background} +;border-bottom-size = 0 +;border-bottom-color = ${color.foreground} +;padding = 1 +;module-margin-left = 1 +;module-margin-right = 1 +;seperator = +;dim-value = 1.0 +;locale = en_US.UTF-8 +; +;font-0 = Hack:size=10;3 +;font-1 = Font Awesome 5 Free:style=Solid:size=12;3 +;font-2 = Font Awesome 5 Free:style=Regular:size=12;3 +;font-3 = Font Awesome 5 Brands:style=Regular:size=12;3 +; +;modules-left = workspaces sep title +;modules-center = spotify +;modules-right = cpu sep memory sep filesystem +; +;tray-position = none +;tray-detached = false +;tray-maxsize = 16 +;tray-background = ${color.background} +;tray-offset-x = 0 +;tray-offset-y = 0 +;tray-padding = 0 +;tray-scale = 1.0 +; +;wm-name = bspwm +;wm-restack = bspwm +;scroll-up = bspwm-desknext +;scroll-down = bspwm-deskprev +;click-left = +;click-middle = +;click-right = +;;scroll-up = bspc desktop -f prev.local +;;scroll-down = bspc desktop -f next.local +;double-click-left = +;double-click-middle = +;double-click-right = +;cursor-click = +;cursor-scroll = +; +;[settings] +;throttle-output = 5 +;throttle-output-for = 10 +;screenchange-reload = false +; diff --git a/config/sxhkd/sxhkdrc b/config/sxhkd/sxhkdrc new file mode 100644 index 0000000..711bb74 --- /dev/null +++ b/config/sxhkd/sxhkdrc @@ -0,0 +1,142 @@ +# +# wm independent hotkeys +# + +# terminal emulator +super + Return + kitty + +# program launcher +super + @space + rofi -modi drun, run -show drun + +# power menu +super + @End + rofi -show power-menu -modi power-menu:/usr/bin/rofi-power-menu + +# make sxhkd reload its configuration files: +super + Escape + pkill -USR1 -x sxhkd + +# Show list of open windows +alt + @Tab + rofi -show window + +# Lock the screen +ctrl + alt + l + xset s activate + +# Screenshot +Print + maim | xclip -selection clipboard -t image/png + +alt + Print + maim -s | xclip -selection clipboard -t image/png + +shift + Print + maim -i $(xdotool getactivewindow) | xclip -selection clipboard -t image/png + +# bspwm hotkeys +# + +# quit/restart bspwm +super + alt + {q,r} + bspc {quit,wm -r} + +# close and kill +super + {_,shift + }q + bspc node -{c,k} + +# alternate between the tiled and monocle layout +super + m + bspc desktop -l next + +# send the newest marked node to the newest preselected node +super + y + bspc node newest.marked.local -n newest.!automatic.local + +# swap the current node and the biggest window +super + g + bspc node -s biggest.window + +# +# state/flags +# + +# set the window state +super + {t,shift + t,s,f} + bspc node -t {tiled,pseudo_tiled,floating,fullscreen} + +# set the node flags +super + ctrl + {m,x,y,z} + bspc node -g {marked,locked,sticky,private} + +# +# focus/swap +# + +# focus the node in the given direction +super + {_,shift + }{h,j,k,l} + bspc node -{f,s} {west,south,north,east} + +# focus the node for the given path jump +super + {p,b,comma,period} + bspc node -f @{parent,brother,first,second} + +# focus the next/previous window in the current desktop +super + {_,shift + }c + bspc node -f {next,prev}.local.!hidden.window + +# focus the next/previous desktop in the current monitor +super + bracket{left,right} + bspc desktop -f {prev,next}.local + +# focus the last node/desktop +super + {grave,Tab} + bspc {node,desktop} -f last + +# focus the older or newer node in the focus history +super + {o,i} + bspc wm -h off; \ + bspc node {older,newer} -f; \ + bspc wm -h on + +# focus or send to the given desktop +super + {_,shift + }{1-9,0} + bspc {desktop -f,node -d} '^{1-9,10}' + +# +# preselect +# + +# preselect the direction +super + ctrl + {h,j,k,l} + bspc node -p {west,south,north,east} + +# preselect the ratio +super + ctrl + {1-9} + bspc node -o 0.{1-9} + +# cancel the preselection for the focused node +super + ctrl + space + bspc node -p cancel + +# cancel the preselection for the focused desktop +super + ctrl + shift + space + bspc query -N -d | xargs -I id -n 1 bspc node id -p cancel + +# +# move/resize +# + +# expand a window by moving one of its side outward +super + alt + {h,j,k,l} + bspc node -z {left -20 0,bottom 0 20,top 0 -20,right 20 0} + +# contract a window by moving one of its side inward +super + alt + shift + {h,j,k,l} + bspc node -z {right -20 0,top 0 20,bottom 0 -20,left 20 0} + +# move a floating window +super + {Left,Down,Up,Right} + bspc node -v {-20 0,0 20,0 -20,20 0} diff --git a/install.sh b/install.sh new file mode 100755 index 0000000..dcdb344 --- /dev/null +++ b/install.sh @@ -0,0 +1,82 @@ +#!/bin/bash +backup=~/dotfiles_backup +log_file=~/dotfiles_install.log +dotfiles_dir=~/.dotfiles +config_dir=~/.config +bin_dir=~/.local/bin + + +## Logging +exec 3>&1 4>&2 +trap 'exec 2>&4 1>&3' 0 1 2 3 +exec 1>$log_file 2>&1 + +## Backup current files and folders +mkdir -p $backup +cp -a ~/.bash_profile $backup/ +cp -a ~/.bashrc $backup/ +cp -a ~/.profile $backup/ +cp -a ~/.emacs $backup/ +cp -a ~/.emacs.d $backup/ +cp -a ~/.Xresources $backup/ +cp -a $config_dir/bspwm $backup/ +cp -a $config_dir/dunst $backup/ +cp -a $config_dir/kitty $backup/ +cp -a $config_dir/nvim $backup/ +cp -a $config_dir/polybar $backup/ +cp -a $config_dir/ranger $backup/ +cp -a $bin_dir $backup/ + +# Delete current files and folders +rm -rf ~/.bash_profile +rm -rf ~/.bashrc +rm -rf ~/.profile +rm -rf ~/.emacs +rm -rf ~/.emacs.d +rm -rf ~/.Xresources +rm -rf $config_dir/bspwm +rm -rf $config_dir/dunst +rm -rf $config_dir/kitty +rm -rf $config_dir/nvim +rm -rf $config_dir/polybar +rm -rf $config_dir/ranger/ +rm -rf $bin_dir + +# Create HOME symlinks +ln -sf $dotfiles_dir/bashrc ~/.bashrc +ln -sf $dotfiles_dir/bash_profile ~/.bash_profile +ln -sf $dotfiles_dir/profile ~/.profile +ln -sf $dotfiles_dir/emacs.d ~/.emacs.d +ln -sf $dotfiles_dir/xinitrc ~/.xinitrc +ln -sf $dotfiles_dir/vimrc ~/.vimrc +ln -sf $dotfiles_dir/Xresources ~/.Xresources + +# Create $config_dir, sub-directories, and symlinks +mkdir -p $config_dir/{bspwm,dunst,kitty,nvim,polybar,ranger,rofi,sxhkd} +ln -sf $dotfiles_dir/config/bspwm/bspwmrc $config_dir/bspwm/bspwmrc +ln -sf $dotfiles_dir/config/dunst/dunstrc $config_dir/dunst/dunstrc +ln -sf $dotfiles_dir/config/kitty/kitty.conf $config_dir/kitty/kitty.conf +ln -sf $dotfiles_dir/config/kitty/gruvbox.conf $config_dir/kitty/gruvbox.conf +ln -sf $dotfiles_dir/config/nvim/init.vim $config_dir/nvim/init.vim +ln -sf $dotfiles_dir/config/polybar/config.ini $config_dir/polybar/config.ini +ln -sf $dotfiles_dir/config/polybar/colors.ini $config_dir/polybar/colors.ini +ln -sf $dotfiles_dir/config/polybar/modules.ini $config_dir/polybar/modules.ini +ln -sf $dotfiles_dir/config/polybar/custom_modules.ini $config_dir/polybar/custom_modules.ini +ln -sf $dotfiles_dir/config/ranger/commands_full.py $config_dir/ranger/commands_full.py +ln -sf $dotfiles_dir/config/ranger/commands.py $config_dir/ranger/commands.py +ln -sf $dotfiles_dir/config/ranger/rc.conf $config_dir/ranger/rc.conf +ln -sf $dotfiles_dir/config/ranger/rifle.conf $config_dir/ranger/rifle.conf +ln -sf $dotfiles_dir/config/ranger/scope.sh $config_dir/ranger/scope.sh +ln -sf $dotfiles_dir/config/rofi/config.rasi $config_dir/rofi/config.rasi +ln -sf $dotfiles_dir/config/sxhkd/sxhkdrc $config_dir/sxhkd/sxhkdrc + +# Create $bin_dir and symlinks +mkdir -p $bin_dir +ln -sf $dotfiles_dir/bin/mirror-outputs $bin_dir +ln -sf $dotfiles_dir/bin/single-polybar-launcher $bin_dir +ln -sf $dotfiles_dir/bin/toggle-wifi $bin_dir + +# Finishing up +source ~/.bashrc +source ~/.bash_profile +xrdb ~/.Xresources diff --git a/xinitrc b/xinitrc index 610a1c4..3ce34b3 100644 --- a/xinitrc +++ b/xinitrc @@ -48,5 +48,6 @@ if [ -d /etc/X11/xinit/xinitrc.d ] ; then unset f fi +numlockx & xsetroot -cursor_name left_ptr & exec bspwm