├── .gitignore ├── assets ├── frappe.webp ├── latte.webp ├── mocha.webp ├── preview.webp └── macchiato.webp ├── catppuccin-latte.tmuxtheme ├── catppuccin-mocha.tmuxtheme ├── catppuccin-frappe.tmuxtheme ├── catppuccin-macchiato.tmuxtheme ├── .editorconfig ├── LICENSE ├── README.md └── catppuccin.tmux /.gitignore: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets/frappe.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dreamsofcode-io/catppuccin-tmux/HEAD/assets/frappe.webp -------------------------------------------------------------------------------- /assets/latte.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dreamsofcode-io/catppuccin-tmux/HEAD/assets/latte.webp -------------------------------------------------------------------------------- /assets/mocha.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dreamsofcode-io/catppuccin-tmux/HEAD/assets/mocha.webp -------------------------------------------------------------------------------- /assets/preview.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dreamsofcode-io/catppuccin-tmux/HEAD/assets/preview.webp -------------------------------------------------------------------------------- /assets/macchiato.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dreamsofcode-io/catppuccin-tmux/HEAD/assets/macchiato.webp -------------------------------------------------------------------------------- /catppuccin-latte.tmuxtheme: -------------------------------------------------------------------------------- 1 | # NOTE: you can use vars with $ and ${} as long as the str is double quoted: "" 2 | # WARNING: hex colors can't contain capital letters 3 | 4 | # --> Catppuccin (Latte) 5 | thm_bg="#dce0e8" 6 | thm_fg="#4c4f69" 7 | thm_cyan="#179299" 8 | thm_black="#e6e9ef" 9 | thm_gray="#bcc0cc" 10 | thm_magenta="#ea76cb" 11 | thm_pink="#8839ef" 12 | thm_red="#d20f39" 13 | thm_green="#40a02b" 14 | thm_yellow="#df8e1d" 15 | thm_blue="#1e66f5" 16 | thm_orange="#fe640b" 17 | thm_black4="#acb0be" 18 | -------------------------------------------------------------------------------- /catppuccin-mocha.tmuxtheme: -------------------------------------------------------------------------------- 1 | # NOTE: you can use vars with $ and ${} as long as the str is double quoted: "" 2 | # WARNING: hex colors can't contain capital letters 3 | 4 | # --> Catppuccin (Mocha) 5 | thm_bg="#1e1e2e" 6 | thm_fg="#cdd6f4" 7 | thm_cyan="#89dceb" 8 | thm_black="#181825" 9 | thm_gray="#313244" 10 | thm_magenta="#cba6f7" 11 | thm_pink="#f5c2e7" 12 | thm_red="#f38ba8" 13 | thm_green="#a6e3a1" 14 | thm_yellow="#f9e2af" 15 | thm_blue="#89b4fa" 16 | thm_orange="#fab387" 17 | thm_black4="#585b70" 18 | -------------------------------------------------------------------------------- /catppuccin-frappe.tmuxtheme: -------------------------------------------------------------------------------- 1 | # NOTE: you can use vars with $ and ${} as long as the str is double quoted: "" 2 | # WARNING: hex colors can't contain capital letters 3 | 4 | # --> Catppuccin (Frappe) 5 | thm_bg="#303446" 6 | thm_fg="#c6d0f5" 7 | thm_cyan="#99d1db" 8 | thm_black="#292c3c" 9 | thm_gray="#414559" 10 | thm_magenta="#ca9ee6" 11 | thm_pink="#f4b8e4" 12 | thm_red="#e78284" 13 | thm_green="#a6d189" 14 | thm_yellow="#e5c890" 15 | thm_blue="#8caaee" 16 | thm_orange="#ef9f76" 17 | thm_black4="#626880" 18 | -------------------------------------------------------------------------------- /catppuccin-macchiato.tmuxtheme: -------------------------------------------------------------------------------- 1 | # NOTE: you can use vars with $ and ${} as long as the str is double quoted: "" 2 | # WARNING: hex colors can't contain capital letters 3 | 4 | # --> Catppuccin (Macchiato) 5 | thm_bg="#24273a" 6 | thm_fg="#cad3f5" 7 | thm_cyan="#91d7e3" 8 | thm_black="#1e2030" 9 | thm_gray="#363a4f" 10 | thm_magenta="#c6a0f6" 11 | thm_pink="#f5bde6" 12 | thm_red="#ed8796" 13 | thm_green="#a6da95" 14 | thm_yellow="#eed49f" 15 | thm_blue="#8aadf4" 16 | thm_orange="#f5a97f" 17 | thm_black4="#5b6078" 18 | -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- 1 | # EditorConfig helps developers define and maintain consistent 2 | # coding styles between different editors and IDEs 3 | # EditorConfig is awesome: https://EditorConfig.org 4 | 5 | root = true 6 | 7 | [*] 8 | charset = utf-8 9 | indent_size = 2 10 | indent_style = space 11 | end_of_line = lf 12 | insert_final_newline = true 13 | trim_trailing_whitespace = true 14 | 15 | # go 16 | [*.go] 17 | indent_style = tab 18 | indent_size = 4 19 | 20 | # python 21 | [*.{ini,py,py.tpl,rst}] 22 | indent_size = 4 23 | 24 | # rust 25 | [*.rs] 26 | indent_size = 4 27 | 28 | # documentation, utils 29 | [*.{md,mdx,diff}] 30 | trim_trailing_whitespace = false 31 | 32 | # windows shell scripts 33 | [*.{cmd,bat,ps1}] 34 | end_of_line = crlf 35 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2021 Catppuccin 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 |

2 | Logo
3 | 4 | Catppuccin for Tmux 5 | 6 |

7 | 8 |

9 | 10 | 11 | 12 |

13 | 14 |

15 | 16 |

17 | 18 | ## Themes 19 | 20 | - 🌻 [Latte](./catppuccin-latte.tmuxtheme) 21 | - 🪴 [Frappé](./catppuccin-frappe.tmuxtheme) 22 | - 🌺 [Macchiato](./catppuccin-macchiato.tmuxtheme) 23 | - 🌿 [Mocha](./catppuccin-mocha.tmuxtheme) 24 | 25 | ## Usage 26 | 27 | ### TPM 28 | 29 | 1. Install [TPM](https://github.com/tmux-plugins/tpm) 30 | 2. Add the Catppuccin plugin: 31 | 32 | ```bash 33 | set -g @plugin 'catppuccin/tmux' 34 | # ...alongside 35 | set -g @plugin 'tmux-plugins/tpm' 36 | ``` 37 | 38 | 3. (Optional) Set your preferred flavour, it defaults to `"mocha"`: 39 | 40 | ```bash 41 | set -g @catppuccin_flavour 'latte' # or frappe, macchiato, mocha 42 | ``` 43 | 44 | ### Manual 45 | 46 | 1. Copy your desired theme's configuration contents into your Tmux config (usually stored at `~/.tmux.conf`) 47 | 2. Reload Tmux by either restarting the session or reloading it with `tmux source-file ~/.tmux.conf` 48 | 49 | #### Configuration options 50 | 51 | All flavours support certain levels of customization that match our [Catppuccin 52 | Style Guide][style-guide]. To add these customizations, add any of the following 53 | options to your Tmux configuration. 54 | 55 | In order to have the correct icons displayed please use your favorite nerd fonts patched font. 56 | 57 | ##### Enable window tabs 58 | 59 | By default, the theme places the `window-status` in the `status-right`. With 60 | `@catppuccin_window_tabs_enabled` set to `on`, the theme will place the 61 | directory within the `status-right` and move the window names to the 62 | `window-status` format variables. 63 | 64 | ```sh 65 | set -g @catppuccin_window_tabs_enabled on # or off to disable window_tabs 66 | ``` 67 | 68 | ##### Configure separator 69 | 70 | By default, the theme will use a round separator for left and right. 71 | To overwrite it use `@catppuccin_left_separator` and `@catppuccin_right_separator` 72 | 73 | ```sh 74 | set -g @catppuccin_left_separator "█" 75 | set -g @catppuccin_right_separator "█" 76 | ``` 77 | 78 | ##### Enable DateTime 79 | 80 | By default, the `date_time` componenet is set to off. 81 | It can be enabled by specifing any tmux date and time format. 82 | 83 | ```sh 84 | set -g @catppuccin_date_time "%Y-%m-%d %H:%M" 85 | ``` 86 | 87 | ##### Enable User 88 | 89 | By default, the `user` componenet is set to off. 90 | It can be enabled by toggoling it on. 91 | 92 | ```sh 93 | set -g @catppuccin_user "on" 94 | ``` 95 | 96 | ##### Enable Host 97 | 98 | By default, the `host` componenet is set to off. 99 | It can be enabled by toggoling it on. 100 | 101 | ```sh 102 | set -g @catppuccin_host "on" 103 | ``` 104 | 105 | [style-guide]: https://github.com/catppuccin/catppuccin/blob/main/docs/style-guide.md 106 | 107 | ## 💝 Thanks to 108 | 109 | - [Pocco81](https://github.com/catppuccin) 110 | - [vinnyA3](https://github.com/vinnyA3) 111 | - [rogeruiz](https://github.com/rogeruiz) 112 | 113 |   114 | 115 |

116 |

Copyright © 2021-present Catppuccin Org 117 |

118 | -------------------------------------------------------------------------------- /catppuccin.tmux: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | PLUGIN_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" 3 | 4 | get_tmux_option() { 5 | local option value default 6 | option="$1" 7 | default="$2" 8 | value="$(tmux show-option -gqv "$option")" 9 | 10 | if [ -n "$value" ]; then 11 | echo "$value" 12 | else 13 | echo "$default" 14 | fi 15 | } 16 | 17 | set() { 18 | local option=$1 19 | local value=$2 20 | tmux_commands+=(set-option -gq "$option" "$value" ";") 21 | } 22 | 23 | setw() { 24 | local option=$1 25 | local value=$2 26 | tmux_commands+=(set-window-option -gq "$option" "$value" ";") 27 | } 28 | 29 | main() { 30 | local theme 31 | theme="$(get_tmux_option "@catppuccin_flavour" "mocha")" 32 | 33 | # Aggregate all commands in one array 34 | local tmux_commands=() 35 | 36 | # NOTE: Pulling in the selected theme by the theme that's being set as local 37 | # variables. 38 | # shellcheck source=catppuccin-frappe.tmuxtheme 39 | source /dev/stdin <<<"$(sed -e "/^[^#].*=/s/^/local /" "${PLUGIN_DIR}/catppuccin-${theme}.tmuxtheme")" 40 | 41 | # status 42 | set status "on" 43 | set status-bg "${thm_bg}" 44 | set status-justify "left" 45 | set status-left-length "100" 46 | set status-right-length "100" 47 | 48 | # messages 49 | set message-style "fg=${thm_cyan},bg=${thm_gray},align=centre" 50 | set message-command-style "fg=${thm_cyan},bg=${thm_gray},align=centre" 51 | 52 | # panes 53 | set pane-border-style "fg=${thm_gray}" 54 | set pane-active-border-style "fg=${thm_blue}" 55 | 56 | # windows 57 | setw window-status-activity-style "fg=${thm_fg},bg=${thm_bg},none" 58 | setw window-status-separator "" 59 | setw window-status-style "fg=${thm_fg},bg=${thm_bg},none" 60 | 61 | # --------=== Statusline 62 | 63 | # NOTE: Checking for the value of @catppuccin_window_tabs_enabled 64 | local wt_enabled 65 | wt_enabled="$(get_tmux_option "@catppuccin_window_tabs_enabled" "off")" 66 | readonly wt_enabled 67 | 68 | local right_separator 69 | right_separator="$(get_tmux_option "@catppuccin_right_separator" "")" 70 | readonly right_separator 71 | 72 | local left_separator 73 | left_separator="$(get_tmux_option "@catppuccin_left_separator" "")" 74 | readonly left_separator 75 | 76 | local user 77 | user="$(get_tmux_option "@catppuccin_user" "off")" 78 | readonly user 79 | 80 | local host 81 | host="$(get_tmux_option "@catppuccin_host" "off")" 82 | readonly host 83 | 84 | local date_time 85 | date_time="$(get_tmux_option "@catppuccin_date_time" "off")" 86 | readonly date_time 87 | 88 | # These variables are the defaults so that the setw and set calls are easier to parse. 89 | local show_directory 90 | readonly show_directory="#[fg=$thm_pink,bg=$thm_bg,nobold,nounderscore,noitalics]$right_separator#[fg=$thm_bg,bg=$thm_pink,nobold,nounderscore,noitalics] #[fg=$thm_fg,bg=$thm_gray] #{b:pane_current_path} #{?client_prefix,#[fg=$thm_red]" 91 | 92 | local show_window 93 | readonly show_window="#[fg=$thm_pink,bg=$thm_bg,nobold,nounderscore,noitalics]$right_separator#[fg=$thm_bg,bg=$thm_pink,nobold,nounderscore,noitalics] #[fg=$thm_fg,bg=$thm_gray] #W #{?client_prefix,#[fg=$thm_red]" 94 | 95 | local show_session 96 | readonly show_session="#[fg=$thm_green]}#[bg=$thm_gray]$right_separator#{?client_prefix,#[bg=$thm_red],#[bg=$thm_green]}#[fg=$thm_bg] #[fg=$thm_fg,bg=$thm_gray] #S " 97 | 98 | local show_directory_in_window_status 99 | #readonly show_directory_in_window_status="#[fg=$thm_bg,bg=$thm_blue] #I #[fg=$thm_fg,bg=$thm_gray] #{b:pane_current_path} " 100 | readonly show_directory_in_window_status="#[fg=$thm_bg,bg=$thm_blue] #I #[fg=$thm_fg,bg=$thm_gray] #W " 101 | 102 | local show_directory_in_window_status_current 103 | #readonly show_directory_in_window_status_current="#[fg=$thm_bg,bg=$thm_orange] #I #[fg=$thm_fg,bg=$thm_bg] #{b:pane_current_path} " 104 | readonly show_directory_in_window_status_current="#[fg=colour232,bg=$thm_orange] #I #[fg=colour255,bg=colour237] #(echo '#{pane_current_path}' | rev | cut -d'/' -f-2 | rev) " 105 | 106 | local show_window_in_window_status 107 | readonly show_window_in_window_status="#[fg=$thm_fg,bg=$thm_bg] #W #[fg=$thm_bg,bg=$thm_blue] #I#[fg=$thm_blue,bg=$thm_bg]$left_separator#[fg=$thm_fg,bg=$thm_bg,nobold,nounderscore,noitalics] " 108 | 109 | local show_window_in_window_status_current 110 | readonly show_window_in_window_status_current="#[fg=$thm_fg,bg=$thm_gray] #W #[fg=$thm_bg,bg=$thm_orange] #I#[fg=$thm_orange,bg=$thm_bg]$left_separator#[fg=$thm_fg,bg=$thm_bg,nobold,nounderscore,noitalics] " 111 | #setw -g window-status-current-format "#[fg=colour232,bg=$thm_orange] #I #[fg=colour255,bg=colour237] #(echo '#{pane_current_path}' | rev | cut -d'/' -f-2 | rev) " 112 | 113 | 114 | local show_user 115 | readonly show_user="#[fg=$thm_blue,bg=$thm_gray]$right_separator#[fg=$thm_bg,bg=$thm_blue] #[fg=$thm_fg,bg=$thm_gray] #(whoami) " 116 | 117 | local show_host 118 | readonly show_host="#[fg=$thm_blue,bg=$thm_gray]$right_separator#[fg=$thm_bg,bg=$thm_blue]󰒋 #[fg=$thm_fg,bg=$thm_gray] #H " 119 | 120 | local show_date_time 121 | readonly show_date_time="#[fg=$thm_blue,bg=$thm_gray]$right_separator#[fg=$thm_bg,bg=$thm_blue] #[fg=$thm_fg,bg=$thm_gray] $date_time " 122 | 123 | # Right column 1 by default shows the Window name. 124 | local right_column1=$show_window 125 | 126 | # Right column 2 by default shows the current Session name. 127 | local right_column2=$show_session 128 | 129 | # Window status by default shows the current directory basename. 130 | local window_status_format=$show_directory_in_window_status 131 | local window_status_current_format=$show_directory_in_window_status_current 132 | 133 | # NOTE: With the @catppuccin_window_tabs_enabled set to on, we're going to 134 | # update the right_column1 and the window_status_* variables. 135 | if [[ "${wt_enabled}" == "on" ]]; then 136 | right_column1=$show_directory 137 | window_status_format=$show_window_in_window_status 138 | window_status_current_format=$show_window_in_window_status_current 139 | fi 140 | 141 | if [[ "${user}" == "on" ]]; then 142 | right_column2=$right_column2$show_user 143 | fi 144 | 145 | if [[ "${host}" == "on" ]]; then 146 | right_column2=$right_column2$show_host 147 | fi 148 | 149 | if [[ "${date_time}" != "off" ]]; then 150 | right_column2=$right_column2$show_date_time 151 | fi 152 | 153 | set status-left "" 154 | 155 | set status-right "${right_column1},${right_column2}" 156 | 157 | setw window-status-format "${window_status_format}" 158 | setw window-status-current-format "${window_status_current_format}" 159 | 160 | # --------=== Modes 161 | # 162 | setw clock-mode-colour "${thm_blue}" 163 | setw mode-style "fg=${thm_pink} bg=${thm_black4} bold" 164 | 165 | tmux "${tmux_commands[@]}" 166 | } 167 | 168 | main "$@" 169 | --------------------------------------------------------------------------------