remove bspwm, i3, qtile, spectrwm, and stumpwm

This commit is contained in:
Łukasz Pankowski 2023-08-04 00:03:56 +02:00
parent c785d3927c
commit e26519b09d
18 changed files with 0 additions and 1133 deletions

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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%

View File

@ -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

View File

@ -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 windows width.
# Pressing right will grow the windows width.
# Pressing up will shrink the windows height.
# Pressing down will grow the windows 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
}
}

View File

@ -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 "
}

View File

@ -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",
}
}

View File

@ -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

View File

@ -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]

View File

@ -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)

View File

@ -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

View File

@ -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))