diff --git a/.config/i3/config b/.config/i3/config index 70a5f44..e4dbf8e 100644 --- a/.config/i3/config +++ b/.config/i3/config @@ -12,8 +12,8 @@ font pango:monospace 8 # 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 XF86AudioRaiseVolume exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ +5% && $refresh_i3status +bindsym XF86AudioLowerVolume exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ -5% && $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 @@ -34,6 +34,8 @@ bindsym $mod+e exec dolphin bindsym Print exec --no-startup-id maim --select | xclip -selection clipboard -t image/png # kill focused window bindsym $mod+c kill +# lock with wallpaper +bindsym $mod+l exec --no-startup-id loginctl lock-session ##################################### # Application menu handled by rofi: # @@ -63,10 +65,10 @@ bindsym $mod+a exec --no-startup-id rofi -show window \ # change focus -bindsym $mod+h focus left -bindsym $mod+j focus down -bindsym $mod+k focus up -bindsym $mod+l focus right +#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 @@ -75,10 +77,10 @@ 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 +#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 @@ -87,10 +89,10 @@ bindsym $mod+Shift+Up move up bindsym $mod+Shift+Right move right # split in horizontal orientation -bindsym $mod+h split h +#bindsym $mod+h split h # split in vertical orientation -bindsym $mod+n split v +#bindsym $mod+n split v # enter fullscreen mode for the focused container bindsym $mod+f fullscreen toggle @@ -185,9 +187,9 @@ bindsym $mod+r mode "resize" # Start i3bar to display a workspace bar (plus the system information i3status # finds out, if available) -bar { - status_command i3status -} +#bar { +# status_command i3status +#} ############################## # extra options for windows: # @@ -230,7 +232,6 @@ default_border pixel 2 #exec_always --no-startup-id picom -b # # for custom config: -#exec --no-startup-id picom --config ~/.config/picom/picom.conf ############################################# # autostart applications/services on login: # @@ -244,12 +245,52 @@ exec --no-startup-id "xrandr --output HDMI-0 --left-of DP-0 && xrandr --output D # https://wiki.archlinux.org/index.php/XDG_Autostart exec --no-startup-id dex --autostart --environment i3 +# start picom compositor +exec --no-startup-id picom --config ~/.config/picom/picom.conf + +#status bar +exec --no-startup-id ~/.config/i3/scripts/launch-polybar.sh + + # The combination of xss-lock, nm-applet and pactl is a popular choice, so # they are included here as an example. Modify as you see fit. # xss-lock grabs a logind suspend inhibit lock and will use i3lock to lock the # screen before suspend. Use loginctl lock-session to lock your screen. -exec --no-startup-id xss-lock --transfer-sleep-lock -- i3lock --nofork + +set $BLANK #00000000 +set $CLEAR #ffffff22 +set $DEFAULT #ff00ffcc +set $TEXT #ee00eeee +set $WRONG #880000bb +set $VERIFYING #bb00bbbb +exec --no-startup-id xss-lock --transfer-sleep-lock -- i3lock-color --nofork \ +--insidever-color=$CLEAR \ +--ringver-color=$VERIFYING \ +\ +--insidewrong-color=$CLEAR \ +--ringwrong-color=$WRONG \ +\ +--inside-color=$BLANK \ +--ring-color=$DEFAULT \ +--line-color=$BLANK \ +--separator-color=$DEFAULT \ +\ +--verif-color=$TEXT \ +--wrong-color=$TEXT \ +--time-color=$TEXT \ +--date-color=$TEXT \ +--layout-color=$TEXT \ +--keyhl-color=$WRONG \ +--bshl-color=$WRONG \ +--fill \ +-i ~/.config/wallpapers/yuyukowallpaper.png \ +--clock \ +--indicator \ +--time-str="%H:%M:%S" \ +--date-str="%A, %Y-%m-%d" \ +--keylayout 1 \ + # NetworkManager is the most popular way to manage wireless networks on Linux, # and nm-applet is a desktop environment-independent system tray GUI for it. @@ -286,6 +327,9 @@ exec --no-startup-id xss-lock --transfer-sleep-lock -- i3lock --nofork # exec --no-startup-id sleep 2 && nitrogen --restore exec_always --no-startup-id sleep 1 && feh --bg-fill $HOME/.config/wallpapers/yuyukowallpaper.png +# set default microphone input +exec_always --no-startup-id sleep 5 && pactl list short sources | grep 'alsa_input.usb-Razer' | awk '{print $2}' | xargs pactl set-default-source + # set powersavings for display: # exec --no-startup-id xset s 480 dpms 600 600 600 #exec --no-startup-id xset s off @@ -313,7 +357,7 @@ exec_always --no-startup-id sleep 1 && feh --bg-fill $HOME/.config/wallpapers/yu #exec --no-startup-id /usr/bin/dunst --config ~/.config/dunst/dunstrc # may need to run dbus-launch explicitly: #exec --no-startup-id dbus-launch /usr/bin/dunst -#exec --no-startup-id /usr/bin/env dunst +exec --no-startup-id /usr/bin/env dunst # alternative if you installed aside with XFCE4: # exec --no-startup-id /usr/lib/xfce4/notifyd/xfce4-notifyd & diff --git a/.config/i3/scripts/launch-polybar.sh b/.config/i3/scripts/launch-polybar.sh new file mode 100755 index 0000000..4070558 --- /dev/null +++ b/.config/i3/scripts/launch-polybar.sh @@ -0,0 +1,4 @@ +#!/usr/bin/env bash +for m in $(polybar --list-monitors | cut -d":" -f1); do + MONITOR=$m polybar --reload main & +done diff --git a/.config/picom/picom.conf b/.config/picom/picom.conf index abcddd4..3f177ea 100644 --- a/.config/picom/picom.conf +++ b/.config/picom/picom.conf @@ -51,7 +51,7 @@ use-damage = false; ################################# # Enabled client-side shadows on windows. -shadow = true; +shadow = false; # The blur radius for shadows. (default 12) @@ -261,14 +261,13 @@ mark-ovredir-focused = true; # use-ewmh-active-win = true; detect-rounded-corners = true; detect-client-opacity = true; -refresh-rate = 0; vsync = true; # sw-opti = true; -# unredir-if-possible = true; +unredir-if-possible = true; # unredir-if-possible-delay = 5000; # unredir-if-possible-exclude = [ ]; diff --git a/home-manager/dunst.nix b/home-manager/dunst.nix new file mode 100644 index 0000000..0f3aaf1 --- /dev/null +++ b/home-manager/dunst.nix @@ -0,0 +1,26 @@ +{ lib, osConfig, pkgs, ... }: +let enable = osConfig.custom.graphical.i3.enable || osConfig.custom.graphical.hyprland.enable; +in { + config = lib.mkIf enable { + services.dunst = { + enable = true; + settings = { + global = { + width = "(0,1000)"; + height = "1000"; + offset = "0x0"; + origin = "bottom-center"; + transparency = -1; + frame_color = "#1a1c1b"; + font = lib.mkDefault "Monospace 8"; + }; + + urgency_normal = { + background = lib.mkDefault "#1a1c1b"; + foreground = lib.mkDefault "#eceff1"; + timeout = 10; + }; + }; + }; + }; +} diff --git a/home-manager/hyprland/hyprland-settings.nix b/home-manager/hyprland/hyprland-settings.nix index 2711a34..061d3cd 100644 --- a/home-manager/hyprland/hyprland-settings.nix +++ b/home-manager/hyprland/hyprland-settings.nix @@ -282,25 +282,5 @@ in { submap = reset ''; }; - services.dunst = { - enable = true; - settings = { - global = { - width = "(0,1000)"; - height = "1000"; - offset = "0x0"; - origin = "bottom-center"; - transparency = -1; - frame_color = "#1a1c1b"; - font = "Monospace 8"; - }; - - urgency_normal = { - background = "#1a1c1b"; - foreground = "#eceff1"; - timeout = 10; - }; - }; - }; }; } diff --git a/home-manager/i3.nix b/home-manager/i3.nix index 831a4e1..77eb88f 100644 --- a/home-manager/i3.nix +++ b/home-manager/i3.nix @@ -1,4 +1,4 @@ -{ pkgs, config, ...}: { +{ pkgs, config, ... }: { home.file.".config/i3" = { enable = true; recursive = true; @@ -19,4 +19,196 @@ source = ../.config/wallpapers; target = ".config/wallpapers"; }; + services.polybar = { + enable = true; + package = pkgs.polybar.override { + pulseSupport = true; + i3Support = true; + }; + script = "polybar &"; + config = { + "bar/main" = { + monitor = "\${env:MONITOR:}"; + bottom = true; + width = "100%"; + height = "22pt"; + radius = 0; + # offset-y = -5; + # offset-y = "5%"; + # dpi = 96; + background = config.stylix.base16Scheme.base01; + foreground = config.stylix.base16Scheme.base05; + line-size = "3pt"; + font-0 = "Noto Sans:size=11;1"; + font-1 = "Hack-Regular.ttf: Hack:style=Regular"; + font-2 = "Noto Sans CJK JP:style=Regular"; + border-top-size = 0; + border-right-size = 0; + border-left-size = 0; + border-bottom-size = 0; # "4pt"; + border-color = config.stylix.base16Scheme.base00; + padding-left = 2; + padding-right = 2; + module-margin = 1; + modules-left = "i3"; + modules-center = "xwindow"; + modules-right = "network memory cpu pulseaudio date tray"; + cursor-click = "pointer"; + cursor-scroll = "ns-resize"; + enable-ipc = true; + #tray-position = "right"; + # wm-restack = "generic"; + # wm-restack = "bspwm"; + # wm-restack = "i3"; + # override-redirect = true; + }; + "module/i3" = let padding = 2; + in { + type = "internal/i3"; + pin-workspaces = true; + show-urgent = true; + strip-wsnumbers = true; + index-sort = true; + enable-click = true; + wrapping-scroll = true; + fuzzy-match = true; + format = " "; + label-focused = "%name%"; + label-focused-foreground = config.stylix.base16Scheme.base01; + label-focused-background = config.stylix.base16Scheme.base05; + label-focused-underline = config.stylix.base16Scheme.base03; + label-focused-padding = padding; + label-unfocused = "%name%"; + label-unfocused-padding = padding; + label-visible = "%name%"; + label-visible-underline = config.stylix.base16Scheme.base01; + label-visible-padding = padding; + label-urgent = "%name%"; + label-urgent-foreground = config.stylix.base16Scheme.base00; + label-urgent-background = config.stylix.base16Scheme.base08; + label-urgent-underline = config.stylix.base16Scheme.base0F; + label-urgent-padding = padding; + }; + "module/xworkspaces" = { + type = "internal/xworkspaces"; + label-active = "%name%"; + label-active-background = config.stylix.base16Scheme.base05; + label-active-foreground = config.stylix.base16Scheme.base01; + label-active-underline = config.stylix.base16Scheme.base03; + label-active-padding = 1; + label-occupied = "%name%"; + label-occupied-padding = 1; + label-urgent = "%name%"; + label-urgent-background = config.stylix.base16Scheme.base08; + label-urgent-padding = 1; + label-empty = "%name%"; + label-empty-foreground = config.stylix.base16Scheme.base06; + label-empty-padding = 1; + }; + "module/xwindow" = { + type = "internal/xwindow"; + label = "%title:0:60:...%"; + }; + # "module/filesystem" = { + # type = "internal/fs"; + # interval = 25; + # mount-0 = "/"; + # label-mounted = "%{F#F0C674}%mountpoint%%{F-} %percentage_used%%"; + # label-unmounted = "%mountpoint% not mounted"; + # label-unmounted-foreground = colors.disabled; + # }; + "module/network" = { + type = "internal/network"; + interface-type = "wired"; + interval = 3; + accumulate-stats = true; + format-connected = ""; + format-connected-foreground = config.stylix.base16Scheme.base0B; + format-disconnected = ""; + format-diconnected-foreground = config.stylix.base16Scheme.base08; + label-connected = "%ifname% %netspeed%"; + label-disconnected = ""; + }; + "module/pulseaudio" = { + type = "internal/pulseaudio"; + # format-volume-prefix = "VOL "; + # format-volume-prefix-foreground = colors.primary; + format-volume = " "; + # format-volume-background = colors.background; + # label-volume-background = colors.background; + format-volume-foreground = config.stylix.base16Scheme.base09; + label-volume = "%percentage%%"; + label-muted = "sound ---"; + label-muted-foreground = config.stylix.base16Scheme.base09; + #ramp-volume-0 = ""; + #ramp-volume-1 = "󰕾"; + #ramp-volume-2 = ""; + + ramp-volume-0 = "sound"; + ramp-volume-1 = "sound"; + ramp-volume-2 = "sound"; + click-right = "${pkgs.pavucontrol}/bin/pavucontrol"; + }; + # "module/xkeyboard" = { + # type = "internal/xkeyboard"; + # blacklist-0 = "num lock"; + # label-layout = "%layout%"; + # label-layout-foreground = colors.primary; + # label-indicator-padding = 2; + # label-indicator-margin = 1; + # label-indicator-foreground = colors.background; + # label-indicator-background = colors.secondary; + # }; + "module/memory" = { + type = "internal/memory"; + interval = 2; + format-prefix = "RAM "; + format-prefix-foreground = config.stylix.base16Scheme.base0C; + label = "%percentage_used:2%%"; + }; + "module/cpu" = { + type = "internal/cpu"; + interval = 2; + format-prefix = "CPU "; + format-prefix-foreground = config.stylix.base16Scheme.base0D; + label = "%percentage:2%%"; + }; + # "network-base" = { + # type = "internal/network"; + # interval = 5; + # format-connected = ""; + # format-disconnected = ""; + # label-disconnected = "%{F#F0C674}%ifname%%{F#707880} disconnected"; + # }; + # "module/wlan" = { + # "inherit" = "network-base"; + # interface-type = "wireless"; + # label-connected = "%{F#F0C674}%ifname%%{F-} %essid% %local_ip%"; + # }; + #"module/eth" = { + # "inherit" = "network-base"; + # interface-type = "wired"; + # label-connected = "%{F#F0C674}%ifname%%{F-} %local_ip%"; + #}; + "module/date" = { + type = "internal/date"; + interval = 1; + date = "%d %b %l:%M %p"; + date-alt = "%Y-%m-%d %H:%M:%S"; + label = "%date%"; + label-foreground = config.stylix.base16Scheme.base06; + # format-background = colors.background; + }; + "module/tray" = { + type = "internal/tray"; + + format-margin = "8px"; + tray-spacing = "8px"; + }; + "settings" = { + screenchange-reload = true; + pseudo-transparency = false; + }; + }; + }; } diff --git a/modules/graphical/i3.nix b/modules/graphical/i3.nix index 22cbf0e..19086f8 100644 --- a/modules/graphical/i3.nix +++ b/modules/graphical/i3.nix @@ -26,14 +26,14 @@ in { enable = true; extraPackages = with pkgs; [ i3status # gives you the default i3 status bar - i3lock # default i3 screen locker + i3lock-color # i3 screen locker i3blocks # if you are planning on using i3blocks over i3status ]; }; }; environment.systemPackages = with pkgs; [ - #picom # compositor + picom # compositor rofi # application maim # takes screenshots xclip diff --git a/modules/graphical/stylix.nix b/modules/graphical/stylix.nix index b4aa63f..01e232e 100644 --- a/modules/graphical/stylix.nix +++ b/modules/graphical/stylix.nix @@ -35,7 +35,10 @@ in { in mkIf cfg.enable { home-manager = lib.mkIf config.custom.graphical.i3.enable { - users.${config.mainUser.name}.stylix.targets.kde.enable = false; + users.${config.mainUser.name}.stylix = { + targets.kde.enable = false; + base16Scheme = config.stylix.base16Scheme // cfg.override; + }; }; stylix = { autoEnable = mkForce true; diff --git a/users/kopatz/home.nix b/users/kopatz/home.nix index 149aca3..d24a63d 100644 --- a/users/kopatz/home.nix +++ b/users/kopatz/home.nix @@ -24,6 +24,7 @@ ../../home-manager/lf.nix ../../home-manager/nixvim ../../home-manager/rofi.nix + ../../home-manager/dunst.nix #../../home-manager/theme.nix ../../home-manager/zsh.nix ../../home-manager/i3.nix