diff --git a/users/profiles/desktop/Xresources b/users/profiles/desktop/Xresources new file mode 100644 index 00000000..c0c48f61 --- /dev/null +++ b/users/profiles/desktop/Xresources @@ -0,0 +1,80 @@ +!! Colors +#define blk #1E2029 +#define bblk #282a36 +#define red #ffb86c +#define bred #de935f +#define grn #50fa7b +#define bgrn #0189cc +#define ylw #f0c674 +#define bylw #f9a03f +#define blu #61bfff +#define bblu #8be9fd +#define mag #bd93f9 +#define bmag #ff79c6 +#define cyn #8be9fd +#define bcyn #0189cc +#define wht #f8f8f2 +#define bwht #e2e2dc +#define bg blk +#define fg wht + +*.foreground: fg +*.background: bg +*.cursorColor: mag + +*.color0: blk +*.color8: bblk +*.color1: red +*.color9: bred +*.color2: grn +*.color10: bgrn +*.color3: ylw +*.color11: bylw +*.color4: blu +*.color12: bblu +*.color5: mag +*.color13: bmag +*.color6: cyn +*.color14: bcyn +*.color7: wht +*.color15: bwht + +! greys +*.color234: #1E2029 +*.color235: #282a36 +*.color236: #373844 +*.color237: #44475a +*.color239: #565761 +*.color240: #6272a4 +*.color241: #b6b6b2 + + +!! general +st.scratch.font: JetBrainsMono:pixelsize=16 + + +!! xst +st.font: JetBrainsMono:pixelsize=12 +st.borderpx: 10 + + +!! urxvt +URxvt*depth: 32 +URxvt*.background: blk +URxvt*.borderless: 1 +URxvt*.buffered: true +URxvt*.cursorBlink: true +URxvt*.font: xft:Fira Code:pixelsize=12 +URxvt*.internalBorder: 10 +URxvt*.letterSpace: 0 +URxvt*.lineSpace: 0 +URxvt*.loginShell: false +URxvt*.matcher.button: 1 +URxvt*.matcher.rend.0: Uline Bold fg5 +URxvt*.saveLines: 5000 +URxvt*.scrollBar: false +URxvt*.underlineColor: grey +URxvt.clipboard.autocopy: true +URxvt.iso14755: false +URxvt.iso14755_52: false +URxvt.perl-ext-common: default,matcher diff --git a/users/profiles/desktop/bspwmrc b/users/profiles/desktop/bspwmrc new file mode 100755 index 00000000..b942f75a --- /dev/null +++ b/users/profiles/desktop/bspwmrc @@ -0,0 +1,34 @@ +#!/usr/bin/env bash + +# case $HOSTNAME in +# kuro) export LAN=eno1 ;; +# shiro) export LAN=wlp3s0 ;; +# esac + +export MONITOR=$(xrandr -q | grep primary | cut -d' ' -f1) +export MONITORS=( $(xrandr -q | grep ' connected' | cut -d' ' -f1) ) +MONITOR=${MONITOR:-${MONITORS[0]}} + +# Only have workspaces for primary monitor +bspc monitor $MONITOR -d {1,2,3,4,5} + +bspc config remove_disabled_monitors true +bspc config remove_unplugged_monitors true + + +# Rules +bspc rule -r '*' + +bspc rule -a Pinentry state=floating center=on +bspc rule -a Emacs split_ratio=0.28 state=tiled +bspc rule -a Firefox split_ratio=0.32 +bspc rule -a feh state=fullscreen +bspc rule -a 'Emacs:org*' state=floating +bspc rule -a 'Emacs:scratch' state=floating +bspc rule -a 'Emacs:emacs-everywhere' state=floating sticky=on +bspc rule -a '*:scratch' state=floating sticky=on center=on border=off rectangle=1000x800+0+0 + +# +for file in $XDG_CONFIG_HOME/bspwm/rc.d/*; do + source "$file" +done diff --git a/users/profiles/desktop/default.nix b/users/profiles/desktop/default.nix new file mode 100644 index 00000000..607efec8 --- /dev/null +++ b/users/profiles/desktop/default.nix @@ -0,0 +1,99 @@ +{ + # Enable bspwm and sxhkd + xsession.windowManager.bspwm = { + enable = true; + extraConfig = '' + bspc config remove_disabled_monitors true + bspc config remove_unplugged_monitors true + + bspc config borderless_monocle true + bspc config gapless_monocle true + + bspc config border_width 1 + bspc config window_gap 4 + + bspc config normal_border_color "#181a23" + bspc config active_border_color "#181a23" + bspc config focused_border_color "#bd93f9" + bspc config presel_feedback_color "#bd93f9" + + # Extra padding for polybar + bspc config -m primary top_padding 34 + bspc config -m primary bottom_padding 0 + + # Load polybar + for file in $XDG_CONFIG_HOME/bspwm/rc.d/*; do + source "$file" + done + ''; + } + services.sxhkd.enable = true; + + # Add gtk theme for Dracular and Paper + # Set wallpaper + + # Install themes + user.packages = with pkgs; [ + unstable.dracula-theme + paper-icon-theme + ]; + + # Font stuff + fonts = { + fonts = with pkgs; [ + fire-code + hermit + hack + fire-code-symbols + siji + font-awesome-ttf + ]; + fontconfig.defaultFonts = { + sansSerif = ["Hermit"]; + monospace = ["Hermit"]; + }; + }; + + # Move required config files around + home.configFile = { + "bspwm/rc.d/polybar".source = ./run.sh; + "sxhkdrc".source = ./sxhkdrc; + "rofi/theme" = { + source = ./rofi; + recursive = true; + }; + "polybar" = { + source = ./polybar; + recursive = true; + }; + "dunst/dunstrc".source = ./dunstrc; + }; + + # Login screen + services.xserver.displayManager.lightdm.greeters.mini.extraConfig = '' + text-color = "#ff79c6" + password-background-color = "#1E2029" + window-color = "#181a23" + border-color = "#181a23" + ''; + + # Compositor + services.picom = { + fade = true; + fadeDelta = 1; + fadeSteps = [ 0.01 0.012 ]; + shadow = true; + shadowOffsets = [ (-10) (-10) ]; + shadowOpacity = 0.22; + # activeOpacity = "1.00"; + # inactiveOpacity = "0.92"; + settings = { + shadow-radius = 12; + # blur-background = true; + # blur-background-frame = true; + # blur-background-fixed = true; + blur-kern = "7x7box"; + blur-strength = 320; + }; + }; +} diff --git a/users/profiles/desktop/dunstrc b/users/profiles/desktop/dunstrc new file mode 100644 index 00000000..8fcfe622 --- /dev/null +++ b/users/profiles/desktop/dunstrc @@ -0,0 +1,49 @@ +[global] +alignment = left +bounce_freq = 0 +browser = firefox -new-tab +corner_radius = 2 +dmenu = rofi -dmenu -p dunst: +follow = none +font = Fira Sans 11 +format = "%s\n%b" +frame_color = "#1a1c25" +frame_width = 1 +# geometry [{width}]x{height}][+/-{x}+/-{y}] +geometry = "440x15-26+26" +history_length = 20 +horizontal_padding = 16 +icon_position = right +idle_threshold = 120 +ignore_newline = no +indicate_hidden = yes +line_height = 0 +markup = full +max_icon_size = 64 +monitor = 0 +padding = 20 +separator_color = auto +separator_height = 4 +show_age_threshold = 60 +show_indicators = yes +shrink = no +sort = yes +startup_notification = false +sticky_history = yes +transparency = 5 +word_wrap = yes + +[urgency_low] +background = "#1E2029" +foreground = "#bbc2cf" +timeout = 8 + +[urgency_normal] +background = "#2a2d39" +foreground = "#bbc2cf" +timeout = 14 + +[urgency_critical] +background = "#cc6666" +foreground = "#1E2029" +timeout = 0 diff --git a/users/profiles/desktop/polybar.conf b/users/profiles/desktop/polybar.conf new file mode 100644 index 00000000..6d89840e --- /dev/null +++ b/users/profiles/desktop/polybar.conf @@ -0,0 +1,385 @@ +[colors] +black = ${xrdb:color0} +bblack = ${xrdb:color8} +red = ${xrdb:color1} +bred = ${xrdb:color9} +green = ${xrdb:color2} +bgreen = ${xrdb:color10} +yellow = ${xrdb:color3} +byellow = ${xrdb:color11} +blue = ${xrdb:color4} +bblue = ${xrdb:color12} +magenta = ${xrdb:color5} +bmagenta = ${xrdb:color13} +cyan = ${xrdb:color6} +bcyan = ${xrdb:color14} +white = ${xrdb:color7} +bwhite = ${xrdb:color15} + +bg = ${xrdb:background} +fg = ${colors.magenta} +bg-alt = #1E2029 +fg-alt = #373844 +bg-dark = #181a23 + +alert = ${colors.yellow} +accent = #604c7e + + +[global/wm] +margin-top = 0 +margin-bottom = 34 + +[bar/main] +monitor = ${env:MONITOR} +monitor-strict = true +enable-ipc = true +wm-restack = bspwm +# REQUIRED to move the window with hideit.sh +override-redirect = true +fixed-center = true + +background = ${colors.bg} +foreground = ${colors.fg} + +width = 100% +height = 34 +offset-x = 0 +offset-y = 0 +# bottom = true + +overline-size = 0 +overline-color = #f00 +underline-size = 0 +underline-color = #00f + +border-bottom-size = 0 +border-top-size = 1 +border-color = ${colors.bg-dark} + +padding-left = 2 +padding-right = 2 +module-margin-left = 0 +module-margin-right = 0 + +font-0 = "Fira Code:pixelsize=9;2" +font-1 = "Wuncon Siji:pixelsize=12;2" +font-2 = "Siji:pixelsize=10;2" + +; modules-left = volume pad cpu memory pad pkg mail +modules-left = pulseaudio pad cpu memory pad fs +modules-center = bspwm +modules-right = syncthing redshift wlan pad network-up pad network-down pad battery pad date + +;tray-position = center +;tray-padding = 2 +;tray-transparent = true +;tray-background = #0063ff + +[module/bspwm] +type = internal/bspwm +pin-workspaces = true +enable-click = true + +# ws-icon-0 = 1; +# ws-icon-1 = 2; +# ws-icon-2 = 3; +# ws-icon-3 = 4; +# ws-icon-4 = 5; +# ws-icon-5 = 6; +ws-icon-default =  + +format = +label-padding = 1 + +label-focused = %icon% +label-focused-background = ${colors.bg-dark} +label-focused-foreground = ${colors.fg} +# label-focused-underline = ${colors.magenta} +; label-focused-foreground = ${xrdb:color2} +label-focused-padding = 1 + +label-occupied = %icon% +label-occupied-foreground = ${colors.accent} +label-occupied-padding = 1 + +; label-urgent = %icon% +label-urgent-foreground = ${colors.alert} +; label-urgent-background = ${colors.alert} +label-urgent-padding = 1 + +label-empty = %icon% +label-empty-foreground = ${colors.fg-alt} +label-empty-padding = 1 + +[module/date] +type = internal/date +interval = 5 + +label = %date% %time% +date = %A, %h %d +date-alt = %Y-%m-%d +time = %I:%M %p +time-alt = %H:%M:%S +format-prefix = "" +format-prefix-padding = 1 +; format-prefix-background = ${colors.bg-alt} +format-prefix-foreground = ${colors.accent} +; format-underline = ${xrdb:color4} + +[module/fs] +type = internal/fs +mount-0 = / +mount-1 = /mnt/projects ; for desktops +mount-2 = /home ; for laptop +interval = 30 + +; Available tags: +; (default) +; +; +; +format-mounted = "" +format-mounted-foreground = ${colors.accent} +; Available tokens: +; %mountpoint% +; %type% +; %fsname% +; %percentage_free% +; %percentage_used% +; %total% +; %free% +; %used% +; Default: %mountpoint% %percentage_free%% + +; Available tags: +; (default) +format-unmounted = +label-unmounted = +label-unmounted-foreground = ${colors.fg-alt} + +bar-used-indicator = +bar-used-width = 8 +bar-used-foreground-0 = ${colors.fg} +bar-used-foreground-1 = ${colors.fg} +bar-used-foreground-2 = ${colors.yellow} +bar-used-foreground-3 = ${colors.alert} +bar-used-foreground-4 = ${colors.alert} +bar-used-fill = | +bar-used-empty = ¦ +bar-used-empty-foreground = ${colors.fg-alt} + +[module/xwindow] +type = internal/xwindow +label = %title:0:80:...% +label-padding-left = 2 + +; [module/mpd] +; type = internal/mpd +; host = /home/hlissner/.config/mpd/mpd.sock +; +; format-online = +; format-padding = 5 +; +; label-song-maxlen = 45 +; label-song-ellipsis = true +; +; icon-prev =  +; icon-seekb =  +; icon-stop =  +; icon-play =  +; icon-pause =  +; icon-next =  +; icon-seekf =  +; +; icon-random =  +; icon-repeat =  +; +; toggle-on-foreground = ${colors.fg} +; toggle-off-foreground = #66 + +[module/cpu] +type = internal/cpu +interval = 2 +format = +format-prefix = "" +format-foreground = ${colors.accent} +; format-underline = #f90000 +; label = %percentage%% +format-padding = 1 + +bar-load-indicator = +bar-load-width = 8 +bar-load-foreground-0 = ${colors.fg} +bar-load-foreground-1 = ${colors.fg} +bar-load-foreground-2 = ${colors.yellow} +bar-load-foreground-3 = ${colors.alert} +bar-load-foreground-4 = ${colors.alert} +bar-load-fill = | +bar-load-empty = ¦ +bar-load-empty-foreground = ${colors.fg-alt} + +[module/memory] +type = internal/memory +interval = 3 +format = +format-prefix = "" +format-prefix-foreground = ${colors.accent} +; format-underline = #4bffdc +; label = %percentage_used%% +format-padding-left = 1 + +; Only applies if is used +bar-used-indicator = +bar-used-width = 8 +bar-used-foreground-0 = ${colors.fg} +bar-used-foreground-1 = ${colors.fg} +bar-used-foreground-2 = ${colors.yellow} +bar-used-foreground-3 = ${colors.alert} +bar-used-foreground-4 = ${colors.alert} +bar-used-fill = | +bar-used-empty = ¦ +bar-used-empty-foreground = ${colors.fg-alt} + +[module/wlan] +type = internal/network +interface = ${env:WLP:wlp3s0} +interval = 3.0 + +format-connected = +format-disconnected = +format-disconnected-foreground = + +; label-connected = +; label-disconnected = ! +; label-disconnected-foreground = ${colors.red} + +ramp-signal-0 =  +ramp-signal-0-foreground = ${colors.yellow} +ramp-signal-1 =  +ramp-signal-1-foreground = ${colors.yellow} +ramp-signal-2 =  +ramp-signal-2-foreground = ${colors.yellow} +ramp-signal-3 =  +ramp-signal-3-foreground = ${colors.accent} +ramp-signal-4 =  +ramp-signal-4-foreground = ${colors.fg} + +[module/network-up] +type = internal/network +interface = ${env:LAN:eno1} +interval = 4.0 +label-connected = "%upspeed%" +format-connected-prefix = " " +format-connected-prefix-foreground = ${colors.accent} +format-connected-foreground = ${colors.fg} +format-connected-background = +format-connected-underline = +format-disconnected-prefix = " " +format-disconnected-prefix-foreground = ${colors.alert} +format-disconnected-foreground = ${colors.alert} + +[module/network-down] +type = internal/network +interface = ${env:LAN:eno1} +interval = 4.0 +label-connected = "%downspeed%" +format-connected-prefix = " " +format-connected-prefix-foreground = ${colors.accent} +format-connected-foreground = ${colors.fg} +format-connected-background = +format-connected-underline = +format-disconnected-prefix = " " +format-disconnected-prefix-foreground = ${colors.alert} +format-disconnected-foreground = ${colors.alert} + +[module/pulseaudio] +type = internal/pulseaudio + +; format-volume = +format-volume = +; label-volume = " " +label-volume-foreground = ${colors.accent} + +; format-muted-prefix = " " +format-muted-foreground = ${colors.alert} +label-muted =  + +bar-volume-width = 8 +# bar-volume-foreground-0 = ${colors.magenta} +# bar-volume-foreground-1 = ${colors.magenta} +# bar-volume-foreground-2 = ${colors.magenta} +# bar-volume-foreground-3 = ${colors.magenta} +# bar-volume-foreground-4 = ${colors.magenta} +# bar-volume-foreground-5 = ${colors.magenta} +# bar-volume-foreground-6 = ${colors.magenta} +bar-volume-gradient = false +bar-volume-indicator = | +bar-volume-indicator-font = 1 +bar-volume-indicator-foreground = #ff +bar-volume-fill = ─ +bar-volume-fill-font = 1 +bar-volume-empty = ─ +bar-volume-empty-font = 1 +bar-volume-empty-foreground = ${colors.fg-alt} + +; Only applies if is used +ramp-volume-0 =  +ramp-volume-1 =  +ramp-volume-2 =  + +[module/battery] +type = internal/battery +battery = BAT0 +adapter = ADP1 +full-at = 98 + +format-charging = +format-charging-underline = #ffb52a + +format-discharging = +format-discharging-underline = ${self.format-charging-underline} + +format-full-prefix = " " +format-full-prefix-foreground = ${colors.fg-alt} +format-full-underline = ${self.format-charging-underline} + +ramp-capacity-0 =  +ramp-capacity-1 =  +ramp-capacity-2 =  +ramp-capacity-0-foreground = ${colors.red} +ramp-capacity-1-foreground = #575864 +ramp-capacity-2-foreground = ${colors.fg-alt} + +animation-charging-0 =  +animation-charging-1 =  +animation-charging-2 =  +animation-charging-framerate = 1000 +animation-charging-foreground = ${colors.fg} + + +;===================================================== +; Custom scripts +;===================================================== + +[module/pad] +type = custom/text +content = " " +content-foreground = ${colors.fg-alt} + +[module/redshift] +type = custom/script +exec = ~/.config/polybar/modules/redshift +exec-if = pgrep -x redshift +interval = 60 +format-padding = 1 + +[module/syncthing] +type = custom/script +exec = echo 1 +exec-if = systemctl is-active syncthing +format = "" +format-foreground = ${colors.fg} +interval = 30 + +; vim:ft=dosini diff --git a/users/profiles/desktop/polybar/config b/users/profiles/desktop/polybar/config new file mode 100644 index 00000000..6d89840e --- /dev/null +++ b/users/profiles/desktop/polybar/config @@ -0,0 +1,385 @@ +[colors] +black = ${xrdb:color0} +bblack = ${xrdb:color8} +red = ${xrdb:color1} +bred = ${xrdb:color9} +green = ${xrdb:color2} +bgreen = ${xrdb:color10} +yellow = ${xrdb:color3} +byellow = ${xrdb:color11} +blue = ${xrdb:color4} +bblue = ${xrdb:color12} +magenta = ${xrdb:color5} +bmagenta = ${xrdb:color13} +cyan = ${xrdb:color6} +bcyan = ${xrdb:color14} +white = ${xrdb:color7} +bwhite = ${xrdb:color15} + +bg = ${xrdb:background} +fg = ${colors.magenta} +bg-alt = #1E2029 +fg-alt = #373844 +bg-dark = #181a23 + +alert = ${colors.yellow} +accent = #604c7e + + +[global/wm] +margin-top = 0 +margin-bottom = 34 + +[bar/main] +monitor = ${env:MONITOR} +monitor-strict = true +enable-ipc = true +wm-restack = bspwm +# REQUIRED to move the window with hideit.sh +override-redirect = true +fixed-center = true + +background = ${colors.bg} +foreground = ${colors.fg} + +width = 100% +height = 34 +offset-x = 0 +offset-y = 0 +# bottom = true + +overline-size = 0 +overline-color = #f00 +underline-size = 0 +underline-color = #00f + +border-bottom-size = 0 +border-top-size = 1 +border-color = ${colors.bg-dark} + +padding-left = 2 +padding-right = 2 +module-margin-left = 0 +module-margin-right = 0 + +font-0 = "Fira Code:pixelsize=9;2" +font-1 = "Wuncon Siji:pixelsize=12;2" +font-2 = "Siji:pixelsize=10;2" + +; modules-left = volume pad cpu memory pad pkg mail +modules-left = pulseaudio pad cpu memory pad fs +modules-center = bspwm +modules-right = syncthing redshift wlan pad network-up pad network-down pad battery pad date + +;tray-position = center +;tray-padding = 2 +;tray-transparent = true +;tray-background = #0063ff + +[module/bspwm] +type = internal/bspwm +pin-workspaces = true +enable-click = true + +# ws-icon-0 = 1; +# ws-icon-1 = 2; +# ws-icon-2 = 3; +# ws-icon-3 = 4; +# ws-icon-4 = 5; +# ws-icon-5 = 6; +ws-icon-default =  + +format = +label-padding = 1 + +label-focused = %icon% +label-focused-background = ${colors.bg-dark} +label-focused-foreground = ${colors.fg} +# label-focused-underline = ${colors.magenta} +; label-focused-foreground = ${xrdb:color2} +label-focused-padding = 1 + +label-occupied = %icon% +label-occupied-foreground = ${colors.accent} +label-occupied-padding = 1 + +; label-urgent = %icon% +label-urgent-foreground = ${colors.alert} +; label-urgent-background = ${colors.alert} +label-urgent-padding = 1 + +label-empty = %icon% +label-empty-foreground = ${colors.fg-alt} +label-empty-padding = 1 + +[module/date] +type = internal/date +interval = 5 + +label = %date% %time% +date = %A, %h %d +date-alt = %Y-%m-%d +time = %I:%M %p +time-alt = %H:%M:%S +format-prefix = "" +format-prefix-padding = 1 +; format-prefix-background = ${colors.bg-alt} +format-prefix-foreground = ${colors.accent} +; format-underline = ${xrdb:color4} + +[module/fs] +type = internal/fs +mount-0 = / +mount-1 = /mnt/projects ; for desktops +mount-2 = /home ; for laptop +interval = 30 + +; Available tags: +; (default) +; +; +; +format-mounted = "" +format-mounted-foreground = ${colors.accent} +; Available tokens: +; %mountpoint% +; %type% +; %fsname% +; %percentage_free% +; %percentage_used% +; %total% +; %free% +; %used% +; Default: %mountpoint% %percentage_free%% + +; Available tags: +; (default) +format-unmounted = +label-unmounted = +label-unmounted-foreground = ${colors.fg-alt} + +bar-used-indicator = +bar-used-width = 8 +bar-used-foreground-0 = ${colors.fg} +bar-used-foreground-1 = ${colors.fg} +bar-used-foreground-2 = ${colors.yellow} +bar-used-foreground-3 = ${colors.alert} +bar-used-foreground-4 = ${colors.alert} +bar-used-fill = | +bar-used-empty = ¦ +bar-used-empty-foreground = ${colors.fg-alt} + +[module/xwindow] +type = internal/xwindow +label = %title:0:80:...% +label-padding-left = 2 + +; [module/mpd] +; type = internal/mpd +; host = /home/hlissner/.config/mpd/mpd.sock +; +; format-online = +; format-padding = 5 +; +; label-song-maxlen = 45 +; label-song-ellipsis = true +; +; icon-prev =  +; icon-seekb =  +; icon-stop =  +; icon-play =  +; icon-pause =  +; icon-next =  +; icon-seekf =  +; +; icon-random =  +; icon-repeat =  +; +; toggle-on-foreground = ${colors.fg} +; toggle-off-foreground = #66 + +[module/cpu] +type = internal/cpu +interval = 2 +format = +format-prefix = "" +format-foreground = ${colors.accent} +; format-underline = #f90000 +; label = %percentage%% +format-padding = 1 + +bar-load-indicator = +bar-load-width = 8 +bar-load-foreground-0 = ${colors.fg} +bar-load-foreground-1 = ${colors.fg} +bar-load-foreground-2 = ${colors.yellow} +bar-load-foreground-3 = ${colors.alert} +bar-load-foreground-4 = ${colors.alert} +bar-load-fill = | +bar-load-empty = ¦ +bar-load-empty-foreground = ${colors.fg-alt} + +[module/memory] +type = internal/memory +interval = 3 +format = +format-prefix = "" +format-prefix-foreground = ${colors.accent} +; format-underline = #4bffdc +; label = %percentage_used%% +format-padding-left = 1 + +; Only applies if is used +bar-used-indicator = +bar-used-width = 8 +bar-used-foreground-0 = ${colors.fg} +bar-used-foreground-1 = ${colors.fg} +bar-used-foreground-2 = ${colors.yellow} +bar-used-foreground-3 = ${colors.alert} +bar-used-foreground-4 = ${colors.alert} +bar-used-fill = | +bar-used-empty = ¦ +bar-used-empty-foreground = ${colors.fg-alt} + +[module/wlan] +type = internal/network +interface = ${env:WLP:wlp3s0} +interval = 3.0 + +format-connected = +format-disconnected = +format-disconnected-foreground = + +; label-connected = +; label-disconnected = ! +; label-disconnected-foreground = ${colors.red} + +ramp-signal-0 =  +ramp-signal-0-foreground = ${colors.yellow} +ramp-signal-1 =  +ramp-signal-1-foreground = ${colors.yellow} +ramp-signal-2 =  +ramp-signal-2-foreground = ${colors.yellow} +ramp-signal-3 =  +ramp-signal-3-foreground = ${colors.accent} +ramp-signal-4 =  +ramp-signal-4-foreground = ${colors.fg} + +[module/network-up] +type = internal/network +interface = ${env:LAN:eno1} +interval = 4.0 +label-connected = "%upspeed%" +format-connected-prefix = " " +format-connected-prefix-foreground = ${colors.accent} +format-connected-foreground = ${colors.fg} +format-connected-background = +format-connected-underline = +format-disconnected-prefix = " " +format-disconnected-prefix-foreground = ${colors.alert} +format-disconnected-foreground = ${colors.alert} + +[module/network-down] +type = internal/network +interface = ${env:LAN:eno1} +interval = 4.0 +label-connected = "%downspeed%" +format-connected-prefix = " " +format-connected-prefix-foreground = ${colors.accent} +format-connected-foreground = ${colors.fg} +format-connected-background = +format-connected-underline = +format-disconnected-prefix = " " +format-disconnected-prefix-foreground = ${colors.alert} +format-disconnected-foreground = ${colors.alert} + +[module/pulseaudio] +type = internal/pulseaudio + +; format-volume = +format-volume = +; label-volume = " " +label-volume-foreground = ${colors.accent} + +; format-muted-prefix = " " +format-muted-foreground = ${colors.alert} +label-muted =  + +bar-volume-width = 8 +# bar-volume-foreground-0 = ${colors.magenta} +# bar-volume-foreground-1 = ${colors.magenta} +# bar-volume-foreground-2 = ${colors.magenta} +# bar-volume-foreground-3 = ${colors.magenta} +# bar-volume-foreground-4 = ${colors.magenta} +# bar-volume-foreground-5 = ${colors.magenta} +# bar-volume-foreground-6 = ${colors.magenta} +bar-volume-gradient = false +bar-volume-indicator = | +bar-volume-indicator-font = 1 +bar-volume-indicator-foreground = #ff +bar-volume-fill = ─ +bar-volume-fill-font = 1 +bar-volume-empty = ─ +bar-volume-empty-font = 1 +bar-volume-empty-foreground = ${colors.fg-alt} + +; Only applies if is used +ramp-volume-0 =  +ramp-volume-1 =  +ramp-volume-2 =  + +[module/battery] +type = internal/battery +battery = BAT0 +adapter = ADP1 +full-at = 98 + +format-charging = +format-charging-underline = #ffb52a + +format-discharging = +format-discharging-underline = ${self.format-charging-underline} + +format-full-prefix = " " +format-full-prefix-foreground = ${colors.fg-alt} +format-full-underline = ${self.format-charging-underline} + +ramp-capacity-0 =  +ramp-capacity-1 =  +ramp-capacity-2 =  +ramp-capacity-0-foreground = ${colors.red} +ramp-capacity-1-foreground = #575864 +ramp-capacity-2-foreground = ${colors.fg-alt} + +animation-charging-0 =  +animation-charging-1 =  +animation-charging-2 =  +animation-charging-framerate = 1000 +animation-charging-foreground = ${colors.fg} + + +;===================================================== +; Custom scripts +;===================================================== + +[module/pad] +type = custom/text +content = " " +content-foreground = ${colors.fg-alt} + +[module/redshift] +type = custom/script +exec = ~/.config/polybar/modules/redshift +exec-if = pgrep -x redshift +interval = 60 +format-padding = 1 + +[module/syncthing] +type = custom/script +exec = echo 1 +exec-if = systemctl is-active syncthing +format = "" +format-foreground = ${colors.fg} +interval = 30 + +; vim:ft=dosini diff --git a/users/profiles/desktop/polybar/modules/redshift b/users/profiles/desktop/polybar/modules/redshift new file mode 100755 index 00000000..9a0b05f0 --- /dev/null +++ b/users/profiles/desktop/polybar/modules/redshift @@ -0,0 +1,21 @@ +#!/usr/bin/env bash + +# Specifying the icon(s) in the script +# This allows us to change its appearance conditionally +pgrep -x redshift &> /dev/null +if [[ $? -eq 0 ]]; then + temp=$(redshift -p 2>/dev/null | grep temp | cut -d' ' -f3) + temp=${temp//K/} +fi + +icon="" +# OPTIONAL: Append ' ${temp}K' after $icon +if [[ -z $temp ]]; then + echo "%{F#65737E}$icon" # Greyed out (not running) +elif [[ $temp -ge 5000 ]]; then + echo "%{F#8FA1B3}$icon" # Blue +elif [[ $temp -ge 4000 ]]; then + echo "%{F#EBCB8B}$icon" # Yellow +else + echo "%{F#D08770}$icon" # Orange +fi diff --git a/users/profiles/desktop/polybar/run.sh b/users/profiles/desktop/polybar/run.sh new file mode 100644 index 00000000..6b4536c9 --- /dev/null +++ b/users/profiles/desktop/polybar/run.sh @@ -0,0 +1,7 @@ +#!/usr/bin/env bash + +pkill -u $UID -x polybar +while pgrep -u $UID -x polybar >/dev/null; do sleep 1; done + +polybar main >$XDG_DATA_HOME/polybar.log 2>&1 & +echo 'Polybar launched...' diff --git a/users/profiles/desktop/rofi/appmenu.rasi b/users/profiles/desktop/rofi/appmenu.rasi new file mode 100644 index 00000000..a4d62c5c --- /dev/null +++ b/users/profiles/desktop/rofi/appmenu.rasi @@ -0,0 +1,10 @@ +/* -*- mode: css; -*- */ +@import "config.rasi" + +textbox-icon { + str: "  "; +} + +prompt { + enabled: false; +} diff --git a/users/profiles/desktop/rofi/base.cyclemenu.rasi b/users/profiles/desktop/rofi/base.cyclemenu.rasi new file mode 100644 index 00000000..3de4010b --- /dev/null +++ b/users/profiles/desktop/rofi/base.cyclemenu.rasi @@ -0,0 +1,21 @@ +/* -*- mode: css; -*- */ +@import "config.rasi" + +window { + y-offset: 0; + children: [ listview ]; + width: 500px; +} + +listview { + scrollbar: false; +} + +element { + padding: 30px; + background-color: @bg-light; +} +element.selected { + background-color: @accent; + text-color: @bg; +} diff --git a/users/profiles/desktop/rofi/bookmarkmenu.rasi b/users/profiles/desktop/rofi/bookmarkmenu.rasi new file mode 100644 index 00000000..0cb69f97 --- /dev/null +++ b/users/profiles/desktop/rofi/bookmarkmenu.rasi @@ -0,0 +1,14 @@ +/* -*- mode: css; -*- */ +@import "config.rasi" + +listview { + columns: 1; +} + +textbox-icon { + str: "  "; +} + +prompt { + enabled: false; +} diff --git a/users/profiles/desktop/rofi/config.rasi b/users/profiles/desktop/rofi/config.rasi new file mode 100644 index 00000000..57f4d5c0 --- /dev/null +++ b/users/profiles/desktop/rofi/config.rasi @@ -0,0 +1,137 @@ +/* -*- mode: css; -*- */ +configuration { + icon-theme: "Paper"; + cycle: true; + disable-history: false; + monitor: "-4"; + + /* Vim-esque C-j/C-k as up/down in rofi */ + kb-accept-entry: "Return,Control+m,KP_Enter"; + kb-row-down: "Down,Control+n,Control+j"; + kb-remove-to-eol: ""; + kb-row-up: "Up,Control+p,Control+k"; +} + +* { + accent: #bd93f9; + bg: #1E2029FA; + bg-light: #1c1c1c; + bg-focus: #282a36; + bg-dark: #181a23; + fg: #bbc2cf; + fg-list: #bbc2cf; + on: #8BD49C; + off: #cc6666; + + magenta: #bd93f9; + blue: #61bfff; + + text-font: "Fira Sans 15"; + text-mono-font: "Fira Code 13"; + /* icon-font: "Hurmit Nerd Font Mono 26"; */ + icon-font: "FontAwesome 20"; + + background-color: transparent; + text-color: @fg-list; + font: @text-font; + border-color: @bg-dark; +} + + +/**** Layout ****/ +window { + width: 1000px; + y-offset: -50px; + anchor: north; + location: center; + border: 1px; + border-radius: 6px 6px 0 0; + children: [ inputbar, listview ]; + +} + +listview { + lines: 12; + fixed-height: false; + /* reverse: true; */ + columns: 2; + scrollbar: true; + spacing: 1px; + /* Remove strange gap between listview and inputbar */ + margin: -2px 0 0; +} + +/* + TODO Not supported in stable branch of rofi + @media only (max-height: 1080px) { + window { + y-offset: -30%; + } + listview { + lines: 14; + } + } +*/ + +scrollbar { + handle-width: 1px; +} +inputbar { + children: [ textbox-icon, prompt, entry ]; + border: 0 0 0; +} +textbox-icon, prompt { + padding: 11px; + expand: false; + border: 0 1px 0 0; + margin: 0 -2px 0 0; +} +textbox-icon { + padding: 7px 4px 0; +} +entry, element { + padding: 10px 13px; +} +textbox { + padding: 24px; + margin: 20px; +} + + +/**** Looks ****/ +scrollbar { + background-color: @bg-dark; + handle-color: @accent; + border-color: @bg-dark; +} +listview, inputbar { + background-color: @bg-dark; +} +textbox-icon, prompt, entry { + text-color: @accent; +} +prompt, entry { + background-color: @bg-focus; +} +textbox-icon, prompt { + background-color: #2f313d; +} +prompt { + background-color: @bg-focus; +} +textbox-icon { + font: @icon-font; +} +entry { + font: @text-font-mono; + text-color: @fg; +} + +element { + background-color: @bg; + text-color: @fg; +} +element selected { + background-color: @bg-dark; + text-color: @accent; +} diff --git a/users/profiles/desktop/rofi/filemenu.rasi b/users/profiles/desktop/rofi/filemenu.rasi new file mode 100644 index 00000000..7f2d3209 --- /dev/null +++ b/users/profiles/desktop/rofi/filemenu.rasi @@ -0,0 +1,11 @@ +/* -*- mode: css; -*- */ + +@import "config.rasi" + +textbox-icon { + str: "  "; +} + +prompt { + enabled: true; +} diff --git a/users/profiles/desktop/rofi/passmenu.rasi b/users/profiles/desktop/rofi/passmenu.rasi new file mode 100644 index 00000000..901a8c31 --- /dev/null +++ b/users/profiles/desktop/rofi/passmenu.rasi @@ -0,0 +1,10 @@ +/* -*- mode: css; -*- */ +@import "config.rasi" + +listview { + columns: 1; +} + +textbox-icon { + str: "  "; +} diff --git a/users/profiles/desktop/rofi/powermenu.rasi b/users/profiles/desktop/rofi/powermenu.rasi new file mode 100644 index 00000000..83681185 --- /dev/null +++ b/users/profiles/desktop/rofi/powermenu.rasi @@ -0,0 +1,23 @@ +/** -*- mode: css; -*- + * This theme is intended for a 5 items wide menu on a 1920x1080 pixels resolution. + * You may have to tweak values such as the window padding if you have a different resolution. + */ +@import "appmenu.rasi" + +window { + children: [ listview ]; + width: 500px; +} + +listview { + scrollbar: false; +} + +element { + padding: 30px; + background-color: @bg-light; +} +element.selected { + background-color: @accent; + text-color: @bg; +} diff --git a/users/profiles/desktop/rofi/windowmenu.rasi b/users/profiles/desktop/rofi/windowmenu.rasi new file mode 100644 index 00000000..3003bfb2 --- /dev/null +++ b/users/profiles/desktop/rofi/windowmenu.rasi @@ -0,0 +1,27 @@ +/* -*- mode: css; -*- */ + +@import "config.rasi" + +listview { + columns: 1; +} + +inputbar { + width: 1100px; +} + +textbox-icon { + str: "  "; +} + +prompt { + enabled: false; +} + +/** + * Elements are tab-delimited, which look weird in the default variable-pitch + * font, so use a monospace one. + */ +element { + font: "Fira Code 12"; +} diff --git a/users/profiles/desktop/run.sh b/users/profiles/desktop/run.sh new file mode 100644 index 00000000..6b4536c9 --- /dev/null +++ b/users/profiles/desktop/run.sh @@ -0,0 +1,7 @@ +#!/usr/bin/env bash + +pkill -u $UID -x polybar +while pgrep -u $UID -x polybar >/dev/null; do sleep 1; done + +polybar main >$XDG_DATA_HOME/polybar.log 2>&1 & +echo 'Polybar launched...' diff --git a/users/profiles/desktop/sxhkdrc b/users/profiles/desktop/sxhkdrc new file mode 100644 index 00000000..d9acf138 --- /dev/null +++ b/users/profiles/desktop/sxhkdrc @@ -0,0 +1,129 @@ +super + alt + Escape + bspc quit + +super + {_,shift + }q + bspc node -{c,k} + +super + t + bspc desktop -l next + +super + apostrophe + bspc window -s last + +# Attach to a detached session. If none is available create a new one, rather +# than attach to one that is already attached to elsewhere. +super + Return + kitty + +ctrl + super + Return + xst -e bash -c "(tmux ls | grep -qEv 'attached|scratch' && tmux at) || tmux" + +# Open a disposable, floating terminal window, for quick shell commands. +super + grave + scratch + +# Open a disposable scratch buffer in a floating Emacs window, to run arbitrary +# code or quickly note something down. +super + shift + grave + emacsclient --eval "(open-scratch-frame)" + +# Invoke emacs-everywhere at point. +super + e + emacsclient --eval "(emacs-everywhere)" + +super + space + $DOTFILES_BIN/rofi/appmenu + +super + Tab + $DOTFILES_BIN/rofi/windowmenu + +super + p + $DOTFILES_BIN/rofi/bwmenu + +super + shift + p + $DOTFILES_BIN/rofi/bwmenu -r + +super + slash + $DOTFILES_BIN/rofi/filemenu -x + +super + Escape + pkill -USR1 -x sxhkd + + +# +## + +## Toggle floating/fullscreen +super + {_,ctrl + }f + bspc node -t ~{floating,fullscreen} + + +super + {_,ctrl +}{h,j,k,l} + $DOTFILES_BIN/bspwm/focus {_,-m }{west,south,north,east} + +super + shift + {_,ctrl +}{h,j,k,l} + $DOTFILES_BIN/bspwm/swap {_,-m }{west,south,north,east} + +## Resize by preselection +super + alt + {1-9} + $DOTFILES/bin/bspwm/presel 0.{1-9} + +super + alt + {h,j,k,l} + bspc node -p {west,south,north,east} + +super + alt + Return + $DOTFILES/bin/bspwm/subtract-presel + +super + alt + Delete + bspc node -p cancel + +super + {_,shift +}{1-9,0} + bspc {desktop -f,node -d} {1-9,10}; + +# expand a window by moving one of its side outward +super + {Left,Down,Up,Right} + bspc node -z {left -40 0,bottom 0 40,top 0 -40,right 40 0} + +# contract a window by moving one of its side inward +super + ctrl + {Left,Down,Up,Right} + bspc node -z {right -40 0,top 0 40,bottom 0 -40,left 40 0} + +# move a floating window +super + shift + {Left,Down,Up,Right} + bspc node -v {-40 0,0 40,0 -40,40 0} + + +# +## Media keys + +# screenshot region +Print + scrcap +# screencast region to mp4 +super + Print + scrrec -s ~/recordings/$(date +%F-%T).mp4 +# screencast region to gif +super + ctrl + Print + scrrec -s ~/recordings/$(date +%F-%T).gif + +XF86MonBrightnessUp + light -A 5 +XF86MonBrightnessDown + light -U 5 + +XF86AudioMute + amixer -q set Master toggle +XF86AudioLowerVolume + amixer -q set Master 10%- unmute +XF86AudioRaiseVolume + amixer -q set Master 10%+ unmute + +XF86Audio{Play,Pause} + spt-send toggle +XF86AudioNext + spt-send next +XF86AudioPrev + spt-send prev + +# X86Search +