remove bspwm, i3, qtile, spectrwm, and stumpwm
This commit is contained in:
parent
c785d3927c
commit
e26519b09d
@ -1,36 +0,0 @@
|
|||||||
#! /bin/sh
|
|
||||||
|
|
||||||
xdo kill $(xdo id -N Polybar)
|
|
||||||
i=0
|
|
||||||
monitors=$(bspc query -M --names)
|
|
||||||
for monitor in $monitors; do
|
|
||||||
MONITOR="$monitor" polybar panel &
|
|
||||||
i=$((i + 1))
|
|
||||||
done
|
|
||||||
if [ $i -eq 1 ]; then
|
|
||||||
bspc monitor -d 1 2 3 4 5 6 7 8 9 0
|
|
||||||
else
|
|
||||||
monitor1=$(echo $monitors | cut -d ' ' -f 1)
|
|
||||||
monitor2=$(echo $monitors | cut -d ' ' -f 2)
|
|
||||||
bspc monitor "$monitor2" -d 1 2 3 4 5 6 7 8 9
|
|
||||||
bspc monitor "$monitor1" -d 0
|
|
||||||
bspc monitor "$monitor1" -s "$monitor2"
|
|
||||||
bspc monitor "$monitor2" -f
|
|
||||||
fi
|
|
||||||
|
|
||||||
bspc config border_width 4
|
|
||||||
bspc config window_gap 12
|
|
||||||
|
|
||||||
sh ~/.config/bspwm/commands.sh theme --set
|
|
||||||
|
|
||||||
bspc config split_ratio 0.50
|
|
||||||
bspc config single_monocle false
|
|
||||||
bspc config borderless_monocle true
|
|
||||||
bspc config gapless_monocle true
|
|
||||||
|
|
||||||
bspc config pointer_follows_focus true
|
|
||||||
bspc config pointer_follows_monitor true
|
|
||||||
bspc config focus_follows_pointer true
|
|
||||||
|
|
||||||
bspc rule -a Gimp desktop='^8' state=floating follow=on
|
|
||||||
bspc rule -a jetbrains-studio:sun-awt-X11-XWindowPeer manage=off
|
|
@ -1,94 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
|
|
||||||
THEMES_PATH=~/.config/bspwm/themes
|
|
||||||
CURRENT_THEME_PATH="${THEMES_PATH}/theme.sh"
|
|
||||||
DEFAULT_THEME=lupan-dark
|
|
||||||
|
|
||||||
FONT='Iosevka Slab Light-12'
|
|
||||||
BAR_FONT="${FONT};5"
|
|
||||||
|
|
||||||
CMD="$1"
|
|
||||||
shift
|
|
||||||
|
|
||||||
# Determine current theme
|
|
||||||
THEME=
|
|
||||||
if [ -e "${CURRENT_THEME_PATH}" ]; then
|
|
||||||
. "${CURRENT_THEME_PATH}"
|
|
||||||
fi
|
|
||||||
THEME="${THEME:-$DEFAULT_THEME}"
|
|
||||||
|
|
||||||
list_themes() {
|
|
||||||
( cd "$THEMES_PATH" && ls *-theme.sh | sed 's/-theme.sh$//' | sort )
|
|
||||||
}
|
|
||||||
|
|
||||||
# Select next or named theme
|
|
||||||
if [ "$CMD" = theme -a "$1" = --next ]; then
|
|
||||||
NEXT=$(list_themes | grep -A 1 "^${THEME}\$" | tail -1)
|
|
||||||
if [ "$NEXT" = "$THEME" ]; then
|
|
||||||
THEME=$(list_themes | head -1)
|
|
||||||
elif [ "$THEME" = "" ]; then
|
|
||||||
THEME="${DEFAULT_THEME}"
|
|
||||||
else
|
|
||||||
THEME="$NEXT"
|
|
||||||
fi
|
|
||||||
elif [ "$CMD" = theme -a "$1" != --set ]; then
|
|
||||||
if [ "$1" = "" ]; then
|
|
||||||
exit
|
|
||||||
elif [ -e "${THEMES_PATH}/$1-theme.sh" ]; then
|
|
||||||
THEME="$1"
|
|
||||||
else
|
|
||||||
THEME="${DEFAULT_THEME}"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Load theme
|
|
||||||
THEME_PATH="${THEMES_PATH}/${THEME}-theme.sh"
|
|
||||||
if [ -e "${THEME_PATH}" ]; then
|
|
||||||
. "${THEME_PATH}"
|
|
||||||
else
|
|
||||||
. "${THEMES_PATH}/${DEFAULT_THEME}-theme.sh"
|
|
||||||
fi
|
|
||||||
|
|
||||||
dmenu() {
|
|
||||||
command dmenu -nb ${BAR_BG} -nf ${BAR_FG} -sb ${BAR_ACTIVE} -sf ${BAR_FG} -fn "${FONT}" $@
|
|
||||||
}
|
|
||||||
|
|
||||||
dmenu_run() {
|
|
||||||
command dmenu_run -nb ${BAR_BG} -nf ${BAR_FG} -sb ${BAR_ACTIVE} -sf ${BAR_FG} -fn "${FONT}" $@
|
|
||||||
}
|
|
||||||
|
|
||||||
set_theme() {
|
|
||||||
echo "THEME=${THEME}" > "${CURRENT_THEME_PATH}"
|
|
||||||
xrdb -merge <<EOF
|
|
||||||
polybar.background: ${BAR_BG}
|
|
||||||
polybar.foreground: ${BAR_FG}
|
|
||||||
polybar.active: ${BAR_ACTIVE}
|
|
||||||
polybar.urgent: ${BAR_URGENT}
|
|
||||||
polybar.empty: ${BAR_EMPTY}
|
|
||||||
polybar.font: ${BAR_FONT}
|
|
||||||
EOF
|
|
||||||
polybar-msg cmd restart
|
|
||||||
xsetroot -solid "${ROOT_BG}"
|
|
||||||
bspc config normal_border_color "${NORMAL_BORDER}"
|
|
||||||
bspc config focused_border_color "${FOCUS_BORDER}"
|
|
||||||
bspc config presel_feedback_color "${FOCUS_BORDER}"
|
|
||||||
sed -i "s/^colors: [*].*/colors: *$THEME/" ~/.config/alacritty/alacritty.yml
|
|
||||||
sed -i -E "s#(Net/ThemeName) .*#\1 \"${GTK_THEME}\"#" ~/.config/xsettingsd/xsettingsd.conf
|
|
||||||
pkill -HUP -x xsettingsd
|
|
||||||
emacsclient --eval "(my-select-theme '${EMACS_THEME})"
|
|
||||||
}
|
|
||||||
|
|
||||||
case "$CMD" in
|
|
||||||
theme)
|
|
||||||
set_theme
|
|
||||||
;;
|
|
||||||
dmenu|dmenu_run)
|
|
||||||
"$CMD" "$@"
|
|
||||||
;;
|
|
||||||
dmenu_window)
|
|
||||||
bspc node -f $(xtitle -f '%u %s\n' $(bspc query -N -n .window) \
|
|
||||||
| dmenu -l 20 -i -p Window: "$@" | cut -f 1 -d ' ')
|
|
||||||
;;
|
|
||||||
dmenu_theme)
|
|
||||||
sh "$0" theme $(list_themes | dmenu -p Theme: "$@")
|
|
||||||
esac
|
|
@ -1,11 +0,0 @@
|
|||||||
ROOT_BG=#4c4c4c
|
|
||||||
BAR_BG=#394d5f
|
|
||||||
BAR_FG=#9fb3c5
|
|
||||||
BAR_ACTIVE=#4c677f
|
|
||||||
BAR_URGENT=#7f4c4c
|
|
||||||
BAR_EMPTY=#767f88
|
|
||||||
NORMAL_BORDER=#767f88
|
|
||||||
FOCUS_BORDER=#9fb3c5
|
|
||||||
ALACRITTY_THEME=lupan-dark-blue
|
|
||||||
EMACS_THEME=lupan-dark-blue
|
|
||||||
GTK_THEME=Materia-dark
|
|
@ -1,11 +0,0 @@
|
|||||||
ROOT_BG=#4c4c4c
|
|
||||||
BAR_BG=#394c5f
|
|
||||||
BAR_FG=#9fb2c5
|
|
||||||
BAR_ACTIVE=#4c657f
|
|
||||||
BAR_URGENT=#7f4c4c
|
|
||||||
BAR_EMPTY=#767f88
|
|
||||||
NORMAL_BORDER=#767f88
|
|
||||||
FOCUS_BORDER=#4c657f
|
|
||||||
ALACRITTY_THEME=lupan-dark-gray
|
|
||||||
EMACS_THEME=lupan-dark-gray
|
|
||||||
GTK_THEME=Materia-dark
|
|
@ -1,11 +0,0 @@
|
|||||||
ROOT_BG=#4c4c4c
|
|
||||||
BAR_BG=#395f58
|
|
||||||
BAR_FG=#9fc5be
|
|
||||||
BAR_ACTIVE=#4c7f75
|
|
||||||
BAR_URGENT=#7f4c4c
|
|
||||||
BAR_EMPTY=#768885
|
|
||||||
NORMAL_BORDER=#768885
|
|
||||||
FOCUS_BORDER=#9fc5be
|
|
||||||
ALACRITTY_THEME=lupan-dark
|
|
||||||
EMACS_THEME=lupan-dark
|
|
||||||
GTK_THEME=Materia-dark
|
|
@ -1,11 +0,0 @@
|
|||||||
ROOT_BG=#e5e5e5
|
|
||||||
BAR_BG=#d8e0b7
|
|
||||||
BAR_FG=#5a6335
|
|
||||||
BAR_ACTIVE=#ebefdb
|
|
||||||
BAR_URGENT=#e0b7b7
|
|
||||||
BAR_EMPTY=#b0b0b0
|
|
||||||
NORMAL_BORDER=#b0b0b0
|
|
||||||
FOCUS_BORDER=#97a559
|
|
||||||
ALACRITTY_THEME=lupan-light
|
|
||||||
EMACS_THEME=lupan-light
|
|
||||||
GTK_THEME=Materia-light
|
|
@ -1,11 +0,0 @@
|
|||||||
ROOT_BG=#212121
|
|
||||||
BAR_BG=#455a64
|
|
||||||
BAR_FG=#f2f6e1
|
|
||||||
BAR_ACTIVE=#78909c
|
|
||||||
BAR_URGENT=#ef5350
|
|
||||||
BAR_EMPTY=#757575
|
|
||||||
NORMAL_BORDER=#757575
|
|
||||||
FOCUS_BORDER=#78909c
|
|
||||||
ALACRITTY_THEME=lupan-material-dark
|
|
||||||
EMACS_THEME=lupan-material-dark
|
|
||||||
GTK_THEME=Materia-dark
|
|
@ -1,11 +0,0 @@
|
|||||||
ROOT_BG=#fafafa
|
|
||||||
BAR_BG=#cfd8dc
|
|
||||||
BAR_FG=#424242
|
|
||||||
BAR_ACTIVE=#eceff1
|
|
||||||
BAR_URGENT=#ef5350
|
|
||||||
BAR_EMPTY=#bdbdbd
|
|
||||||
NORMAL_BORDER=#bdbdbd
|
|
||||||
FOCUS_BORDER=#b0bec5
|
|
||||||
ALACRITTY_THEME=lupan-material-light
|
|
||||||
EMACS_THEME=lupan-material-light
|
|
||||||
GTK_THEME=Materia-light
|
|
@ -1,65 +0,0 @@
|
|||||||
[colors]
|
|
||||||
background = ${xrdb:polybar.background:#1a343a}
|
|
||||||
foreground = ${xrdb:polybar.foreground:#f2f6e1}
|
|
||||||
active = ${xrdb:polybar.active:#3585ce}
|
|
||||||
urgent = ${xrdb:polybar.urgent:#9b0640}
|
|
||||||
empty = ${xrdb:polybar.empty:#808080}
|
|
||||||
|
|
||||||
[bar/panel]
|
|
||||||
monitor = ${env:MONITOR:}
|
|
||||||
dpi = ${xrdb:Xft.dpi:160}
|
|
||||||
modules-left = bspwm xwindow
|
|
||||||
modules-right = mpd battery date
|
|
||||||
wm-restack = bspwm
|
|
||||||
enable-ipc = true
|
|
||||||
font-0 = ${xrdb:polybar.font:Iosevka-13.5;5}
|
|
||||||
height = ${xrdb:polybar.height:35}
|
|
||||||
background = ${colors.background}
|
|
||||||
foreground = ${colors.foreground}
|
|
||||||
padding-left = 2
|
|
||||||
padding-right = 2
|
|
||||||
module-margin-left = 1
|
|
||||||
module-margin-right = 1
|
|
||||||
line-size = 0
|
|
||||||
|
|
||||||
[module/bspwm]
|
|
||||||
type = internal/bspwm
|
|
||||||
label-focused = %name%
|
|
||||||
label-occupied = %name%
|
|
||||||
label-urgent = %name%
|
|
||||||
label-empty = %name%
|
|
||||||
label-focused-padding = 1
|
|
||||||
label-occupied-padding = 1
|
|
||||||
label-urgent-padding = 1
|
|
||||||
label-empty-padding = 1
|
|
||||||
label-focused-background = ${colors.active}
|
|
||||||
label-urgent-background = ${colors.urgent}
|
|
||||||
label-empty-foreground = ${colors.empty}
|
|
||||||
format = <label-state> <label-mode>
|
|
||||||
label-locked = l
|
|
||||||
label-marked = m
|
|
||||||
label-private = p
|
|
||||||
label-sticky = s
|
|
||||||
|
|
||||||
[module/xwindow]
|
|
||||||
type = internal/xwindow
|
|
||||||
label = %title%
|
|
||||||
|
|
||||||
[module/mpd]
|
|
||||||
type = internal/mpd
|
|
||||||
format-online = <label-song>
|
|
||||||
label-song-maxlen = 70
|
|
||||||
label-song-ellipsis = true
|
|
||||||
|
|
||||||
[module/battery]
|
|
||||||
type = internal/battery
|
|
||||||
battery = BAT1
|
|
||||||
adapter = ACAD
|
|
||||||
full-at = 98
|
|
||||||
format-charging-foreground = ${colors.empty}
|
|
||||||
format-full-foreground = ${colors.empty}
|
|
||||||
|
|
||||||
[module/date]
|
|
||||||
type = internal/date
|
|
||||||
time = %H:%M
|
|
||||||
label = %time%
|
|
@ -1,169 +0,0 @@
|
|||||||
#
|
|
||||||
# wm independent hotkeys
|
|
||||||
#
|
|
||||||
|
|
||||||
# terminal emulator
|
|
||||||
super + Return
|
|
||||||
alacritty
|
|
||||||
|
|
||||||
# program launcher
|
|
||||||
super + @space
|
|
||||||
sh ~/.config/bspwm/commands.sh dmenu_run
|
|
||||||
|
|
||||||
# make sxhkd reload its configuration files:
|
|
||||||
super + Escape
|
|
||||||
pkill -USR1 -x sxhkd
|
|
||||||
|
|
||||||
super + e
|
|
||||||
emacsclient -n -c
|
|
||||||
|
|
||||||
super + semicolon ; {e,f,t}
|
|
||||||
{emacsclient -n -c,firefox,thunderbird}
|
|
||||||
|
|
||||||
super + semicolon ; shift + {h,l,s}
|
|
||||||
{systemctl hibernate,slock,systemctl suspend}
|
|
||||||
|
|
||||||
super + {_,shift + }F6
|
|
||||||
sh ~/.config/bspwm/commands.sh {theme --next,dmenu_theme}
|
|
||||||
|
|
||||||
XF86AudioPlay
|
|
||||||
mpc toggle
|
|
||||||
|
|
||||||
XF86Audio{Lower,Raise}Volume
|
|
||||||
pamixer -{d,i} 5
|
|
||||||
|
|
||||||
XF86AudioMute
|
|
||||||
pamixer -t
|
|
||||||
|
|
||||||
XF86MonBrightness{Down,Up}
|
|
||||||
xbacklight -{dec,inc} 3
|
|
||||||
|
|
||||||
#
|
|
||||||
# bspwm hotkeys
|
|
||||||
#
|
|
||||||
|
|
||||||
# quit/restart bspwm
|
|
||||||
super + alt + {q,r}
|
|
||||||
bspc {quit,wm -r}
|
|
||||||
|
|
||||||
# close and kill
|
|
||||||
super + {_,shift + }w
|
|
||||||
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 node on the same desktop
|
|
||||||
super + g
|
|
||||||
bspc node -s biggest.tiled.local
|
|
||||||
|
|
||||||
#
|
|
||||||
# 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 node in the current desktop
|
|
||||||
super + {_,shift + }c
|
|
||||||
bspc node -f {next,prev}.local
|
|
||||||
|
|
||||||
# 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}'
|
|
||||||
|
|
||||||
# focus window by title
|
|
||||||
super + shift + @space
|
|
||||||
sh ~/.config/bspwm/commands.sh dmenu_window
|
|
||||||
|
|
||||||
#
|
|
||||||
# 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}
|
|
||||||
|
|
||||||
#
|
|
||||||
# balance, equlize, rotate, and splitting ratio
|
|
||||||
#
|
|
||||||
|
|
||||||
# balance whole desktop or selected subtree
|
|
||||||
super + shift + b
|
|
||||||
if bspc query -N -n 'focused.leaf'; then bspc node @/ -B; else bspc node -B; fi
|
|
||||||
|
|
||||||
# equlize whole desktop or selected subtree
|
|
||||||
super + shift + e
|
|
||||||
if bspc query -N -n 'focused.leaf'; then bspc node @/ -E; else bspc node -E; fi
|
|
||||||
|
|
||||||
# rotate whole desktop or selected subtree
|
|
||||||
super + {_, ctrl + , shift + }r
|
|
||||||
A={90,180,270}; if bspc query -N -n 'focused.leaf'; then bspc node @/ -R $A; else bspc node -R $A; fi
|
|
||||||
|
|
||||||
# splitting ratio
|
|
||||||
super + alt + {1-9}
|
|
||||||
R={1-9}; if bspc query -N -n 'focused.leaf'; then bspc node @/ -r 0.$R; else bspc node -r 0.$R; fi
|
|
@ -1,189 +0,0 @@
|
|||||||
# i3 config file (v4)
|
|
||||||
#
|
|
||||||
# Please see https://i3wm.org/docs/userguide.html for a complete reference!
|
|
||||||
|
|
||||||
set $mod Mod4
|
|
||||||
|
|
||||||
# Font for window titles. Will also be used by the bar unless a different font
|
|
||||||
# is used in the bar {} block below.
|
|
||||||
font pango:Iosevka 30px
|
|
||||||
set $dmenu_font "Iosevka:pixelsize=30"
|
|
||||||
set $dmenu_colors -nb '#1a343a' -nf '#a0a0a0' -sb '#3585ce' -sf '#e0e0e0'
|
|
||||||
|
|
||||||
# Use pactl to adjust volume in PulseAudio.
|
|
||||||
set $refresh_i3status killall -SIGUSR1 i3status
|
|
||||||
bindsym XF86AudioRaiseVolume exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ +10% && $refresh_i3status
|
|
||||||
bindsym XF86AudioLowerVolume exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ -10% && $refresh_i3status
|
|
||||||
bindsym XF86AudioMute exec --no-startup-id pactl set-sink-mute @DEFAULT_SINK@ toggle && $refresh_i3status
|
|
||||||
bindsym XF86AudioMicMute exec --no-startup-id pactl set-source-mute @DEFAULT_SOURCE@ toggle && $refresh_i3status
|
|
||||||
bindsym XF86MonBrightnessDown exec --no-startup-id xbacklight -dec 3
|
|
||||||
bindsym XF86MonBrightnessUp exec --no-startup-id xbacklight -inc 3
|
|
||||||
|
|
||||||
# Use Mouse+$mod to drag floating windows to their wanted position
|
|
||||||
floating_modifier $mod
|
|
||||||
|
|
||||||
# start a terminal
|
|
||||||
bindsym $mod+Shift+Return exec alacritty
|
|
||||||
|
|
||||||
# start new Emacs frame
|
|
||||||
bindsym $mod+e exec "emacsclient -n -c"
|
|
||||||
|
|
||||||
# kill focused window
|
|
||||||
bindsym $mod+Shift+q kill
|
|
||||||
|
|
||||||
# start dmenu (a program launcher)
|
|
||||||
bindsym $mod+p exec dmenu_run -fn $dmenu_font $dmenu_colors
|
|
||||||
|
|
||||||
# change focus
|
|
||||||
bindsym $mod+h focus left
|
|
||||||
bindsym $mod+j focus down
|
|
||||||
bindsym $mod+k focus up
|
|
||||||
bindsym $mod+l focus right
|
|
||||||
|
|
||||||
# alternatively, you can use the cursor keys:
|
|
||||||
bindsym $mod+Left focus left
|
|
||||||
bindsym $mod+Down focus down
|
|
||||||
bindsym $mod+Up focus up
|
|
||||||
bindsym $mod+Right focus right
|
|
||||||
|
|
||||||
# move focused window
|
|
||||||
bindsym $mod+Shift+h move left
|
|
||||||
bindsym $mod+Shift+j move down
|
|
||||||
bindsym $mod+Shift+k move up
|
|
||||||
bindsym $mod+Shift+l move right
|
|
||||||
|
|
||||||
# alternatively, you can use the cursor keys:
|
|
||||||
bindsym $mod+Shift+Left move left
|
|
||||||
bindsym $mod+Shift+Down move down
|
|
||||||
bindsym $mod+Shift+Up move up
|
|
||||||
bindsym $mod+Shift+Right move right
|
|
||||||
|
|
||||||
# split in horizontal orientation
|
|
||||||
bindsym $mod+Ctrl+h split h
|
|
||||||
|
|
||||||
# split in vertical orientation
|
|
||||||
bindsym $mod+Ctrl+v split v
|
|
||||||
|
|
||||||
# enter fullscreen mode for the focused container
|
|
||||||
bindsym $mod+f fullscreen toggle
|
|
||||||
|
|
||||||
# change container layout (stacked, tabbed, toggle split)
|
|
||||||
bindsym $mod+Ctrl+s layout stacking
|
|
||||||
bindsym $mod+Ctrl+w layout tabbed
|
|
||||||
bindsym $mod+Ctrl+e layout toggle split
|
|
||||||
|
|
||||||
# toggle tiling / floating
|
|
||||||
bindsym $mod+Shift+space floating toggle
|
|
||||||
|
|
||||||
# change focus between tiling / floating windows
|
|
||||||
bindsym $mod+space focus mode_toggle
|
|
||||||
|
|
||||||
# focus the parent container
|
|
||||||
bindsym $mod+Ctrl+a focus parent
|
|
||||||
|
|
||||||
# focus the child container
|
|
||||||
bindsym $mod+Ctrl+d focus child
|
|
||||||
|
|
||||||
# Define names for default workspaces for which we configure key bindings later on.
|
|
||||||
# We use variables to avoid repeating the names in multiple places.
|
|
||||||
set $ws1 "1"
|
|
||||||
set $ws2 "2"
|
|
||||||
set $ws3 "3"
|
|
||||||
set $ws4 "4"
|
|
||||||
set $ws5 "5"
|
|
||||||
set $ws6 "6"
|
|
||||||
set $ws7 "7"
|
|
||||||
set $ws8 "8"
|
|
||||||
set $ws9 "9"
|
|
||||||
set $ws10 "10"
|
|
||||||
|
|
||||||
# switch to workspace
|
|
||||||
bindsym $mod+1 workspace number $ws1
|
|
||||||
bindsym $mod+2 workspace number $ws2
|
|
||||||
bindsym $mod+3 workspace number $ws3
|
|
||||||
bindsym $mod+4 workspace number $ws4
|
|
||||||
bindsym $mod+5 workspace number $ws5
|
|
||||||
bindsym $mod+6 workspace number $ws6
|
|
||||||
bindsym $mod+7 workspace number $ws7
|
|
||||||
bindsym $mod+8 workspace number $ws8
|
|
||||||
bindsym $mod+9 workspace number $ws9
|
|
||||||
bindsym $mod+0 workspace number $ws10
|
|
||||||
bindsym $mod+Tab workspace back_and_forth
|
|
||||||
|
|
||||||
# move focused container to workspace
|
|
||||||
bindsym $mod+Shift+1 move container to workspace number $ws1
|
|
||||||
bindsym $mod+Shift+2 move container to workspace number $ws2
|
|
||||||
bindsym $mod+Shift+3 move container to workspace number $ws3
|
|
||||||
bindsym $mod+Shift+4 move container to workspace number $ws4
|
|
||||||
bindsym $mod+Shift+5 move container to workspace number $ws5
|
|
||||||
bindsym $mod+Shift+6 move container to workspace number $ws6
|
|
||||||
bindsym $mod+Shift+7 move container to workspace number $ws7
|
|
||||||
bindsym $mod+Shift+8 move container to workspace number $ws8
|
|
||||||
bindsym $mod+Shift+9 move container to workspace number $ws9
|
|
||||||
bindsym $mod+Shift+0 move container to workspace number $ws10
|
|
||||||
bindsym $mod+Shift+Tab move container to workspace back_and_forth
|
|
||||||
|
|
||||||
# reload the configuration file
|
|
||||||
bindsym $mod+Ctrl+c reload
|
|
||||||
# restart i3 inplace (preserves your layout/session, can be used to upgrade i3)
|
|
||||||
bindsym $mod+Ctrl+r restart
|
|
||||||
# exit i3 (logs you out of your X session)
|
|
||||||
bindsym $mod+Ctrl+End exec "i3-nagbar -t warning -m 'Exit i3? This will end your X session.' -b 'Yes, exit i3' 'i3-msg exit'"
|
|
||||||
|
|
||||||
# resize window (you can also use the mouse for that)
|
|
||||||
mode "resize" {
|
|
||||||
# These bindings trigger as soon as you enter the resize mode
|
|
||||||
|
|
||||||
# Pressing left will shrink the window’s width.
|
|
||||||
# Pressing right will grow the window’s width.
|
|
||||||
# Pressing up will shrink the window’s height.
|
|
||||||
# Pressing down will grow the window’s height.
|
|
||||||
bindsym h resize shrink width 10 px or 2 ppt
|
|
||||||
bindsym j resize grow height 10 px or 2 ppt
|
|
||||||
bindsym k resize shrink height 10 px or 2 ppt
|
|
||||||
bindsym l resize grow width 10 px or 2 ppt
|
|
||||||
|
|
||||||
# same bindings, but for the arrow keys
|
|
||||||
bindsym Left resize shrink width 10 px or 2 ppt
|
|
||||||
bindsym Down resize grow height 10 px or 2 ppt
|
|
||||||
bindsym Up resize shrink height 10 px or 2 ppt
|
|
||||||
bindsym Right resize grow width 10 px or 2 ppt
|
|
||||||
|
|
||||||
# back to normal: Enter or Escape or $mod+r
|
|
||||||
bindsym Return mode "default"
|
|
||||||
bindsym Escape mode "default"
|
|
||||||
bindsym Ctrl+g mode "default"
|
|
||||||
bindsym $mod+r mode "default"
|
|
||||||
}
|
|
||||||
|
|
||||||
bindsym $mod+r mode "resize"
|
|
||||||
|
|
||||||
set $mode_cmd [c st] [F firefox] [s-h hibernate] [s-l lock] [s-s suspend]
|
|
||||||
|
|
||||||
mode "$mode_cmd" {
|
|
||||||
bindsym c exec st; mode "default"
|
|
||||||
bindsym Shift+f exec "firefox"; mode "default"
|
|
||||||
bindsym --release $mod+h exec "systemctl hibernate"; mode "default"
|
|
||||||
bindsym --release $mod+l exec "slock"; mode "default"
|
|
||||||
bindsym --release $mod+s exec "systemctl suspend"; mode "default"
|
|
||||||
bindsym Escape mode "default"
|
|
||||||
bindsym Ctrl+g mode "default"
|
|
||||||
}
|
|
||||||
|
|
||||||
bindsym $mod+semicolon mode "$mode_cmd"
|
|
||||||
|
|
||||||
client.focused #29a6da #3585ce #e0e0e0 #6c6aef #3585ce
|
|
||||||
client.focused_inactive #333333 #5f676a #e0e0e0 #484e50 #5f676a
|
|
||||||
client.unfocused #333333 #2a5465 #a0a0a0 #292d2e #1a343a
|
|
||||||
|
|
||||||
# Start i3bar to display a workspace bar (plus the system information i3status
|
|
||||||
# finds out, if available)
|
|
||||||
bar {
|
|
||||||
position top
|
|
||||||
status_command i3status
|
|
||||||
colors {
|
|
||||||
background #1a343a
|
|
||||||
inactive_workspace #505050 #1a343a #808080
|
|
||||||
focused_workspace #29a6da #3585ce #e0e0e0
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,16 +0,0 @@
|
|||||||
general {
|
|
||||||
output_format = "i3bar"
|
|
||||||
}
|
|
||||||
|
|
||||||
order += "volume master"
|
|
||||||
order += "tztime local"
|
|
||||||
|
|
||||||
volume master {
|
|
||||||
format = " ♪: %volume "
|
|
||||||
format_muted = " ♪: muted (%volume) "
|
|
||||||
device = "pulse:0"
|
|
||||||
}
|
|
||||||
|
|
||||||
tztime local {
|
|
||||||
format = " %H:%M "
|
|
||||||
}
|
|
@ -1,40 +0,0 @@
|
|||||||
# Selected colors from https://windicss.org/utilities/colors.html
|
|
||||||
|
|
||||||
colors = {
|
|
||||||
"sky": {
|
|
||||||
50: "#f0f9ff",
|
|
||||||
100: "#e0f2fe",
|
|
||||||
200: "#bae6fd",
|
|
||||||
300: "#7dd3fc",
|
|
||||||
400: "#38bdf8",
|
|
||||||
500: "#0ea5e9",
|
|
||||||
600: "#0284c7",
|
|
||||||
700: "#0369a1",
|
|
||||||
800: "#075985",
|
|
||||||
900: "#0c4a6e",
|
|
||||||
},
|
|
||||||
"indigo": {
|
|
||||||
50: "#eef2ff",
|
|
||||||
100: "#e0e7ff",
|
|
||||||
200: "#c7d2fe",
|
|
||||||
300: "#a5b4fc",
|
|
||||||
400: "#818cf8",
|
|
||||||
500: "#6366f1",
|
|
||||||
600: "#4f46e5",
|
|
||||||
700: "#4338ca",
|
|
||||||
800: "#3730a3",
|
|
||||||
900: "#312e81",
|
|
||||||
},
|
|
||||||
"blue-gray": {
|
|
||||||
50: "#f8fafc",
|
|
||||||
100: "#f1f5f9",
|
|
||||||
200: "#e2e8f0",
|
|
||||||
300: "#cbd5e1",
|
|
||||||
400: "#94a3b8",
|
|
||||||
500: "#64748b",
|
|
||||||
600: "#475569",
|
|
||||||
700: "#334155",
|
|
||||||
800: "#1e293b",
|
|
||||||
900: "#0f172a",
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,177 +0,0 @@
|
|||||||
from libqtile import bar, layout, qtile, widget
|
|
||||||
from libqtile.config import DropDown, Group, Key, KeyChord, ScratchPad, Screen
|
|
||||||
from libqtile.lazy import lazy
|
|
||||||
|
|
||||||
from monitors import list_monitors
|
|
||||||
from themes import apply_theme, subtheme, theme, toggle_theme
|
|
||||||
|
|
||||||
mod = "mod4"
|
|
||||||
terminal = "alacritty"
|
|
||||||
|
|
||||||
hdpi_sizes = dict(size=46, fontsize=26)
|
|
||||||
hd_sizes = dict(size=32, fontsize=18)
|
|
||||||
|
|
||||||
def sizes(monitor):
|
|
||||||
hdpi = monitor is None or max(monitor.width, monitor.height) > 2000
|
|
||||||
return hdpi_sizes if hdpi else hd_sizes
|
|
||||||
|
|
||||||
widget_defaults = dict(
|
|
||||||
font="Iosevka Slab Light",
|
|
||||||
fontsize=hdpi_sizes["fontsize"],
|
|
||||||
padding=5,
|
|
||||||
foreground=theme["foreground"],
|
|
||||||
)
|
|
||||||
|
|
||||||
keys = []
|
|
||||||
|
|
||||||
group_names = "1234567890"
|
|
||||||
groups = [Group(name) for name in group_names]
|
|
||||||
keys.extend([Key([mod], name, lazy.group[name].toscreen(toggle=False), desc=f"Switch to group {name}") for name in group_names])
|
|
||||||
keys.extend([Key([mod, "shift"], name, lazy.window.togroup(name), desc=f"Move window to group {name}") for name in group_names])
|
|
||||||
|
|
||||||
groups.append(
|
|
||||||
ScratchPad("scratchpad", [
|
|
||||||
DropDown("term", terminal),
|
|
||||||
DropDown("thunar", "thunar", on_focus_lost_hide=False),
|
|
||||||
DropDown("qtile shell", [terminal, '-e', 'qtile', 'shell']),
|
|
||||||
])
|
|
||||||
)
|
|
||||||
|
|
||||||
keys.extend([
|
|
||||||
Key([mod], "F1", lazy.group["scratchpad"].dropdown_toggle("term")),
|
|
||||||
Key([mod], "F2", lazy.group["scratchpad"].dropdown_toggle("thunar")),
|
|
||||||
Key([mod], "F3", lazy.group["scratchpad"].dropdown_toggle("qtile shell")),
|
|
||||||
])
|
|
||||||
|
|
||||||
floating_layout = layout.Floating(float_rules=[*layout.Floating.default_float_rules],
|
|
||||||
**subtheme("border_width", "margin", "border_focus", "border_normal"))
|
|
||||||
|
|
||||||
layouts = [
|
|
||||||
layout.Max(),
|
|
||||||
layout.Columns(**subtheme("border_width", "margin", "border_focus", "border_normal")),
|
|
||||||
layout.MonadTall(**subtheme("border_width", "margin", "border_focus", "border_normal")),
|
|
||||||
layout.MonadWide(**subtheme("border_width", "margin", "border_focus", "border_normal")),
|
|
||||||
layout.Matrix(**subtheme("border_width", "margin", "border_focus", "border_normal")),
|
|
||||||
layout.Zoomy(columnwidth=200, **subtheme("border_width", "margin", "border_focus", "border_normal")),
|
|
||||||
]
|
|
||||||
|
|
||||||
monitors = {i: m for i, m in enumerate(list_monitors())}
|
|
||||||
|
|
||||||
def createBar(monitor=None):
|
|
||||||
s = sizes(monitor)
|
|
||||||
return bar.Bar([
|
|
||||||
widget.Spacer(10),
|
|
||||||
widget.CurrentLayout(fmt="[{:3.3}]", fontsize=s["fontsize"]),
|
|
||||||
widget.Spacer(10),
|
|
||||||
widget.GroupBox(highlight_method='line',
|
|
||||||
fontsize=s["fontsize"],
|
|
||||||
margin_y=6,
|
|
||||||
borderwidth=5,
|
|
||||||
active=theme["foreground"],
|
|
||||||
highlight_color=theme["background"],
|
|
||||||
**subtheme("inactive", "this_current_screen_border", "this_screen_border",
|
|
||||||
"other_current_screen_border", "other_screen_border")),
|
|
||||||
widget.Spacer(5),
|
|
||||||
widget.WindowCount(text_format="({num})", fontsize=s["fontsize"], foreground=theme["inactive"]),
|
|
||||||
widget.Spacer(10),
|
|
||||||
widget.WindowName(fontsize=s["fontsize"]),
|
|
||||||
widget.Spacer(),
|
|
||||||
widget.WidgetBox(
|
|
||||||
text_open="▶",
|
|
||||||
text_closed="◀",
|
|
||||||
widgets=[
|
|
||||||
widget.Spacer(10),
|
|
||||||
widget.NetGraph(border_color=theme["inactive"], graph_color=theme["foreground"]),
|
|
||||||
widget.Spacer(10),
|
|
||||||
widget.HDDBusyGraph(border_color=theme["inactive"], graph_color=theme["foreground"]),
|
|
||||||
widget.Spacer(10),
|
|
||||||
widget.CPUGraph(border_color=theme["inactive"], graph_color=theme["foreground"]),
|
|
||||||
widget.Spacer(10),
|
|
||||||
widget.ThermalSensor(fontsize=s["fontsize"]),
|
|
||||||
]),
|
|
||||||
widget.Spacer(10),
|
|
||||||
widget.PulseVolume(fontsize=s["fontsize"]),
|
|
||||||
widget.Spacer(10),
|
|
||||||
widget.Clock(fontsize=s["fontsize"]),
|
|
||||||
widget.Spacer(10),
|
|
||||||
], s["size"], background=theme["background"])
|
|
||||||
|
|
||||||
screens = [Screen(top=createBar(monitors.get(i))) for i in range(4)]
|
|
||||||
|
|
||||||
#fake_screens = [Screen(top=createBar(), x=x, y=y, width=1920, height=1080) for x, y in [(0, 0), (1920, 0), (0, 1080), (1920, 1080)]]
|
|
||||||
|
|
||||||
keys.extend([
|
|
||||||
Key([mod, "shift"], "Return", lazy.spawn(terminal), desc="Run terminal "),
|
|
||||||
Key([mod, "control"], "n", lazy.spawn("emacsclient -n -c"), desc="Open new Emacs frame"),
|
|
||||||
Key([mod], "p", lazy.spawn(["rofi", "-theme", theme["rofi_theme"], "-kb-row-tab", "", "-show", "run"]),
|
|
||||||
desc="Run command"),
|
|
||||||
Key([mod, "shift"], "p", lazy.spawn(["rofi", "-theme", theme["rofi_theme"], "-kb-row-tab", "", "-show", "combi"]),
|
|
||||||
desc="Run rofi combi"),
|
|
||||||
|
|
||||||
Key([mod], "Tab", lazy.next_layout(), desc="Next layout"),
|
|
||||||
Key([mod, "shift"], "m", lazy.to_layout_index(0), desc="Switch to Max layout"),
|
|
||||||
Key([mod, "shift"], "c", lazy.to_layout_index(1), desc="Switch to Columns layout"),
|
|
||||||
Key([mod, "shift"], "t", lazy.to_layout_index(2), desc="Switch to MonadTall layout"),
|
|
||||||
Key([mod, "shift"], "w", lazy.to_layout_index(3), desc="Switch to MonadWide layout"),
|
|
||||||
Key([mod, "shift"], "r", lazy.to_layout_index(4), desc="Switch to Matrix layout"),
|
|
||||||
Key([mod, "shift"], "z", lazy.to_layout_index(5), desc="Switch to Zoomy layout"),
|
|
||||||
|
|
||||||
Key([mod], "a", lazy.screen.toggle_group(), desc="Toggle between current and previous group"),
|
|
||||||
Key([mod], "h", lazy.layout.left(), desc="Focus window on the left of current one"),
|
|
||||||
Key([mod], "j", lazy.layout.down(), desc="Focus window below of current one"),
|
|
||||||
Key([mod], "k", lazy.layout.up(), desc="Focus window above of current one"),
|
|
||||||
Key([mod], "l", lazy.layout.right(), desc="Focus window on the right of current one"),
|
|
||||||
Key([mod, "shift"], "h", lazy.layout.shuffle_left(), desc="Shuffle current window with the one on the left"),
|
|
||||||
Key([mod, "shift"], "j", lazy.layout.shuffle_down(), desc="Shuffle current window with the one below"),
|
|
||||||
Key([mod, "shift"], "k", lazy.layout.shuffle_up(), desc="Shuffle current window with the one above"),
|
|
||||||
Key([mod, "shift"], "l", lazy.layout.shuffle_right(), desc="Shuffle current window with the one on the right"),
|
|
||||||
Key([mod, "control"], "h", lazy.layout.grow_left(), desc="Grow current window on its left"),
|
|
||||||
Key([mod, "control"], "j", lazy.layout.grow_down(), desc="Grow current window on its bottom"),
|
|
||||||
Key([mod, "control"], "k", lazy.layout.grow_up(), desc="Grow current window on its top"),
|
|
||||||
Key([mod, "control"], "l", lazy.layout.grow_right(), desc="Grow current window on its right"),
|
|
||||||
Key([mod], "Return", lazy.layout.toggle_split(), desc="Toggle split"),
|
|
||||||
Key([mod, "shift", "control"], "h", lazy.layout.swap_column_left(), desc="Swap column left"),
|
|
||||||
Key([mod, "shift", "control"], "l", lazy.layout.swap_column_right(), desc="Swap column right"),
|
|
||||||
|
|
||||||
Key([mod], "g", lazy.layout.grow(), desc="Grow focused window in monad mode"),
|
|
||||||
Key([mod], "s", lazy.layout.shrink(), desc="Shrink focused window in monad mode"),
|
|
||||||
Key([mod], "r", lazy.layout.reset(), desc="Reset main area size"),
|
|
||||||
Key([mod], "u", lazy.layout.flip(), desc="Flip side of secondary windows"),
|
|
||||||
Key([mod], "m", lazy.layout.maximize(), desc="Maximize/minimize focused window in monad mode"),
|
|
||||||
|
|
||||||
Key([mod], "i", lazy.screen.prev_group(), desc="Switch to prev group"),
|
|
||||||
Key([mod], "o", lazy.screen.next_group(), desc="Switch to next group"),
|
|
||||||
Key([mod, "control"], "i", lazy.prev_screen(), desc="Switch to prev screen"),
|
|
||||||
Key([mod, "control"], "o", lazy.next_screen(), desc="Switch to next screen"),
|
|
||||||
|
|
||||||
Key([mod], "x", lazy.window.kill(), desc="Kill focused window"),
|
|
||||||
Key([mod], "t", lazy.window.toggle_floating(), desc="Toggle window floating"),
|
|
||||||
Key([mod], "e", lazy.window.toggle_maximize(), desc="Toggle window maximize"),
|
|
||||||
Key([mod], "n", lazy.layout.normalize(), desc="Normalize layout"),
|
|
||||||
Key([mod], "f", lazy.window.toggle_fullscreen(), desc="Toggle window fullscreen"),
|
|
||||||
Key([mod], "y", lazy.window.toggle_minimize(), desc="Minimize focused window in monad mode"),
|
|
||||||
Key([mod, "shift"], "F6", toggle_theme, desc="Kill focused window"),
|
|
||||||
|
|
||||||
Key([], "XF86MonBrightnessDown", lazy.spawn("brightnessctl set 5%-")),
|
|
||||||
Key([], "XF86MonBrightnessUp", lazy.spawn("brightnessctl set 5%+")),
|
|
||||||
Key([], "XF86AudioLowerVolume", lazy.spawn("pactl set-sink-volume @DEFAULT_SINK@ -10%")),
|
|
||||||
Key([], "XF86AudioRaiseVolume", lazy.spawn("pactl set-sink-volume @DEFAULT_SINK@ +10%")),
|
|
||||||
Key([], "XF86AudioMute", lazy.spawn("pactl set-sink-mute @DEFAULT_SINK@ toggle")),
|
|
||||||
|
|
||||||
KeyChord([mod], "semicolon", [
|
|
||||||
Key([], "f", lazy.spawn("firefox"), desc="Open Firefox"),
|
|
||||||
Key([], "n", lazy.spawn("emacsclient -n -c"), desc="Open new Emacs frame"),
|
|
||||||
Key([], "p", lazy.spawn("pavucontrol"), desc="Open pavucontrol mixer"),
|
|
||||||
Key([], "t", lazy.spawn("thunderbird"), desc="Open Thunderbird"),
|
|
||||||
Key(["shift"], "h", lazy.spawn("systemctl hibernate")),
|
|
||||||
Key(["shift"], "l", lazy.spawn("slock")),
|
|
||||||
Key(["shift"], "s", lazy.spawn("systemctl suspend")),
|
|
||||||
]),
|
|
||||||
|
|
||||||
Key([mod, "shift"], "q", lazy.shutdown(), desc="Quit qtile"),
|
|
||||||
Key([mod], "q", lazy.restart(), desc="Restart qtile"),
|
|
||||||
])
|
|
||||||
|
|
||||||
keys.extend([Key([mod, "control"], str(i + 1), lazy.to_screen(i), desc=f"Switch to screen {i}") for i in range(len(screens))])
|
|
||||||
|
|
||||||
cursor_warp = True
|
|
@ -1,13 +0,0 @@
|
|||||||
import re
|
|
||||||
import subprocess
|
|
||||||
from collections import namedtuple
|
|
||||||
|
|
||||||
Monitor = namedtuple('Monitor', ["name", "width", "height"])
|
|
||||||
|
|
||||||
monitor_line = re.compile(r"^ *[0-9]+: +[+*]*([-A-Za-z0-9]+) +([0-9]+)/([0-9]+)x([0-9]+)/([0-9]+)\+([0-9]+)\+([0-9]+) +([-A-Za-z0-9]+)")
|
|
||||||
|
|
||||||
def list_monitors():
|
|
||||||
p = subprocess.run(["xrandr", "--listmonitors"], capture_output=True, encoding='UTF-8')
|
|
||||||
return [Monitor(name=m.group(1), width=int(m.group(2)), height=int(m.group(4)))
|
|
||||||
for m in map(monitor_line.match, p.stdout.split('\n'))
|
|
||||||
if m is not None]
|
|
@ -1,70 +0,0 @@
|
|||||||
import os
|
|
||||||
|
|
||||||
from colors import colors
|
|
||||||
|
|
||||||
from libqtile.lazy import lazy
|
|
||||||
from libqtile import hook, qtile
|
|
||||||
|
|
||||||
theme_file = os.path.join(os.path.dirname(__file__), "theme.txt")
|
|
||||||
|
|
||||||
def write_theme(name):
|
|
||||||
with open(theme_file, "w") as f:
|
|
||||||
f.write(name)
|
|
||||||
|
|
||||||
def read_theme(file_name):
|
|
||||||
try:
|
|
||||||
with open(file_name) as f:
|
|
||||||
return f.read().strip()
|
|
||||||
except FileNotFoundError:
|
|
||||||
return "dark"
|
|
||||||
|
|
||||||
is_dark = read_theme(theme_file) == "dark"
|
|
||||||
|
|
||||||
def light_dark(light, dark):
|
|
||||||
return dark if is_dark else light
|
|
||||||
|
|
||||||
@lazy.function
|
|
||||||
def toggle_theme(qtile):
|
|
||||||
write_theme(light_dark("dark", "light"))
|
|
||||||
qtile.restart()
|
|
||||||
|
|
||||||
background = light_dark([colors["sky"][600], colors["sky"][700]],
|
|
||||||
[colors["sky"][800], colors["sky"][900]])
|
|
||||||
|
|
||||||
def get_theme():
|
|
||||||
return dict(
|
|
||||||
border_width=4,
|
|
||||||
margin=4,
|
|
||||||
root_background=light_dark(colors["blue-gray"][300], colors["blue-gray"][800]),
|
|
||||||
background=background,
|
|
||||||
foreground=light_dark(colors["blue-gray"][100], colors["blue-gray"][400]),
|
|
||||||
inactive=light_dark(colors["sky"][100], colors["blue-gray"][500]),
|
|
||||||
this_current_screen_border=light_dark(colors["sky"][400], colors["indigo"][400]),
|
|
||||||
this_screen_border=light_dark(colors["blue-gray"][400], colors["blue-gray"][500]),
|
|
||||||
other_current_screen_border=background,
|
|
||||||
other_screen_border=background,
|
|
||||||
border_focus=light_dark(colors["sky"][400], colors["indigo"][600]),
|
|
||||||
border_normal=light_dark(colors["blue-gray"][600], colors["blue-gray"][700]),
|
|
||||||
alacritty_theme=light_dark("gogh-nord-light", "gogh-tin"),
|
|
||||||
emacs_theme=light_dark("solarized-light", "solarized-dark"),
|
|
||||||
gtk_theme=light_dark("Materia-light", "Materia-dark"),
|
|
||||||
rofi_theme=light_dark("Arc", "Arc-Dark"),
|
|
||||||
)
|
|
||||||
|
|
||||||
theme = get_theme()
|
|
||||||
|
|
||||||
def subtheme(*names):
|
|
||||||
return {name: theme[name] for name in names}
|
|
||||||
|
|
||||||
def apply_theme(qtile):
|
|
||||||
qtile.cmd_spawn(["xsetroot", "-solid", theme["root_background"]])
|
|
||||||
qtile.cmd_spawn(["sed", "-i", f"s/^colors: [*].*/colors: *{theme['alacritty_theme']}/",
|
|
||||||
os.path.expanduser("~/.config/alacritty/alacritty.yml")])
|
|
||||||
qtile.cmd_spawn(["emacsclient", "--eval", f"(my-select-theme '{theme['emacs_theme']})"])
|
|
||||||
qtile.cmd_spawn(["sed", "-i", "-E", f"s#(Net/ThemeName) .*#\\1 \"{theme['gtk_theme']}\"#",
|
|
||||||
os.path.expanduser("~/.config/xsettingsd/xsettingsd.conf")])
|
|
||||||
qtile.cmd_spawn(["pkill", "-HUP", "-x", "xsettingsd"])
|
|
||||||
|
|
||||||
@hook.subscribe.startup
|
|
||||||
def func():
|
|
||||||
apply_theme(qtile)
|
|
@ -1,79 +0,0 @@
|
|||||||
# Workspace
|
|
||||||
|
|
||||||
warp_pointer = 1
|
|
||||||
workspace_limit = 22
|
|
||||||
|
|
||||||
# Windows
|
|
||||||
|
|
||||||
border_width = 3
|
|
||||||
color_focus = rgb:0e/74/90
|
|
||||||
#rgb:26/8b/d2
|
|
||||||
# rgb:6b/a8/a2
|
|
||||||
# rgb:2a/a1/98
|
|
||||||
#
|
|
||||||
color_unfocus = rgb:00/46/4a
|
|
||||||
#64/74/8b
|
|
||||||
tile_gap = 3
|
|
||||||
|
|
||||||
# Bar
|
|
||||||
|
|
||||||
bar_border[1] = rgb:4a/4a/4a
|
|
||||||
# rgb:0e/74/90
|
|
||||||
bar_color[1] = rgb:0c/4a/6e
|
|
||||||
#rgb:07/36/42
|
|
||||||
bar_font = Iosevka Slab Light:style=Regular:size=12:antialias=true
|
|
||||||
bar_font_color[1] = rgb:83/94/96
|
|
||||||
bar_font_color_selected[1] = black
|
|
||||||
bar_format = +< +N:+I +S +< %a %R +< +W
|
|
||||||
|
|
||||||
bar_border_width = 7
|
|
||||||
|
|
||||||
|
|
||||||
# Launch at start
|
|
||||||
|
|
||||||
autorun = ws[9]:firefox
|
|
||||||
|
|
||||||
# Programs
|
|
||||||
|
|
||||||
program[brightness_dec] = brightnessctl set 5%-
|
|
||||||
program[brightness_inc] = brightnessctl set 5%+
|
|
||||||
program[emacs] = emacs
|
|
||||||
program[emacsclient] = emacsclient -n -c
|
|
||||||
program[lock] = slock
|
|
||||||
program[mixer] = pavucontrol
|
|
||||||
program[suspend] = systemctl suspend
|
|
||||||
program[term] = alacritty
|
|
||||||
program[term2] = st
|
|
||||||
program[theme_dark] = lupan-set-theme dark
|
|
||||||
program[theme_faff] = lupan-set-theme faff
|
|
||||||
program[theme_light] = lupan-set-theme light
|
|
||||||
program[volume_dec] = pactl set-sink-volume @DEFAULT_SINK@ -10%
|
|
||||||
program[volume_inc] = pactl set-sink-volume @DEFAULT_SINK@ +10%
|
|
||||||
program[volume_mute] = pactl set-sink-mute @DEFAULT_SINK@ toggle
|
|
||||||
|
|
||||||
# Key bindings
|
|
||||||
|
|
||||||
modkey = Mod4
|
|
||||||
|
|
||||||
bind[brightness_dec] = XF86MonBrightnessDown
|
|
||||||
bind[brightness_inc] = XF86MonBrightnessUp
|
|
||||||
bind[emacs] = MOD+Shift+n
|
|
||||||
bind[emacsclient] = MOD+n
|
|
||||||
bind[mixer] = MOD+Control+p
|
|
||||||
bind[suspend] = MOD+Control+s
|
|
||||||
bind[term2] = MOD+Control+Return
|
|
||||||
bind[theme_dark] = MOD+Control+d
|
|
||||||
bind[theme_faff] = MOD+Control+f
|
|
||||||
bind[theme_light] = MOD+Control+l
|
|
||||||
bind[volume_dec] = XF86AudioLowerVolume
|
|
||||||
bind[volume_inc] = XF86AudioRaiseVolume
|
|
||||||
bind[volume_mute] = XF86AudioMute
|
|
||||||
|
|
||||||
bind[ws_prev] = MOD+i
|
|
||||||
bind[ws_next] = MOD+o
|
|
||||||
|
|
||||||
bind[mvrg_prev] = MOD+Shift+i
|
|
||||||
bind[mvrg_next] = MOD+Shift+o
|
|
||||||
|
|
||||||
bind[rg_prev] = MOD+Control+i
|
|
||||||
bind[rg_next] = MOD+Control+o
|
|
@ -1,119 +0,0 @@
|
|||||||
(in-package :stumpwm)
|
|
||||||
|
|
||||||
(set-prefix-key (kbd "s-s"))
|
|
||||||
|
|
||||||
(set-font "-xos4-terminus-medium-r-normal--32-320-72-72-c-160-iso10646-1")
|
|
||||||
|
|
||||||
(setf *mouse-focus-policy* :sloppy
|
|
||||||
*message-window-gravity* :center
|
|
||||||
*input-window-gravity* :center
|
|
||||||
*window-border-style* :thin
|
|
||||||
*time-modeline-string* "%k:%M"
|
|
||||||
*screen-mode-line-format* "[^B%n^b] %W^>%d")
|
|
||||||
|
|
||||||
(when *initializing*
|
|
||||||
(setf (group-name (current-group)) "1")
|
|
||||||
(mapc #'gnewbg '("2" "3" "4" "5" "6" "7" "8" "9"))
|
|
||||||
(gnewbg-float "0"))
|
|
||||||
|
|
||||||
(loop for name in '("1" "2" "3" "4" "5" "6" "7" "8" "9" "0")
|
|
||||||
for shift in '("!" "@" "#" "$" "%" "^" "&" "*" "(" ")")
|
|
||||||
do (define-key *top-map* (kbd (concat "s-" name)) (concat "gselect " name))
|
|
||||||
(define-key *top-map* (kbd (concat "s-" shift)) (concat "gmove " name)))
|
|
||||||
|
|
||||||
(define-key *root-map* (kbd "c") "exec alacritty")
|
|
||||||
(define-key *root-map* (kbd "V") "vsplit")
|
|
||||||
(define-key *root-map* (kbd "e") "exec emacsclient -n -c -a ''")
|
|
||||||
(define-key *root-map* (kbd "M-e") "emacs")
|
|
||||||
(define-key *root-map* (kbd "s-l") "exec slock")
|
|
||||||
|
|
||||||
(define-key *top-map* (kbd "s-q") "restart-soft")
|
|
||||||
(define-key *top-map* (kbd "s-Q") "quit-confirm")
|
|
||||||
(define-key *top-map* (kbd "s-S-RET") "exec alacritty")
|
|
||||||
(define-key *top-map* (kbd "s-S-F6") "toggle-theme")
|
|
||||||
(define-key *top-map* (kbd "s-a") "gother")
|
|
||||||
(define-key *top-map* (kbd "s-b") "mode-line")
|
|
||||||
(define-key *top-map* (kbd "s-f") "fullscreen")
|
|
||||||
(define-key *top-map* (kbd "s-i") "gprev")
|
|
||||||
(define-key *top-map* (kbd "s-o") "gnext")
|
|
||||||
(define-key *top-map* (kbd "s-I") "gprev-with-window")
|
|
||||||
(define-key *top-map* (kbd "s-O") "gnext-with-window")
|
|
||||||
(define-key *top-map* (kbd "s-p") "exec")
|
|
||||||
(define-key *top-map* (kbd "s-P") "exec rofi -theme Arc-Dark -show combi")
|
|
||||||
|
|
||||||
(define-key *top-map* (kbd "s-j") "move-focus down")
|
|
||||||
(define-key *top-map* (kbd "s-k") "move-focus up")
|
|
||||||
(define-key *top-map* (kbd "s-h") "move-focus left")
|
|
||||||
(define-key *top-map* (kbd "s-l") "move-focus right")
|
|
||||||
|
|
||||||
(define-key *top-map* (kbd "s-J") "move-window down")
|
|
||||||
(define-key *top-map* (kbd "s-K") "move-window up")
|
|
||||||
(define-key *top-map* (kbd "s-H") "move-window left")
|
|
||||||
(define-key *top-map* (kbd "s-L") "move-window right")
|
|
||||||
|
|
||||||
(define-key *top-map* (kbd "s-w") "select-head 0")
|
|
||||||
(define-key *top-map* (kbd "s-e") "select-head 1")
|
|
||||||
(define-key *top-map* (kbd "s-r") "select-head 2")
|
|
||||||
|
|
||||||
(defpackage :my-stumpwm-config
|
|
||||||
(:use :cl))
|
|
||||||
|
|
||||||
(in-package :my-stumpwm-config)
|
|
||||||
|
|
||||||
(stumpwm:defcommand select-head (num) (:rest)
|
|
||||||
(let ((head (nth (parse-integer num) (stumpwm:screen-heads (stumpwm:current-screen)))))
|
|
||||||
(stumpwm::focus-frame (stumpwm:current-group)
|
|
||||||
(car (stumpwm::head-frames (stumpwm:current-group) head)))))
|
|
||||||
|
|
||||||
(load "~/quicklisp/setup.lisp")
|
|
||||||
(ql:quickload :slynk)
|
|
||||||
|
|
||||||
(stumpwm:defcommand slynk () ()
|
|
||||||
(let ((port 4005))
|
|
||||||
(slynk:create-server :dont-close t :port port)
|
|
||||||
(stumpwm:echo-string (stumpwm:current-screen) (format nil "Slynk started at port ~D" port))))
|
|
||||||
|
|
||||||
(stumpwm:load-module :stumpwm-base16)
|
|
||||||
(when stumpwm:*initializing*
|
|
||||||
(stumpwm-base16:load-theme "espresso"))
|
|
||||||
|
|
||||||
(dolist (head (stumpwm:screen-heads (stumpwm:current-screen)))
|
|
||||||
(stumpwm:enable-mode-line (stumpwm:current-screen) head t))
|
|
||||||
|
|
||||||
(defparameter *themes* '(:dark (:stumpwm "espresso"
|
|
||||||
:emacs "dark"
|
|
||||||
:alacritty "dark"
|
|
||||||
:gtk "Materia-dark")
|
|
||||||
:light (:stumpwm "nova"
|
|
||||||
:emacs "light"
|
|
||||||
:alacritty "light"
|
|
||||||
:gtk "Materia-light")))
|
|
||||||
|
|
||||||
(defparameter *themes-order* '(:dark :light :light :dark))
|
|
||||||
|
|
||||||
(defparameter *theme* :light)
|
|
||||||
|
|
||||||
(stumpwm:defcommand toggle-theme () ()
|
|
||||||
(setf *theme* (getf *themes-order* *theme*))
|
|
||||||
(let ((theme (getf *themes* *theme*)))
|
|
||||||
(stumpwm-base16:load-theme (getf theme :stumpwm))
|
|
||||||
(dolist (head (stumpwm:screen-heads (stumpwm:current-screen)))
|
|
||||||
(stumpwm:toggle-mode-line (stumpwm:current-screen) head)
|
|
||||||
(stumpwm:toggle-mode-line (stumpwm:current-screen) head))
|
|
||||||
(mapc #'stumpwm:run-shell-command
|
|
||||||
(list (concatenate 'string
|
|
||||||
"sed -i -E 's#Net/ThemeName .*#Net/ThemeName \""
|
|
||||||
(getf theme :gtk)
|
|
||||||
"\"#' ~/.config/xsettingsd/xsettingsd.conf")
|
|
||||||
"pkill -HUP -x xsettingsd; "
|
|
||||||
(concatenate 'string
|
|
||||||
"sed -i 's/^colors: [*].*/colors: *"
|
|
||||||
(getf theme :alacritty)
|
|
||||||
"/' ~/.config/alacritty/alacritty.yml; ")
|
|
||||||
(concatenate 'string
|
|
||||||
"emacsclient --eval \"(my-select-theme '"
|
|
||||||
(getf theme :emacs)
|
|
||||||
")\"")))))
|
|
||||||
|
|
||||||
(if stumpwm:*initializing*
|
|
||||||
(toggle-theme))
|
|
Loading…
x
Reference in New Issue
Block a user