diff options
Diffstat (limited to 'home/profiles')
| -rw-r--r-- | home/profiles/base/config/dunst.nix | 47 | ||||
| -rw-r--r-- | home/profiles/base/config/foot.nix | 37 | ||||
| -rw-r--r-- | home/profiles/base/config/sway.nix | 204 | ||||
| -rw-r--r-- | home/profiles/base/config/waybar-settings.nix | 54 | ||||
| -rw-r--r-- | home/profiles/base/config/waybar-style.nix | 77 | ||||
| -rw-r--r-- | home/profiles/base/default.nix | 184 | ||||
| -rw-r--r-- | home/profiles/base/p10k-config/p10k.zsh | 1604 | ||||
| -rw-r--r-- | home/profiles/browsing/default.nix | 30 | ||||
| -rw-r--r-- | home/profiles/browsing/qutebrowser-settings.nix | 306 | ||||
| -rw-r--r-- | home/profiles/default.nix | 13 | ||||
| -rw-r--r-- | home/profiles/development/default.nix | 87 | ||||
| -rw-r--r-- | home/profiles/messaging/default.nix | 17 | ||||
| -rw-r--r-- | home/profiles/multimedia/default.nix | 49 | ||||
| -rw-r--r-- | home/profiles/research/default.nix | 16 |
14 files changed, 2725 insertions, 0 deletions
diff --git a/home/profiles/base/config/dunst.nix b/home/profiles/base/config/dunst.nix new file mode 100644 index 0000000..60ed15f --- /dev/null +++ b/home/profiles/base/config/dunst.nix @@ -0,0 +1,47 @@ +{ neotheme }: + +with neotheme.colors; +{ + global = { + padding = 8; + width = "330"; + height = "500"; + origin = "top-right"; + offset = "8x25"; + notification_limit = 5; + frame_width = 2; + vertical_alignment = "center"; + horizontal_padding = 8; + icon_position = "left"; + corner_radius = 10; + + markup = "full"; + word_wrap = true; + show_indicators = false; + format = "<b>%s</b>\\n\\n%b"; + font = "Dina 10"; + frame_color = "#${color3}"; + separator_color = "auto"; + max_icon_size = 80; + }; + + urgency_low = { + foreground = "#${foreground}"; + background = "#${background}"; + frame_color = "#${color4}"; + timeout = 4; + }; + + urgency_normal = { + foreground = "#${foreground}"; + background = "#${background}"; + frame_color = "#${color3}"; + timeout = 8; + }; + + urgency_critical = { + foreground = "#${foreground}"; + background = "#${background}"; + frame_color = "#${color1}"; + }; +} diff --git a/home/profiles/base/config/foot.nix b/home/profiles/base/config/foot.nix new file mode 100644 index 0000000..08a38e7 --- /dev/null +++ b/home/profiles/base/config/foot.nix @@ -0,0 +1,37 @@ +{ neotheme }: + +with neotheme.colors; + +{ + main = { + term = "foot"; + font = "dina:size=10,JetBrainsMono Nerd Font:size=11"; + letter-spacing = 0; + line-height = 13; + dpi-aware = "yes"; + pad = "16x16 center"; + }; + + cursor.style = "beam"; + + colors = { + background = background; + foreground = foreground; + regular0 = color0; + regular1 = color1; + regular2 = color2; + regular3 = color3; + regular4 = color4; + regular5 = color5; + regular6 = color6; + regular7 = color7; + bright0 = bright0; + bright1 = bright1; + bright2 = bright2; + bright3 = bright3; + bright4 = bright4; + bright5 = bright5; + bright6 = bright6; + bright7 = bright7; + }; +} diff --git a/home/profiles/base/config/sway.nix b/home/profiles/base/config/sway.nix new file mode 100644 index 0000000..00dae28 --- /dev/null +++ b/home/profiles/base/config/sway.nix @@ -0,0 +1,204 @@ +{ pkgs, neotheme }: + +with neotheme.colors; + +'' + exec autotiling + + # set modifiers + set $mod Mod4 + set $alt Mod1 + set $floating_modifier $mod + set $left h + set $down j + set $up k + set $right l + + # set terminal + + set $term foot + bindsym $mod+Return exec $term + + # set menu + set $menu "${pkgs.bemenu}/bin/bemenu-run -H 18 -l 5 --fn 'Iosevka Pure 10.5' -p 'run::' --tb '$primary' --tf '$color0' --hb '$primary' --hf '$color0'" + bindsym $mod+d exec $menu + + # change focus + # vim-style + bindsym $mod+$left focus left + bindsym $mod+$down focus down + bindsym $mod+$up focus up + bindsym $mod+$right focus right + # arrows + bindsym $mod+Left focus left + bindsym $mod+Down focus down + bindsym $mod+Up focus up + bindsym $mod+Right focus right + + # move focused window + # vim-style + bindsym $mod+Shift+$left move left + bindsym $mod+Shift+$down move down + bindsym $mod+Shift+$up move up + bindsym $mod+Shift+$right move right + # arrows + 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 + bindsym $mod+c split h # horizontal + bindsym $mod+v split v # vertical + + # fullscreen + bindsym $mod+e fullscreen toggle + + # floating + bindsym $mod+f floating toggle + + # kill focused + bindsym $mod+w kill + + font "pango:Iosevka Pure 5" + + # window rules + for_window [window_role="pop-up"] floating enable + for_window [window_role="bubble"] floating enable + for_window [window_role="task_dialog"] floating enable + for_window [window_role="Preferences"] floating enable + for_window [window_type="dialog"] floating enable + for_window [window_type="menu"] floating enable + for_window [class="mpv"] floating enable + for_window [class=".*"] inhibit_idle fullscreen + for_window [app_id=".*"] title_format "" + for_window [class=".*"] title_format "" + + titlebar_border_thickness 0 + titlebar_padding 0 0 + + # workspace names + set $ws1 "α" + set $ws2 "β" + set $ws3 "γ" + set $ws4 "δ" + set $ws5 "ε" + set $ws6 "ζ" + set $ws7 "η" + set $ws8 "θ" + set $ws9 "ι" + set $ws10 "κ" + + # switch to named ws + bindsym $mod+1 workspace $ws1 + bindsym $mod+2 workspace $ws2 + bindsym $mod+3 workspace $ws3 + bindsym $mod+4 workspace $ws4 + bindsym $mod+5 workspace $ws5 + bindsym $mod+6 workspace $ws6 + bindsym $mod+7 workspace $ws7 + bindsym $mod+8 workspace $ws8 + bindsym $mod+9 workspace $ws9 + bindsym $mod+0 workspace $ws10 + + # switch to prev/next ws + bindsym $mod+z workspace prev + bindsym $mod+x workspace next + + # move focused container to ws + bindsym $mod+Shift+1 move container to workspace $ws1 + bindsym $mod+Shift+2 move container to workspace $ws2 + bindsym $mod+Shift+3 move container to workspace $ws3 + bindsym $mod+Shift+4 move container to workspace $ws4 + bindsym $mod+Shift+5 move container to workspace $ws5 + bindsym $mod+Shift+6 move container to workspace $ws6 + bindsym $mod+Shift+7 move container to workspace $ws7 + bindsym $mod+Shift+8 move container to workspace $ws8 + bindsym $mod+Shift+9 move container to workspace $ws9 + bindsym $mod+Shift+0 move container to workspace $ws10 + bindsym $mod+Shift+z move container to workspace prev + bindsym $mod+Shift+x move container to workspace next + + # ws back-and-forth + workspace_auto_back_and_forth no + + # reload + bindsym $mod+q reload + + # application shortcuts + bindsym $mod+a exec qutebrowser + # bindsym $mod+Shift+a + + # Volume control + bindsym XF86AudioRaiseVolume exec ~/.local/bin/volume up + bindsym XF86AudioLowerVolume exec ~/.local/bin/volume down + bindsym XF86AudioMute exec ~/.local/bin/volume toggle + #HHKB + bindsym $mod+equal exec ~/.local/bin/volume up + bindsym $mod+minus exec ~/.local/bin/volume down + bindsym $mod+backslash exec ~/.local/bin/volume toggle + + # Brightness + bindsym XF86MonBrightnessDown exec brightnessctl -q set 10%- + bindsym XF86MonBrightnessUp exec brightnessctl -q set 10%+ + + # Screenshot + bindsym $mod+Print exec grimshot copy area + bindsym Print exec grimshot copy active + bindsym $alt+Print exec grimshot save screen + + # Toggle waybar + bindsym $mod+b exec pkill -USR1 waybar + + # Exit + bindsym $mod+Shift+q exec swaynag -t warning -m 'Do you really want to exit sway?' -b 'Yes, exit sway' 'swaymsg exit' + + # Aesthetics + default_border pixel 3 + hide_edge_borders --i3 smart + gaps inner 8 + smart_borders on + + set $color0 #${color0} + set $color1 #${color1} + set $color2 #${color2} + set $color3 #${color3} + set $color4 #${color4} + set $color5 #${color5} + set $color6 #${color6} + set $color7 #${color7} + set $color8 #${bright0} + set $color9 #${bright1} + set $color10 #${bright2} + set $color11 #${bright3} + set $color12 #${bright4} + set $color13 #${bright5} + set $color14 #${bright6} + set $color15 #${bright7} + + set $primary $color4 + set $muted #4d698f + + # class border backgr text indicator + client.focused $primary $primary $color0 $color5 + client.focused_inactive $muted $muted $color0 $color5 + client.unfocused $muted $muted $color7 $color5 + client.urgent $color10 $color10 $color0 $color5 + output "*" bg ${neotheme.wallpaper} fill + output "*" scale 1 + output "*" scale_filter nearest + + input type:touchpad { + tap enabled + natural_scroll enabled + } + + input type:keyboard { + repeat_rate 40 + repeat_delay 350 + xkb_layout us,se + # xkb_variant ,dvorak + xkb_options 'grp:alt_shift_toggle,caps:escape' + # xkb_options ctrl:swapcaps + } +'' diff --git a/home/profiles/base/config/waybar-settings.nix b/home/profiles/base/config/waybar-settings.nix new file mode 100644 index 0000000..089fefb --- /dev/null +++ b/home/profiles/base/config/waybar-settings.nix @@ -0,0 +1,54 @@ +{ neotheme }: + +with neotheme.colors; +{ + layer = "bottom"; + position = "top"; + height = 21; + modules-left = [ "pulseaudio" "custom/seperator" "cpu" "custom/seperator" "memory" ]; + modules-center = [ "sway/workspaces" ]; + modules-right = [ "clock" ]; + + "sway/workspaces" = { + all-outputs = true; + persistent_workspaces = { + "α" = [ ]; + "β" = [ ]; + "γ" = [ ]; + "δ" = [ ]; + "ε" = [ ]; + "ζ" = [ ]; + "η" = [ ]; + "θ" = [ ]; + "ι" = [ ]; + "κ" = [ ]; + }; + }; + + "clock" = { + interval = 10; + format = "<span foreground='#${color5}'></span> {:%A, %b %d %H:%M}"; + }; + + "cpu" = { + interval = 5; + format = "<span foreground='#${color2}'></span> {usage:3}%"; + }; + + "pulseaudio" = { + format = "<span foreground='#${color4}'>{icon}</span> {volume}%"; + format-muted = "ﱝ Muted"; + format-icons.default = [ " " " " " " ]; + }; + + "memory" = { + interval = 5; + format = "<span foreground='#${color3}'></span> {used:0.2f}GiB"; + }; + + "custom/seperator" = { + format = "|"; + interval = "once"; + tooltip = false; + }; +} diff --git a/home/profiles/base/config/waybar-style.nix b/home/profiles/base/config/waybar-style.nix new file mode 100644 index 0000000..0901a6a --- /dev/null +++ b/home/profiles/base/config/waybar-style.nix @@ -0,0 +1,77 @@ +{ neotheme }: + +with neotheme.colors; + +'' + * { + border: none; + border-radius: 0; + font-family: "JetBrainsMono Nerd Font"; + font-size: 14px; + min-height: 0; + } + + window#waybar { + background: #${background}; + color: #${foreground}; + border-bottom: 1px solid #${bright0}; + } + + #workspaces button { + padding: 0 8px; + background: #${background}; + color: #${foreground}; + border-bottom: 1px solid #${bright0}; + } + + #workspaces button.focused { + color: #${foreground}; + background-color: #${bright0}; + } + + #workspaces button.urgent { + color: #${color1}; + } + + #workspaces button.persistent { + color: #${alt1}; + } + + #workspaces button:hover { + color: #${foreground}; + background: #${alt1}; + box-shadow: inherit; + text-shadow: inherit; + } + + #clock, + #cpu, + #temperature, + #backlight, + #network, + #memory, + #language, + #pulseaudio, + #tray, + #mode, + #mpd { + padding: 0.2rem 0.6rem; + margin: 0 2px; + color: #${foreground}; + background-color: #${background}; + border-bottom: 1px solid #${bright0}; + } + + @keyframes blink { + to { + background-color: #${color4}; + color: #${background}; + } + } + + #custom-seperator { + color: #${alt1}; + background-color: #${background}; + border-bottom: 1px solid #${bright0}; + } +'' diff --git a/home/profiles/base/default.nix b/home/profiles/base/default.nix new file mode 100644 index 0000000..7b62442 --- /dev/null +++ b/home/profiles/base/default.nix @@ -0,0 +1,184 @@ +{ config, lib, pkgs, self, ... }: +let + cfg = config.profiles.base; + + neotheme = config.neotheme; + + inherit (self.packages.x86_64-linux) neovim iosevka-pure-bin phocus; +in +{ + imports = [ + ../../modules/programs/nixpkgs + ../../modules/programs/zshell + ../../modules/misc/neotheme + ]; + + options.profiles.base.enable = lib.mkEnableOption + "The base profile, should be always enabled"; + + config = lib.mkIf cfg.enable { + + home.sessionVariables = rec { + EDITOR = "nvim"; + VISUAL = "nvim"; + GIT_EDITOR = EDITOR; + }; + + gtk.enable = true; + gtk.iconTheme.package = pkgs.papirus-icon-theme; + gtk.iconTheme.name = "Papirus-Dark"; + gtk.theme.package = phocus; + gtk.theme.name = "phocus"; + + home.file.".icons/default".source = "${pkgs.vanilla-dmz}/share/icons/Vanilla-DMZ-AA"; + + neotheme = { + name = "Nightlamp Theme - Iceberg Variant"; + identifier = "nightlamp-iceberg"; + + colors = { + background = "18191f"; + foreground = "cbc0ab"; + alt0 = "404147"; + alt1 = "54555b"; + color0 = "222329"; + color1 = "b17f81"; + color2 = "8aa387"; + color3 = "d4ae80"; + color4 = "84a0c6"; + color5 = "a093c7"; + color6 = "7aacaa"; + color7 = "d0d0c7"; + bright0 = "36373d"; + bright1 = "c59395"; + bright2 = "9eb79b"; + bright3 = "e8c294"; + bright4 = "a2bee4"; + bright5 = "beb1e5"; + bright6 = "8ec0be"; + bright7 = "e4e4db"; + }; + + wallpaper = "${self.inputs.wallpapers}/nixos/nix-glow-fg-d4ae80.png"; + }; + + home.keyboard.layout = "us"; + home.packages = [ + pkgs.hydra-check + pkgs.sops + neovim + + # Fonts + iosevka-pure-bin + pkgs.dina-font + pkgs.sarasa-gothic + pkgs.scientifica + pkgs.jetbrains-mono + pkgs.twemoji-color-font + pkgs.symbola + pkgs.emacs-all-the-icons-fonts + (pkgs.nerdfonts.override { fonts = [ "Iosevka" "JetBrainsMono" ]; }) + ]; + + fonts.fontconfig.enable = true; + + + wayland.windowManager.sway = { + enable = true; + + config = { + bars = [{ command = "${pkgs.waybar}/bin/waybar"; }]; + keybindings = { }; + }; + + extraConfig = import ./config/sway.nix { inherit pkgs neotheme; }; + }; + + programs = { + bat.enable = true; + direnv.enable = true; + direnv.nix-direnv.enable = true; + exa.enable = true; + exa.enableAliases = true; + home-manager.enable = true; + htop.enable = true; + + foot = { + enable = true; + + settings = import ./config/foot.nix { inherit neotheme; }; + }; + + password-store.enable = true; + + waybar = { + enable = config.wayland.windowManager.sway.enable; + + settings = [ (import ./config/waybar-settings.nix { inherit neotheme; }) ]; + + style = import ./config/waybar-style.nix { inherit neotheme; }; + }; + + zsh = { + enable = true; + + enableCompletion = true; + enableAutosuggestions = true; + + autocd = true; + + dotDir = ".config/zsh"; + + plugins = [ + { + name = "powerlevel10k"; + src = pkgs.zsh-powerlevel10k; + file = "share/zsh-powerlevel10k/powerlevel10k.zsh-theme"; + } + + { + name = "powerlevel10k-config"; + src = lib.cleanSource ./p10k-config; + file = "p10k.zsh"; + } + + { + name = "zsh-syntax-highlighting"; + src = pkgs.fetchFromGitHub { + owner = "zsh-users"; + repo = "zsh-syntax-highlighting"; + rev = "0.7.1"; + sha256 = "03r6hpb5fy4yaakqm3lbf4xcvd408r44jgpv4lnzl9asp4sb9qc0"; + }; + } + ]; + + shellAliases = config.programs.zshell.aliases; + }; + + zshell.aliases = { + e = "nvim"; + }; + + zoxide = { + enable = true; + enableZshIntegration = true; + }; + }; + + services = { + dunst = { + enable = true; + settings = import ./config/dunst.nix { inherit neotheme; }; + }; + + wlsunset = { + enable = true; + latitude = "36.5"; + longitude = "127.2"; + }; + }; + + nixpkgs.allowedUnfree = [ "symbola" ]; + }; +} diff --git a/home/profiles/base/p10k-config/p10k.zsh b/home/profiles/base/p10k-config/p10k.zsh new file mode 100644 index 0000000..aa6bc2c --- /dev/null +++ b/home/profiles/base/p10k-config/p10k.zsh @@ -0,0 +1,1604 @@ +# Generated by Powerlevel10k configuration wizard on 2022-01-02 at 08:00 UTC. +# Based on romkatv/powerlevel10k/config/p10k-lean-8colors.zsh. +# Wizard options: nerdfont-complete + powerline, large icons, unicode, lean_8colors, +# 24h time, 2 lines, disconnected, no frame, sparse, few icons, concise, +# transient_prompt, instant_prompt=verbose. +# Type `p10k configure` to generate another config. +# +# Config for Powerlevel10k with 8-color lean prompt style. Type `p10k configure` to generate +# your own config based on it. +# +# Tip: Looking for a nice color? Here's a one-liner to print colormap. +# +# for i in {0..255}; do print -Pn "%K{$i} %k%F{$i}${(l:3::0:)i}%f " ${${(M)$((i%6)):#3}:+$'\n'}; done + +# Temporarily change options. +'builtin' 'local' '-a' 'p10k_config_opts' +[[ ! -o 'aliases' ]] || p10k_config_opts+=('aliases') +[[ ! -o 'sh_glob' ]] || p10k_config_opts+=('sh_glob') +[[ ! -o 'no_brace_expand' ]] || p10k_config_opts+=('no_brace_expand') +'builtin' 'setopt' 'no_aliases' 'no_sh_glob' 'brace_expand' + +() { + emulate -L zsh -o extended_glob + + # Unset all configuration options. This allows you to apply configuration changes without + # restarting zsh. Edit ~/.p10k.zsh and type `source ~/.p10k.zsh`. + unset -m '(POWERLEVEL9K_*|DEFAULT_USER)~POWERLEVEL9K_GITSTATUS_DIR' + + # Zsh >= 5.1 is required. + autoload -Uz is-at-least && is-at-least 5.1 || return + + # The list of segments shown on the left. Fill it with the most important segments. + typeset -g POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=( + # =========================[ Line #1 ]========================= + # os_icon # os identifier + dir # current directory + vcs # git status + # =========================[ Line #2 ]========================= + newline # \n + prompt_char # prompt symbol + ) + + # The list of segments shown on the right. Fill it with less important segments. + # Right prompt on the last prompt line (where you are typing your commands) gets + # automatically hidden when the input line reaches it. Right prompt above the + # last prompt line gets hidden if it would overlap with left prompt. + typeset -g POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS=( + # =========================[ Line #1 ]========================= + status # exit code of the last command + command_execution_time # duration of the last command + background_jobs # presence of background jobs + direnv # direnv status (https://direnv.net/) + asdf # asdf version manager (https://github.com/asdf-vm/asdf) + virtualenv # python virtual environment (https://docs.python.org/3/library/venv.html) + anaconda # conda environment (https://conda.io/) + pyenv # python environment (https://github.com/pyenv/pyenv) + goenv # go environment (https://github.com/syndbg/goenv) + nodenv # node.js version from nodenv (https://github.com/nodenv/nodenv) + nvm # node.js version from nvm (https://github.com/nvm-sh/nvm) + nodeenv # node.js environment (https://github.com/ekalinin/nodeenv) + # node_version # node.js version + # go_version # go version (https://golang.org) + # rust_version # rustc version (https://www.rust-lang.org) + # dotnet_version # .NET version (https://dotnet.microsoft.com) + # php_version # php version (https://www.php.net/) + # laravel_version # laravel php framework version (https://laravel.com/) + # java_version # java version (https://www.java.com/) + # package # name@version from package.json (https://docs.npmjs.com/files/package.json) + rbenv # ruby version from rbenv (https://github.com/rbenv/rbenv) + rvm # ruby version from rvm (https://rvm.io) + fvm # flutter version management (https://github.com/leoafarias/fvm) + luaenv # lua version from luaenv (https://github.com/cehoffman/luaenv) + jenv # java version from jenv (https://github.com/jenv/jenv) + plenv # perl version from plenv (https://github.com/tokuhirom/plenv) + phpenv # php version from phpenv (https://github.com/phpenv/phpenv) + scalaenv # scala version from scalaenv (https://github.com/scalaenv/scalaenv) + haskell_stack # haskell version from stack (https://haskellstack.org/) + kubecontext # current kubernetes context (https://kubernetes.io/) + terraform # terraform workspace (https://www.terraform.io) + aws # aws profile (https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-profiles.html) + aws_eb_env # aws elastic beanstalk environment (https://aws.amazon.com/elasticbeanstalk/) + azure # azure account name (https://docs.microsoft.com/en-us/cli/azure) + gcloud # google cloud cli account and project (https://cloud.google.com/) + google_app_cred # google application credentials (https://cloud.google.com/docs/authentication/production) + context # user@hostname + nordvpn # nordvpn connection status, linux only (https://nordvpn.com/) + ranger # ranger shell (https://github.com/ranger/ranger) + nnn # nnn shell (https://github.com/jarun/nnn) + xplr # xplr shell (https://github.com/sayanarijit/xplr) + vim_shell # vim shell indicator (:sh) + midnight_commander # midnight commander shell (https://midnight-commander.org/) + nix_shell # nix shell (https://nixos.org/nixos/nix-pills/developing-with-nix-shell.html) + # vpn_ip # virtual private network indicator + # load # CPU load + # disk_usage # disk usage + # ram # free RAM + # swap # used swap + todo # todo items (https://github.com/todotxt/todo.txt-cli) + timewarrior # timewarrior tracking status (https://timewarrior.net/) + taskwarrior # taskwarrior task count (https://taskwarrior.org/) + time # current time + # =========================[ Line #2 ]========================= + newline # \n + # ip # ip address and bandwidth usage for a specified network interface + # public_ip # public IP address + # proxy # system-wide http/https/ftp proxy + # battery # internal battery + # wifi # wifi speed + # example # example user-defined segment (see prompt_example function below) + ) + + # Defines character set used by powerlevel10k. It's best to let `p10k configure` set it for you. + typeset -g POWERLEVEL9K_MODE=nerdfont-complete + # When set to `moderate`, some icons will have an extra space after them. This is meant to avoid + # icon overlap when using non-monospace fonts. When set to `none`, spaces are not added. + typeset -g POWERLEVEL9K_ICON_PADDING=moderate + + # Basic style options that define the overall look of your prompt. You probably don't want to + # change them. + typeset -g POWERLEVEL9K_BACKGROUND= # transparent background + typeset -g POWERLEVEL9K_{LEFT,RIGHT}_{LEFT,RIGHT}_WHITESPACE= # no surrounding whitespace + typeset -g POWERLEVEL9K_{LEFT,RIGHT}_SUBSEGMENT_SEPARATOR=' ' # separate segments with a space + typeset -g POWERLEVEL9K_{LEFT,RIGHT}_SEGMENT_SEPARATOR= # no end-of-line symbol + + # When set to true, icons appear before content on both sides of the prompt. When set + # to false, icons go after content. If empty or not set, icons go before content in the left + # prompt and after content in the right prompt. + # + # You can also override it for a specific segment: + # + # POWERLEVEL9K_STATUS_ICON_BEFORE_CONTENT=false + # + # Or for a specific segment in specific state: + # + # POWERLEVEL9K_DIR_NOT_WRITABLE_ICON_BEFORE_CONTENT=false + typeset -g POWERLEVEL9K_ICON_BEFORE_CONTENT=true + + # Add an empty line before each prompt. + typeset -g POWERLEVEL9K_PROMPT_ADD_NEWLINE=true + + # Connect left prompt lines with these symbols. + typeset -g POWERLEVEL9K_MULTILINE_FIRST_PROMPT_PREFIX= + typeset -g POWERLEVEL9K_MULTILINE_NEWLINE_PROMPT_PREFIX= + typeset -g POWERLEVEL9K_MULTILINE_LAST_PROMPT_PREFIX= + # Connect right prompt lines with these symbols. + typeset -g POWERLEVEL9K_MULTILINE_FIRST_PROMPT_SUFFIX= + typeset -g POWERLEVEL9K_MULTILINE_NEWLINE_PROMPT_SUFFIX= + typeset -g POWERLEVEL9K_MULTILINE_LAST_PROMPT_SUFFIX= + + # The left end of left prompt. + typeset -g POWERLEVEL9K_LEFT_PROMPT_FIRST_SEGMENT_START_SYMBOL= + # The right end of right prompt. + typeset -g POWERLEVEL9K_RIGHT_PROMPT_LAST_SEGMENT_END_SYMBOL= + + # Ruler, a.k.a. the horizontal line before each prompt. If you set it to true, you'll + # probably want to set POWERLEVEL9K_PROMPT_ADD_NEWLINE=false above and + # POWERLEVEL9K_MULTILINE_FIRST_PROMPT_GAP_CHAR=' ' below. + typeset -g POWERLEVEL9K_SHOW_RULER=false + typeset -g POWERLEVEL9K_RULER_CHAR='─' # reasonable alternative: '·' + typeset -g POWERLEVEL9K_RULER_FOREGROUND=7 + + # Filler between left and right prompt on the first prompt line. You can set it to '·' or '─' + # to make it easier to see the alignment between left and right prompt and to separate prompt + # from command output. It serves the same purpose as ruler (see above) without increasing + # the number of prompt lines. You'll probably want to set POWERLEVEL9K_SHOW_RULER=false + # if using this. You might also like POWERLEVEL9K_PROMPT_ADD_NEWLINE=false for more compact + # prompt. + typeset -g POWERLEVEL9K_MULTILINE_FIRST_PROMPT_GAP_CHAR=' ' + if [[ $POWERLEVEL9K_MULTILINE_FIRST_PROMPT_GAP_CHAR != ' ' ]]; then + # The color of the filler. + typeset -g POWERLEVEL9K_MULTILINE_FIRST_PROMPT_GAP_FOREGROUND=7 + # Add a space between the end of left prompt and the filler. + typeset -g POWERLEVEL9K_LEFT_PROMPT_LAST_SEGMENT_END_SYMBOL=' ' + # Add a space between the filler and the start of right prompt. + typeset -g POWERLEVEL9K_RIGHT_PROMPT_FIRST_SEGMENT_START_SYMBOL=' ' + # Start filler from the edge of the screen if there are no left segments on the first line. + typeset -g POWERLEVEL9K_EMPTY_LINE_LEFT_PROMPT_FIRST_SEGMENT_END_SYMBOL='%{%}' + # End filler on the edge of the screen if there are no right segments on the first line. + typeset -g POWERLEVEL9K_EMPTY_LINE_RIGHT_PROMPT_FIRST_SEGMENT_START_SYMBOL='%{%}' + fi + + #################################[ os_icon: os identifier ]################################## + # OS identifier color. + typeset -g POWERLEVEL9K_OS_ICON_FOREGROUND= + # Custom icon. + # typeset -g POWERLEVEL9K_OS_ICON_CONTENT_EXPANSION='⭐' + + ################################[ prompt_char: prompt symbol ]################################ + # Green prompt symbol if the last command succeeded. + typeset -g POWERLEVEL9K_PROMPT_CHAR_OK_{VIINS,VICMD,VIVIS,VIOWR}_FOREGROUND=5 + # Red prompt symbol if the last command failed. + typeset -g POWERLEVEL9K_PROMPT_CHAR_ERROR_{VIINS,VICMD,VIVIS,VIOWR}_FOREGROUND=1 + # Default prompt symbol. + typeset -g POWERLEVEL9K_PROMPT_CHAR_{OK,ERROR}_VIINS_CONTENT_EXPANSION='❯' + # Prompt symbol in command vi mode. + typeset -g POWERLEVEL9K_PROMPT_CHAR_{OK,ERROR}_VICMD_CONTENT_EXPANSION='❮' + # Prompt symbol in visual vi mode. + typeset -g POWERLEVEL9K_PROMPT_CHAR_{OK,ERROR}_VIVIS_CONTENT_EXPANSION='V' + # Prompt symbol in overwrite vi mode. + typeset -g POWERLEVEL9K_PROMPT_CHAR_{OK,ERROR}_VIOWR_CONTENT_EXPANSION='▶' + typeset -g POWERLEVEL9K_PROMPT_CHAR_OVERWRITE_STATE=true + # No line terminator if prompt_char is the last segment. + typeset -g POWERLEVEL9K_PROMPT_CHAR_LEFT_PROMPT_LAST_SEGMENT_END_SYMBOL='' + # No line introducer if prompt_char is the first segment. + typeset -g POWERLEVEL9K_PROMPT_CHAR_LEFT_PROMPT_FIRST_SEGMENT_START_SYMBOL= + + ##################################[ dir: current directory ]################################## + # Default current directory color. + typeset -g POWERLEVEL9K_DIR_FOREGROUND=4 + # If directory is too long, shorten some of its segments to the shortest possible unique + # prefix. The shortened directory can be tab-completed to the original. + typeset -g POWERLEVEL9K_SHORTEN_STRATEGY=truncate_to_unique + # Replace removed segment suffixes with this symbol. + typeset -g POWERLEVEL9K_SHORTEN_DELIMITER= + # Color of the shortened directory segments. + typeset -g POWERLEVEL9K_DIR_SHORTENED_FOREGROUND=4 + # Color of the anchor directory segments. Anchor segments are never shortened. The first + # segment is always an anchor. + typeset -g POWERLEVEL9K_DIR_ANCHOR_FOREGROUND=4 + # Set to true to display anchor directory segments in bold. + typeset -g POWERLEVEL9K_DIR_ANCHOR_BOLD=false + # Don't shorten directories that contain any of these files. They are anchors. + local anchor_files=( + .bzr + .citc + .git + .hg + .node-version + .python-version + .go-version + .ruby-version + .lua-version + .java-version + .perl-version + .php-version + .tool-version + .shorten_folder_marker + .svn + .terraform + CVS + Cargo.toml + composer.json + go.mod + package.json + stack.yaml + ) + typeset -g POWERLEVEL9K_SHORTEN_FOLDER_MARKER="(${(j:|:)anchor_files})" + # If set to "first" ("last"), remove everything before the first (last) subdirectory that contains + # files matching $POWERLEVEL9K_SHORTEN_FOLDER_MARKER. For example, when the current directory is + # /foo/bar/git_repo/nested_git_repo/baz, prompt will display git_repo/nested_git_repo/baz (first) + # or nested_git_repo/baz (last). This assumes that git_repo and nested_git_repo contain markers + # and other directories don't. + # + # Optionally, "first" and "last" can be followed by ":<offset>" where <offset> is an integer. + # This moves the truncation point to the right (positive offset) or to the left (negative offset) + # relative to the marker. Plain "first" and "last" are equivalent to "first:0" and "last:0" + # respectively. + typeset -g POWERLEVEL9K_DIR_TRUNCATE_BEFORE_MARKER=false + # Don't shorten this many last directory segments. They are anchors. + typeset -g POWERLEVEL9K_SHORTEN_DIR_LENGTH=1 + # Shorten directory if it's longer than this even if there is space for it. The value can + # be either absolute (e.g., '80') or a percentage of terminal width (e.g, '50%'). If empty, + # directory will be shortened only when prompt doesn't fit or when other parameters demand it + # (see POWERLEVEL9K_DIR_MIN_COMMAND_COLUMNS and POWERLEVEL9K_DIR_MIN_COMMAND_COLUMNS_PCT below). + # If set to `0`, directory will always be shortened to its minimum length. + typeset -g POWERLEVEL9K_DIR_MAX_LENGTH=80 + # When `dir` segment is on the last prompt line, try to shorten it enough to leave at least this + # many columns for typing commands. + typeset -g POWERLEVEL9K_DIR_MIN_COMMAND_COLUMNS=40 + # When `dir` segment is on the last prompt line, try to shorten it enough to leave at least + # COLUMNS * POWERLEVEL9K_DIR_MIN_COMMAND_COLUMNS_PCT * 0.01 columns for typing commands. + typeset -g POWERLEVEL9K_DIR_MIN_COMMAND_COLUMNS_PCT=50 + # If set to true, embed a hyperlink into the directory. Useful for quickly + # opening a directory in the file manager simply by clicking the link. + # Can also be handy when the directory is shortened, as it allows you to see + # the full directory that was used in previous commands. + typeset -g POWERLEVEL9K_DIR_HYPERLINK=false + + # Enable special styling for non-writable directories. See POWERLEVEL9K_LOCK_ICON and + # POWERLEVEL9K_DIR_CLASSES below. + typeset -g POWERLEVEL9K_DIR_SHOW_WRITABLE=v2 + + # Enable special styling for non-writable and non-existent directories. See POWERLEVEL9K_LOCK_ICON + # and POWERLEVEL9K_DIR_CLASSES below. + typeset -g POWERLEVEL9K_DIR_SHOW_WRITABLE=v3 + + # |
