diff --git a/bspwm/.config/bspwm/bspwmrc b/bspwm/.config/bspwm/bspwmrc deleted file mode 100755 index ea748db..0000000 --- a/bspwm/.config/bspwm/bspwmrc +++ /dev/null @@ -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 diff --git a/bspwm/.config/bspwm/commands.sh b/bspwm/.config/bspwm/commands.sh deleted file mode 100644 index 66dbd34..0000000 --- a/bspwm/.config/bspwm/commands.sh +++ /dev/null @@ -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 < -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-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% diff --git a/bspwm/.config/sxhkd/sxhkdrc b/bspwm/.config/sxhkd/sxhkdrc deleted file mode 100644 index aa82e01..0000000 --- a/bspwm/.config/sxhkd/sxhkdrc +++ /dev/null @@ -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 diff --git a/i3/.config/i3/config b/i3/.config/i3/config deleted file mode 100644 index e868be5..0000000 --- a/i3/.config/i3/config +++ /dev/null @@ -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 - } -} diff --git a/i3/.config/i3status/config b/i3/.config/i3status/config deleted file mode 100644 index ea4472b..0000000 --- a/i3/.config/i3status/config +++ /dev/null @@ -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 " -} diff --git a/lupan-wm/Cargo.lock b/lupan-wm/Cargo.lock deleted file mode 100644 index 205cab5..0000000 --- a/lupan-wm/Cargo.lock +++ /dev/null @@ -1,965 +0,0 @@ -# This file is automatically @generated by Cargo. -# It is not intended for manual editing. -version = 3 - -[[package]] -name = "anyhow" -version = "1.0.69" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "224afbd727c3d6e4b90103ece64b8d1b67fbb1973b1046c2281eed3f3803f800" - -[[package]] -name = "anymap" -version = "0.12.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33954243bd79057c2de7338850b85983a44588021f8a5fee574a8888c6de4344" - -[[package]] -name = "atty" -version = "0.2.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" -dependencies = [ - "hermit-abi", - "libc", - "winapi", -] - -[[package]] -name = "autocfg" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" - -[[package]] -name = "bitflags" -version = "1.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" - -[[package]] -name = "cairo-rs" -version = "0.15.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c76ee391b03d35510d9fa917357c7f1855bd9a6659c95a1b392e33f49b3369bc" -dependencies = [ - "bitflags", - "cairo-sys-rs", - "glib", - "libc", - "thiserror", -] - -[[package]] -name = "cairo-sys-rs" -version = "0.15.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c55d429bef56ac9172d25fecb85dc8068307d17acd74b377866b7a1ef25d3c8" -dependencies = [ - "glib-sys", - "libc", - "system-deps", -] - -[[package]] -name = "cfg-expr" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0357a6402b295ca3a86bc148e84df46c02e41f41fef186bda662557ef6328aa" -dependencies = [ - "smallvec", -] - -[[package]] -name = "cfg-if" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" - -[[package]] -name = "chrono" -version = "0.4.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "670ad68c9088c2a963aaa298cb369688cf3f9465ce5e2d4ca10e6e0098a1ce73" -dependencies = [ - "libc", - "num-integer", - "num-traits", - "time", - "winapi", -] - -[[package]] -name = "clap" -version = "3.0.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6f34b09b9ee8c7c7b400fe2f8df39cafc9538b03d6ba7f4ae13e4cb90bfbb7d" -dependencies = [ - "atty", - "bitflags", - "clap_derive", - "indexmap", - "lazy_static", - "os_str_bytes", - "strsim", - "termcolor", - "textwrap", -] - -[[package]] -name = "clap_derive" -version = "3.0.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41a0645a430ec9136d2d701e54a95d557de12649a9dd7109ced3187e648ac824" -dependencies = [ - "heck 0.4.0", - "proc-macro-error", - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "futures-channel" -version = "0.3.26" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e5317663a9089767a1ec00a487df42e0ca174b61b4483213ac24448e4664df5" -dependencies = [ - "futures-core", -] - -[[package]] -name = "futures-core" -version = "0.3.26" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec90ff4d0fe1f57d600049061dc6bb68ed03c7d2fbd697274c41805dcb3f8608" - -[[package]] -name = "futures-executor" -version = "0.3.26" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8de0a35a6ab97ec8869e32a2473f4b1324459e14c29275d14b10cb1fd19b50e" -dependencies = [ - "futures-core", - "futures-task", - "futures-util", -] - -[[package]] -name = "futures-task" -version = "0.3.26" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dcf79a1bf610b10f42aea489289c5a2c478a786509693b80cd39c44ccd936366" - -[[package]] -name = "futures-util" -version = "0.3.26" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c1d6de3acfef38d2be4b1f543f553131788603495be83da675e180c8d6b7bd1" -dependencies = [ - "futures-core", - "futures-task", - "pin-project-lite", - "pin-utils", - "slab", -] - -[[package]] -name = "gethostname" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1ebd34e35c46e00bb73e81363248d627782724609fe1b6396f553f68fe3862e" -dependencies = [ - "libc", - "winapi", -] - -[[package]] -name = "glib" -version = "0.15.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "edb0306fbad0ab5428b0ca674a23893db909a98582969c9b537be4ced78c505d" -dependencies = [ - "bitflags", - "futures-channel", - "futures-core", - "futures-executor", - "futures-task", - "glib-macros", - "glib-sys", - "gobject-sys", - "libc", - "once_cell", - "smallvec", - "thiserror", -] - -[[package]] -name = "glib-macros" -version = "0.15.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25a68131a662b04931e71891fb14aaf65ee4b44d08e8abc10f49e77418c86c64" -dependencies = [ - "anyhow", - "heck 0.4.0", - "proc-macro-crate", - "proc-macro-error", - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "glib-sys" -version = "0.15.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef4b192f8e65e9cf76cbf4ea71fa8e3be4a0e18ffe3d68b8da6836974cc5bad4" -dependencies = [ - "libc", - "system-deps", -] - -[[package]] -name = "gobject-sys" -version = "0.15.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d57ce44246becd17153bd035ab4d32cfee096a657fc01f2231c9278378d1e0a" -dependencies = [ - "glib-sys", - "libc", - "system-deps", -] - -[[package]] -name = "hashbrown" -version = "0.12.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" - -[[package]] -name = "heck" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d621efb26863f0e9924c6ac577e8275e5e6b77455db64ffa6c65c904e9e132c" -dependencies = [ - "unicode-segmentation", -] - -[[package]] -name = "heck" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2540771e65fc8cb83cd6e8a237f70c319bd5c29f78ed1084ba5d50eeac86f7f9" - -[[package]] -name = "hermit-abi" -version = "0.1.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33" -dependencies = [ - "libc", -] - -[[package]] -name = "indexmap" -version = "1.9.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1885e79c1fc4b10f0e172c475f458b7f7b93061064d98c3293e98c5ba0c8b399" -dependencies = [ - "autocfg", - "hashbrown", -] - -[[package]] -name = "lazy_static" -version = "1.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" - -[[package]] -name = "libc" -version = "0.2.139" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "201de327520df007757c1f0adce6e827fe8562fbc28bfd9c15571c66ca1f5f79" - -[[package]] -name = "log" -version = "0.4.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "abb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382e" -dependencies = [ - "cfg-if", -] - -[[package]] -name = "lupan-wm" -version = "0.1.1" -dependencies = [ - "clap", - "penrose", - "penrose_ui", - "simplelog", - "tracing", - "tracing-subscriber", -] - -[[package]] -name = "matchers" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8263075bb86c5a1b1427b5ae862e8889656f126e9f77c484496e8b47cf5c5558" -dependencies = [ - "regex-automata", -] - -[[package]] -name = "memchr" -version = "2.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "308cc39be01b73d0d18f82a0e7b2a3df85245f84af96fdddc5d202d27e47b86a" - -[[package]] -name = "memoffset" -version = "0.6.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5aa361d4faea93603064a027415f07bd8e1d5c88c9fbf68bf56a285428fd79ce" -dependencies = [ - "autocfg", -] - -[[package]] -name = "nix" -version = "0.24.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa52e972a9a719cecb6864fb88568781eb706bac2cd1d4f04a648542dbf78069" -dependencies = [ - "bitflags", - "cfg-if", - "libc", - "memoffset", -] - -[[package]] -name = "nix" -version = "0.25.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f346ff70e7dbfd675fe90590b92d59ef2de15a8779ae305ebcbfd3f0caf59be4" -dependencies = [ - "autocfg", - "bitflags", - "cfg-if", - "libc", - "memoffset", - "pin-utils", -] - -[[package]] -name = "nom8" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae01545c9c7fc4486ab7debaf2aad7003ac19431791868fb2e8066df97fad2f8" -dependencies = [ - "memchr", -] - -[[package]] -name = "nu-ansi-term" -version = "0.46.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84" -dependencies = [ - "overload", - "winapi", -] - -[[package]] -name = "num-integer" -version = "0.1.44" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2cc698a63b549a70bc047073d2949cce27cd1c7b0a4a862d08a8031bc2801db" -dependencies = [ - "autocfg", - "num-traits", -] - -[[package]] -name = "num-traits" -version = "0.2.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a64b1ec5cda2586e284722486d802acf1f7dbdc623e2bfc57e65ca1cd099290" -dependencies = [ - "autocfg", -] - -[[package]] -name = "once_cell" -version = "1.17.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b7e5500299e16ebb147ae15a00a942af264cf3688f47923b8fc2cd5858f23ad3" - -[[package]] -name = "os_str_bytes" -version = "6.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e22443d1643a904602595ba1cd8f7d896afe56d26712531c5ff73a15b2fbf64" -dependencies = [ - "memchr", -] - -[[package]] -name = "overload" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" - -[[package]] -name = "pango" -version = "0.15.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22e4045548659aee5313bde6c582b0d83a627b7904dd20dc2d9ef0895d414e4f" -dependencies = [ - "bitflags", - "glib", - "libc", - "once_cell", - "pango-sys", -] - -[[package]] -name = "pango-sys" -version = "0.15.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2a00081cde4661982ed91d80ef437c20eacaf6aa1a5962c0279ae194662c3aa" -dependencies = [ - "glib-sys", - "gobject-sys", - "libc", - "system-deps", -] - -[[package]] -name = "pangocairo" -version = "0.15.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7876a45c1f1d1a75a2601dc6d9ef2cb5a8be0e3d76f909d82450759929035366" -dependencies = [ - "bitflags", - "cairo-rs", - "glib", - "libc", - "pango", - "pangocairo-sys", -] - -[[package]] -name = "pangocairo-sys" -version = "0.15.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78cf746594916c81d5f739af9335c5f55a1f4606d80b3e1d821f18cf95a29494" -dependencies = [ - "cairo-sys-rs", - "glib-sys", - "libc", - "pango-sys", - "system-deps", -] - -[[package]] -name = "penrose" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e93c99e05bb9926a036cd391570dd142dc8d6522edc7b290c9e86beacf7e799" -dependencies = [ - "anymap", - "bitflags", - "nix 0.25.1", - "penrose_keysyms", - "strum 0.24.1", - "strum_macros 0.24.3", - "thiserror", - "tracing", - "x11rb", -] - -[[package]] -name = "penrose_keysyms" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a574df0fe3d7e0bb1fd297dd722d8aea8ea33a734d862451509814062bec2d6" -dependencies = [ - "strum 0.20.0", - "strum_macros 0.20.1", -] - -[[package]] -name = "penrose_ui" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "540c877ce9894a5c23a4aa9a21f2a061c22de530e47bbc4ac548e7a2acb30b7d" -dependencies = [ - "cairo-rs", - "pango", - "pangocairo", - "penrose", - "thiserror", - "tracing", - "x11rb", -] - -[[package]] -name = "pin-project-lite" -version = "0.2.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0a7ae3ac2f1173085d398531c705756c94a4c56843785df85a60c1a0afac116" - -[[package]] -name = "pin-utils" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" - -[[package]] -name = "pkg-config" -version = "0.3.26" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ac9a59f73473f1b8d852421e59e64809f025994837ef743615c6d0c5b305160" - -[[package]] -name = "proc-macro-crate" -version = "1.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "66618389e4ec1c7afe67d51a9bf34ff9236480f8d51e7489b7d5ab0303c13f34" -dependencies = [ - "once_cell", - "toml_edit", -] - -[[package]] -name = "proc-macro-error" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" -dependencies = [ - "proc-macro-error-attr", - "proc-macro2", - "quote", - "syn", - "version_check", -] - -[[package]] -name = "proc-macro-error-attr" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" -dependencies = [ - "proc-macro2", - "quote", - "version_check", -] - -[[package]] -name = "proc-macro2" -version = "1.0.51" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d727cae5b39d21da60fa540906919ad737832fe0b1c165da3a34d6548c849d6" -dependencies = [ - "unicode-ident", -] - -[[package]] -name = "quote" -version = "1.0.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38bc8cc6a5f2e3655e0899c1b848643b2562f853f114bfec7be120678e3ace05" -dependencies = [ - "proc-macro2", -] - -[[package]] -name = "regex" -version = "1.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48aaa5748ba571fb95cd2c85c09f629215d3a6ece942baa100950af03a34f733" -dependencies = [ - "regex-syntax", -] - -[[package]] -name = "regex-automata" -version = "0.1.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132" -dependencies = [ - "regex-syntax", -] - -[[package]] -name = "regex-syntax" -version = "0.6.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "456c603be3e8d448b072f410900c09faf164fbce2d480456f50eea6e25f9c848" - -[[package]] -name = "rustversion" -version = "1.0.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2cc38e8fa666e2de3c4aba7edeb5ffc5246c1c2ed0e3d17e560aeeba736b23f" - -[[package]] -name = "serde" -version = "1.0.152" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb7d1f0d3021d347a83e556fc4683dea2ea09d87bccdf88ff5c12545d89d5efb" - -[[package]] -name = "sharded-slab" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "900fba806f70c630b0a382d0d825e17a0f19fcd059a2ade1ff237bcddf446b31" -dependencies = [ - "lazy_static", -] - -[[package]] -name = "simplelog" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b2736f58087298a448859961d3f4a0850b832e72619d75adc69da7993c2cd3c" -dependencies = [ - "chrono", - "log", - "termcolor", -] - -[[package]] -name = "slab" -version = "0.4.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4614a76b2a8be0058caa9dbbaf66d988527d86d003c11a94fbd335d7661edcef" -dependencies = [ - "autocfg", -] - -[[package]] -name = "smallvec" -version = "1.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a507befe795404456341dfab10cef66ead4c041f62b8b11bbb92bffe5d0953e0" - -[[package]] -name = "strsim" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" - -[[package]] -name = "strum" -version = "0.20.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7318c509b5ba57f18533982607f24070a55d353e90d4cae30c467cdb2ad5ac5c" -dependencies = [ - "strum_macros 0.20.1", -] - -[[package]] -name = "strum" -version = "0.24.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "063e6045c0e62079840579a7e47a355ae92f60eb74daaf156fb1e84ba164e63f" -dependencies = [ - "strum_macros 0.24.3", -] - -[[package]] -name = "strum_macros" -version = "0.20.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee8bc6b87a5112aeeab1f4a9f7ab634fe6cbefc4850006df31267f4cfb9e3149" -dependencies = [ - "heck 0.3.3", - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "strum_macros" -version = "0.24.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e385be0d24f186b4ce2f9982191e7101bb737312ad61c1f2f984f34bcf85d59" -dependencies = [ - "heck 0.4.0", - "proc-macro2", - "quote", - "rustversion", - "syn", -] - -[[package]] -name = "syn" -version = "1.0.107" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f4064b5b16e03ae50984a5a8ed5d4f8803e6bc1fd170a3cda91a1be4b18e3f5" -dependencies = [ - "proc-macro2", - "quote", - "unicode-ident", -] - -[[package]] -name = "system-deps" -version = "6.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2955b1fe31e1fa2fbd1976b71cc69a606d7d4da16f6de3333d0c92d51419aeff" -dependencies = [ - "cfg-expr", - "heck 0.4.0", - "pkg-config", - "toml", - "version-compare", -] - -[[package]] -name = "termcolor" -version = "1.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2dfed899f0eb03f32ee8c6a0aabdb8a7949659e3466561fc0adf54e26d88c5f4" -dependencies = [ - "winapi-util", -] - -[[package]] -name = "textwrap" -version = "0.14.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0066c8d12af8b5acd21e00547c3797fde4e8677254a7ee429176ccebbe93dd80" - -[[package]] -name = "thiserror" -version = "1.0.38" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a9cd18aa97d5c45c6603caea1da6628790b37f7a34b6ca89522331c5180fed0" -dependencies = [ - "thiserror-impl", -] - -[[package]] -name = "thiserror-impl" -version = "1.0.38" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fb327af4685e4d03fa8cbcf1716380da910eeb2bb8be417e7f9fd3fb164f36f" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "thread_local" -version = "1.1.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fdd6f064ccff2d6567adcb3873ca630700f00b5ad3f060c25b5dcfd9a4ce152" -dependencies = [ - "cfg-if", - "once_cell", -] - -[[package]] -name = "time" -version = "0.1.44" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6db9e6914ab8b1ae1c260a4ae7a49b6c5611b40328a735b21862567685e73255" -dependencies = [ - "libc", - "wasi", - "winapi", -] - -[[package]] -name = "toml" -version = "0.5.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234" -dependencies = [ - "serde", -] - -[[package]] -name = "toml_datetime" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4553f467ac8e3d374bc9a177a26801e5d0f9b211aa1673fb137a403afd1c9cf5" - -[[package]] -name = "toml_edit" -version = "0.18.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56c59d8dd7d0dcbc6428bf7aa2f0e823e26e43b3c9aca15bbc9475d23e5fa12b" -dependencies = [ - "indexmap", - "nom8", - "toml_datetime", -] - -[[package]] -name = "tracing" -version = "0.1.37" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ce8c33a8d48bd45d624a6e523445fd21ec13d3653cd51f681abf67418f54eb8" -dependencies = [ - "cfg-if", - "log", - "pin-project-lite", - "tracing-attributes", - "tracing-core", -] - -[[package]] -name = "tracing-attributes" -version = "0.1.23" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4017f8f45139870ca7e672686113917c71c7a6e02d4924eda67186083c03081a" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "tracing-core" -version = "0.1.30" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24eb03ba0eab1fd845050058ce5e616558e8f8d8fca633e6b163fe25c797213a" -dependencies = [ - "once_cell", - "valuable", -] - -[[package]] -name = "tracing-log" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78ddad33d2d10b1ed7eb9d1f518a5674713876e97e5bb9b7345a7984fbb4f922" -dependencies = [ - "lazy_static", - "log", - "tracing-core", -] - -[[package]] -name = "tracing-subscriber" -version = "0.3.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a6176eae26dd70d0c919749377897b54a9276bd7061339665dd68777926b5a70" -dependencies = [ - "matchers", - "nu-ansi-term", - "once_cell", - "regex", - "sharded-slab", - "smallvec", - "thread_local", - "tracing", - "tracing-core", - "tracing-log", -] - -[[package]] -name = "unicode-ident" -version = "1.0.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "84a22b9f218b40614adcb3f4ff08b703773ad44fa9423e4e0d346d5db86e4ebc" - -[[package]] -name = "unicode-segmentation" -version = "1.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8895849a949e7845e06bd6dc1aa51731a103c42707010a5b591c0038fb73385b" - -[[package]] -name = "valuable" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" - -[[package]] -name = "version-compare" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "579a42fc0b8e0c63b76519a339be31bed574929511fa53c1a3acae26eb258f29" - -[[package]] -name = "version_check" -version = "0.9.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5fecdca9a5291cc2b8dcf7dc02453fee791a280f3743cb0905f8822ae463b3fe" - -[[package]] -name = "wasi" -version = "0.10.0+wasi-snapshot-preview1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a143597ca7c7793eff794def352d41792a93c481eb1042423ff7ff72ba2c31f" - -[[package]] -name = "winapi" -version = "0.3.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" -dependencies = [ - "winapi-i686-pc-windows-gnu", - "winapi-x86_64-pc-windows-gnu", -] - -[[package]] -name = "winapi-i686-pc-windows-gnu" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" - -[[package]] -name = "winapi-util" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178" -dependencies = [ - "winapi", -] - -[[package]] -name = "winapi-wsapoll" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44c17110f57155602a80dca10be03852116403c9ff3cd25b079d666f2aa3df6e" -dependencies = [ - "winapi", -] - -[[package]] -name = "winapi-x86_64-pc-windows-gnu" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" - -[[package]] -name = "x11rb" -version = "0.10.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "592b4883219f345e712b3209c62654ebda0bb50887f330cbd018d0f654bfd507" -dependencies = [ - "gethostname", - "libc", - "nix 0.24.3", - "winapi", - "winapi-wsapoll", - "x11rb-protocol", -] - -[[package]] -name = "x11rb-protocol" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56b245751c0ac9db0e006dc812031482784e434630205a93c73cfefcaabeac67" -dependencies = [ - "nix 0.24.3", -] diff --git a/lupan-wm/Cargo.toml b/lupan-wm/Cargo.toml deleted file mode 100644 index 1314f4c..0000000 --- a/lupan-wm/Cargo.toml +++ /dev/null @@ -1,12 +0,0 @@ -[package] -name = "lupan-wm" -version = "0.1.1" -edition = "2021" - -[dependencies] -clap = { version = "3.0.5", features = ["derive"] } -penrose = "0.3.1" -penrose_ui = "0.1.1" -simplelog = "0.8" -tracing = { version = "0.1.37", features = ["attributes", "log"] } -tracing-subscriber = { version = "0.3.16", features = ["env-filter"] } diff --git a/lupan-wm/src/main.rs b/lupan-wm/src/main.rs deleted file mode 100644 index 16268fb..0000000 --- a/lupan-wm/src/main.rs +++ /dev/null @@ -1,184 +0,0 @@ -use clap::Parser; - -use penrose::{ - builtin::{ - actions::{exit, log_current_state, modify_with, send_layout_message, spawn, key_handler}, - layout::{ - messages::{ExpandMain, IncMain, ShrinkMain}, - transformers::{Gaps, ReserveTop}, - MainAndStack, Monocle, - }, - }, - core::{ - bindings::{parse_keybindings_with_xmodmap, KeyEventHandler}, - layout::LayoutStack, - Config, WindowManager, - }, - extensions::{hooks::add_ewmh_hooks, actions::focus_or_spawn}, - extensions::actions::toggle_fullscreen, - map, stack, - x11rb::RustConn, - Result, - util -}; -use penrose_ui::{bar::Position, core::TextStyle, status_bar}; -use std::collections::HashMap; -use tracing_subscriber::{self, prelude::*}; - -const FONT: &str = "Iosevka Slab Light"; -const FONT_SIZE: i32 = 20; -const BLACK: u32 = 0x282828ff; -const WHITE: u32 = 0x7dd3fcff; -const GREY: u32 = 0x94a3b8ff; -const BLUE: u32 = 0x0c4a6eff; -const FOCUSED_BORDER: u32 = 0xd97706ff; -const NORMAL_BORDER: u32 = 0x64748ff; - -const MAX_MAIN: u32 = 1; -const RATIO: f32 = 0.6; -const RATIO_STEP: f32 = 0.05; -const OUTER_PX: u32 = 5; -const INNER_PX: u32 = 5; - -const TERMINAL: &str = "alacritty"; -const EDITOR: &str = "emacsclient -c -n"; -const SUSPEND: &str = "systemctl suspend"; -const LOCK: &str = "slock"; -const SET_THEME: &str = "lupan-set-theme"; -const DMENU_ARGS: &[&str] = &["-fn", "Iosevka Slab Light"]; - -fn raw_key_bindings() -> HashMap>> { - let mut theme = "dark"; - let mut raw_bindings = map! { - map_keys: |k: &str| k.to_owned(); - - "M-j" => modify_with(|cs| cs.focus_down()), - "M-k" => modify_with(|cs| cs.focus_up()), - "M-S-j" => modify_with(|cs| cs.swap_down()), - "M-S-k" => modify_with(|cs| cs.swap_up()), - "M-S-c" => modify_with(|cs| cs.kill_focused()), - "M-a" => modify_with(|cs| cs.toggle_tag()), - "M-f" => toggle_fullscreen(), - "M-Return" => modify_with(|cs| cs.swap_focus_and_head()), - "M-m" => modify_with(|cs| cs.focus_head()), - "M-bracketright" => modify_with(|cs| cs.next_screen()), - "M-bracketleft" => modify_with(|cs| cs.previous_screen()), - "M-S-bracketright" => modify_with(|cs| { - let current_tag = cs.current_tag().to_string(); - cs.next_screen(); - cs.pull_tag_to_screen(current_tag); - }), - "M-S-bracketleft" => modify_with(|cs| { - let current_tag = cs.current_tag().to_string(); - cs.previous_screen(); - cs.pull_tag_to_screen(current_tag); - }), - "M-grave" => modify_with(|cs| cs.next_layout()), - "M-S-grave" => modify_with(|cs| cs.previous_layout()), - "M-comma" => send_layout_message(|| IncMain(1)), - "M-period" => send_layout_message(|| IncMain(-1)), - "M-l" => send_layout_message(|| ExpandMain), - "M-h" => send_layout_message(|| ShrinkMain), - "M-p" => key_handler(move |_, _| util::spawn_with_args("dmenu_run", DMENU_ARGS)), - "M-S-p" => spawn("rofi -theme Arc-Dark -show combi"), - "M-S-e" => spawn(EDITOR), - "M-S-s" => log_current_state(), - "M-S-Return" => spawn(TERMINAL), - "C-M-f" => focus_or_spawn("firefox", "firefox"), - "C-M-l" => spawn(LOCK), - "C-M-s" => spawn(SUSPEND), - "C-M-t" => focus_or_spawn("thunderbird", "thunderbird"), - "M-S-q" => exit(), - - "M-i" => modify_with(|cs| cs.current_tag().parse::().map_or((), |i| cs.focus_tag((i - 1).to_string()))), - "M-o" => modify_with(|cs| cs.current_tag().parse::().map_or((), |i| cs.focus_tag((i + 1).to_string()))), - "M-S-i" => modify_with(|cs| cs.current_tag().parse::().map_or((), |i| cs.move_focused_to_tag((i - 1).to_string()))), - "M-S-o" => modify_with(|cs| cs.current_tag().parse::().map_or((), |i| cs.move_focused_to_tag((i + 1).to_string()))), - "M-C-i" => modify_with(|cs| cs.current_tag().parse::().map_or((), |i| cs.pull_tag_to_screen((i - 1).to_string()))), - "M-C-o" => modify_with(|cs| cs.current_tag().parse::().map_or((), |i| cs.pull_tag_to_screen((i + 1).to_string()))), - - // Switch theme - "M-S-F6" => key_handler(move |_, _| { - theme = if theme == "dark" { "light" } else { "dark" }; - util::spawn(format!("{} {}", SET_THEME, theme)) - }), - }; - - for tag in &["1", "2", "3", "4", "5", "6", "7", "8", "9"] { - raw_bindings.extend([ - ( - format!("M-{tag}"), - modify_with(move |client_set| client_set.focus_tag(tag)), - ), - ( - format!("M-S-{tag}"), - modify_with(move |client_set| client_set.move_focused_to_tag(tag)), - ), - ( - format!("M-C-{tag}"), - modify_with(move |client_set| client_set.pull_tag_to_screen(tag)), - ), - ]); - } - - raw_bindings -} - -fn layouts(bar_height_px: u32) -> LayoutStack { - stack!( - MainAndStack::side(MAX_MAIN, RATIO, RATIO_STEP), - MainAndStack::side_mirrored(MAX_MAIN, RATIO, RATIO_STEP), - MainAndStack::bottom(MAX_MAIN, RATIO, RATIO_STEP), - Monocle::boxed() - ) - .map(|layout| ReserveTop::wrap(Gaps::wrap(layout, OUTER_PX, INNER_PX), bar_height_px)) -} - -#[derive(Parser, Debug)] -#[clap(about, version, author)] -struct Args { - /// Font name - #[clap(short, long, default_value_t = FONT.to_string())] - font: String, - - /// Font size - #[clap(short = 's', long, default_value_t = FONT_SIZE)] - font_size: i32, -} - -fn main() -> Result<()> { - let args = Args::parse(); - tracing_subscriber::fmt() - .with_env_filter("debug") - .finish() - .init(); - let bar_height_px = 2 * args.font_size as u32; - - let config = add_ewmh_hooks(Config { - default_layouts: layouts(bar_height_px), - normal_border: NORMAL_BORDER.into(), - focused_border: FOCUSED_BORDER.into(), - ..Config::default() - }); - - let conn = RustConn::new()?; - let key_bindings = parse_keybindings_with_xmodmap(raw_key_bindings())?; - let style = TextStyle { - font: FONT.to_string(), - point_size: args.font_size, - fg: WHITE.into(), - bg: Some(BLACK.into()), - padding: (2.0, 2.0), - }; - - let bar = status_bar(bar_height_px, &style, BLUE, GREY, Position::Top).unwrap(); - - let wm = bar.add_to(WindowManager::new( - config, - key_bindings, - HashMap::new(), - conn, - )?); - - wm.run() -} diff --git a/qtile/.config/qtile/colors.py b/qtile/.config/qtile/colors.py deleted file mode 100644 index 195f51e..0000000 --- a/qtile/.config/qtile/colors.py +++ /dev/null @@ -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", - } -} diff --git a/qtile/.config/qtile/config.py b/qtile/.config/qtile/config.py deleted file mode 100644 index 0505ee0..0000000 --- a/qtile/.config/qtile/config.py +++ /dev/null @@ -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 diff --git a/qtile/.config/qtile/monitors.py b/qtile/.config/qtile/monitors.py deleted file mode 100644 index 595cac0..0000000 --- a/qtile/.config/qtile/monitors.py +++ /dev/null @@ -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] diff --git a/qtile/.config/qtile/themes.py b/qtile/.config/qtile/themes.py deleted file mode 100644 index 5579f9b..0000000 --- a/qtile/.config/qtile/themes.py +++ /dev/null @@ -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) diff --git a/spectrwm/.spectrwm.conf b/spectrwm/.spectrwm.conf deleted file mode 100644 index c9b3485..0000000 --- a/spectrwm/.spectrwm.conf +++ /dev/null @@ -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 diff --git a/stumpwm/.stumpwm.d/init.lisp b/stumpwm/.stumpwm.d/init.lisp deleted file mode 100644 index f9fd270..0000000 --- a/stumpwm/.stumpwm.d/init.lisp +++ /dev/null @@ -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))