diff --git a/README.md b/README.md index bb0083c..1dbefa4 100644 --- a/README.md +++ b/README.md @@ -68,9 +68,16 @@ Most patches can be found on the suckless website: [https://dwm.suckless.org/pat * [cool autostart](https://dwm.suckless.org/patches/cool_autostart/) - Execute commands from `autostart` array in `config.h` on startup and kill processes upon dwm exit * [cyclelayouts](https://dwm.suckless.org/patches/cyclelayouts/) - Cycle through all available layouts * [fixborders](https://dwm.suckless.org/patches/alpha/) - Make borders opaque +* [ipc](https://github.com/mihirlad55/dwm-ipc) - Allows third party programs (e.g. polybar) to query window manager for information * [movestack](https://dwm.suckless.org/patches/movestack/) - Move clients around in the stack and swap them with the master * [noborder](https://dwm.suckless.org/patches/noborder/) (Floating Fix) - Remove the border when there is only one window visible * [swallow](https://dwm.suckless.org/patches/swallow/) - Programs opened from terminal will "swallow" the terminal * [unfloatvisible](https://dwm.suckless.org/patches/unfloatvisible/) - Resets `isfloating` on any visible windows that have it set * [xresources](https://dwm.suckless.org/patches/xresources/) - Allows dwm settings (e.g. colors) to be set in Xresources -* [dwm-ipc](https://github.com/mihirlad55/dwm-ipc) - Allows third party programs (e.g. polybar) to query window manager for information + +## Polybar + +I am using polybar for the status bar. In dwm, this requires a modified version. + +* [Polybar DWM Module](https://github.com/mihirlad55/polybar-dwm-module) +* [Polybar](https://github.com/polybar/polybar) diff --git a/config.def.h b/config.def.h index b9d1cce..ed3688e 100644 --- a/config.def.h +++ b/config.def.h @@ -15,7 +15,7 @@ static const int topbar = 1; /* 0 means bottom bar */ static const int usealtbar = 1; /* 1 means use non-dwm status bar */ static const char *altbarclass = "Polybar"; /* Alternate bar class name */ static const char *alttrayname = "tray"; /* Polybar tray instance name */ -static const char *altbarcmd = "$HOME/bar.sh"; /* Alternate bar launch command */ +static const char *altbarcmd = "$HOME/.config/dwm/polybar/launch-polybar.sh"; /* Alternate bar launch command */ static const char *fonts[] = { "NotoSans Nerd Font:size=10" }; static char normbgcolor[] = "#222222"; /* background color */ static char normbordercolor[] = "#444444"; /* inactive window border color */ diff --git a/polybar/config.ini b/polybar/config.ini new file mode 100644 index 0000000..86d4ec9 --- /dev/null +++ b/polybar/config.ini @@ -0,0 +1,503 @@ +;========================================================== +; +; +; ██████╗ ██████╗ ██╗ ██╗ ██╗██████╗ █████╗ ██████╗ +; ██╔══██╗██╔═══██╗██║ ╚██╗ ██╔╝██╔══██╗██╔══██╗██╔══██╗ +; ██████╔╝██║ ██║██║ ╚████╔╝ ██████╔╝███████║██████╔╝ +; ██╔═══╝ ██║ ██║██║ ╚██╔╝ ██╔══██╗██╔══██║██╔══██╗ +; ██║ ╚██████╔╝███████╗██║ ██████╔╝██║ ██║██║ ██║ +; ╚═╝ ╚═════╝ ╚══════╝╚═╝ ╚═════╝ ╚═╝ ╚═╝╚═╝ ╚═╝ +; +; +; To learn more about how to configure Polybar +; go to https://github.com/polybar/polybar +; +; The README contains a lot of information +; +;========================================================== + +[colors] +;background = ${xrdb:color0:#222} +background = #222 +background-alt = #444 +;foreground = ${xrdb:color7:#222} +foreground = #dfdfdf +foreground-alt = #555 +primary = #ffb52a +secondary = #e60053 +alert = #bd2c40 + +[bar/example] +;monitor = ${env:MONITOR:HDMI-1} +width = 100% +height = 27 +;offset-x = 1% +;offset-y = 1% +radius = 6.0 +fixed-center = false + +background = ${colors.background} +foreground = ${colors.foreground} + +line-size = 3 +line-color = #f00 + +border-size = 4 +border-color = #00000000 + +padding-left = 0 +padding-right = 2 + +module-margin-left = 1 +module-margin-right = 2 + +font-0 = fixed:pixelsize=10;1 +font-1 = unifont:fontformat=truetype:size=8:antialias=false;0 +font-2 = siji:pixelsize=10;1 + +modules-left = bspwm i3 dwm +modules-center = mpd +modules-right = filesystem xbacklight alsa pulseaudio xkeyboard memory cpu wlan eth battery temperature date powermenu + +tray-position = right +tray-padding = 2 +;tray-background = #0063ff + +;wm-restack = bspwm +;wm-restack = i3 + +;override-redirect = false + +;scroll-up = bspwm-desknext +;scroll-down = bspwm-deskprev + +;scroll-up = i3wm-wsnext +;scroll-down = i3wm-wsprev + +cursor-click = pointer +cursor-scroll = ns-resize + +[module/xwindow] +type = internal/xwindow +label = %title:0:30:...% + +[module/xkeyboard] +type = internal/xkeyboard +blacklist-0 = num lock + +format-prefix = " " +format-prefix-foreground = ${colors.foreground-alt} +format-prefix-underline = ${colors.secondary} + +label-layout = %layout% +label-layout-underline = ${colors.secondary} + +label-indicator-padding = 2 +label-indicator-margin = 1 +label-indicator-background = ${colors.secondary} +label-indicator-underline = ${colors.secondary} + +[module/filesystem] +type = internal/fs +interval = 25 + +mount-0 = / + +label-mounted = %{F#0a81f5}%mountpoint%%{F-}: %percentage_used%% +label-unmounted = %mountpoint% not mounted +label-unmounted-foreground = ${colors.foreground-alt} + +[module/bspwm] +type = internal/bspwm + +label-focused = %index% +label-focused-background = ${colors.background-alt} +label-focused-underline= ${colors.primary} +label-focused-padding = 2 + +label-occupied = %index% +label-occupied-padding = 2 + +label-urgent = %index%! +label-urgent-background = ${colors.alert} +label-urgent-padding = 2 + +label-empty = %index% +label-empty-foreground = ${colors.foreground-alt} +label-empty-padding = 2 + +; Separator in between workspaces +; label-separator = | + +[module/i3] +type = internal/i3 +format = +index-sort = true +wrapping-scroll = false + +; Only show workspaces on the same output as the bar +;pin-workspaces = true + +label-mode-padding = 2 +label-mode-foreground = #000 +label-mode-background = ${colors.primary} + +; focused = Active workspace on focused monitor +label-focused = %index% +label-focused-background = ${colors.background-alt} +label-focused-underline= ${colors.primary} +label-focused-padding = 2 + +; unfocused = Inactive workspace on any monitor +label-unfocused = %index% +label-unfocused-padding = 2 + +; visible = Active workspace on unfocused monitor +label-visible = %index% +label-visible-background = ${self.label-focused-background} +label-visible-underline = ${self.label-focused-underline} +label-visible-padding = ${self.label-focused-padding} + +; urgent = Workspace with urgency hint set +label-urgent = %index% +label-urgent-background = ${colors.alert} +label-urgent-padding = 2 + +; Separator in between workspaces +; label-separator = | + +[module/dwm] +type = internal/dwm +format = +; Path to dwm socket (default: /tmp/dwm.sock) +; socket-path = /tmp/dwm.sock + +; Left-click to view tag, right-click to toggle tag view +enable-tags-click = false +; Scroll to cycle between available tags +enable-tags-scroll = false +; If true and enable-tags-scroll = true, scrolling will view all tags regardless if occupied +tags-scroll-empty = false +; If true and enable-tags-scroll = true, scrolling will cycle through tags backwards +tags-scroll-reverse = false +; If true and enable-tags-scroll = true, wrap active tag when scrolling +tags-scroll-wrap = false +; Left-click to set secondary layout, right-click to switch to previous layout +enable-layout-click = false +; Scroll to cycle between available layouts +enable-layout-scroll = false +; Wrap when scrolling and reaching begining/end of layouts +layout-scroll-wrap = false +; Reverse scroll direction +layout-scroll-reverse = false + +; If enable-layout-click = true, clicking the layout symbol will switch to this layout +secondary-layout-symbol = [M] + +; Separator in between shown tags +; label-separator = | + +; Title of currently focused window +; Available tokens: +; %title% +label-title = %title% +label-title-padding = 2 +label-title-forefround = ${colors.primary} +label-title-maxlen = 30 + +; Symbol of current layout +; Available tokens: +; %symbol% +label-layout = %symbol% +label-layout-padding = 2 +label-layout-foreground = #000 +label-layout-background = ${colors.primary} + +; Text to show when currently focused window is floating +label-floating = F + +; States: focused, unfocused, visible, urgent, empty +; Available tokens: +; %name% + +; focused = Selected tag on focused monitor +label-focused = %name% +label-focused-background = ${colors.background-alt} +label-focused-underline= ${colors.primary} +label-focused-padding = 2 + +; unfocused = Unselected tag on unselected monitor +label-unfocused = %name% +label-unfocused-padding = 2 + +; visible = Unselected tag, but occupied tag on any monitor +label-visible = %name% +label-visible-background = ${self.label-focused-background} +label-visible-underline = ${self.label-focused-underline} +label-visible-padding = ${self.label-focused-padding} + +; urgent = Unselected tag with window that has urgency hint set +label-urgent = %name% +label-urgent-background = ${colors.alert} +label-urgent-padding = 2 + +; empty = Unselected and unoccupied tag +; This can be set to an empty string to hide empty tags +label-empty = %name% +label-empty-background = ${colors.primary} +label-empty-padding = 2 + +[module/mpd] +type = internal/mpd +format-online = + +icon-prev =  +icon-stop =  +icon-play =  +icon-pause =  +icon-next =  + +label-song-maxlen = 25 +label-song-ellipsis = true + +[module/xbacklight] +type = internal/xbacklight + +format =