{ config, lib, pkgs, ... }: let get_spotify_status = pkgs.writeShellScript "get_spotify_status.sh" '' #!/bin/bash # The name of polybar bar which houses the main spotify module and the control modules. PARENT_BAR="example" PARENT_BAR_PID=$(pgrep -a "polybar" | grep "$PARENT_BAR" | cut -d" " -f1) # Set the source audio player here. # Players supporting the MPRIS spec are supported. # Examples: spotify, vlc, chrome, mpv and others. # Use `playerctld` to always detect the latest player. # See more here: https://github.com/altdesktop/playerctl/#selecting-players-to-control PLAYER="playerctld" # Format of the information displayed # Eg. {{ artist }} - {{ album }} - {{ title }} # See more attributes here: https://github.com/altdesktop/playerctl/#printing-properties-and-metadata FORMAT="{{ title }} - {{ artist }}" # Sends $2 as message to all polybar PIDs that are part of $1 update_hooks() { while IFS= read -r id do polybar-msg -p "$id" hook spotify-play-pause $2 1>/dev/null 2>&1 done < <(echo "$1") } PLAYERCTL_STATUS=$(playerctl --player=$PLAYER status 2>/dev/null) EXIT_CODE=$? if [ $EXIT_CODE -eq 0 ]; then STATUS=$PLAYERCTL_STATUS else STATUS="No player is running" fi if [ "$1" == "--status" ]; then echo "$STATUS" else if [ "$STATUS" = "Stopped" ]; then echo "Music Stopped" elif [ "$STATUS" = "Paused" ]; then update_hooks "$PARENT_BAR_PID" 2 playerctl --player=$PLAYER metadata --format "$FORMAT" elif [ "$STATUS" = "No player is running" ]; then echo "Music Off" else update_hooks "$PARENT_BAR_PID" 1 playerctl --player=$PLAYER metadata --format "$FORMAT" fi fi ''; in let unstable = import { config = { allowUnfree = true; }; }; hidePolybarInFullscreen = pkgs.writeShellScript "hidePolybarInFullscreen.sh" '' #!/usr/bin/env bash # Wait a bit to ensure i3 and polybar are ready sleep 1 # Subscribe to i3 window events i3-msg -t subscribe -m '[ "window" ]' | while read -r event; do # Hide Polybar when a window enters fullscreen if echo "$event" | grep -q '"fullscreen_mode":[[:space:]]*1'; then polybar-msg cmd hide # Show Polybar when fullscreen exits elif echo "$event" | grep -q '"fullscreen_mode":[[:space:]]*0'; then polybar-msg cmd show fi done ''; in { imports = [ ./hardware-configuration.nix ]; nix.settings = { substituters = [ "https://cache.nixos.org/" ]; trusted-public-keys = [ "cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=" ]; experimental-features = [ "nix-command" "flakes" ]; }; # === System Settings === boot.kernelPackages = pkgs.linuxPackages_latest; boot.loader.systemd-boot.enable = true; boot.loader.efi.canTouchEfiVariables = true; boot.loader.systemd-boot.configurationLimit = 5; networking.hostName = "kronos"; networking.networkmanager.enable = true; fileSystems."/boot".options = [ "fmask=0077" "dmask=0077" ]; hardware.bluetooth = { enable = true; powerOnBoot = true; settings = { General = { Experimental = true; Enable = "Source,Sink,Media,Socket"; AutoConnect = true; FastConnectabke = true; }; Policy.AutoEnable = true; }; }; security.pam.sshAgentAuth.enable = true; # In your configuration.nix environment.variables = { JAVA_HOME = "${pkgs.jdk17}/lib/openjdk"; # adjust path based on version }; time.timeZone = "Europe/Prague"; services.xserver = { wacom.enable = true; enable = true; windowManager.i3 = { enable = true; extraPackages = with pkgs; [ polybar i3lock-fancy-rapid ]; }; }; services.displayManager.defaultSession = "none+i3"; services.displayManager.ly = { enable = true; }; services.xserver.xkb.layout = "cz"; services.xserver.xkb.options = "eurosign:e,caps:escape"; services.printing.enable = true; services.pipewire = { enable = true; pulse.enable = true; }; services.libinput.enable = true; users.users = { mun = { isNormalUser = true; extraGroups = [ "wheel" "bluetooth" "networkmanager" "kvm" ]; packages = with pkgs; [ tree ]; shell = pkgs.zsh; }; }; programs.firefox.enable = true; programs.zsh.enable = true; nixpkgs.config.allowUnfree = true; environment.systemPackages = with pkgs; [ neovim wget stdenv tree-sitter discord kitty xfce.thunar thunderbird flameshot libreoffice spotify tor-browser alsa-utils helvum blueman bluez cava i3status i3lock-fancy-rapid xss-lock polybar rofi feh clipman tree git lazygit killall acpi wirelesstools brightnessctl fastfetch auto-cpufreq btop cargo gnome-boxes clippy xclip texstudio godotPackages_4_5.godot clang tree-sitter ripgrep fd unzip lua-language-server stylua rust-analyzer rustfmt cargo rustc zathura krita ruff vtsls pyright imagemagick ghostscript ruff python314 ly prismlauncher vlc lua53Packages.luarocks mermaid-cli lua nil obsidian wine bottles comic-mono playerctl zscroll espeak qbittorrent perl bzip2 libresprite audacity libgcc celestia lutris vscodium peazip vscode (texlive.combine { inherit (texlive) scheme-full; notestex = texlivePackages.notestex; }) (retroarch.withCores (cores: with cores; [ # --- NES --- # fceumm # --- GBA --- # mgba # --- GB / GBC --- # gambatte sameboy ])) ]; fonts = { enableDefaultPackages = true; packages = with pkgs; [ fira-code noto-fonts noto-fonts-color-emoji blackout beon]; }; programs.steam = { enable = true; remotePlay.openFirewall = true; # Open ports in the firewall for Steam Remote Play dedicatedServer.openFirewall = true; # Open ports in the firewall for Source Dedicated Server localNetworkGameTransfers.openFirewall = true; # Open ports in the firewall for Steam Local Network Game Transfers }; # enable Java support programs.java = { enable = true; package = pkgs.jdk17; # or pkgs.jdk11, pkgs.jdk8, whatever you need }; services.xserver.videoDrivers = [ "intel" ]; hardware.graphics = { enable = true; extraPackages = with pkgs; [ intel-vaapi-driver # for video acceleration on Intel intel-media-driver intel-compute-runtime mesa ]; }; # === Home Manager User Config === home-manager = { backupFileExtension = "backup"; users.mun = { pkgs, ... }: { home = { stateVersion = "25.11"; packages = with pkgs; [ pay-respects zathura ripgrep fd git lazygit tree-sitter ]; sessionVariables = { EDITOR = "nvim"; VISUAL = "nvim"; }; }; gtk.cursorTheme = { package = pkgs.rose-pine-cursor; name = "RosePine"; }; xdg = { enable = true; mimeApps = { enable = true; defaultApplications = { "text/plain" = [ "nvim.desktop" ]; "text/markdown" = [ "nvim.desktop" ]; "text/x-markdown" = [ "nvim.desktop" ]; }; }; }; programs = { ssh = { enable = true; forwardAgent = true; addKeysToAgent = "yes"; }; # --- ZSH --- zsh = { enable = true; syntaxHighlighting.enable = true; shellAliases = { ll = "ls -l"; rebuild = "sudo nixos-rebuild switch"; edit = "sudo vi /etc/nixos/configuration.nix"; }; history.size = 10000; oh-my-zsh = { enable = true; plugins = [ "git" ]; theme = "simple"; }; initContent = " export SSH_AUTH_SOCK=$XDG_RUNTIME_DIR/ssh-agent.socket fastfetch"; }; rofi = { enable = true; location = "center"; cycle = true; theme = "purple"; terminal = "\${pkgs.kitty}/bin/kitty"; modes = [ "drun" "ssh" "emoji" "calc" ]; plugins = with pkgs; [ rofi-emoji rofi-calc ]; }; nnn = { enable = true; package = pkgs.nnn.override { withNerdIcons = true; }; }; # --- Neovim --- neovim = { enable = true; defaultEditor = true; viAlias = true; vimAlias = true; withNodeJs = true; extraLuaConfig = '' -- Bootstrap LazyVim local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim" if not vim.loop.fs_stat(lazypath) then vim.fn.system({ "git", "clone", "--filter=blob:none", "https://github.com/folke/lazy.nvim.git", "--branch=stable", lazypath, }) end vim.opt.rtp:prepend(lazypath) -- Install LazyVim and setup require("lazy").setup({ spec = { { "LazyVim/LazyVim", import = "lazyvim.plugins" }, { import = "lazyvim.plugins.extras.lang.tex" }, { import = "lazyvim.plugins.extras.lang.markdown" }, { import = "lazyvim.plugins.extras.ui.mini-animate" }, { import = "lazyvim.plugins.extras.lang.typescript" }, { import = "lazyvim.plugins.extras.lang.python" }, { import = "lazyvim.plugins.extras.lang.rust" }, { import = "lazyvim.plugins.extras.lang.nix" }, { "lervag/vimtex", lazy = false, init = function() vim.g.vimtex_view_method = "zathura" end }, { "MeanderingProgrammer/render-markdown.nvim", opts = { -- optional settings: enabled = true, file_types = { "markdown", "rmd" }, colorscheme = "default" }, dependencies = { "nvim-treesitter/nvim-treesitter", "nvim-tree/nvim-web-devicons", -- optional but recommended }, }, -- Mermaid file syntax highlighting { "mracos/mermaid.vim", ft = { "mermaid" } }, }, defaults = { lazy = false, version = false }, checker = { enabled = true }, performance = { rtp = { disabled_plugins = { "gzip", "tarPlugin", "tohtml", "tutor", "zipPlugin", }, }, }, }) -- LaTeX-specific soft wrapping vim.api.nvim_create_autocmd("FileType", { pattern = "tex", callback = function() vim.opt_local.wrap = true -- enable soft wrap vim.opt_local.linebreak = true -- wrap at word boundaries vim.opt_local.breakindent = true -- indent wrapped lines vim.opt_local.breakindentopt = "shift:2" vim.opt_local.textwidth = 0 -- don't hard wrap automatically end, }) vim.api.nvim_create_autocmd("FileType", { pattern = "markdown", callback = function() vim.diagnostic.disable(0) end, }) -- Configure Nix LSP (nil_ls) to use system binary local lspconfig = require("lspconfig") lspconfig.nil_ls.setup({ cmd = { "nil" }, -- points to nix language server installed by Nix }) -- Set system clipboard vim.opt.clipboard = "unnamedplus" ''; }; # --- Kitty Terminal --- kitty = { enable = true; extraConfig = '' confirm_os_window_close 0 font_family Fira Code bold_font Fira Code Bold italic_font Fira Code Light shell_integration no-cursor cursor_shape beam window_padding_width 7 window_padding_height 10 scrollback_lines 3000 font_size 11 map ctrl+shift+plus change_font_size all +1.0 map ctrl+shift+minus change_font_size all -1.0 background_opacity 0.7 cursor #AC82E9 selection_background #d8cab8 selection_foreground #141216 background #141216 foreground #d8cab8 color0 #2b2135 color8 #92fcfa color1 #fc4649 color9 #fc4649 color2 #c4e881 color10 #c4e881 color3 #AC82E9 color11 #AC82E9 color4 #7b91fc color12 #7b91fc color5 #f3fc7b color13 #f3fc7b color6 #8F56E1 color14 #8F56E1 color7 #fc92fc color15 #d8cab8 ''; }; }; xsession = { windowManager = { i3 = { enable = true; config = { bars = []; }; extraConfig = '' # This file has been auto-generated by i3-config-wizard(1). # It will not be overwritten, so edit it as you like. # # Should you change your keyboard layout some time, delete # this file and re-run i3-config-wizard(1). # # 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:Fira Code 10 # This font is widely installed, provides lots of unicode glyphs, right-to-left # text rendering and scalability on retina/hidpi displays (thanks to pango). #font pango:DejaVu Sans Mono 8 # Start XDG autostart .desktop files using dex. See also # https://wiki.archlinux.org/index.php/XDG_Autostart exec --no-startup-id dex-autostart --autostart --environment i3 # 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-fancy-rapid 5 3 --nofork # 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. exec --no-startup-id nm-applet # tartup bluetooth applet exec --no-startup-id blueman-applet # automatically startup picom exec_always --no-startup-id sh -c "sleep 1 && picom --config ~/.config/picom/picom.conf" # automatically merge .Xresources to avoid bugs exec --no-startup-id -merge ~/.Xresources # automatically call feh to set the background wallpaper exec_always --no-startup-id feh --bg-scale ~/Pictures/wallpapers/vox.jpg # automatically start xautolock to lock the screen after 3 minutes of inactivity #exec --no-startup-id xautolock -time 3 -locker "i3lock-fancy" # start polybar exec_always --no-startup-id sh -c "killall -q polybar; sleep 1; polybar example --config=~/.config/polybar/config.ini &" # Add a gap on the top via i3-gaps to accomodate for the bar gaps top 60 # Make fullscreen windows render over everything including docks like polybar exec_always --no-startup-id ${hidePolybarInFullscreen} # automatically start flameshot exec --no-startup-id flameshot # Brightness bindsym XF86MonBrightnessDown exec brightnessctl set 10%- bindsym XF86MonBrightnessUp exec brightnessctl set +10% # Volume bindsym XF86AudioMute exec amixer set Master toggle bindsym XF86AudioLowerVolume exec amixer set Master 5%- bindsym XF86AudioRaiseVolume exec amixer set Master 5%+ # Mic mute toggle bindsym XF86AudioMicMute exec amixer set Capture toggle # Use Mouse+$mod to drag floating windows to their wanted position floating_modifier $mod # open flameshot bindsym $mod+Shift+s exec flameshot gui # start a terminal bindsym $mod+Return exec kitty # lock the screen bindsym $mod+Control+l exec --no-startup-id i3lock-fancy-rapid 5 3 # open rofi as app launcher bindsym $mod+m exec rofi -show drun # open nnn (n cubed) as the file browser bindsym $mod+Shift+m exec kitty nnn # open firefox bindsym $mod+n exec firefox # kill focused window bindsym $mod+Shift+q kill # change focus bindsym $mod+j focus left bindsym $mod+k focus down bindsym $mod+l focus up bindsym $mod+uring 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+j move left bindsym $mod+Shift+k move down bindsym $mod+Shift+l move up bindsym $mod+Shift+uring 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+h split h # split in vertical orientation bindsym $mod+v split v # enter fullscreen mode for the focused container bindsym $mod+f fullscreen toggle # change container layout (stacked, tabbed, toggle split) bindsym $mod+s layout stacking bindsym $mod+w layout tabbed bindsym $mod+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+a focus parent # focus the child container #bindsym $mod+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+plus workspace number $ws1 bindsym $mod+ecaron workspace number $ws2 bindsym $mod+scaron workspace number $ws3 bindsym $mod+ccaron workspace number $ws4 bindsym $mod+rcaron workspace number $ws5 bindsym $mod+zcaron workspace number $ws6 bindsym $mod+yacute workspace number $ws7 bindsym $mod+aacute workspace number $ws8 bindsym $mod+iacute workspace number $ws9 bindsym $mod+eacute workspace number $ws10 # move focused container to workspace bindsym $mod+Shift+plus move container to workspace number $ws1 bindsym $mod+Shift+ecaron move container to workspace number $ws2 bindsym $mod+Shift+scaron move container to workspace number $ws3 bindsym $mod+Shift+ccaron move container to workspace number $ws4 bindsym $mod+Shift+rcaron move container to workspace number $ws5 bindsym $mod+Shift+zcaron move container to workspace number $ws6 bindsym $mod+Shift+yacute move container to workspace number $ws7 bindsym $mod+Shift+aacute move container to workspace number $ws8 bindsym $mod+Shift+iacute move container to workspace number $ws9 bindsym $mod+Shift+eacute move container to workspace number $ws10 # reload the configuration file bindsym $mod+Shift+c reload # restart i3 inplace (preserves your layout/session, can be used to upgrade i3) bindsym $mod+Shift+r restart # exit i3 (logs you out of your X session) bindsym $mod+Shift+e exec "i3-nagbar -t warning -m 'You pressed the exit shortcut. Do you really want to 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 j resize shrink width 5 px or 5 ppt bindsym k resize grow height 5 px or 5 ppt bindsym l resize shrink height 5 px or 5 ppt bindsym uring resize grow width 5 px or 5 ppt # same bindings, but for the arrow keys bindsym Left resize shrink width 5 px or 5 ppt bindsym Down resize grow height 5 px or 5 ppt bindsym Up resize shrink height 5 px or 5 ppt bindsym Right resize grow width 5 px or 5 ppt # back to normal: Enter or Escape or $mod+r bindsym Return mode "default" bindsym Escape mode "default" bindsym $mod+r mode "default" } bindsym $mod+r mode "resize" # class border bground text indicator child_border client.focused #FFFFFF #FFFFFF #FFFFFF #FFFFFF #b12cbf client.focused_inactive #8C8C8C #4C4C4C #FFFFFF #4C4C4C #FFFFFF client.unfocused #4C4C4C #222222 #888888 #292D2E #500096 client.urgent #EC69A0 #DB3279 #FFFFFF #DB3279 #DB3279 client.placeholder #000000 #0C0C0C #FFFFFF #000000 #FFFFFF client.background #FFFFFF # Start i3bar to display a workspace bar (plus the system information i3status # finds out, if available) #bar { # colors { # background #000000 # statusline #b12cbf # separator #500096 # # focused_workspace #500096 #b12cbf #000000 # active_workspace #500096 #b12cbf #000000 # inactive_workspace #500096 #000000 #b12cbf # urgent_workspace #500096 #b12cbf #000000 # binding_mode #500096 #b12cbf #000000 # } # status_command i3blocks # position top #} # defualt border style for new windows default_border pixel 3 default_floating_border pixel 3 # 0default_border_color # 500096 # hide container edges if theyre at the screen edge hide_edge_borders smart ''; }; }; }; services = { dunst = { enable = true; settings = let colors = { foreground = "#d0b6fd"; background = "#1c182d"; alert = "#7b91fc"; }; in { global = { width = "(200,300)"; height = "(0,150)"; offset = "(30,50)"; origin = "bottom-right"; transparency = 10; frame_width = 0; font = "Fira Code 10"; }; urgency_low = { background = "${colors.background}"; foregroung = "${colors.foreground}"; timeout = 8; }; urgency_normal = { background = "${colors.background}"; foreground = "${colors.foreground}"; frame-size = "0"; timeout = 10; }; urgency_critical = { background = "${colors.background}"; foreground = "${colors.foreground}"; frame-size = "5"; frame-color = "${colors.alert}"; }; }; }; polybar = { enable = true; extraConfig = let colors = { background = "#1c182d"; background-alt = "#2b1b3d"; foreground = "#d0b6fd"; primary = "#cfb5fd"; secondary = "#8a78b0"; alert = "#7b91fc"; disabled = "#707880"; }; in '' ;========================================================== ; ; ; ██████╗ ██████╗ ██╗ ██╗ ██╗██████╗ █████╗ ██████╗ ; ██╔══██╗██╔═══██╗██║ ╚██╗ ██╔╝██╔══██╗██╔══██╗██╔══██╗ ; ██████╔╝██║ ██║██║ ╚████╔╝ ██████╔╝███████║██████╔╝ ; ██╔═══╝ ██║ ██║██║ ╚██╔╝ ██╔══██╗██╔══██║██╔══██╗ ; ██║ ╚██████╔╝███████╗██║ ██████╔╝██║ ██║██║ ██║ ; ╚═╝ ╚═════╝ ╚══════╝╚═╝ ╚═════╝ ╚═╝ ╚═╝╚═╝ ╚═╝ ; ; ; To learn more about how to configure Polybar ; go to https://github.com/polybar/polybar ; ; The README contains a lot of information ; ;========================================================== ;[colors] ;background = #1c182d ;background-alt = #2b1b3d ;foreground = #d0b6fd ;primary = #cfb5fd ;secondary = #8a78b0 ;alert = #7b91fc ;disabled = #707880 [bar/example] width = 98% height = 30pt radius = 15 offset-x = 1% offset-y = 1% override-redirect = true fixed-center = true enable-ipc = true ; dpi = 96 background = ${colors.background} foreground = ${colors.foreground} line-size = 4pt border-size = Opt border-color = #00000000 padding-left = 1 padding-right = 1 module-margin = 1 separator = | separator-foreground = ${colors.disabled} font-0 = fira code;2 modules-left = xworkspaces spotify spotify-prev spotify-play-pause spotify-next modules-center = date modules-right = filesystem memory cpu pulseaudio-devices wlan xkeyboard battery cursor-click = pointer cursor-scroll = ns-resize ; wm-restack = generic ; wm-restack = bspwm ; wm-restack = i3 ; override-redirect = true ; This module is not active by default (to enable it, add it to one of the ; modules-* list above). ; Please note that only a single tray can exist at any time. If you launch ; multiple bars with this module, only a single one will show it, the others ; will produce a warning. Which bar gets the module is timing dependent and can ; be quite random. ; For more information, see the documentation page for this module: ; https://polybar.readthedocs.io/en/stable/user/modules/tray.html [module/systray] type = internal/tray format-margin = 8pt tray-spacing = 16pt [module/xworkspaces] type = internal/xworkspaces label-active = %name% label-active-background = ${colors.background-alt} label-active-underline= ${colors.primary} label-active-padding = 1 label-occupied = %name% label-occupied-padding = 1 label-urgent = %name% label-urgent-background = ${colors.alert} label-urgent-padding = 1 label-empty = %name% label-empty-foreground = ${colors.disabled} 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/pulseaudio] type = internal/pulseaudio format-volume-prefix = "VOL " format-volume-prefix-foreground = ${colors.primary} format-volume = label-volume = %percentage%% label-muted = muted label-muted-foreground = ${colors.disabled} [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 = ${colors.primary} label = %percentage_used:2%% [module/cpu] type = internal/cpu interval = 2 format-prefix = "CPU " format-prefix-foreground = ${colors.primary} 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% [module/eth] inherit = network-base interface-type = wired label-connected = %{F#F0C674}%ifname%%{F-} [module/date] type = internal/date interval = 1 date = %H:%M date-alt = %Y-%m-%d %H:%M:%S label = %date% label-foreground = ${colors.primary} [settings] screenchange-reload = true pseudo-transparency = true [module/battery] type = internal/battery ; This is useful in case the battery never reports 100% charge ; Default: 100 full-at = 100 ; format-low once this charge percentage is reached ; Default: 10 ; New in version 3.6.0 low-at = 15 ; Use the following command to list batteries and adapters: ; $ ls -1 /sys/class/power_supply/ battery = BAT0 adapter = ADP1 ; If an inotify event haven't been reported in this many ; seconds, manually poll for new values. ; ; Needed as a fallback for systems that don't report events ; on sysfs/procfs. ; ; Disable polling by setting the interval to 0. ; ; Default: 5 poll-interval = 5 ; vim:ft=dosini [module/spotify] type = custom/script tail = true interval = 1 ; prefix symbol is shown before the text format-prefix = "♫" format =