made module categories

This commit is contained in:
Moritz Böhme 2021-09-14 20:55:50 +02:00
parent 8acff72cca
commit 7b5e0d34e7
30 changed files with 51 additions and 24 deletions

31
modules/desktop/bspwm/bspwmrc Executable file
View file

@ -0,0 +1,31 @@
#!/usr/bin/env bash
# MONITORS #
if [[ "$(uname -n)" == *'desktop'* ]]; then
bspc monitor HDMI-0 -d 1 2 3 4 5
bspc monitor HDMI-1 -d 6 7 8 9 10
else
bspc monitor -d 1 2 3 4 5 6 7 8 9
fi
# CONFIGURATION #
bspc config border_width 2
bspc config window_gap 5
bspc config borderless_monocle true
bspc config gapless_monocle true
bspc config focus_follows_pointer true
# Dracula theme #
bspc config focused_border_color "#bd93f9"
# WINDOW RULES #
bspc rule -a Steam state=tiled
bspc rule -a Zathura state=tiled
bspc rule -a Emacs state=tiled
# AUTOSTART #
[[ ! $(pidof -x sxhkd) ]] && sxhkd &
feh --bg-fill ~/.config/wallpaper/dracula.png
systemctl --user start polybar

View file

@ -0,0 +1,49 @@
{ config, lib, pkgs, ... }:
{
services = {
xserver = {
enable = true;
layout = "de";
displayManager = {
defaultSession = "none+bspwm";
autoLogin = {
enable = true;
user = "moritz";
};
lightdm = {
enable = true;
};
};
windowManager.bspwm.enable = true;
};
};
home-manager.users.moritz = {
xsession.windowManager.bspwm.enable = true;
xdg = {
enable = true;
configFile = {
"bspwm/bspwmrc" = {
source = ./bspwmrc;
onChange = "bspc wm -r";
};
"sxhkd/sxhkdrc" = {
source = ./sxhkdrc;
onChange = "pkill -USR1 -x sxhkd";
};
"wallpaper/dracula.png" = {
source = ./dracula.png;
};
};
};
home.packages = with pkgs; [
feh
playerctl
pamixer
brightnessctl
];
};
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 340 KiB

171
modules/desktop/bspwm/sxhkdrc Executable file
View file

@ -0,0 +1,171 @@
#
# wm independent hotkeys
#
# terminal emulator
super + Return
kitty
# program launcher
super + d
rofi -show combi
# make sxhkd reload its configuration files:
alt + shift + c
pkill -USR1 -x sxhkd
# Show help
super + h
~/bin/sxhkd-help
#
# bspwm hotkeys
#
# quit/restart bspwm
alt + shift + {e,r}
bspc {quit,wm -r}
# close and kill
alt + {_,shift + }q
bspc node -{c,k}
# alternate between the tiled and monocle layout
alt + 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
super + g
bspc node -s biggest
# Rotate tree
super + shift + {d,a}
bspc node @/ -C {forward,backward}
#
# state/flags
#
# set the window state
alt + {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
alt + {_,shift + }{h,j,k,l}
bspc node -{f,s} {west,south,north,east}
# focus the node for the given path jump
alt + {p,b,comma,period}
bspc node -f @{parent,brother,first,second}
# focus the next/previous node in the current desktop
alt + {_,shift + }c
bspc node -f {next,prev}.local
# focus the next/previous desktop in the current monitor
alt + {w,q}
bspc desktop -f {prev,next}.local
# focus the last node/desktop
alt + {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
alt + {_,shift + }{1-9,0}
bspc {desktop -f,node -d} '{1-9,10}'
#
# preselect
#
# preselect the direction
super + ctrl + {h,j,k,l}
bspc node -p {west,south,north,east}
# preselect the ratio
super + ctrl + {1-9}
bspc node -o 0.{1-9}
# cancel the preselection for the focused node
super + ctrl + space
bspc node -p cancel
# cancel the preselection for the focused desktop
super + ctrl + shift + space
bspc query -N -d | xargs -I id -n 1 bspc node id -p cancel
#
# move/resize
#
# expand a window by moving one of its side outward
alt + ctrl + {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
alt + {Left,Down,Up,Right}
bspc node -v {-20 0,0 20,0 -20,20 0}
XF86AudioRaiseVolume
pamixer -i 5
XF86AudioLowerVolume
pamixer -d 5
XF86AudioMute
pamixer -t
XF86AudioPlay
playerctl -p "spotify,firefox" play-pause
XF86AudioNext
playerctl -p "spotify,firefox" next
XF86AudioPrev
playerctl -p "spotify,firefox" previous
XF86MonBrightnessDown
brightnessctl s 10%-
XF86MonBrightnessUp
brightnessctl s +10%
# Take a screenshot
Print
flameshot gui
#
# Favourite Progamms
#
# start firefox
super + {_,shift} +f
firefox {_,--private-window}
# start Networkmanager dmenu
super + w
networkmanager_dmenu
# start rofi-bluetooth
super + b
rofi-bluetooth
# start rofi-calc
super + c
rofi -show calc -modi calc -no-show-match -no-sort | xclip -selection clipboard
# start emacs
super + e
emacsclient -c -a emacs

View file

@ -0,0 +1,8 @@
{ config, lib, pkgs, ... }:
{
imports = [
./bspwm
./polybar
];
}

View file

@ -0,0 +1,18 @@
[colors]
background = #282a36
current-line = #44475a
foreground = #f8f8f2
comment = #6272a4
cyan = #8be9fd
green = #50fa7b
orange = #ffb86c
pink = #ff79c6
purple = #bd93f9
red = #ff5555
yellow = #f1fa8c
foreground-alt = ${self.foreground}
background-alt = #1E2029
primary = ${self.pink}
secondary = ${self.green}

View file

@ -0,0 +1,281 @@
; Global WM Settings
[global/wm]
; Adjust the _NET_WM_STRUT_PARTIAL top value
; Used for top aligned bars
margin-bottom = 0
; Adjust the _NET_WM_STRUT_PARTIAL bottom value
; Used for bottom aligned bars
margin-top = 0
;; _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
;; File Inclusion
; include an external file, like module file, etc.
#include-file = ~/.config/polybar/colors.ini
#include-file = ~/.config/polybar/modules.ini
#include-file = ~/.config/polybar/custom/modules.ini
;; _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
[bar/bottom]
; Use either of the following command to list available outputs:
; If unspecified, the application will pick the first one it finds.
; $ polybar -m | cut -d ':' -f 1
; $ xrandr -q | grep " connected" | cut -d ' ' -f1
monitor = ${env:MONITOR}
; Use the specified monitor as a fallback if the main one is not found.
monitor-fallback =
; Require the monitor to be in connected state
; XRandR sometimes reports my monitor as being disconnected (when in use)
monitor-strict = false
; Tell the Window Manager not to configure the window.
; Use this to detach the bar if your WM is locking its size/position.
override-redirect = false
; Put the bar at the bottom of the screen
bottom = true
; Prefer fixed center position for the `modules-center` block
; When false, the center position will be based on the size of the other blocks.
fixed-center = true
; Dimension defined as pixel value (e.g. 35) or percentage (e.g. 50%),
; the percentage can optionally be extended with a pixel offset like so:
; 50%:-10, this will result in a width or height of 50% minus 10 pixels
width = 100%
height = 25
; Offset defined as pixel value (e.g. 35) or percentage (e.g. 50%)
; the percentage can optionally be extended with a pixel offset like so:
; 50%:-10, this will result in an offset in the x or y direction
; of 50% minus 10 pixels
offset-x = 0%
offset-y = 0%
; Background ARGB color (e.g. #f00, #ff992a, #ddff1023)
background = ${colors.background-alt}
; Foreground ARGB color (e.g. #f00, #ff992a, #ddff1023)
foreground = ${colors.foreground}
; Background gradient (vertical steps)
; background-[0-9]+ = #aarrggbb
;;background-0 =
; Value used for drawing rounded corners
; Note: This shouldn't be used together with border-size because the border
; doesn't get rounded
; Individual top/bottom values can be defined using:
; radius-{top,bottom}
radius-top = 0.0
radius-bottom = 0.0
; Under-/overline pixel size and argb color
; Individual values can be defined using:
; {overline,underline}-size
; {overline,underline}-color
line-size = 3
line-color = ${colors.pink}
; Values applied to all borders
; Individual side values can be defined using:
; border-{left,top,right,bottom}-size
; border-{left,top,right,bottom}-color
; The top and bottom borders are added to the bar height, so the effective
; window height is:
; height + border-top-size + border-bottom-size
; Meanwhile the effective window width is defined entirely by the width key and
; the border is placed withing this area. So you effectively only have the
; following horizontal space on the bar:
; width - border-right-size - border-left-size
border-size = 0
border-bottom-color = ${colors.pink}
; Number of spaces to add at the beginning/end of the bar
; Individual side values can be defined using:
; padding-{left,right}
padding-left = 1
padding-right = 1
; Number of spaces to add before/after each module
; Individual side values can be defined using:
; module-margin-{left,right}
module-margin-left = 1
module-margin-right = 1
;; _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
; Fonts are defined using <font-name>;<vertical-offset>
; Font names are specified using a fontconfig pattern.
; font-0 = NotoSans-Regular:size=8;2
; font-1 = MaterialIcons:size=10
; font-2 = Termsynu:size=8;-1
; font-3 = FontAwesome:size=10
; See the Fonts wiki page for more details
font-0 = "FiraCode Nerd Font:size=11;0"
; Modules are added to one of the available blocks
; modules-left = cpu ram
; modules-center = xwindow xbacklight
; modules-right = ipc clock
modules-left = cpu memory wlan eth battery
modules-center = bspwm
modules-right = pulseaudio date powermenu
;; _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
; The separator will be inserted between the output of each module
separator =
; Opacity value between 0.0 and 1.0 used on fade in/out
dim-value = 1.0
; Value to be used to set the WM_NAME atom
; If the value is empty or undefined, the atom value
; will be created from the following template: polybar-[BAR]_[MONITOR]
; NOTE: The placeholders are not available for custom values
wm-name =
; Locale used to localize various module data (e.g. date)
; Expects a valid libc locale, for example: sv_SE.UTF-8
locale =
; Position of the system tray window
; If empty or undefined, tray support will be disabled
; NOTE: A center aligned tray will cover center aligned modules
;
; Available positions:
; left
; center
; right
; none
tray-position = right
; If true, the bar will not shift its
; contents when the tray changes
tray-detached = false
; Tray icon max size
tray-maxsize = 16
; Background color for the tray container
; ARGB color (e.g. #f00, #ff992a, #ddff1023)
; By default the tray container will use the bar
; background color.
tray-background = ${colors.background-alt}
; Tray offset defined as pixel value (e.g. 35) or percentage (e.g. 50%)
tray-offset-x = 0
tray-offset-y = 0
; Pad the sides of each tray icon
tray-padding = 2
; Scale factor for tray clients
tray-scale = 1.0
; Restack the bar window and put it above the
; selected window manager's root
;
; Fixes the issue where the bar is being drawn
; on top of fullscreen window's
;
; Currently supported WM's:
; bspwm
; i3 (requires: `override-redirect = true`)
wm-restack = bspwm
; Set a DPI values used when rendering text
; This only affects scalable fonts
; dpi =
; Enable support for inter-process messaging
; See the Messaging wiki page for more details.
enable-ipc = true
; Fallback click handlers that will be called if
; there's no matching module handler found.
click-left =
click-middle =
click-right =
scroll-up =
scroll-down =
double-click-left =
double-click-middle =
double-click-right =
; Requires polybar to be built with xcursor support (xcb-util-cursor)
; Possible values are:
; - default : The default pointer as before, can also be an empty string (default)
; - pointer : Typically in the form of a hand
; - ns-resize : Up and down arrows, can be used to indicate scrolling
cursor-click = pointer
cursor-scroll = ns-resize
;; WM Workspace Specific
; bspwm
;;scroll-up = #bspwm.next
;;scroll-down = #bspwm.prev
;;scroll-up = bspc desktop -f prev.local
;;scroll-down = bspc desktop -f next.local
;i3
;;scroll-up = i3wm-wsnext
;;scroll-down = i3wm-wsprev
;;scroll-up = i3-msg workspace next_on_output
;;scroll-down = i3-msg workspace prev_on_output
;; _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
;; Application Settings
[settings]
; The throttle settings lets the eventloop swallow up til X events
; if they happen within Y millisecond after first event was received.
; This is done to prevent flood of update event.
;
; For example if 5 modules emit an update event at the same time, we really
; just care about the last one. But if we wait too long for events to swallow
; the bar would appear sluggish so we continue if timeout
; expires or limit is reached.
throttle-output = 5
throttle-output-for = 10
; Time in milliseconds that the input handler will wait between processing events
;throttle-input-for = 30
; Reload upon receiving XCB_RANDR_SCREEN_CHANGE_NOTIFY events
screenchange-reload = true
; Compositing operators
; @see: https://www.cairographics.org/manual/cairo-cairo-t.html#cairo-operator-t
;;compositing-background = source
;;compositing-foreground = over
;;compositing-overline = over
;;compositing-underline = over
;;compositing-border = over
; Define fallback values used by all module formats
;format-foreground =
;format-background =
;format-underline =
;format-overline =
;format-spacing =
;format-padding =
;format-margin =
;format-offset =
; Enables pseudo-transparency for the bar
; If set to true the bar can be transparent without a compositor.
pseudo-transparency = false
;; _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_

View file

@ -0,0 +1,22 @@
{ config, lib, pkgs, ... }:
let
base = {
services.polybar = {
enable = true;
package = pkgs.polybar.override {
pulseSupport = true;
};
script = ''for m in $(polybar --list-monitors | ${pkgs.coreutils}/bin/cut -d":" -f1); do
MONITOR=$m polybar --reload bottom &
done
'';
config = ./config.ini;
extraConfig = builtins.readFile ./modules.ini +
builtins.readFile ./colors.ini;
};
};
in
{
home-manager.users.moritz = {...}: (base);
}

View file

@ -0,0 +1,224 @@
[module/battery]
type= internal/battery
battery= BATT
adapter= ACAD
; see "man date" for details on how to format the time string
; NOTE: if you want to use syntax tags here you need to use %%{...}
; Default: %H:%M:%S
time-format = %H:%M
; Available tags:
; <label-charging> (default)
; <bar-capacity>
; <ramp-capacity>
; <animation-charging>
format-charging = <animation-charging> <label-charging>
format-charging-underline = ${colors.green}
; Available tags:
; <label-discharging> (default)
; <bar-capacity>
; <ramp-capacity>
; <animation-discharging>
format-discharging = <ramp-capacity> <label-discharging>
format-discharging-underline = ${colors.red}
; Available tags:
; <label-full> (default)
; <bar-capacity>
; <ramp-capacity>
format-full = <label-full>
format-full-underline = ${colors.green}
; Available tokens:
; %percentage% (default) - is set to 100 if full-at is reached
; %percentage_raw%
; %time%
; %consumption% (shows current charge rate in watts)
label-charging = %percentage%% %time% remaining
; Available tokens:
; %percentage% (default) - is set to 100 if full-at is reached
; %percentage_raw%
; %time%
; %consumption% (shows current discharge rate in watts)
label-discharging = %percentage%% %time% remaining
; Available tokens:
; %percentage% (default) - is set to 100 if full-at is reached
; %percentage_raw%
label-full = Fully charged
; Only applies if <ramp-capacity> is used
ramp-capacity-0 =
ramp-capacity-1 =
ramp-capacity-2 =
ramp-capacity-3 =
ramp-capacity-4 =
; Only applies if <bar-capacity> is used
bar-capacity-width = 10
; Only applies if <animation-charging> is used
animation-charging-0 =
animation-charging-1 =
animation-charging-2 =
animation-charging-3 =
animation-charging-4 =
; Framerate in milliseconds
animation-charging-framerate = 750
; Only applies if <animation-discharging> is used
animation-discharging-0 =
animation-discharging-1 =
animation-discharging-2 =
animation-discharging-3 =
animation-discharging-4 =
; Framerate in milliseconds
animation-discharging-framerate = 500
[module/bspwm]
type = internal/bspwm
reverse-scroll = false
label-focused =
label-focused-foreground = ${colors.purple}
label-focused-padding = 1
label-occupied =
label-occupied-foreground = ${colors.comment}
label-occupied-padding = 1
label-urgent =
label-urgent-foreground = ${colors.red}
label-urgent-padding = 1
label-empty =
label-empty-foreground = ${colors.comment}
; label-empty-background = ${colors.pink}
label-empty-padding = 1
label-separator = " "
label-separator-foreground = ${colors.cyan}
label-separator-padding = 1
pin-workspaces = true
[module/cpu]
type = internal/cpu
interval = 2
format-prefix = " "
format-prefix-foreground = ${colors.red}
format-underline = ${colors.red}
label = %percentage:2%%
[module/date]
type = internal/date
interval = 5
date = "%A"
date-alt = " %Y-%m-%d"
time = %H:%M
time-alt = %H:%M:%S
format-underline = ${colors.purple}
label = %date% %time%
[module/eth]
type = internal/network
interface = enp42s0
interval = 3.0
format-connected-underline = ${colors.purple}
label-connected = "%upspeed% %downspeed%"
[module/memory]
type = internal/memory
interval = 2
format-prefix = " "
format-prefix-foreground = ${colors.green}
format-underline = ${colors.green}
label = %percentage_used%%
click-left=kitty bpytop
[module/powermenu]
type = custom/menu
expand-right = false
format-spacing = 1
label-open = ""
label-open-foreground = ${colors.orange}
label-close = ""
label-close-foreground = ${colors.red}
label-separator = |
label-separator-foreground = ${colors.cyan}
menu-0-0 = " "
menu-0-0-exec = #powermenu.open.1
menu-0-1 = " "
menu-0-1-exec = #powermenu.open.2
menu-0-2 = " "
menu-0-2-exec = #powermenu.open.3
menu-1-0 = " "
menu-1-0-exec = systemctl reboot
menu-2-0 = " "
menu-2-0-exec = systemctl poweroff
menu-3-0 = " "
menu-3-0-exec = systemctl hibernate
[module/pulseaudio]
type = internal/pulseaudio
format-volume = <label-volume> <bar-volume>
label-volume = %percentage%%
label-volume-foreground = ${colors.foreground}
label-muted = " muted"
label-muted-foreground = ${colors.foreground-alt}
bar-volume-width = 12
bar-volume-foreground-0 = ${colors.green}
bar-volume-foreground-1 = ${colors.green}
bar-volume-foreground-2 = ${colors.green}
bar-volume-foreground-3 = ${colors.green}
bar-volume-foreground-4 = ${colors.green}
bar-volume-foreground-5 = ${colors.orange}
bar-volume-foreground-6 = ${colors.orange}
bar-volume-foreground-7 = ${colors.orange}
bar-volume-foreground-8 = ${colors.red}
bar-volume-gradient = true
bar-volume-indicator = |
bar-volume-indicator-font = 2
bar-volume-fill = -
bar-volume-fill-font = 2
bar-volume-empty = -
bar-volume-empty-font = 2
bar-volume-empty-foreground = ${colors.foreground}
click-middle=pavucontrol
click-right=~/bin/cycle_sinks.sh
[module/wlan]
type = internal/network
interface = wlp1s0
interval = 3.0
format-connected-underline = ${colors.purple}
label-connected = "%upspeed% %downspeed%"
[module/xwindow]
type = internal/xwindow
format = <label>
label = %title:0:30:...%
format-underline = ${colors.orange}