├── .gitmux.conf ├── README.md ├── article ├── Minimalizm & Minimalist.md └── screen1.png ├── binding.conf ├── plugins └── catppuccin │ └── tmux │ ├── .editorconfig │ ├── .gitignore │ ├── .markdownlint.jsonc │ ├── .shellcheckrc │ ├── CHANGELOG.md │ ├── CONTRIBUTING.md │ ├── assets │ ├── config1.png │ ├── config2.png │ ├── config3.png │ ├── demos │ │ ├── basic.conf │ │ ├── basic.gif │ │ └── basic.tape │ ├── example-config.webp │ ├── frappe.webp │ ├── generate_preview.fish │ ├── latte.webp │ ├── macchiato.webp │ ├── mocha.webp │ ├── preview.webp │ ├── ram-example.webp │ ├── structure.svg │ ├── window-basic.webp │ ├── window-none.webp │ ├── window-rounded.webp │ └── window-slanted.webp │ ├── catppuccin.tmux │ ├── catppuccin_options_tmux.conf │ ├── catppuccin_tmux.conf │ ├── docs │ ├── explanation │ │ └── design.md │ ├── reference │ │ ├── configuration.md │ │ └── status-line.md │ └── tutorials │ │ ├── 01-getting-started.md │ │ └── 02-custom-status.md │ ├── renovate.json │ ├── run_tests.sh │ ├── status │ ├── application.conf │ ├── battery.conf │ ├── clima.conf │ ├── cpu.conf │ ├── date_time.conf │ ├── directory.conf │ ├── gitmux.conf │ ├── host.conf │ ├── kube.conf │ ├── load.conf │ ├── pomodoro_plus.conf │ ├── session.conf │ ├── uptime.conf │ ├── user.conf │ └── weather.conf │ ├── tests │ ├── application_module.sh │ ├── application_module_expected.txt │ ├── battery_module.sh │ ├── battery_module_expected.txt │ ├── cpu_module.sh │ ├── cpu_module_expected.txt │ ├── default_options.sh │ ├── default_options_expected.txt │ ├── harness.sh │ ├── helpers.sh │ ├── pane_styling.sh │ ├── pane_styling_expected.txt │ ├── window_status_styling.sh │ └── window_status_styling_expected.txt │ ├── themes │ ├── catppuccin_frappe_tmux.conf │ ├── catppuccin_latte_tmux.conf │ ├── catppuccin_macchiato_tmux.conf │ └── catppuccin_mocha_tmux.conf │ ├── tmux.tera │ └── utils │ └── status_module.conf ├── scripts └── ide ├── tmux.conf └── utility.conf /.gitmux.conf: -------------------------------------------------------------------------------- 1 | tmux: 2 | styles: 3 | clear: '#[fg=#{@thm_fg}]' 4 | state: '#[fg=#{@thm_red},bold]' 5 | branch: '#[fg=#{@thm_fg},bold]' 6 | remote: '#[fg=#{@thm_teal}]' 7 | divergence: '#[fg=#{@thm_fg}]' 8 | staged: '#[fg=#{@thm_green},bold]' 9 | conflict: '#[fg=#{@thm_red},bold]' 10 | modified: '#[fg=#{@thm_yellow},bold]' 11 | untracked: '#[fg=#{@thm_mauve},bold]' 12 | stashed: '#[fg=#{@thm_blue},bold]' 13 | clean: '#[fg=#{@thm_rosewater},bold]' 14 | insertions: '#[fg=#{@thm_green}]' 15 | deletions: '#[fg=#{@thm_red}]' 16 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Small talk about … 2 | 3 | In this repository, you will find all of my personal settings for tmux. Configuration has keyboard shortcuts that I use them a lot in what I'm doing. It's not ideal and other colleagues have much more color in their themes and other functionalities, but I love ideas of _minimalist world_. 4 | 5 | Before getting started, you should install **LazyGit**. I use this package a lot and find it useful. 6 | 7 | ![screen1](article/screen1.png) 8 | 9 | ## Install 10 | 11 | Copy the **tmux** folder into the next folder _~/.config/\*_. Use of this folder in Linux and MacOS - I didn’t check my configuration in Windows, yet. 12 | 13 | ## Additional keyboard shortcuts 14 | 15 | `Ctrl` `b` `r` - Reload **tmux** online if you changed config files (I used it when developing this config). 16 | 17 | `Ctrl` `b` `o` - Open the folder that contains the current pane using MC shell application. 18 | 19 | `Ctrl` `b` `O` - Open the folder that contains the current pane. 20 | 21 | `Ctrl` `b` `e` - Close all panes in the window expect of the current one. 22 | 23 | `Ctrl` `b` `\` - Split window by horizontally. 24 | 25 | `Ctrl` `b` `|` - Split window by vertically. 26 | 27 | `Ctrl` `b` `h` - Switch to the left pane of the window. 28 | 29 | `Ctrl` `b` `l` - Switch to the right pane of the window. 30 | 31 | `Ctrl` `b` `j` - Switch to the bottom pane of the window. 32 | 33 | `Ctrl` `b` `k` - Switch to the top pane of the window. 34 | 35 | `Ctrl` `b` `H` - Go to the previous window. 36 | 37 | `Ctrl` `b` `L` - Go to the next window. 38 | 39 | `Ctrl` `b` `g` - Open **LazyGit** plugin for current path. 40 | 41 | `Ctrl` `b` `F12` - Run _./scripts/ide_ to open **Terminal** as an **IDE** with some number of panes (work only in **tmux** session). 42 | 43 | ## References 44 | 45 | [github.com/tmux/tmux](https://github.com/tmux/tmux)
46 | [github.com/jesseduffield/lazygit](https://github.com/jesseduffield/lazygit)
47 | [github.com/olivercederborg/poimandres.nvim](https://github.com/olivercederborg/poimandres.nvim)
48 | [github.com/rumaan/poimandres-iterm](https://github.com/rumaan/poimandres-iterm)
49 | [github.com/craftzdog/dotfiles-public](https://github.com/craftzdog/dotfiles-public) 50 | -------------------------------------------------------------------------------- /article/Minimalizm & Minimalist.md: -------------------------------------------------------------------------------- 1 | # Minimalizm & Minimalist 2 | 3 | > Have you noticed? The world has become much more colorful, mottled, bright and contrasting. 4 | 5 | The whole world seems to have gone crazy for the pursuit of brightness, colors, texture, contrast, design and style. Over the past few couple of decades there have been a lot of things that would not have a place to exist without color, bright accents and design. I don't think you have to go very far and the Internet without color would still be a place for geeks and nerds. That time was more for scientists, technicians and just enthusiasts trying to create a virtual world. 6 | 7 | The current trend is to scroll through colorful images, photos, and videos, prioritizing flashy presentation over quality. 8 | 9 | This shift is also occurring in the IT world, where development programs (IDEs) are becoming increasingly visually complex. The programmer's focus often shifts away from writing quality code, studying algorithms, or understanding for example how the Garbage Collector works (it's .net interview's mem, yet). Unfortunately, this can lead to a lack of focus on important knowledge and skills. Instead, we may become preoccupied with trendy features like beautiful error highlighting and smart assistants. Additionally, it is concerning that many individuals may label themselves as experts in these areas without proper qualifications or experience. 10 | 11 | ## Minimalizm. 12 | 13 | I am pleased to see examples of minimalism in programming and to join the movement. Although I was curious as to why I was only discovering them now, that is a separate matter. I recently discovered enthusiasts who can accomplish tasks in the command line that I couldn't do in Visual Studio or WebStorm. Specifically, I am referring to NeoVim, Tmux, and similar tools that have been in existence for some time but are now being rediscovered by the world. 14 | 15 | During my time at university, I had a classmate who wrote code in a notebook. He would then retype the code into a PC in Notepad++ to assemble it, as he did not have any specialized IDEs on his laptop. At the time, I saw this as a display of extreme genius. 16 | 17 | Looking back on it now, I realize that he was a true 'samurai' of coding. Reflecting on the process of writing code in Notepad++, I can see the advantages of this approach. 18 | 19 | - By not relying on helpers, you can delve deeper into the material you are studying. 20 | - Hotkeys prevent the focus of attention from shifting to other windows, allowing for better concentration. 21 | - Setting up this 'notebook' requires reading and studying a lot of material, which also helps develop critical thinking skills. 22 | 23 | ## Minimalist. 24 | 25 | I discovered the power of minimalism in focusing on the functional core, rather than on unnecessary elements such as marketing or aesthetics. This realization led me to adopt a minimalist approach in my profession. 26 | 27 | Initially, I attempted to customize various tools such as Tmux and NeoVim, and experimented with different bundles. I then progressed to developing small projects in C# and TypeScript, before eventually incorporating these tools into my work projects. Throughout this process, I continually reconfigured and refined my approach. Although it took some time, but the feeling of learning something new is rewarding, similar to the satisfaction of a morning run. 28 | 29 | While others may go to work with a disgruntled face, the act of learning brings a sense of accomplishment and a better quality of life. It is a step closer to achieving personal goals. 30 | 31 | As a result, I have become a big fan of these tools. 32 | 33 | [github.com/paulbuzakov/tmuxconfig](https://github.com/paulbuzakov/tmuxconfig) 34 | 35 | ![screen1.png](screen1.png) 36 | 37 | I have shared my working configuration for my MacBook Pro, home Ubuntu Server, and cloud server. 38 | 39 | The **readme.md** file explains my customized keyboard shortcuts that I use for work. While I also use standard shortcuts, you can access them as usual by pressing **`Ctrl + b + ?`**. 40 | 41 | ## Conclusion. 42 | 43 | The topic of minimalism in professional circles can be confusing and is often associated with amateurs. However, there is a certain thrill in opening a simple text editor and with a blank slate customizing it. This allows for a more streamlined and efficient coding process without the need for unnecessary marketing crutches. 44 | 45 | This is my personal opinion on the matter. To explore the configuration, visit [github.com/paulbuzakov/tmuxconfig](https://github.com/paulbuzakov/tmuxconfig). If you find it helpful, please consider leaving a star or creating a pull request to suggest an add-on. 46 | -------------------------------------------------------------------------------- /article/screen1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/paulbuzakov/tmuxconfig/741b7267ebf1705828aafb39805fdda1bee0a22d/article/screen1.png -------------------------------------------------------------------------------- /binding.conf: -------------------------------------------------------------------------------- 1 | # Reload the current config of tmux. 2 | bind r source-file ~/.config/tmux/tmux.conf \; display "Reloaded!" 3 | 4 | # Kill the current window. 5 | bind Q kill-window 6 | 7 | # Kill the current pane. 8 | bind q kill-pane 9 | 10 | # Split the current window horizontally and vertically. 11 | unbind '"' 12 | unbind '%' 13 | bind '\' split-window -v 14 | bind '|' split-window -h 15 | 16 | # Enable Vim-like keys for switching panes. 17 | bind h select-pane -L 18 | bind j select-pane -D 19 | bind k select-pane -U 20 | bind l select-pane -R 21 | 22 | # Enable VIM-like keys for switching windows. 23 | bind H select-window -n 24 | bind L select-window -p 25 | -------------------------------------------------------------------------------- /plugins/catppuccin/tmux/.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 | -------------------------------------------------------------------------------- /plugins/catppuccin/tmux/.gitignore: -------------------------------------------------------------------------------- 1 | custom 2 | !custom/README.md 3 | !custom/example.sh 4 | -------------------------------------------------------------------------------- /plugins/catppuccin/tmux/.markdownlint.jsonc: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://raw.githubusercontent.com/DavidAnson/markdownlint/v0.35.0/schema/markdownlint-config-schema.json", 3 | "line-length": { 4 | "code_block_line_length": 120, 5 | "tables": false 6 | }, 7 | "no-inline-html": { 8 | "allowed_elements": ["details", "summary", "img", "p", "a", "h3"] 9 | }, 10 | "first-line-heading": false, 11 | "no-alt-text": false, 12 | "code-block-style": { 13 | "style": "consistent" 14 | } 15 | } -------------------------------------------------------------------------------- /plugins/catppuccin/tmux/.shellcheckrc: -------------------------------------------------------------------------------- 1 | shell=bash 2 | 3 | # TODO: Find a way to declare color variables 4 | disable=SC2154 5 | 6 | external-sources=true 7 | -------------------------------------------------------------------------------- /plugins/catppuccin/tmux/CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # Changelog 2 | 3 | ## [2.1.2](https://github.com/catppuccin/tmux/compare/v2.1.1...v2.1.2) (2024-12-08) 4 | 5 | 6 | ### Fixed 7 | 8 | * improve uptime status sed script to report correct units for few uptime scenarios ([#437](https://github.com/catppuccin/tmux/issues/437)) ([31fc2bf](https://github.com/catppuccin/tmux/commit/31fc2bfb1123681dc06da613b944b85f81e4babd)) 9 | * use current window separators for the current window format ([#443](https://github.com/catppuccin/tmux/issues/443)) ([2a6c45b](https://github.com/catppuccin/tmux/commit/2a6c45b7c0da1594de1105d6cef15e3e68981113)) 10 | 11 | ## [2.1.1](https://github.com/catppuccin/tmux/compare/v2.1.0...v2.1.1) (2024-11-17) 12 | 13 | 14 | ### Fixed 15 | 16 | * escape the TPM environment variable in the kube status line module ([#434](https://github.com/catppuccin/tmux/issues/434)) ([eb78ade](https://github.com/catppuccin/tmux/commit/eb78ade9dc1f6cd8ba654572f51ddcae3c6e7fd7)) 17 | * specify the color for right separator of the status modules to be the same as text bg color ([#429](https://github.com/catppuccin/tmux/issues/429)) ([0e66dee](https://github.com/catppuccin/tmux/commit/0e66dee11ee396824668d4db863f1873e9e9243f)) 18 | 19 | 20 | ### Documentation 21 | 22 | * add possible values for window_flags ([#417](https://github.com/catppuccin/tmux/issues/417)) ([c8a2d1a](https://github.com/catppuccin/tmux/commit/c8a2d1ae9649aa904960bef1516ea2ff9a3e6ad0)) 23 | * **custom-status:** fix typo `catpuccin` -> `catppuccin` ([#424](https://github.com/catppuccin/tmux/issues/424)) ([aaf9120](https://github.com/catppuccin/tmux/commit/aaf9120f769a34e5491b3ee7f885c8c347f2f663)) 24 | 25 | ## [2.1.0](https://github.com/catppuccin/tmux/compare/v2.0.0...v2.1.0) (2024-10-25) 26 | 27 | 28 | ### Added 29 | 30 | * add an option to format the window number with `[@catppuccin](https://github.com/catppuccin)_window_number` and `[@catppuccin](https://github.com/catppuccin)_window_current_number` ([c749885](https://github.com/catppuccin/tmux/commit/c74988511a462bdf07c5fc9ce88157b93a4ed185)) 31 | 32 | 33 | ### Fixed 34 | 35 | * allow for dynamic colors in status modules ([#411](https://github.com/catppuccin/tmux/issues/411)), fixes issue [#407](https://github.com/catppuccin/tmux/issues/407) ([5e273e4](https://github.com/catppuccin/tmux/commit/5e273e41dd3188a1a0e795b120623c95de491445)) 36 | * session status icon bg color change by client_prefix ([#394](https://github.com/catppuccin/tmux/issues/394)) ([8855667](https://github.com/catppuccin/tmux/commit/885566714315915547516de5c2f1b660f8e524c2)) 37 | 38 | 39 | ### Documentation 40 | 41 | * **README:** add [@kjnsn](https://github.com/kjnsn) to "Thanks to" section ([#398](https://github.com/catppuccin/tmux/issues/398)) ([c3fab98](https://github.com/catppuccin/tmux/commit/c3fab98ab4248a2a78c8193ad48f0991b7bfa1e3)) 42 | 43 | ## [2.0.0](https://github.com/catppuccin/tmux/compare/v1.0.3...v2.0.0) (2024-10-21) 44 | 45 | 46 | ### ⚠ BREAKING CHANGES 47 | 48 | * rebalance the colors used, and follow the styleguide 49 | * change how windows are styled 50 | * change how status modules are styled 51 | * rebalance colors, adhere to style guide & overhaul docs ([#372](https://github.com/catppuccin/tmux/issues/372)) 52 | 53 | ### Features 54 | 55 | * change how status modules are styled ([79284da](https://github.com/catppuccin/tmux/commit/79284da665bf5d39d304e23df4165c8ac37f9b7a)) 56 | * rebalance colors, adhere to style guide & overhaul docs ([#372](https://github.com/catppuccin/tmux/issues/372)) ([79284da](https://github.com/catppuccin/tmux/commit/79284da665bf5d39d304e23df4165c8ac37f9b7a)) 57 | * rebalance the colors used, and follow the styleguide ([79284da](https://github.com/catppuccin/tmux/commit/79284da665bf5d39d304e23df4165c8ac37f9b7a)) 58 | * rebalance the status module colors for cpu and battery ([79284da](https://github.com/catppuccin/tmux/commit/79284da665bf5d39d304e23df4165c8ac37f9b7a)) 59 | * replace `_ctp_status_bg` with unified `_ctp_module_bg_color` in module configuration ([a4d4ad0](https://github.com/catppuccin/tmux/commit/a4d4ad09cc8b5c9338cbd4510450d0ae997a7710)) 60 | 61 | 62 | ### Bug Fixes 63 | 64 | * **tests:** add tests for window styling ([79284da](https://github.com/catppuccin/tmux/commit/79284da665bf5d39d304e23df4165c8ac37f9b7a)) 65 | * use ubuntu-24.04 in ci ([#388](https://github.com/catppuccin/tmux/issues/388)) ([3b0e0a6](https://github.com/catppuccin/tmux/commit/3b0e0a6f0741bf09149f23620516decd7b5f5ba5)) 66 | 67 | 68 | ### Code Refactoring 69 | 70 | * change how windows are styled ([79284da](https://github.com/catppuccin/tmux/commit/79284da665bf5d39d304e23df4165c8ac37f9b7a)) 71 | 72 | ## [1.0.3](https://github.com/catppuccin/tmux/compare/v1.0.2...v1.0.3) (2024-10-16) 73 | 74 | 75 | ### Bug Fixes 76 | 77 | * change the default status line background to mantle ([#377](https://github.com/catppuccin/tmux/issues/377)) ([47dbe81](https://github.com/catppuccin/tmux/commit/47dbe818e3ad7a008ccbd3e5d69a29a4509f7d07)) 78 | 79 | ## [1.0.2](https://github.com/catppuccin/tmux/compare/v1.0.1...v1.0.2) (2024-10-12) 80 | 81 | 82 | ### Bug Fixes 83 | 84 | * **ci:** update tmux in test workflow ([#370](https://github.com/catppuccin/tmux/issues/370)) ([02debd3](https://github.com/catppuccin/tmux/commit/02debd396802af9fe4b41601739e48ef38217533)) 85 | * **status:** use a literal string for battery_icon so it can be replaced by the battery plugin ([#365](https://github.com/catppuccin/tmux/issues/365)) ([06fff2f](https://github.com/catppuccin/tmux/commit/06fff2f40ec4a5cd2c9e064bc7fde22130ecd4bb)), closes [#342](https://github.com/catppuccin/tmux/issues/342) 86 | * typo in readme config example ([#362](https://github.com/catppuccin/tmux/issues/362)) ([41ee0b8](https://github.com/catppuccin/tmux/commit/41ee0b89acb3f4afe531209558d6b8e4d7d4ae1a)) 87 | * **window:** middle separator colors ([#369](https://github.com/catppuccin/tmux/issues/369)) ([c59df83](https://github.com/catppuccin/tmux/commit/c59df83d68e64feb8d015c2eb3f8b90febc95a53)) 88 | 89 | ## [1.0.1](https://github.com/catppuccin/tmux/compare/v1.0.0...v1.0.1) (2024-10-05) 90 | 91 | 92 | ### Bug Fixes 93 | 94 | * **readme:** fix the example configurations ([#343](https://github.com/catppuccin/tmux/issues/343)) ([06183b3](https://github.com/catppuccin/tmux/commit/06183b31216b4ed917760b3d59565e242eee6a64)) 95 | * **readme:** fix the version number, and fix escaping in the custom status line module docs ([#357](https://github.com/catppuccin/tmux/issues/357)) ([db466f8](https://github.com/catppuccin/tmux/commit/db466f8c2dbcfdd84e501ee8274bdfdcf049d65d)) 96 | 97 | ## [1.0.0](https://github.com/catppuccin/tmux/compare/v0.4.0...v1.0.0) (2024-10-02) 98 | 99 | 100 | ### Bug Fixes 101 | 102 | * **readme:** remove -F when setting the status line ([#333](https://github.com/catppuccin/tmux/issues/333)) ([b38421f](https://github.com/catppuccin/tmux/commit/b38421fa15d8dfafecaf6f438115cfe3c1259bf0)) 103 | 104 | ## [0.4.0](https://github.com/catppuccin/tmux/compare/v0.3.0...v0.4.0) (2024-10-01) 105 | 106 | 107 | ### ⚠ BREAKING CHANGES 108 | 109 | * rewrite to use tmux native rather than bash ([#328](https://github.com/catppuccin/tmux/issues/328)) 110 | 111 | ### Bug Fixes 112 | 113 | * **readme:** update the readme to include upgrade instructions ([1bcad05](https://github.com/catppuccin/tmux/commit/1bcad05f206fb4bb9706403da24b97d2cdb64bad)) 114 | * **window:** ensure the window formats are set correctly ([#331](https://github.com/catppuccin/tmux/issues/331)) ([1bcad05](https://github.com/catppuccin/tmux/commit/1bcad05f206fb4bb9706403da24b97d2cdb64bad)) 115 | 116 | 117 | ### Code Refactoring 118 | 119 | * rewrite to use tmux native rather than bash ([#328](https://github.com/catppuccin/tmux/issues/328)) ([87fa4a0](https://github.com/catppuccin/tmux/commit/87fa4a08c5a7fdbef3130f05a8b12f0ca26d4a46)) 120 | 121 | ## [0.3.0](https://github.com/catppuccin/tmux/compare/v0.2.0...v0.3.0) (2024-09-17) 122 | 123 | 124 | ### Features 125 | 126 | * **status:** Add support for status module middle separators ([#310](https://github.com/catppuccin/tmux/issues/310)) ([1612a23](https://github.com/catppuccin/tmux/commit/1612a23174a6771ac466312eb156f83b8b89d907)) 127 | * **status:** window specific separator config ([#198](https://github.com/catppuccin/tmux/issues/198)) ([8276c5a](https://github.com/catppuccin/tmux/commit/8276c5a5e33dbbbae3d370db2f6129e20b402f8a)) 128 | 129 | 130 | ### Bug Fixes 131 | 132 | * **kube:** escape env var ([c31b9b2](https://github.com/catppuccin/tmux/commit/c31b9b2c6c7c50abbebd02b80c4fd32b2782a011)) 133 | 134 | ## [0.2.0](https://github.com/catppuccin/tmux/compare/v0.1.0...v0.2.0) (2024-08-23) 135 | 136 | 137 | ### Features 138 | 139 | * error/warning messages on first load ([#278](https://github.com/catppuccin/tmux/issues/278)) ([a2dda02](https://github.com/catppuccin/tmux/commit/a2dda02b43194aec5deddf2890c28c76b4c11ed4)) 140 | * warn users of whitespace in module lists ([#266](https://github.com/catppuccin/tmux/issues/266)) ([362a306](https://github.com/catppuccin/tmux/commit/362a306db71794f04d0995fc058bcaa094d1af70)) 141 | 142 | 143 | ### Bug Fixes 144 | 145 | * add missing batch options `catppuccin_pane{,_active}_border_style` ([3ffbc37](https://github.com/catppuccin/tmux/commit/3ffbc3700b4c1c3e2c4d015c5a51ccef555dabaf)) 146 | * add missing batch options catppuccin_pane{,_active}_border_style ([3ffbc37](https://github.com/catppuccin/tmux/commit/3ffbc3700b4c1c3e2c4d015c5a51ccef555dabaf)) 147 | * escaping in options ([#298](https://github.com/catppuccin/tmux/issues/298)) ([9b57c20](https://github.com/catppuccin/tmux/commit/9b57c2002081fff8af16b878f1369d46788c0409)) 148 | * **pomodoro_plus:** option names ([#273](https://github.com/catppuccin/tmux/issues/273)) ([51dde6e](https://github.com/catppuccin/tmux/commit/51dde6e8d4d3d8da97d915b01594a08aa4ac0cca)) 149 | * warning `[@catppuccin](https://github.com/catppuccin)_flavour` ([#296](https://github.com/catppuccin/tmux/issues/296)) ([a71f3c0](https://github.com/catppuccin/tmux/commit/a71f3c039bed8a7c49fc390a50befec5db2c4af9)) 150 | * warning `[@catppuccin](https://github.com/catppuccin)_window_status` ([9ee1695](https://github.com/catppuccin/tmux/commit/9ee1695d757c16e2f236858b8d3f88be9fb666fa)) 151 | 152 | 153 | ### Performance Improvements 154 | 155 | * batch tmux show ([#288](https://github.com/catppuccin/tmux/issues/288)) ([99013fa](https://github.com/catppuccin/tmux/commit/99013fafe6a98416079b3b84751f2eb540e17c79)), closes [#281](https://github.com/catppuccin/tmux/issues/281) 156 | * batch tmux show-options ([3c6f6f2](https://github.com/catppuccin/tmux/commit/3c6f6f282b3bb17554dc2b4b80760b6507acfd65)) 157 | 158 | ## [0.1.0](https://github.com/catppuccin/tmux/compare/v0.0.1...v0.1.0) (2024-08-04) 159 | 160 | 161 | ### Features 162 | 163 | * releases ([#260](https://github.com/catppuccin/tmux/issues/260)) ([5fbacdf](https://github.com/catppuccin/tmux/commit/5fbacdf3559cf4496eef02aead087b3bb715e570)) 164 | -------------------------------------------------------------------------------- /plugins/catppuccin/tmux/CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | # Contributing 2 | 3 | ## Design 4 | 5 | To understand our mindset in developing this plugin and how to ensure your 6 | changes align with that mindset, check out the "[Design Philosophy](./docs/explanation/design.md)." 7 | 8 | ## Commit messages 9 | 10 | This repository uses [Conventional Commits](https://conventionalcommits.org). 11 | Commit headers should be lowercase. Most commits should include a body that briefly 12 | describes the motivation and content of the commit. 13 | 14 | ### Commit types 15 | 16 | - `fix`: A bug fix that doesn't modify the public API 17 | - `feat`: A code change that adds functionality 18 | - `change`: A modification to the public API 19 | - `deprecate`: Something in the public API has been deprecated 20 | - `remove`: A part of the public API has been removed 21 | - `refactor`: A code change that doesn't change behavior 22 | - `style`: A style fix or change 23 | - `docs`: Any change to documentation 24 | - `revert`: A revert commit. The message should describe the reasoning and the 25 | commit should include the `Refs:` footer with the short hashes of the commits 26 | being reverted. 27 | - `chore`: catch-all type 28 | 29 | ### Breaking changes 30 | 31 | All breaking changes should be documented in the commit footer in the format 32 | described by Conventional Commits. Use the `!` syntax in order to distinguish 33 | breaking commits in the log, but include the footer to provide a better description 34 | for the changelog generator. 35 | 36 | ```text 37 | feat(bar)!: foo the bars 38 | 39 | BREAKING CHANGE: bars are now foo'ed 40 | ``` 41 | -------------------------------------------------------------------------------- /plugins/catppuccin/tmux/assets/config1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/paulbuzakov/tmuxconfig/741b7267ebf1705828aafb39805fdda1bee0a22d/plugins/catppuccin/tmux/assets/config1.png -------------------------------------------------------------------------------- /plugins/catppuccin/tmux/assets/config2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/paulbuzakov/tmuxconfig/741b7267ebf1705828aafb39805fdda1bee0a22d/plugins/catppuccin/tmux/assets/config2.png -------------------------------------------------------------------------------- /plugins/catppuccin/tmux/assets/config3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/paulbuzakov/tmuxconfig/741b7267ebf1705828aafb39805fdda1bee0a22d/plugins/catppuccin/tmux/assets/config3.png -------------------------------------------------------------------------------- /plugins/catppuccin/tmux/assets/demos/basic.conf: -------------------------------------------------------------------------------- 1 | set -g @catppuccin_flavor 'frappe' 2 | 3 | run "#{d:current_file}/../../catppuccin.tmux" 4 | 5 | # Make the status line more pleasant. 6 | set -g status-left "" 7 | set -g status-right '#[fg=#{@thm_crust},bg=#{@thm_teal}] session: #S ' 8 | 9 | # Ensure that everything on the right side of the status line 10 | # is included. 11 | set -g status-right-length 100 12 | 13 | set -g default-shell '/opt/homebrew/bin/fish' 14 | -------------------------------------------------------------------------------- /plugins/catppuccin/tmux/assets/demos/basic.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/paulbuzakov/tmuxconfig/741b7267ebf1705828aafb39805fdda1bee0a22d/plugins/catppuccin/tmux/assets/demos/basic.gif -------------------------------------------------------------------------------- /plugins/catppuccin/tmux/assets/demos/basic.tape: -------------------------------------------------------------------------------- 1 | Output assets/demos/basic.gif 2 | 3 | Require echo 4 | Require tmux 5 | 6 | Set Shell "bash" 7 | Set FontSize 30 8 | Set FontFamily "SFMono Nerd Font" 9 | Set Width 1200 10 | Set Height 600 11 | 12 | Type "tmux -f assets/demos/basic.conf" Sleep 500ms Enter 13 | 14 | Sleep 3s 15 | 16 | Ctrl+b 17 | Type "c" 18 | 19 | Sleep 5s 20 | -------------------------------------------------------------------------------- /plugins/catppuccin/tmux/assets/example-config.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/paulbuzakov/tmuxconfig/741b7267ebf1705828aafb39805fdda1bee0a22d/plugins/catppuccin/tmux/assets/example-config.webp -------------------------------------------------------------------------------- /plugins/catppuccin/tmux/assets/frappe.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/paulbuzakov/tmuxconfig/741b7267ebf1705828aafb39805fdda1bee0a22d/plugins/catppuccin/tmux/assets/frappe.webp -------------------------------------------------------------------------------- /plugins/catppuccin/tmux/assets/generate_preview.fish: -------------------------------------------------------------------------------- 1 | set -l flavors latte frappe macchiato mocha 2 | 3 | for flavor in $flavors 4 | magick $flavor.webp -crop '1320x50+0+464' +repage $flavor-crop.webp 5 | end 6 | 7 | catwalk {latte,frappe,macchiato,mocha}-crop.webp --output preview.webp --layout column 8 | 9 | for flavor in $flavors 10 | rm $flavor-crop.webp 11 | end 12 | -------------------------------------------------------------------------------- /plugins/catppuccin/tmux/assets/latte.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/paulbuzakov/tmuxconfig/741b7267ebf1705828aafb39805fdda1bee0a22d/plugins/catppuccin/tmux/assets/latte.webp -------------------------------------------------------------------------------- /plugins/catppuccin/tmux/assets/macchiato.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/paulbuzakov/tmuxconfig/741b7267ebf1705828aafb39805fdda1bee0a22d/plugins/catppuccin/tmux/assets/macchiato.webp -------------------------------------------------------------------------------- /plugins/catppuccin/tmux/assets/mocha.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/paulbuzakov/tmuxconfig/741b7267ebf1705828aafb39805fdda1bee0a22d/plugins/catppuccin/tmux/assets/mocha.webp -------------------------------------------------------------------------------- /plugins/catppuccin/tmux/assets/preview.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/paulbuzakov/tmuxconfig/741b7267ebf1705828aafb39805fdda1bee0a22d/plugins/catppuccin/tmux/assets/preview.webp -------------------------------------------------------------------------------- /plugins/catppuccin/tmux/assets/ram-example.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/paulbuzakov/tmuxconfig/741b7267ebf1705828aafb39805fdda1bee0a22d/plugins/catppuccin/tmux/assets/ram-example.webp -------------------------------------------------------------------------------- /plugins/catppuccin/tmux/assets/structure.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /plugins/catppuccin/tmux/assets/window-basic.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/paulbuzakov/tmuxconfig/741b7267ebf1705828aafb39805fdda1bee0a22d/plugins/catppuccin/tmux/assets/window-basic.webp -------------------------------------------------------------------------------- /plugins/catppuccin/tmux/assets/window-none.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/paulbuzakov/tmuxconfig/741b7267ebf1705828aafb39805fdda1bee0a22d/plugins/catppuccin/tmux/assets/window-none.webp -------------------------------------------------------------------------------- /plugins/catppuccin/tmux/assets/window-rounded.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/paulbuzakov/tmuxconfig/741b7267ebf1705828aafb39805fdda1bee0a22d/plugins/catppuccin/tmux/assets/window-rounded.webp -------------------------------------------------------------------------------- /plugins/catppuccin/tmux/assets/window-slanted.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/paulbuzakov/tmuxconfig/741b7267ebf1705828aafb39805fdda1bee0a22d/plugins/catppuccin/tmux/assets/window-slanted.webp -------------------------------------------------------------------------------- /plugins/catppuccin/tmux/catppuccin.tmux: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | # Set path of script 4 | PLUGIN_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" 5 | 6 | tmux source "${PLUGIN_DIR}/catppuccin_options_tmux.conf" 7 | tmux source "${PLUGIN_DIR}/catppuccin_tmux.conf" 8 | -------------------------------------------------------------------------------- /plugins/catppuccin/tmux/catppuccin_options_tmux.conf: -------------------------------------------------------------------------------- 1 | # All options and their defaults. 2 | # 3 | # This is executed separately to the main configuration 4 | # so that options are set before parsing the rest of the config. 5 | 6 | set -ogq @catppuccin_flavor "mocha" 7 | 8 | set -ogq @catppuccin_status_background "default" 9 | 10 | # Menu styling options 11 | set -ogq @catppuccin_menu_selected_style "fg=#{@thm_fg},bold,bg=#{@thm_overlay_0}" 12 | 13 | # Pane styling options 14 | set -ogq @catppuccin_pane_status_enabled "no" # set to "yes" to enable 15 | set -ogq @catppuccin_pane_border_status "off" # set to "yes" to enable 16 | set -ogq @catppuccin_pane_border_style "fg=#{@thm_overlay_0}" 17 | set -ogq @catppuccin_pane_active_border_style "##{?pane_in_mode,fg=#{@thm_lavender},##{?pane_synchronized,fg=#{@thm_mauve},fg=#{@thm_lavender}}}" 18 | set -ogq @catppuccin_pane_left_separator "█" 19 | set -ogq @catppuccin_pane_middle_separator "█" 20 | set -ogq @catppuccin_pane_right_separator "█" 21 | set -ogq @catppuccin_pane_color "#{@thm_green}" 22 | set -ogq @catppuccin_pane_background_color "#{@thm_surface_0}" 23 | set -ogq @catppuccin_pane_default_text "##{b:pane_current_path}" 24 | set -ogq @catppuccin_pane_default_fill "number" 25 | set -ogq @catppuccin_pane_number_position "left" # right, left 26 | 27 | # NOTE: Changes to make the option names more intuitive and more closely follow 28 | # the tmux naming conventions. 29 | # @catppuccin_window_current_background -> @catppuccin_window_current_number_color 30 | # @catppuccin_window_current_color -> @catppuccin_window_current_text_color 31 | # @catppuccin_window_default_background -> @catppuccin_window_number_color 32 | # @catppuccin_window_default_color -> @catppuccin_window_text_color 33 | # @catppuccin_window_status -> @catppuccin_window_flags 34 | # 35 | # Removed: 36 | # @catppuccin_window_default_fill, @catppuccin_window_current_fill 37 | # Just set the number and text colors. 38 | 39 | # Window options 40 | set -ogq @catppuccin_window_status_style "basic" # basic, rounded, slanted, custom, or none 41 | set -ogq @catppuccin_window_text_color "#{@thm_surface_0}" 42 | set -ogq @catppuccin_window_number_color "#{@thm_overlay_2}" 43 | set -ogq @catppuccin_window_text " #T" 44 | set -ogq @catppuccin_window_number "#I" 45 | set -ogq @catppuccin_window_current_text_color "#{@thm_surface_1}" 46 | set -ogq @catppuccin_window_current_number_color "#{@thm_mauve}" 47 | set -ogq @catppuccin_window_current_text " #T" 48 | set -ogq @catppuccin_window_current_number "#I" 49 | set -ogq @catppuccin_window_number_position "left" 50 | 51 | # Window flags 52 | set -ogq @catppuccin_window_flags "none" 53 | set -ogq @catppuccin_window_flags_icon_last " 󰖰" # - 54 | set -ogq @catppuccin_window_flags_icon_current " 󰖯" # * 55 | set -ogq @catppuccin_window_flags_icon_zoom " 󰁌" # Z 56 | set -ogq @catppuccin_window_flags_icon_mark " 󰃀" # M 57 | set -ogq @catppuccin_window_flags_icon_silent " 󰂛" # ~ 58 | set -ogq @catppuccin_window_flags_icon_activity " 󱅫" # # 59 | set -ogq @catppuccin_window_flags_icon_bell " 󰂞" # ! 60 | # Matches icon order when using `#F` (`#!~[*-]MZ`) 61 | set -ogq @catppuccin_window_flags_icon_format "##{?window_activity_flag,#{E:@catppuccin_window_flags_icon_activity},}##{?window_bell_flag,#{E:@catppuccin_window_flags_icon_bell},}##{?window_silence_flag,#{E:@catppuccin_window_flags_icon_silent},}##{?window_active,#{E:@catppuccin_window_flags_icon_current},}##{?window_last_flag,#{E:@catppuccin_window_flags_icon_last},}##{?window_marked_flag,#{E:@catppuccin_window_flags_icon_mark},}##{?window_zoomed_flag,#{E:@catppuccin_window_flags_icon_zoom},}" 62 | 63 | # Status line options 64 | set -ogq @catppuccin_status_left_separator "" 65 | set -ogq @catppuccin_status_middle_separator "" 66 | set -ogq @catppuccin_status_right_separator " " 67 | set -ogq @catppuccin_status_connect_separator "yes" # yes, no 68 | 69 | # Maintain backwards compatibility. Use @catppuccin_status_module_bg_color if it is set. 70 | set -ogq @catppuccin_status_module_text_bg "#{?@catppuccin_status_module_bg_color,#{E:@catppuccin_status_module_bg_color},#{@thm_surface_0}}" 71 | -------------------------------------------------------------------------------- /plugins/catppuccin/tmux/catppuccin_tmux.conf: -------------------------------------------------------------------------------- 1 | source -F "#{d:current_file}/themes/catppuccin_#{@catppuccin_flavor}_tmux.conf" 2 | 3 | %if "#{==:#{@catppuccin_status_background},default}" 4 | set -gF @_ctp_status_bg "#{@thm_mantle}" 5 | set -gF status-style "bg=#{@_ctp_status_bg},fg=#{@thm_fg}" 6 | 7 | %hidden CTP_MESSAGE_BACKGROUND="#{@thm_overlay_0}" 8 | %elif "#{==:#{@catppuccin_status_background},none}" 9 | set -g status-style "default" 10 | set -g @_ctp_status_bg "none" 11 | 12 | %hidden CTP_MESSAGE_BACKGROUND="default" 13 | %else 14 | # Treat @catppuccin_status_background as a format string. 15 | set -gF status-style "bg=#{E:@catppuccin_status_background},fg=#{@thm_fg}" 16 | set -gF @_ctp_status_bg "#{E:@catppuccin_status_background}" 17 | 18 | %hidden CTP_MESSAGE_BACKGROUND="#{E:@catppuccin_status_background}" 19 | %endif 20 | 21 | source -F "#{d:current_file}/status/application.conf" 22 | source -F "#{d:current_file}/status/battery.conf" 23 | source -F "#{d:current_file}/status/clima.conf" 24 | source -F "#{d:current_file}/status/cpu.conf" 25 | source -F "#{d:current_file}/status/date_time.conf" 26 | source -F "#{d:current_file}/status/directory.conf" 27 | source -F "#{d:current_file}/status/gitmux.conf" 28 | source -F "#{d:current_file}/status/host.conf" 29 | source -F "#{d:current_file}/status/kube.conf" 30 | source -F "#{d:current_file}/status/load.conf" 31 | source -F "#{d:current_file}/status/pomodoro_plus.conf" 32 | source -F "#{d:current_file}/status/session.conf" 33 | source -F "#{d:current_file}/status/uptime.conf" 34 | source -F "#{d:current_file}/status/user.conf" 35 | source -F "#{d:current_file}/status/weather.conf" 36 | 37 | # messages 38 | set -gF message-style "fg=#{@thm_teal},bg=$CTP_MESSAGE_BACKGROUND,align=centre" 39 | set -gF message-command-style "fg=#{@thm_teal},bg=$CTP_MESSAGE_BACKGROUND,align=centre" 40 | 41 | # menu 42 | %if "#{>=:#{version},3.4}" 43 | set -gF menu-selected-style "#{E:@catppuccin_menu_selected_style}" 44 | %endif 45 | 46 | # panes 47 | set -wgF pane-active-border-style "#{E:@catppuccin_pane_active_border_style}" 48 | set -wgF pane-border-style "#{E:@catppuccin_pane_border_style}" 49 | 50 | %if "#{==:#{@catppuccin_pane_status_enabled},yes}" 51 | # "internal" variables are kept as @_ctp_p_.* 52 | # and then unset at the end. 53 | set -gq @_ctp_p_left "" # the content on the left, usually a separator 54 | set -gq @_ctp_p_middle "" 55 | set -gq @_ctp_p_right "" 56 | set -gq @_ctp_p_number "" 57 | set -gq @_ctp_p_text "" 58 | 59 | %if "#{==:#{@catppuccin_pane_default_fill},none}" 60 | set -g @_ctp_p_left \ 61 | "#[fg=#{@thm_surface_0},bg=default]#{@catppuccin_pane_left_separator}" 62 | set -g @_ctp_p_middle \ 63 | "#[fg=#{@thm_fg},bg=#{@thm_surface_0}]#{@catppuccin_pane_middle_separator}" 64 | set -g @_ctp_p_right \ 65 | "#[fg=#{@thm_surface_0},bg=default]#{@catppuccin_pane_right_separator}" 66 | 67 | set -g @_ctp_p_number \ 68 | "#[fg=#{@thm_fg},bg=#{@thm_surface_0}]##{pane_index}" 69 | set -g @_ctp_p_text \ 70 | "#[fg=#{@thm_fg},bg=#{@thm_surface_0}]#{E:@catppuccin_pane_default_text}" 71 | 72 | %elif "#{==:#{@catppuccin_pane_default_fill},all}" 73 | 74 | set -g @_ctp_p_left \ 75 | "#[fg=#{E:@catppuccin_pane_color},bg=default]#{@catppuccin_pane_left_separator}" 76 | set -g @_ctp_p_middle \ 77 | "#[fg=#{E:@catppuccin_pane_color},bg=#{E:@catppuccin_pane_background_color}]#{@catppuccin_pane_middle_separator}" 78 | set -g @_ctp_p_right \ 79 | "#[fg=#{E:@catppuccin_pane_color},bg=default]#{@catppuccin_pane_right_separator}" 80 | 81 | set -g @_ctp_p_number \ 82 | "#[fg=#{E:@catppuccin_pane_background_color},bg=#{E:@catppuccin_pane_color}]##{pane_index}" 83 | set -g @_ctp_p_text \ 84 | "#[fg=#{E:@catppuccin_pane_background_color},bg=#{E:@catppuccin_pane_color}]#{E:@catppuccin_pane_default_text}" 85 | 86 | %elif "#{==:#{@catppuccin_pane_default_fill},number}" 87 | 88 | %if "#{==:#{@catppuccin_pane_number_position},left}" 89 | set -g @_ctp_p_left \ 90 | "#[fg=#{E:@catppuccin_pane_color},bg=default]#{@catppuccin_pane_left_separator}" 91 | set -g @_ctp_p_right \ 92 | "#[fg=#{E:@catppuccin_pane_background_color},bg=default]#{@catppuccin_pane_right_separator}" 93 | %else 94 | set -g @_ctp_p_left \ 95 | "#[fg=#{E:@catppuccin_pane_background_color},bg=default]#{@catppuccin_pane_left_separator}" 96 | set -g @_ctp_p_right \ 97 | "#[fg=#{E:@catppuccin_pane_color},bg=default]#{@catppuccin_pane_right_separator}" 98 | %endif 99 | 100 | set -g @_ctp_p_middle \ 101 | "#[fg=#{E:@catppuccin_pane_color},bg=#{E:@catppuccin_pane_background_color}]#{@catppuccin_pane_middle_separator}" 102 | 103 | set -g @_ctp_p_number \ 104 | "#[fg=#{E:@catppuccin_pane_background_color},bg=#{E:@catppuccin_pane_color}]##{pane_index}" 105 | set -g @_ctp_p_text \ 106 | "#[fg=#{E:@catppuccin_pane_color},bg=#{E:@catppuccin_pane_background_color}]#{E:@catppuccin_pane_default_text}" 107 | 108 | %endif 109 | 110 | %if "#{==:#{@catppuccin_pane_number_position},left}" 111 | set -wgF pane-border-format \ 112 | "#{E:@_ctp_p_left}#{E:@_ctp_p_number}#{E:@_ctp_p_middle} #{E:@_ctp_p_text}#{E:@_ctp_p_right}" 113 | %else 114 | set -wgF pane-border-format \ 115 | "#{E:@_ctp_p_left}#{E:@_ctp_p_text} #{E:@_ctp_p_middle}#{E:@_ctp_p_number}#{E:@_ctp_p_right}" 116 | %endif 117 | 118 | set -ug @_ctp_p_left 119 | set -ug @_ctp_p_middle 120 | set -ug @_ctp_p_right 121 | set -ug @_ctp_p_number 122 | set -ug @_ctp_p_text 123 | %endif 124 | 125 | # popups 126 | %if "#{>=:#{version},3.4}" 127 | set -gF popup-style "bg=#{@thm_bg},fg=#{@thm_fg}" 128 | set -gF popup-border-style "fg=#{@thm_surface_1}" 129 | %endif 130 | 131 | %if "#{==:#{@catppuccin_window_status_style},basic}" 132 | 133 | set -gq @catppuccin_window_left_separator " " 134 | set -gq @catppuccin_window_middle_separator " " 135 | set -gq @catppuccin_window_right_separator " " 136 | 137 | %elif "#{==:#{@catppuccin_window_status_style},rounded}" 138 | 139 | set -gq @catppuccin_window_left_separator "#[fg=#{@_ctp_status_bg},reverse]#[none]" 140 | set -gq @catppuccin_window_middle_separator " " 141 | set -gq @catppuccin_window_right_separator "#[fg=#{@_ctp_status_bg},reverse]#[none]" 142 | 143 | %elif "#{==:#{@catppuccin_window_status_style},slanted}" 144 | 145 | set -gq @catppuccin_window_left_separator "#[fg=#{@_ctp_status_bg},reverse]#[none]" 146 | 147 | %if "#{==:#{@catppuccin_window_number_position},left}" 148 | set -gq @catppuccin_window_middle_separator "#[fg=#{@catppuccin_window_number_color},bg=#{@catppuccin_window_text_color}]" 149 | set -gq @catppuccin_window_current_middle_separator \ 150 | "#[fg=#{@catppuccin_window_current_number_color},bg=#{@catppuccin_window_current_text_color}]" 151 | %else 152 | set -gq @catppuccin_window_middle_separator " #[fg=#{@catppuccin_window_number_color},bg=#{@catppuccin_window_text_color}]" 153 | set -gq @catppuccin_window_current_middle_separator \ 154 | " #[fg=#{@catppuccin_window_current_number_color},bg=#{@catppuccin_window_current_text_color}]" 155 | %endif 156 | 157 | set -gq @catppuccin_window_right_separator "#[fg=#{@_ctp_status_bg},reverse]█#[none]" 158 | 159 | %endif 160 | 161 | set -ogqF @catppuccin_window_current_left_separator "#{@catppuccin_window_left_separator}" 162 | set -ogqF @catppuccin_window_current_middle_separator "#{@catppuccin_window_middle_separator}" 163 | set -ogqF @catppuccin_window_current_right_separator "#{@catppuccin_window_right_separator}" 164 | 165 | # window status 166 | %if "#{!=:#{@catppuccin_window_status_style},none}" 167 | set -gF window-status-activity-style "bg=#{@thm_lavender},fg=#{@thm_crust}" 168 | set -gF window-status-bell-style "bg=#{@thm_yellow},fg=#{@thm_crust}" 169 | 170 | %if "#{==:#{@catppuccin_window_flags},icon}" 171 | set -gqF @_ctp_w_flags "#{E:@catppuccin_window_flags_icon_format} " 172 | %elif "#{==:#{@catppuccin_window_flags},text}" 173 | set -gq @_ctp_w_flags "#F" 174 | %else 175 | set -gq @_ctp_w_flags "" 176 | %endif 177 | 178 | set -g @_ctp_w_number_style "#[fg=#{@thm_crust},bg=#{@catppuccin_window_number_color}]" 179 | set -g @_ctp_w_text_style "#[fg=#{@thm_fg},bg=#{@catppuccin_window_text_color}]" 180 | %if "#{==:#{@catppuccin_window_number_position},left}" 181 | set -gF window-status-format \ 182 | "#{E:@_ctp_w_number_style}#{E:@catppuccin_window_left_separator}#{@catppuccin_window_number}" 183 | set -agF window-status-format "#{E:@catppuccin_window_middle_separator}" 184 | set -agF window-status-format \ 185 | "#{E:@_ctp_w_text_style}#{@catppuccin_window_text}#{@_ctp_w_flags}#{E:@catppuccin_window_right_separator}" 186 | %else 187 | set -gF window-status-format \ 188 | "#{E:@_ctp_w_text_style}#{E:@catppuccin_window_left_separator}#{E:@_ctp_w_text_style}#{@catppuccin_window_text}#{@_ctp_w_flags}" 189 | set -agF window-status-format "#{E:@catppuccin_window_middle_separator}" 190 | set -agF window-status-format \ 191 | "#{E:@_ctp_w_number_style} #{@catppuccin_window_number}#{E:@catppuccin_window_right_separator}" 192 | %endif 193 | 194 | # ======================================= 195 | # And do the same for the current window. 196 | # ======================================= 197 | 198 | set -g @_ctp_w_number_style "#[fg=#{@thm_crust},bg=#{@catppuccin_window_current_number_color}]" 199 | set -g @_ctp_w_text_style "#[fg=#{@thm_fg},bg=#{@catppuccin_window_current_text_color}]" 200 | %if "#{==:#{@catppuccin_window_number_position},left}" 201 | set -gF window-status-current-format \ 202 | "#{E:@_ctp_w_number_style}#{E:@catppuccin_window_left_separator}#{@catppuccin_window_current_number}" 203 | set -agF window-status-current-format "#{E:@catppuccin_window_current_middle_separator}" 204 | set -agF window-status-current-format \ 205 | "#{E:@_ctp_w_text_style}#{@catppuccin_window_current_text}#{@_ctp_w_flags}#{E:@catppuccin_window_current_right_separator}" 206 | %else 207 | set -gF window-status-current-format \ 208 | "#{E:@_ctp_w_text_style}#{E:@catppuccin_window_left_separator}#{E:@_ctp_w_text_style}#{@catppuccin_window_current_text}#{@_ctp_w_flags}" 209 | set -agF window-status-current-format "#{E:@catppuccin_window_current_middle_separator}" 210 | set -agF window-status-current-format \ 211 | "#{E:@_ctp_w_number_style} #{@catppuccin_window_current_number}#{E:@catppuccin_window_current_right_separator}" 212 | %endif 213 | 214 | 215 | # Cleanup (unset) all of the internal variables. 216 | set -ug @_ctp_w_number_style 217 | set -ug @_ctp_w_text_style 218 | set -ug @_ctp_w_flags 219 | %endif 220 | 221 | # Mode style. This is used for copy mode highlighting to style the current selection. 222 | set -gF mode-style "bg=#{@thm_surface_0},bold" 223 | set -gF clock-mode-colour "#{@thm_blue}" 224 | -------------------------------------------------------------------------------- /plugins/catppuccin/tmux/docs/explanation/design.md: -------------------------------------------------------------------------------- 1 | ## Design Philosophy 2 | 3 | First and foremost, this is a color scheme. Making colors work 4 | well takes precedence over other kinds of functionality. 5 | 6 | ### History 7 | 8 | This plugin kept on growing essentially because no one was there to push back on 9 | changes that went against, for example, parts of the UNIX philosophy. This lead to 10 | a state where there were almost an infinite number of configuration options, 11 | and combining them in unique ways would almost certainly break something. 12 | Maintaining the options for everyone's setup was impossible, and fixing 13 | one bug would cause several others to appear. Eventually the addition 14 | of more and more things that didn't relate to colors, such as status line modules, 15 | took time away from getting the basics right. 16 | 17 | Moving forward, we will be trying to align with the philosophies listed below. 18 | This is in contrast to what the plugin has historically offered in terms of functionality. 19 | 20 | ### UNIX Philosphy 21 | 22 | 1. Write programs that do one thing and do it well. 23 | - Do colors, and do colors well. Other things like displaying the weather 24 | are not the responsibility of this plugin. 25 | 1. Write programs to work together. 26 | - The full palette is exposed as user options, allowing 27 | easy integration with any other kind of tmux configuration. 28 | 1. Write programs to handle text streams, because that is a universal interface. 29 | - TMUX is a text based program. Each of the palette options are strings 30 | in user options that can be piped into other programs and options. 31 | 32 | ### Configurability is the root of all evil 33 | 34 | Adopted from "[Fish Shell's design philophy](https://fishshell.com/docs/current/design.html)". 35 | 36 | Every configuration option in a program is a place where the program is too 37 | stupid to figure out for itself what the user really wants, and should be 38 | considered a failure of both the program and the programmer who implemented it. 39 | 40 | Rationale: Different configuration options are a nightmare to maintain, since 41 | the number of potential bugs caused by specific configuration combinations 42 | quickly becomes an issue. Configuration options often imply assumptions about 43 | the code which change when reimplementing the code, causing issues with 44 | backwards compatibility. But mostly, configuration options should be avoided 45 | since they simply should not exist, as the program should be smart enough to do 46 | what is best, or at least a good enough approximation of it. 47 | 48 | ### The law of orthogonality 49 | 50 | The set of options that do exist should have a small set of orthogonal features. 51 | Any situation where two options are related but not identical, one of them 52 | should be removed, and the other should be made powerful and general enough to 53 | handle all common use cases of either feature. 54 | 55 | Rationale: Related features make the configuration options larger, which makes 56 | it harder to use. It also increases the size of the source code, making the 57 | program harder to maintain and update. 58 | -------------------------------------------------------------------------------- /plugins/catppuccin/tmux/docs/reference/configuration.md: -------------------------------------------------------------------------------- 1 | ## Configuration Reference 2 | 3 | 4 | 5 | This is a diagram of how the theme is split between its components. 6 | 7 | ### Top Level Options 8 | 9 | | Option | Effect | 10 | | -------------------- | ------------------------------------------------------------------------------ | 11 | | `@catppuccin_flavor` | Sets the catppuccin flavor, one of "latte", "frappe", "macchiato", or "mocha". | 12 | 13 | ### Status Line 14 | 15 | | Option | Effect | 16 | | ----------------------------- | --------------------------------------------- | 17 | | @catppuccin_status_background | Sets the background color of the status line. | 18 | 19 | - `default` will use the color from the selected theme 20 | - `none` will make the status bar transparent 21 | - use hex color codes for other colors or a theme color (`#{@thm_}`) 22 | 23 | ### Window 24 | 25 | The plugin comes with three window styles built in, these can be customized by 26 | setting the `@catppuccin_window_status_style` option. The default is `basic`. 27 | 28 | | Option | Effect | Preview | 29 | | --------- | ------------------------------------------------------------------------ | ------------------------------------------------------ | 30 | | `basic` | Simple styling with blocks. | ![window basic](../../assets/window-basic.webp) | 31 | | `rounded` | Each window is separated with rounded separators. | ![window rounded style](../../assets/window-rounded.webp) | 32 | | `slanted` | Each window is separated with slanted separators. | ![window slanted style](../../assets/window-slanted.webp) | 33 | | `custom` | Custom separators are used. This is required to override the separators! | | 34 | | `none` | Styling of the window status is completely disabled. | ![window no styling](../../assets/window-none.webp) | 35 | 36 | If you want to change the active color to something else (the default is mauve), 37 | use the following. For example to use lavender: 38 | 39 | ```bash 40 | set -g @catppuccin_window_current_number_color "#{@thm_lavender}" 41 | ``` 42 | 43 |
44 | 45 | Customising the separators 46 | 47 | Add the following, 48 | setting whatever values you'd like for the separators: 49 | 50 | ```bash 51 | set -g @catppuccin_window_status_style "custom" 52 | set -g @catppuccin_window_left_separator "" 53 | set -g @catppuccin_window_middle_separator "" 54 | set -g @catppuccin_window_right_separator "" 55 | ``` 56 | 57 |
58 | 59 | ### Menu 60 | 61 | **Set the menu selected style:** 62 | 63 | ```sh 64 | # Use a value compatible with the standard tmux `menu-selected-style` 65 | set -g @catppuccin_menu_selected_style "fg=#{@thm_surface_0},bg=#{@thm_yellow}" 66 | ``` 67 | 68 | ### All options and their defaults 69 | 70 | ```bash 71 | # Menu styling options 72 | set -ogq @catppuccin_menu_selected_style "fg=#{@thm_fg},bold,bg=#{@thm_overlay_0}" 73 | 74 | # Pane styling options 75 | set -ogq @catppuccin_pane_status_enabled "no" # set to "yes" to enable 76 | set -ogq @catppuccin_pane_border_status "off" # set to "yes" to enable 77 | set -ogq @catppuccin_pane_border_style "fg=#{@thm_overlay_0}" 78 | set -ogq @catppuccin_pane_active_border_style "##{?pane_in_mode,fg=#{@thm_lavender},##{?pane_synchronized,fg=#{@thm_mauve},fg=#{@thm_lavender}}}" 79 | set -ogq @catppuccin_pane_left_separator "█" 80 | set -ogq @catppuccin_pane_middle_separator "█" 81 | set -ogq @catppuccin_pane_right_separator "█" 82 | set -ogq @catppuccin_pane_color "#{@thm_green}" 83 | set -ogq @catppuccin_pane_background_color "#{@thm_surface_0}" 84 | set -ogq @catppuccin_pane_default_text "##{b:pane_current_path}" 85 | set -ogq @catppuccin_pane_default_fill "number" 86 | set -ogq @catppuccin_pane_number_position "left" # right, left 87 | 88 | set -ogq @catppuccin_window_status_style "basic" # basic, rounded, slanted, custom, or none 89 | set -ogq @catppuccin_window_text_color "#{@thm_surface_0}" 90 | set -ogq @catppuccin_window_number_color "#{@thm_overlay_2}" 91 | set -ogq @catppuccin_window_text " #T" 92 | set -ogq @catppuccin_window_number "#I" 93 | set -ogq @catppuccin_window_current_text_color "#{@thm_surface_1}" 94 | set -ogq @catppuccin_window_current_number_color "#{@thm_mauve}" 95 | set -ogq @catppuccin_window_current_text " #T" 96 | set -ogq @catppuccin_window_current_number "#I" 97 | set -ogq @catppuccin_window_number_position "left" 98 | set -ogq @catppuccin_window_flags "none" # none, icon, or text 99 | set -ogq @catppuccin_window_flags_icon_last " 󰖰" # - 100 | set -ogq @catppuccin_window_flags_icon_current " 󰖯" # * 101 | set -ogq @catppuccin_window_flags_icon_zoom " 󰁌" # Z 102 | set -ogq @catppuccin_window_flags_icon_mark " 󰃀" # M 103 | set -ogq @catppuccin_window_flags_icon_silent " 󰂛" # ~ 104 | set -ogq @catppuccin_window_flags_icon_activity " 󱅫" # # 105 | set -ogq @catppuccin_window_flags_icon_bell " 󰂞" # ! 106 | # Matches icon order when using `#F` (`#!~[*-]MZ`) 107 | set -ogq @catppuccin_window_flags_icon_format "##{?window_activity_flag,#{E:@catppuccin_window_flags_icon_activity},}##{?window_bell_flag,#{E:@catppuccin_window_flags_icon_bell},}##{?window_silence_flag,#{E:@catppuccin_window_flags_icon_silent},}##{?window_active,#{E:@catppuccin_window_flags_icon_current},}##{?window_last_flag,#{E:@catppuccin_window_flags_icon_last},}##{?window_marked_flag,#{E:@catppuccin_window_flags_icon_mark},}##{?window_zoomed_flag,#{E:@catppuccin_window_flags_icon_zoom},}" 108 | 109 | # Status line options 110 | set -ogq @catppuccin_status_left_separator "" 111 | set -ogq @catppuccin_status_middle_separator "" 112 | set -ogq @catppuccin_status_right_separator "█" 113 | set -ogq @catppuccin_status_connect_separator "yes" # yes, no 114 | set -ogq @catppuccin_status_fill "icon" 115 | set -ogq @catppuccin_status_module_bg_color "#{@thm_surface_0}" 116 | ``` 117 | -------------------------------------------------------------------------------- /plugins/catppuccin/tmux/docs/reference/status-line.md: -------------------------------------------------------------------------------- 1 | ## Using the theme's built-in status modules 2 | 3 | To use the theme's built in status modules, set the `status-left` and 4 | `status-right` tmux options _after_ the plugin has been loaded with `run`. 5 | 6 | The tmux status line modules are set as variables and prefixed with `@catppuccin_status_`. 7 | 8 | To use the `application` and `session` modules on the right and have nothing on 9 | the left: 10 | 11 | ```sh 12 | set -g status-right-length 100 13 | 14 | set -g status-right "#{E:@catppuccin_status_application}#{E:@catppuccin_status_session}" 15 | set -g status-left "" 16 | ``` 17 | 18 | ## Customizing modules 19 | 20 | Every module supports the following overrides: 21 | 22 | ### Override the specific module icon 23 | 24 | ```sh 25 | set -g @catppuccin_[module_name]_icon "icon" 26 | ``` 27 | 28 | ### Override the specific module color 29 | 30 | ```sh 31 | set -g @catppuccin_[module_name]_color "color" 32 | ``` 33 | 34 | ### Override the specific module text 35 | 36 | ```sh 37 | set -g @catppuccin_[module_name]_text "text" 38 | ``` 39 | 40 | ### Override the specific module's background color 41 | 42 | ```sh 43 | set -g @catppuccin_status_[module_name]_bg_color "#{@thm_surface_0}" 44 | ``` 45 | 46 | ### Removing a specific module option 47 | 48 | ```sh 49 | set -g @catppuccin_[module_name]_[option] "" 50 | ``` 51 | 52 | This is for the situation where you want to remove the icon from a module. 53 | For example: 54 | 55 | ```sh 56 | set -g @catppuccin_date_time_icon "" 57 | ``` 58 | 59 | ### Notes for TPM users 60 | 61 | Make sure you load the catppuccin theme prior to setting the status-left and/or 62 | status-left options. This ensures the catppuccin options (such as colors and 63 | status modules) are defined so they can then be used. 64 | 65 | After status-left and/or status-left have been set, make sure to run TPM to load 66 | the modules. This runs any plugins that may replace text in the status line. 67 | 68 | ```bash 69 | # load catppuccin theme ... 70 | run '~/.config/tmux/plugins/tmux/catppuccin.tmux' # or where this file is located on your machine 71 | 72 | # ... and then set status-left & status-right ... 73 | set -g status-left "#{E:@catppuccin_status_session}" 74 | 75 | set -g status-right "#{E:@catppuccin_status_[module_name]}" 76 | set -ag status-right "#{E:@catppuccin_status_[module_name]}" 77 | set -agF status-right "#{E:@catppuccin_status_[module_name]}" 78 | 79 | # ... and finally start TPM 80 | set -g @plugin 'tmux-plugins/tpm' 81 | run '~/.tmux/plugins/tpm/tpm' 82 | ``` 83 | 84 | ## Battery module 85 | 86 | **Requirements:** This module depends on [tmux-battery](https://github.com/tmux-plugins/tmux-battery/tree/master). 87 | 88 | **Install:** The preferred way to install tmux-battery is using [TPM](https://github.com/tmux-plugins/tpm). 89 | 90 | **Configure:** 91 | 92 | ```sh 93 | run ~/.config/tmux/plugins/catppuccin/tmux/catppuccin.tmux 94 | 95 | set -agF status-right "#{E:@catppuccin_status_battery}" 96 | 97 | set -g @plugin 'tmux-plugins/tmux-battery' 98 | run '~/.tmux/plugins/tpm/tpm' 99 | ``` 100 | 101 | ## CPU module 102 | 103 | **Requirements:** This module depends on [tmux-cpu](https://github.com/tmux-plugins/tmux-cpu/tree/master). 104 | 105 | **Install:** The preferred way to install tmux-cpu is using [TPM](https://github.com/tmux-plugins/tpm). 106 | 107 | **Configure:** 108 | 109 | ```sh 110 | run ~/.config/tmux/plugins/catppuccin/tmux/catppuccin.tmux 111 | 112 | set -agF status-right "#{E:@catppuccin_status_cpu}" 113 | 114 | set -g @plugin 'tmux-plugins/tmux-cpu' 115 | run '~/.tmux/plugins/tpm/tpm' 116 | ``` 117 | 118 | ## Weather modules 119 | 120 | ### tmux-weather 121 | 122 | **Requirements:** This module depends on [tmux-weather](https://github.com/xamut/tmux-weather). 123 | 124 | **Install:** The preferred way to install tmux-weather is using [TPM](https://github.com/tmux-plugins/tpm). 125 | 126 | **Configure:** 127 | 128 | ```sh 129 | run ~/.config/tmux/plugins/catppuccin/tmux/catppuccin.tmux 130 | 131 | set -agF status-right "#{E:@catppuccin_status_weather}" 132 | 133 | set -g @plugin 'xamut/tmux-weather' 134 | run '~/.tmux/plugins/tpm/tpm' 135 | ``` 136 | 137 | ### tmux-clima 138 | 139 | **Requirements:** This module depends on [tmux-clima](https://github.com/vascomfnunes/tmux-clima). 140 | 141 | **Install:** The preferred way to install tmux-clima is using [TPM](https://github.com/tmux-plugins/tpm). 142 | 143 | **Configure:** 144 | 145 | ```sh 146 | run ~/.config/tmux/plugins/catppuccin/tmux/catppuccin.tmux 147 | 148 | set -agF status-right "#{E:@catppuccin_status_clima}" 149 | 150 | set -g @plugin 'vascomfnunes/tmux-clima' 151 | run '~/.tmux/plugins/tpm/tpm' 152 | ``` 153 | 154 | ## Load module 155 | 156 | **Requirements:** This module depends on [tmux-loadavg](https://github.com/jamesoff/tmux-loadavg). 157 | 158 | **Install:** The preferred way to install tmux-loadavg is using [TPM](https://github.com/tmux-plugins/tpm). 159 | 160 | **Configure:** 161 | 162 | ```sh 163 | run ~/.config/tmux/plugins/catppuccin/tmux/catppuccin.tmux 164 | 165 | set -agF status-right "#{E:@catppuccin_status_load}" 166 | 167 | set -g @plugin 'jamesoff/tmux-loadavg' 168 | run '~/.tmux/plugins/tpm/tpm' 169 | ``` 170 | 171 | ## Gitmux module 172 | 173 | **Requirements:** This module depends on [gitmux](https://github.com/arl/gitmux). 174 | 175 | **Install:** To install gitmux, follow the instructions in the [gitmux documentation](https://github.com/arl/gitmux/blob/main/README.md#installing). 176 | 177 | **Configure:** 178 | 179 | Add the gitmux module to the status modules list. 180 | 181 | ```sh 182 | run ~/.config/tmux/plugins/catppuccin/tmux/catppuccin.tmux 183 | 184 | set -agF status-right "#{@catppuccin_status_gitmux}" 185 | ``` 186 | 187 | Follow the instructions in the [gitmux documentation](https://github.com/arl/gitmux/blob/main/README.md#customizing) 188 | to create a gitmux config file. The gitmux plugin expects a file to be present 189 | at `~/.gitmux.conf`. 190 | 191 | Add the following to your `~/.gitmux.conf` so that it uses catppuccin colors: 192 | 193 | ```yaml 194 | tmux: 195 | styles: 196 | clear: '#[fg=#{@thm_fg}]' 197 | state: '#[fg=#{@thm_red},bold]' 198 | branch: '#[fg=#{@thm_fg},bold]' 199 | remote: '#[fg=#{@thm_teal}]' 200 | divergence: '#[fg=#{@thm_fg}]' 201 | staged: '#[fg=#{@thm_green},bold]' 202 | conflict: '#[fg=#{@thm_red},bold]' 203 | modified: '#[fg=#{@thm_yellow},bold]' 204 | untracked: '#[fg=#{@thm_mauve},bold]' 205 | stashed: '#[fg=#{@thm_blue},bold]' 206 | clean: '#[fg=#{@thm_rosewater},bold]' 207 | insertions: '#[fg=#{@thm_green}]' 208 | deletions: '#[fg=#{@thm_red}]' 209 | ``` 210 | 211 | ## Pomodoro module 212 | 213 | **Requirements:**: This module depends on [tmux-pomodoro-plus](https://github.com/olimorris/tmux-pomodoro-plus/tree/main). 214 | 215 | **Install:**: The preferred way to install tmux-pomodoro-plus is using [TPM](https://github.com/tmux-plugins/tpm). 216 | 217 | **Configure:** 218 | 219 | ```sh 220 | run ~/.config/tmux/plugins/catppuccin/tmux/catppuccin.tmux 221 | 222 | set -agF status-right "#{E:@catppuccin_status_pomodoro_plus}" 223 | 224 | set -g @plugin 'olimorris/tmux-pomodoro-plus' 225 | run '~/.tmux/plugins/tpm/tpm' 226 | ``` 227 | 228 | ## Kube module 229 | 230 | **Requirements:** This module depends on [kube-tmux](https://github.com/jonmosco/kube-tmux). 231 | 232 | **Install:** The preferred way to install kube-tmux is using [TPM](https://github.com/tmux-plugins/tpm). 233 | 234 | **Configure:** 235 | 236 | ```sh 237 | set -g @catppuccin_kube_context_color "#{@thm_red}" 238 | set -g @catppuccin_kube_namespace_color "#{@thm_sky}" 239 | 240 | run ~/.config/tmux/plugins/catppuccin/tmux/catppuccin.tmux 241 | 242 | set -agF status-right "#{E:@catppuccin_status_kube}" 243 | 244 | set -g @plugin 'jonmosco/kube-tmux' 245 | run '~/.tmux/plugins/tpm/tpm' 246 | ``` 247 | -------------------------------------------------------------------------------- /plugins/catppuccin/tmux/docs/tutorials/01-getting-started.md: -------------------------------------------------------------------------------- 1 | Want to install the color scheme and make tmux pastel? Great! Here's how. 2 | 3 | ## Step 1: Clone this repository 4 | 5 | 6 | ```bash 7 | mkdir -p ~/.config/tmux/plugins/catppuccin 8 | git clone -b v2.1.2 https://github.com/catppuccin/tmux.git ~/.config/tmux/plugins/catppuccin/tmux 9 | ``` 10 | 11 | 12 | ## Step 2: Edit your tmux configuration file 13 | 14 | Using your favourite editor, edit the file `~/.tmux.conf`. 15 | 16 | It should look like this: 17 | 18 | ```bash 19 | set -g @catppuccin_flavor 'mocha' 20 | 21 | run ~/.config/tmux/plugins/catppuccin/tmux/catppuccin.tmux 22 | ``` 23 | 24 | This will load the catppuccin plugin and apply the defaults. 25 | To apply the changes to your configuration file, exit tmux completely 26 | and start it again. You can also run `tmux source ~/.tmux.conf`, but this may 27 | not work as well when changing options. 28 | 29 | ## Step 3: Customize 30 | 31 | The default configuration looks a little bland. Let's change it to 32 | be a bit more colorful. Edit your tmux config again so it looks like this. 33 | 34 | ```bash 35 | # Pick a softer palette. 36 | set -g @catppuccin_flavor 'frappe' 37 | 38 | run ~/.config/tmux/plugins/catppuccin/tmux/catppuccin.tmux 39 | 40 | # Make the status line more pleasant. 41 | set -g status-left "" 42 | set -g status-right '#[fg=#{@thm_crust},bg=#{@thm_teal}] session: #S ' 43 | 44 | # Ensure that everything on the right side of the status line 45 | # is included. 46 | set -g status-right-length 100 47 | ``` 48 | 49 | There is some new stuff here. Firstly, everything is documented in 50 | the "[tmux man page](https://man7.org/linux/man-pages/man1/tmux.1.html)". 51 | Go check it out if anything is unclear. The lines `set -g ...` are setting 52 | "options". The `-g` means that the option is global, so it applies everywhere. 53 | When an option name begins with `@`, then it is a "user" option and has no 54 | effect on tmux itself. This is used to essentially set global variables. 55 | 56 | Three options are set that control how tmux looks, `status-left`, 57 | `status-right`, and `status-right-length`. These options are documented 58 | in the man page, but the tl;dr is that they control what appears on the left 59 | and right of the status line. 60 | 61 | The `#[]` syntax is an embedded style, similar to inline css. 62 | `fg=#{@thm_crust}` says "make the text the crust color". `@thm_crust` is a 63 | user option set by the plugin. It is created by the line 64 | `run ~/.config/tmux/plugins/catppuccin/tmux/catppuccin.tmux`, so if you try 65 | and use colors before that line, it won't work. The `#S` is a special sequence 66 | that tmux replaces with the current session name. There are a long, long 67 | "[list of special sequences](https://man7.org/linux/man-pages/man1/tmux.1.html#FORMATS)" 68 | that tmux can replace. 69 | 70 | If everything is working right, your version should look like this: 71 | 72 | ![Demonstration of basic configuration](../../assets/demos/basic.gif) 73 | -------------------------------------------------------------------------------- /plugins/catppuccin/tmux/docs/tutorials/02-custom-status.md: -------------------------------------------------------------------------------- 1 | # User Defined Status Line Modules 2 | 3 | To create your own status line module that uses the catppuccin theme, 4 | all you need to do is add it to the `status-left` or `status-right` options. 5 | 6 | You can add arbitrary things to the status line like so: 7 | 8 | ```sh 9 | # ~/.tmux.conf 10 | 11 | set -agF status-right "#[fg=#{@thm_crust},bg=#{@thm_teal}] ##H " 12 | ``` 13 | 14 | This will append the current hostname (`#H`) to the status line with a teal 15 | background and dark black text. 16 | 17 | You can also use icons for styling, for example to show the used memory percentage 18 | on MacOS: 19 | 20 | ```sh 21 | set -g status-right "#[bg=#{@thm_flamingo},fg=#{@thm_crust}]#[reverse]#[noreverse]󱀙 " 22 | set -ag status-right "#[fg=#{@thm_fg},bg=#{@thm_mantle}] #(memory_pressure | awk '/percentage/{print $5}') " 23 | ``` 24 | 25 | ![Example of the custom ram module](../../assets/ram-example.webp) 26 | 27 | To use the status module formatting that catppuccin uses, do the following: 28 | 29 | ```sh 30 | # In ~/.tmux.conf, after the catppuccin plugin has been loaded. 31 | 32 | %hidden MODULE_NAME="my_custom_module" 33 | 34 | set -ogq "@catppuccin_${MODULE_NAME}_icon" " " 35 | set -ogqF "@catppuccin_${MODULE_NAME}_color" "#{E:@thm_pink}" 36 | set -ogq "@catppuccin_${MODULE_NAME}_text" "#{pane_current_command}" 37 | 38 | source "/utils/status_module.conf" 39 | 40 | set -g status-right "#{E:@catppuccin_status_application}#{E:@catppuccin_status_my_custom_module}" 41 | ``` 42 | -------------------------------------------------------------------------------- /plugins/catppuccin/tmux/renovate.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://docs.renovatebot.com/renovate-schema.json", 3 | "extends": [ 4 | "local>catppuccin/renovate-config" 5 | ] 6 | } 7 | -------------------------------------------------------------------------------- /plugins/catppuccin/tmux/run_tests.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | set -Eeuo pipefail 4 | 5 | script_dir=$(cd "$(dirname "${BASH_SOURCE[0]}")" &>/dev/null && pwd -P) 6 | 7 | "${script_dir}"/tests/harness.sh --test "${script_dir}"/tests/default_options.sh --expected "${script_dir}"/tests/default_options_expected.txt "$@" 8 | "${script_dir}"/tests/harness.sh --test "${script_dir}"/tests/window_status_styling.sh --expected "${script_dir}"/tests/window_status_styling_expected.txt "$@" 9 | 10 | "${script_dir}"/tests/harness.sh --test "${script_dir}"/tests/application_module.sh --expected "${script_dir}"/tests/application_module_expected.txt "$@" 11 | "${script_dir}"/tests/harness.sh --test "${script_dir}"/tests/battery_module.sh --expected "${script_dir}"/tests/battery_module_expected.txt "$@" 12 | "${script_dir}"/tests/harness.sh --test "${script_dir}"/tests/cpu_module.sh --expected "${script_dir}"/tests/cpu_module_expected.txt "$@" 13 | "${script_dir}"/tests/harness.sh --test "${script_dir}"/tests/pane_styling.sh --expected "${script_dir}"/tests/pane_styling_expected.txt "$@" 14 | -------------------------------------------------------------------------------- /plugins/catppuccin/tmux/status/application.conf: -------------------------------------------------------------------------------- 1 | # vim:set ft=tmux: 2 | %hidden MODULE_NAME="application" 3 | 4 | set -ogq "@catppuccin_${MODULE_NAME}_icon" " " 5 | set -ogqF "@catppuccin_${MODULE_NAME}_color" "#{E:@thm_maroon}" 6 | set -ogq "@catppuccin_${MODULE_NAME}_text" " #{pane_current_command}" 7 | 8 | source -F "#{d:current_file}/../utils/status_module.conf" 9 | -------------------------------------------------------------------------------- /plugins/catppuccin/tmux/status/battery.conf: -------------------------------------------------------------------------------- 1 | # vim:set ft=tmux: 2 | %hidden MODULE_NAME="battery" 3 | 4 | set -ogq @batt_icon_charge_tier8 "󰁹" 5 | set -ogq @batt_icon_charge_tier7 "󰂁" 6 | set -ogq @batt_icon_charge_tier6 "󰁿" 7 | set -ogq @batt_icon_charge_tier5 "󰁾" 8 | set -ogq @batt_icon_charge_tier4 "󰁽" 9 | set -ogq @batt_icon_charge_tier3 "󰁼" 10 | set -ogq @batt_icon_charge_tier2 "󰁻" 11 | set -ogq @batt_icon_charge_tier1 "󰁺" 12 | set -ogq @batt_icon_status_charged "󰚥" 13 | set -ogq @batt_icon_status_charging "󰂄" 14 | set -ogq @batt_icon_status_discharging "󰂃" 15 | set -ogq @batt_icon_status_unknown "󰂑" 16 | set -ogq @batt_icon_status_attached "󱈑" 17 | 18 | set -ogq "@catppuccin_${MODULE_NAME}_icon" "#{l:#{battery_icon}} " 19 | set -ogqF "@catppuccin_${MODULE_NAME}_color" "#{E:@thm_lavender}" 20 | set -ogq "@catppuccin_${MODULE_NAME}_text" " #{l:#{battery_percentage}}" 21 | 22 | source -F "#{d:current_file}/../utils/status_module.conf" 23 | -------------------------------------------------------------------------------- /plugins/catppuccin/tmux/status/clima.conf: -------------------------------------------------------------------------------- 1 | # vim:set ft=tmux: 2 | # Requires https://github.com/vascomfnunes/tmux-clima 3 | %hidden MODULE_NAME="clima" 4 | 5 | set -ogq "@catppuccin_${MODULE_NAME}_icon" " " 6 | set -ogqF "@catppuccin_${MODULE_NAME}_color" "#{E:@thm_yellow}" 7 | set -ogq "@catppuccin_${MODULE_NAME}_text" " #{l:#{clima}}" 8 | 9 | source -F "#{d:current_file}/../utils/status_module.conf" 10 | -------------------------------------------------------------------------------- /plugins/catppuccin/tmux/status/cpu.conf: -------------------------------------------------------------------------------- 1 | # vim:set ft=tmux: 2 | %hidden MODULE_NAME="cpu" 3 | 4 | set -ogq @cpu_low_fg_color "#{E:@thm_fg}" 5 | set -ogq @cpu_medium_fg_color "#{E:@thm_fg}" 6 | set -ogq @cpu_high_fg_color "#{E:@thm_crust}" 7 | 8 | set -ogq @cpu_low_bg_color "#{E:@catppuccin_status_module_text_bg}" 9 | set -ogq @cpu_medium_bg_color "#{E:@catppuccin_status_module_text_bg}" 10 | set -ogq @cpu_high_bg_color "#{E:@thm_red}" 11 | 12 | set -ogq "@catppuccin_${MODULE_NAME}_icon" " " 13 | set -ogqF "@catppuccin_${MODULE_NAME}_color" "#{E:@thm_yellow}" 14 | set -ogq "@catppuccin_status_${MODULE_NAME}_text_fg" "#{l:#{cpu_fg_color}}" 15 | set -ogq "@catppuccin_status_${MODULE_NAME}_text_bg" "#{l:#{cpu_bg_color}}" 16 | set -ogq "@catppuccin_${MODULE_NAME}_text" " #{l:#{cpu_percentage}}" 17 | 18 | source -F "#{d:current_file}/../utils/status_module.conf" 19 | -------------------------------------------------------------------------------- /plugins/catppuccin/tmux/status/date_time.conf: -------------------------------------------------------------------------------- 1 | # vim:set ft=tmux: 2 | %hidden MODULE_NAME="date_time" 3 | 4 | set -ogq "@catppuccin_${MODULE_NAME}_icon" "󰃰 " 5 | set -ogqF "@catppuccin_${MODULE_NAME}_color" "#{E:@thm_sapphire}" 6 | set -ogq "@catppuccin_${MODULE_NAME}_text" " %Y-%m-%d %H:%M" 7 | 8 | source -F "#{d:current_file}/../utils/status_module.conf" 9 | -------------------------------------------------------------------------------- /plugins/catppuccin/tmux/status/directory.conf: -------------------------------------------------------------------------------- 1 | # vim:set ft=tmux: 2 | %hidden MODULE_NAME="directory" 3 | 4 | set -ogq "@catppuccin_${MODULE_NAME}_icon" " " 5 | set -ogqF "@catppuccin_${MODULE_NAME}_color" "#{E:@thm_rosewater}" 6 | set -ogq "@catppuccin_${MODULE_NAME}_text" " #{b:pane_current_path}" 7 | 8 | source -F "#{d:current_file}/../utils/status_module.conf" 9 | -------------------------------------------------------------------------------- /plugins/catppuccin/tmux/status/gitmux.conf: -------------------------------------------------------------------------------- 1 | # vim:set ft=tmux: 2 | %hidden MODULE_NAME="gitmux" 3 | 4 | # Requires https://github.com/arl/gitmux 5 | set -ogq "@catppuccin_${MODULE_NAME}_icon" "󰊢 " 6 | set -ogqF "@catppuccin_${MODULE_NAME}_color" "#{E:@thm_teal}" 7 | set -gq "@catppuccin_${MODULE_NAME}_text" ' #(gitmux -cfg $HOME/.gitmux.conf "#{pane_current_path}")' 8 | 9 | source -F "#{d:current_file}/../utils/status_module.conf" 10 | -------------------------------------------------------------------------------- /plugins/catppuccin/tmux/status/host.conf: -------------------------------------------------------------------------------- 1 | # vim:set ft=tmux: 2 | %hidden MODULE_NAME="host" 3 | 4 | set -ogq "@catppuccin_${MODULE_NAME}_icon" "󰒋 " 5 | set -ogqF "@catppuccin_${MODULE_NAME}_color" "#{E:@thm_mauve}" 6 | set -ogq "@catppuccin_${MODULE_NAME}_text" " #H" 7 | 8 | source -F "#{d:current_file}/../utils/status_module.conf" 9 | -------------------------------------------------------------------------------- /plugins/catppuccin/tmux/status/kube.conf: -------------------------------------------------------------------------------- 1 | # vim:set ft=tmux: 2 | %hidden MODULE_NAME="kube" 3 | 4 | # Requires https://github.com/jonmosco/kube-tmux 5 | 6 | set -ogq "@catppuccin_${MODULE_NAME}_icon" "󱃾 " 7 | set -ogqF "@catppuccin_${MODULE_NAME}_color" "#{E:@thm_blue}" 8 | set -ogqF "@catppuccin_kube_context_color" "#{E:@thm_red}" 9 | set -ogqF "@catppuccin_kube_namespace_color" "#{E:@thm_sky}" 10 | set -ogq "@catppuccin_${MODULE_NAME}_text" \ 11 | " #(\${TMUX_PLUGIN_MANAGER_PATH}kube-tmux/kube.tmux 250 #{@catppuccin_kube_context_color} #{@catppuccin_kube_namespace_color})" 12 | 13 | source -F "#{d:current_file}/../utils/status_module.conf" 14 | -------------------------------------------------------------------------------- /plugins/catppuccin/tmux/status/load.conf: -------------------------------------------------------------------------------- 1 | # vim:set ft=tmux: 2 | %hidden MODULE_NAME="load" 3 | 4 | set -ogq "@catppuccin_${MODULE_NAME}_icon" "󰊚 " 5 | set -ogqF "@catppuccin_${MODULE_NAME}_color" "#{E:@thm_blue}" 6 | set -ogq "@catppuccin_${MODULE_NAME}_text" " #{load_full}" 7 | 8 | source -F "#{d:current_file}/../utils/status_module.conf" 9 | -------------------------------------------------------------------------------- /plugins/catppuccin/tmux/status/pomodoro_plus.conf: -------------------------------------------------------------------------------- 1 | # vim:set ft=tmux: 2 | # Requires https://github.com/olimorris/tmux-pomodoro-plus 3 | %hidden MODULE_NAME="pomodoro_plus" 4 | 5 | set -ogq "@catppuccin_${MODULE_NAME}_icon" " " 6 | set -ogqF "@catppuccin_${MODULE_NAME}_color" "#{E:@thm_orange}" 7 | set -ogq "@catppuccin_${MODULE_NAME}_text" " #{l:#{pomodoro_status}}" 8 | 9 | source -F "#{d:current_file}/../utils/status_module.conf" 10 | -------------------------------------------------------------------------------- /plugins/catppuccin/tmux/status/session.conf: -------------------------------------------------------------------------------- 1 | # vim:set ft=tmux: 2 | %hidden MODULE_NAME="session" 3 | 4 | set -ogq "@catppuccin_${MODULE_NAME}_icon" " " 5 | set -ogq "@catppuccin_${MODULE_NAME}_color" "#{?client_prefix,#{E:@thm_red},#{E:@thm_green}}" 6 | set -ogq "@catppuccin_${MODULE_NAME}_text" " #S" 7 | 8 | source -F "#{d:current_file}/../utils/status_module.conf" 9 | -------------------------------------------------------------------------------- /plugins/catppuccin/tmux/status/uptime.conf: -------------------------------------------------------------------------------- 1 | # vim:set ft=tmux: 2 | %hidden MODULE_NAME="uptime" 3 | 4 | set -ogq @catppuccin_uptime_icon "󰔟 " 5 | set -ogqF @catppuccin_uptime_color "#{E:@thm_sapphire}" 6 | set -ogq @catppuccin_uptime_text " #(uptime | sed 's/^[^,]*up *//; s/, *[[:digit:]]* user.*//; s/ day.*, */d /; s/ hr\\(s*\\).*/h/; s/ min\\(s*\\).*/m/; s/ sec\\(s*\\).*/s/; s/\\([0-9]\\{1,2\\}\\):\\([0-9]\\{1,2\\}\\)/\\1h \\2m/;')" 7 | 8 | source -F "#{d:current_file}/../utils/status_module.conf" 9 | -------------------------------------------------------------------------------- /plugins/catppuccin/tmux/status/user.conf: -------------------------------------------------------------------------------- 1 | # vim:set ft=tmux: 2 | %hidden MODULE_NAME="user" 3 | 4 | set -ogq @catppuccin_user_icon " " 5 | set -ogqF @catppuccin_user_color "#{E:@thm_sky}" 6 | set -ogq @catppuccin_user_text " #(whoami)" 7 | 8 | source -F "#{d:current_file}/../utils/status_module.conf" 9 | -------------------------------------------------------------------------------- /plugins/catppuccin/tmux/status/weather.conf: -------------------------------------------------------------------------------- 1 | # vim:set ft=tmux: 2 | %hidden MODULE_NAME="weather" 3 | 4 | # Requires https://github.com/xamut/tmux-weather. 5 | 6 | set -ogq @catppuccin_weather_icon " " 7 | set -ogqF @catppuccin_weather_color "#{E:@thm_yellow}" 8 | set -ogq @catppuccin_weather_text " #{l:#{weather}}" 9 | 10 | source -F "#{d:current_file}/../utils/status_module.conf" 11 | -------------------------------------------------------------------------------- /plugins/catppuccin/tmux/tests/application_module.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | script_dir=$(cd "$(dirname "${BASH_SOURCE[0]}")" &>/dev/null && pwd -P) 4 | # shellcheck disable=SC1091 5 | source "${script_dir}/helpers.sh" 6 | 7 | # Tests that the default options are set correctly 8 | tmux source "${script_dir}/../catppuccin_options_tmux.conf" 9 | tmux source "${script_dir}/../catppuccin_tmux.conf" 10 | 11 | print_option @catppuccin_status_application | grep -q "@thm_" && 12 | echo "@catppuccin_status_application did not expand all colors" 13 | 14 | print_option @catppuccin_status_application | sed -E 's/(bash|fish|zsh)//' 15 | -------------------------------------------------------------------------------- /plugins/catppuccin/tmux/tests/application_module_expected.txt: -------------------------------------------------------------------------------- 1 | @catppuccin_status_application #[fg=#eba0ac]#[fg=#11111b,bg=#eba0ac] #[fg=#cdd6f4,bg=#313244]#{E:@catppuccin_application_text}#[fg=#313244] 2 | -------------------------------------------------------------------------------- /plugins/catppuccin/tmux/tests/battery_module.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | script_dir=$(cd "$(dirname "${BASH_SOURCE[0]}")" &>/dev/null && pwd -P) 4 | # shellcheck disable=SC1091 5 | source "${script_dir}/helpers.sh" 6 | 7 | # Tests that the default options are set correctly 8 | tmux source "${script_dir}/../catppuccin_options_tmux.conf" 9 | tmux source "${script_dir}/../catppuccin_tmux.conf" 10 | 11 | print_option @catppuccin_status_battery 12 | -------------------------------------------------------------------------------- /plugins/catppuccin/tmux/tests/battery_module_expected.txt: -------------------------------------------------------------------------------- 1 | @catppuccin_status_battery #[fg=#b4befe]#[fg=#11111b,bg=#b4befe]#{l:#{battery_icon}} #[fg=#cdd6f4,bg=#313244]#{E:@catppuccin_battery_text}#[fg=#313244] 2 | -------------------------------------------------------------------------------- /plugins/catppuccin/tmux/tests/cpu_module.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | script_dir=$(cd "$(dirname "${BASH_SOURCE[0]}")" &>/dev/null && pwd -P) 4 | # shellcheck disable=SC1091 5 | source "${script_dir}/helpers.sh" 6 | 7 | # Tests that the default options are set correctly 8 | tmux source "${script_dir}/../catppuccin_options_tmux.conf" 9 | tmux source "${script_dir}/../catppuccin_tmux.conf" 10 | 11 | print_option E:@catppuccin_status_cpu 12 | -------------------------------------------------------------------------------- /plugins/catppuccin/tmux/tests/cpu_module_expected.txt: -------------------------------------------------------------------------------- 1 | E:@catppuccin_status_cpu #[fg=#f9e2af]#[fg=#11111b,bg=#f9e2af] #[fg=#{cpu_fg_color},bg=#{cpu_bg_color}] #{cpu_percentage}#[fg=#{cpu_bg_color}] 2 | -------------------------------------------------------------------------------- /plugins/catppuccin/tmux/tests/default_options.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | script_dir=$(cd "$(dirname "${BASH_SOURCE[0]}")" &>/dev/null && pwd -P) 4 | # shellcheck disable=SC1091 5 | source "${script_dir}/helpers.sh" 6 | 7 | # Tests that the default options are set correctly 8 | tmux source "${script_dir}/../catppuccin_options_tmux.conf" 9 | tmux source "${script_dir}/../catppuccin_tmux.conf" 10 | 11 | print_option @catppuccin_flavor 12 | print_option @catppuccin_menu_selected_style 13 | print_option @catppuccin_pane_active_border_style 14 | -------------------------------------------------------------------------------- /plugins/catppuccin/tmux/tests/default_options_expected.txt: -------------------------------------------------------------------------------- 1 | @catppuccin_flavor mocha 2 | @catppuccin_menu_selected_style fg=#{@thm_fg},bold,bg=#{@thm_overlay_0} 3 | @catppuccin_pane_active_border_style ##{?pane_in_mode,fg=#{@thm_lavender},##{?pane_synchronized,fg=#{@thm_mauve},fg=#{@thm_lavender}}} 4 | -------------------------------------------------------------------------------- /plugins/catppuccin/tmux/tests/harness.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | set -Euo pipefail 4 | trap cleanup SIGINT SIGTERM ERR EXIT 5 | 6 | usage() { 7 | trap - EXIT 8 | cat <&2 -e "${1-}" 39 | } 40 | 41 | msg_verbose() { 42 | if [ "$VERBOSE" = true ]; then 43 | msg "$@" 44 | fi 45 | } 46 | 47 | SOCKET_NAME="${SOCKET_NAME:-test}" 48 | SESSION_NAME="test-session" 49 | 50 | tmux() { 51 | command tmux -L "$SOCKET_NAME" -f /dev/null "$@" 52 | } 53 | 54 | start_tmux_server() { 55 | msg_verbose "${CYAN}Starting tmux server on socket ${SOCKET_NAME}${NOFORMAT}" 56 | tmux new -s "$SESSION_NAME" -d "$(which bash)" 57 | } 58 | 59 | kill_tmux_server() { 60 | msg_verbose "${CYAN}Stopping tmux server${NOFORMAT}" 61 | tmux kill-session "$SESSION_NAME" 2>/dev/null 62 | tmux kill-server 2>/dev/null 63 | } 64 | 65 | cleanup() { 66 | trap - SIGINT SIGTERM ERR EXIT 67 | 68 | # If the session is still running then stop it. 69 | tmux has-session -t "$SESSION_NAME" 2>/dev/null 70 | if test $? -eq 0; then 71 | kill_tmux_server 72 | fi 73 | } 74 | 75 | die() { 76 | local msg=$1 77 | local code=${2-1} # default exit status 1 78 | msg "$msg" 79 | 80 | cleanup 81 | 82 | exit "$code" 83 | } 84 | 85 | parse_params() { 86 | # default values of variables set from params 87 | test_script='' 88 | expected_output='' 89 | 90 | while :; do 91 | case "${1-}" in 92 | -h | --help) usage ;; 93 | --no-color) NO_COLOR=1 ;; 94 | -t | --test) 95 | test_script="${2-}" 96 | shift 97 | ;; 98 | -e | --expected) 99 | expected_output="${2-}" 100 | shift 101 | ;; 102 | -v | --verbose) 103 | VERBOSE=true 104 | shift 105 | ;; 106 | -?*) die "Unknown option: $1" ;; 107 | *) break ;; 108 | esac 109 | shift 110 | done 111 | 112 | # shellcheck disable=SC2034 113 | args=("$@") 114 | 115 | # check required params and arguments 116 | [[ -z "${test_script-}" ]] && die "Missing required parameter: -t|--test" 117 | [[ -z "${expected_output-}" ]] && die "Missing required parameter: -e|--expected" 118 | 119 | return 0 120 | } 121 | 122 | parse_params "$@" 123 | setup_colors 124 | 125 | run_test() { 126 | msg_verbose "Running test ${test_script} and checking the output against ${expected_output}" 127 | 128 | start_tmux_server 129 | 130 | local script_name 131 | script_name=$(basename "${test_script}") 132 | 133 | local output 134 | # shellcheck disable=SC1090 135 | output=$(source "${test_script}") 136 | test_exit_code="$?" 137 | 138 | if test $test_exit_code -ne 0; then 139 | die "\n${RED}Test ${script_name} exited with code $test_exit_code ${NOFORMAT}" 140 | fi 141 | 142 | echo -e "${output}" | diff -abB --color=${DIFFCOLORS} "${expected_output}" - 143 | 144 | if test $? -eq 0; then 145 | msg "${GREEN}Test ${script_name} passed${NOFORMAT}" 146 | else 147 | die "\n${RED}Test ${script_name} failed${NOFORMAT}" 148 | fi 149 | 150 | cleanup 151 | } 152 | 153 | run_test 154 | -------------------------------------------------------------------------------- /plugins/catppuccin/tmux/tests/helpers.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | # Returns the value of given tmux option. 4 | # First argument is the option name, e.g. @catppuccin_flavor. 5 | # 6 | # Usage: `get_option @catppuccin_flavor` 7 | # Would return: `mocha` 8 | # 9 | # The option is given as a format string. 10 | get_option() { 11 | local option 12 | option=$1 13 | 14 | tmux display-message -p "#{${option}}" 15 | } 16 | 17 | # Prints the given tmux option to stdout. 18 | # First argument is the option name, e.g. @catppuccin_flavor. 19 | # 20 | # Usage: `print_option @catppuccin_flavor` 21 | # Would print: `@catppuccin_flavor mocha` 22 | # 23 | # The option is given as a format string. 24 | print_option() { 25 | local option 26 | option=$1 27 | 28 | printf "\n%s " "${option}" 29 | get_option "$option" 30 | } 31 | -------------------------------------------------------------------------------- /plugins/catppuccin/tmux/tests/pane_styling.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | script_dir=$(cd "$(dirname "${BASH_SOURCE[0]}")" &>/dev/null && pwd -P) 4 | # shellcheck disable=SC1091 5 | source "${script_dir}/helpers.sh" 6 | 7 | tmux set -g @catppuccin_pane_status_enabled "yes" 8 | 9 | tmux source "${script_dir}/../catppuccin_options_tmux.conf" 10 | tmux source "${script_dir}/../catppuccin_tmux.conf" 11 | 12 | print_option pane-border-format 13 | 14 | # Switch the number position to the right 15 | tmux set -g @catppuccin_pane_number_position "right" 16 | tmux source "${script_dir}/../catppuccin_tmux.conf" 17 | print_option pane-border-format 18 | 19 | tmux set -g @catppuccin_pane_number_position "left" # reset 20 | 21 | # Fill option "all" 22 | tmux set -g @catppuccin_pane_default_fill "all" 23 | tmux source "${script_dir}/../catppuccin_tmux.conf" 24 | print_option pane-border-format 25 | 26 | tmux set -g @catppuccin_pane_default_fill "number" # reset 27 | 28 | # Fill option "none" 29 | tmux set -g @catppuccin_pane_default_fill "none" 30 | tmux source "${script_dir}/../catppuccin_tmux.conf" 31 | print_option pane-border-format 32 | -------------------------------------------------------------------------------- /plugins/catppuccin/tmux/tests/pane_styling_expected.txt: -------------------------------------------------------------------------------- 1 | pane-border-format #[fg=#a6e3a1,bg=default]█#[fg=#313244,bg=#a6e3a1]#{pane_index}#[fg=#a6e3a1,bg=#313244]█ #[fg=#a6e3a1,bg=#313244]#{b:pane_current_path}#[fg=#313244,bg=default]█ 2 | pane-border-format #[fg=#313244,bg=default]█#[fg=#a6e3a1,bg=#313244]#{b:pane_current_path} #[fg=#a6e3a1,bg=#313244]█#[fg=#313244,bg=#a6e3a1]#{pane_index}#[fg=#a6e3a1,bg=default]█ 3 | pane-border-format #[fg=#a6e3a1,bg=default]█#[fg=#313244,bg=#a6e3a1]#{pane_index}#[fg=#a6e3a1,bg=#313244]█ #[fg=#313244,bg=#a6e3a1]#{b:pane_current_path}#[fg=#a6e3a1,bg=default]█ 4 | pane-border-format #[fg=#313244,bg=default]█#[fg=#cdd6f4,bg=#313244]#{pane_index}#[fg=#cdd6f4,bg=#313244]█ #[fg=#cdd6f4,bg=#313244]#{b:pane_current_path}#[fg=#313244,bg=default]█ 5 | -------------------------------------------------------------------------------- /plugins/catppuccin/tmux/tests/window_status_styling.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | # Unsets (removes) any styling options that will contaminate 4 | # subsequent test runs. 5 | function reset() { 6 | tmux set -gu @catppuccin_window_current_left_separator 7 | tmux set -gu @catppuccin_window_current_middle_separator 8 | tmux set -gu @catppuccin_window_current_right_separator 9 | tmux set -gu @catppuccin_window_status_style 10 | } 11 | 12 | script_dir=$(cd "$(dirname "${BASH_SOURCE[0]}")" &>/dev/null && pwd -P) 13 | # shellcheck disable=SC1091 14 | source "${script_dir}/helpers.sh" 15 | 16 | tmux source "${script_dir}/../catppuccin_options_tmux.conf" 17 | tmux source "${script_dir}/../catppuccin_tmux.conf" 18 | 19 | print_option window-status-format 20 | print_option window-status-current-format 21 | 22 | # Test the rounded style 23 | reset 24 | tmux set -g @catppuccin_window_status_style "rounded" 25 | tmux source "${script_dir}/../catppuccin_options_tmux.conf" 26 | tmux source "${script_dir}/../catppuccin_tmux.conf" 27 | 28 | print_option window-status-format 29 | print_option window-status-current-format 30 | 31 | # Test the basic style with the number on the right 32 | reset 33 | tmux set -g @catppuccin_window_number_position "right" 34 | tmux source "${script_dir}/../catppuccin_options_tmux.conf" 35 | tmux source "${script_dir}/../catppuccin_tmux.conf" 36 | 37 | print_option window-status-format 38 | print_option window-status-current-format 39 | -------------------------------------------------------------------------------- /plugins/catppuccin/tmux/tests/window_status_styling_expected.txt: -------------------------------------------------------------------------------- 1 | window-status-format #[fg=#11111b,bg=#{@thm_overlay_2}] #I #[fg=#cdd6f4,bg=#{@thm_surface_0}] #T 2 | window-status-current-format #[fg=#11111b,bg=#{@thm_mauve}] #I #[fg=#cdd6f4,bg=#{@thm_surface_1}] #T 3 | window-status-format #[fg=#11111b,bg=#{@thm_overlay_2}]#[fg=#181825,reverse]#[none]#I #[fg=#cdd6f4,bg=#{@thm_surface_0}] #T#[fg=#181825,reverse]#[none] 4 | window-status-current-format #[fg=#11111b,bg=#{@thm_mauve}]#[fg=#181825,reverse]#[none]#I #[fg=#cdd6f4,bg=#{@thm_surface_1}] #T#[fg=#181825,reverse]#[none] 5 | window-status-format #[fg=#cdd6f4,bg=#{@thm_surface_0}] #[fg=#cdd6f4,bg=#{@thm_surface_0}] #T #[fg=#11111b,bg=#{@thm_overlay_2}] #I 6 | window-status-current-format #[fg=#cdd6f4,bg=#{@thm_surface_1}] #[fg=#cdd6f4,bg=#{@thm_surface_1}] #T #[fg=#11111b,bg=#{@thm_mauve}] #I 7 | -------------------------------------------------------------------------------- /plugins/catppuccin/tmux/themes/catppuccin_frappe_tmux.conf: -------------------------------------------------------------------------------- 1 | # vim:set ft=tmux: 2 | 3 | # --> Catppuccin (Frappe) 4 | set -ogq @thm_bg "#303446" 5 | set -ogq @thm_fg "#c6d0f5" 6 | 7 | # Colors 8 | set -ogq @thm_rosewater "#f2d5cf" 9 | set -ogq @thm_flamingo "#eebebe" 10 | set -ogq @thm_rosewater "#f2d5cf" 11 | set -ogq @thm_pink "#f4b8e4" 12 | set -ogq @thm_mauve "#ca9ee6" 13 | set -ogq @thm_red "#e78284" 14 | set -ogq @thm_maroon "#ea999c" 15 | set -ogq @thm_peach "#ef9f76" 16 | set -ogq @thm_yellow "#e5c890" 17 | set -ogq @thm_green "#a6d189" 18 | set -ogq @thm_teal "#81c8be" 19 | set -ogq @thm_sky "#99d1db" 20 | set -ogq @thm_sapphire "#85c1dc" 21 | set -ogq @thm_blue "#8caaee" 22 | set -ogq @thm_lavender "#babbf1" 23 | 24 | # Surfaces and overlays 25 | set -ogq @thm_subtext_1 "#a5adce" 26 | set -ogq @thm_subtext_0 "#b5bfe2" 27 | set -ogq @thm_overlay_2 "#949cbb" 28 | set -ogq @thm_overlay_1 "#838ba7" 29 | set -ogq @thm_overlay_0 "#737994" 30 | set -ogq @thm_surface_2 "#626880" 31 | set -ogq @thm_surface_1 "#51576d" 32 | set -ogq @thm_surface_0 "#414559" 33 | set -ogq @thm_mantle "#292c3c" 34 | set -ogq @thm_crust "#232634" 35 | 36 | -------------------------------------------------------------------------------- /plugins/catppuccin/tmux/themes/catppuccin_latte_tmux.conf: -------------------------------------------------------------------------------- 1 | # vim:set ft=tmux: 2 | 3 | # --> Catppuccin (Latte) 4 | set -ogq @thm_bg "#eff1f5" 5 | set -ogq @thm_fg "#4c4f69" 6 | 7 | # Colors 8 | set -ogq @thm_rosewater "#dc8a78" 9 | set -ogq @thm_flamingo "#dd7878" 10 | set -ogq @thm_rosewater "#dc8a78" 11 | set -ogq @thm_pink "#ea76cb" 12 | set -ogq @thm_mauve "#8839ef" 13 | set -ogq @thm_red "#d20f39" 14 | set -ogq @thm_maroon "#e64553" 15 | set -ogq @thm_peach "#fe640b" 16 | set -ogq @thm_yellow "#df8e1d" 17 | set -ogq @thm_green "#40a02b" 18 | set -ogq @thm_teal "#179299" 19 | set -ogq @thm_sky "#04a5e5" 20 | set -ogq @thm_sapphire "#209fb5" 21 | set -ogq @thm_blue "#1e66f5" 22 | set -ogq @thm_lavender "#7287fd" 23 | 24 | # Surfaces and overlays 25 | set -ogq @thm_subtext_1 "#6c6f85" 26 | set -ogq @thm_subtext_0 "#5c5f77" 27 | set -ogq @thm_overlay_2 "#7c7f93" 28 | set -ogq @thm_overlay_1 "#8c8fa1" 29 | set -ogq @thm_overlay_0 "#9ca0b0" 30 | set -ogq @thm_surface_2 "#acb0be" 31 | set -ogq @thm_surface_1 "#bcc0cc" 32 | set -ogq @thm_surface_0 "#ccd0da" 33 | set -ogq @thm_mantle "#e6e9ef" 34 | set -ogq @thm_crust "#dce0e8" 35 | 36 | -------------------------------------------------------------------------------- /plugins/catppuccin/tmux/themes/catppuccin_macchiato_tmux.conf: -------------------------------------------------------------------------------- 1 | # vim:set ft=tmux: 2 | 3 | # --> Catppuccin (Macchiato) 4 | set -ogq @thm_bg "#24273a" 5 | set -ogq @thm_fg "#cad3f5" 6 | 7 | # Colors 8 | set -ogq @thm_rosewater "#f4dbd6" 9 | set -ogq @thm_flamingo "#f0c6c6" 10 | set -ogq @thm_rosewater "#f4dbd6" 11 | set -ogq @thm_pink "#f5bde6" 12 | set -ogq @thm_mauve "#c6a0f6" 13 | set -ogq @thm_red "#ed8796" 14 | set -ogq @thm_maroon "#ee99a0" 15 | set -ogq @thm_peach "#f5a97f" 16 | set -ogq @thm_yellow "#eed49f" 17 | set -ogq @thm_green "#a6da95" 18 | set -ogq @thm_teal "#8bd5ca" 19 | set -ogq @thm_sky "#91d7e3" 20 | set -ogq @thm_sapphire "#7dc4e4" 21 | set -ogq @thm_blue "#8aadf4" 22 | set -ogq @thm_lavender "#b7bdf8" 23 | 24 | # Surfaces and overlays 25 | set -ogq @thm_subtext_1 "#a5adcb" 26 | set -ogq @thm_subtext_0 "#b8c0e0" 27 | set -ogq @thm_overlay_2 "#939ab7" 28 | set -ogq @thm_overlay_1 "#8087a2" 29 | set -ogq @thm_overlay_0 "#6e738d" 30 | set -ogq @thm_surface_2 "#5b6078" 31 | set -ogq @thm_surface_1 "#494d64" 32 | set -ogq @thm_surface_0 "#363a4f" 33 | set -ogq @thm_mantle "#1e2030" 34 | set -ogq @thm_crust "#181926" 35 | 36 | -------------------------------------------------------------------------------- /plugins/catppuccin/tmux/themes/catppuccin_mocha_tmux.conf: -------------------------------------------------------------------------------- 1 | # vim:set ft=tmux: 2 | 3 | # --> Catppuccin (Mocha) 4 | set -ogq @thm_bg "#1e1e2e" 5 | set -ogq @thm_fg "#cdd6f4" 6 | 7 | # Colors 8 | set -ogq @thm_rosewater "#f5e0dc" 9 | set -ogq @thm_flamingo "#f2cdcd" 10 | set -ogq @thm_rosewater "#f5e0dc" 11 | set -ogq @thm_pink "#f5c2e7" 12 | set -ogq @thm_mauve "#cba6f7" 13 | set -ogq @thm_red "#f38ba8" 14 | set -ogq @thm_maroon "#eba0ac" 15 | set -ogq @thm_peach "#fab387" 16 | set -ogq @thm_yellow "#f9e2af" 17 | set -ogq @thm_green "#a6e3a1" 18 | set -ogq @thm_teal "#94e2d5" 19 | set -ogq @thm_sky "#89dceb" 20 | set -ogq @thm_sapphire "#74c7ec" 21 | set -ogq @thm_blue "#89b4fa" 22 | set -ogq @thm_lavender "#b4befe" 23 | 24 | # Surfaces and overlays 25 | set -ogq @thm_subtext_1 "#a6adc8" 26 | set -ogq @thm_subtext_0 "#bac2de" 27 | set -ogq @thm_overlay_2 "#9399b2" 28 | set -ogq @thm_overlay_1 "#7f849c" 29 | set -ogq @thm_overlay_0 "#6c7086" 30 | set -ogq @thm_surface_2 "#585b70" 31 | set -ogq @thm_surface_1 "#45475a" 32 | set -ogq @thm_surface_0 "#313244" 33 | set -ogq @thm_mantle "#181825" 34 | set -ogq @thm_crust "#11111b" 35 | 36 | -------------------------------------------------------------------------------- /plugins/catppuccin/tmux/tmux.tera: -------------------------------------------------------------------------------- 1 | --- 2 | whiskers: 3 | version: "2.1.1" 4 | matrix: 5 | - flavor 6 | filename: "themes/catppuccin_{{flavor.identifier}}_tmux.conf" 7 | --- 8 | {%- set palette = flavor.colors -%} 9 | # vim:set ft=tmux: 10 | 11 | # --> Catppuccin ({{ flavor.identifier | capitalize }}) 12 | set -ogq @thm_bg "#{{ palette.base.hex | lower }}" 13 | set -ogq @thm_fg "#{{ palette.text.hex | lower }}" 14 | 15 | # Colors 16 | set -ogq @thm_rosewater "#{{ palette.rosewater.hex | lower }}" 17 | set -ogq @thm_flamingo "#{{ palette.flamingo.hex | lower }}" 18 | set -ogq @thm_rosewater "#{{ palette.rosewater.hex | lower }}" 19 | set -ogq @thm_pink "#{{ palette.pink.hex | lower }}" 20 | set -ogq @thm_mauve "#{{ palette.mauve.hex | lower }}" 21 | set -ogq @thm_red "#{{ palette.red.hex | lower }}" 22 | set -ogq @thm_maroon "#{{ palette.maroon.hex | lower }}" 23 | set -ogq @thm_peach "#{{ palette.peach.hex | lower }}" 24 | set -ogq @thm_yellow "#{{ palette.yellow.hex | lower }}" 25 | set -ogq @thm_green "#{{ palette.green.hex | lower }}" 26 | set -ogq @thm_teal "#{{ palette.teal.hex | lower }}" 27 | set -ogq @thm_sky "#{{ palette.sky.hex | lower }}" 28 | set -ogq @thm_sapphire "#{{ palette.sapphire.hex | lower }}" 29 | set -ogq @thm_blue "#{{ palette.blue.hex | lower }}" 30 | set -ogq @thm_lavender "#{{ palette.lavender.hex | lower }}" 31 | 32 | # Surfaces and overlays 33 | set -ogq @thm_subtext_1 "#{{ palette.subtext0.hex | lower }}" 34 | set -ogq @thm_subtext_0 "#{{ palette.subtext1.hex | lower }}" 35 | set -ogq @thm_overlay_2 "#{{ palette.overlay2.hex | lower }}" 36 | set -ogq @thm_overlay_1 "#{{ palette.overlay1.hex | lower }}" 37 | set -ogq @thm_overlay_0 "#{{ palette.overlay0.hex | lower }}" 38 | set -ogq @thm_surface_2 "#{{ palette.surface2.hex | lower }}" 39 | set -ogq @thm_surface_1 "#{{ palette.surface1.hex | lower }}" 40 | set -ogq @thm_surface_0 "#{{ palette.surface0.hex | lower }}" 41 | set -ogq @thm_mantle "#{{ palette.mantle.hex | lower }}" 42 | set -ogq @thm_crust "#{{ palette.crust.hex | lower }}" 43 | 44 | -------------------------------------------------------------------------------- /plugins/catppuccin/tmux/utils/status_module.conf: -------------------------------------------------------------------------------- 1 | # vim:set ft=tmux: 2 | 3 | # Embedded style that ensures that modules look "connected" 4 | # when required. 5 | set -gqF @_ctp_connect_style \ 6 | "#{?#{==:#{@catppuccin_status_connect_separator},yes},,#[bg=default]}" 7 | 8 | # There are four colors involved: 9 | # 10 | # - Icon 11 | # - fg: @catppuccin_status_[module]_icon_fg [default = crust] 12 | # - bg: @catppuccin_status_[module]_icon_bg [required] 13 | # - Text 14 | # - fg: @catppuccin_status_[module]_text_fg [default = foreground] 15 | # - bg: @catppuccin_status_[module]_text_bg [default = @catppuccin_status_module_text_bg] 16 | 17 | set -ogqF "@catppuccin_status_${MODULE_NAME}_icon_fg" "#{E:@thm_crust}" 18 | set -ogqF "@catppuccin_status_${MODULE_NAME}_text_fg" "#{E:@thm_fg}" 19 | 20 | %if "#{==:#{@catppuccin_status_${MODULE_NAME}_icon_bg},}" 21 | set -gqF "@catppuccin_status_${MODULE_NAME}_icon_bg" "#{@catppuccin_${MODULE_NAME}_color}" 22 | %endif 23 | 24 | %if "#{==:#{@catppuccin_status_${MODULE_NAME}_text_bg},}" 25 | set -gqF @_ctp_module_text_bg "#{E:@catppuccin_status_module_text_bg}" 26 | %else 27 | set -gqF @_ctp_module_text_bg "#{@catppuccin_status_${MODULE_NAME}_text_bg}" 28 | %endif 29 | 30 | set -gF "@catppuccin_status_${MODULE_NAME}" \ 31 | "#[fg=#{@catppuccin_status_${MODULE_NAME}_icon_bg}]#{@_ctp_connect_style}#{@catppuccin_status_left_separator}" 32 | 33 | set -agF "@catppuccin_status_${MODULE_NAME}" \ 34 | "#[fg=#{@catppuccin_status_${MODULE_NAME}_icon_fg},bg=#{@catppuccin_status_${MODULE_NAME}_icon_bg}]#{@catppuccin_${MODULE_NAME}_icon}" 35 | 36 | set -agF "@catppuccin_status_${MODULE_NAME}" \ 37 | "#{@catppuccin_status_middle_separator}" 38 | 39 | set -agF "@catppuccin_status_${MODULE_NAME}" \ 40 | "#[fg=#{@catppuccin_status_${MODULE_NAME}_text_fg},bg=#{@_ctp_module_text_bg}]" 41 | 42 | set -ag "@catppuccin_status_${MODULE_NAME}" "#{E:@catppuccin_${MODULE_NAME}_text}" 43 | 44 | set -agF "@catppuccin_status_${MODULE_NAME}" "#[fg=#{@_ctp_module_text_bg}]#{@_ctp_connect_style}#{@catppuccin_status_right_separator}" 45 | 46 | set -ug @_ctp_connect_style 47 | set -ug @_ctp_module_text_bg 48 | -------------------------------------------------------------------------------- /scripts/ide: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | tmux split-window -v -l 30% 3 | tmux split-window -h -l 66% 4 | tmux split-window -h -l 50% 5 | -------------------------------------------------------------------------------- /tmux.conf: -------------------------------------------------------------------------------- 1 | set -g default-terminal "tmux-256color" 2 | set -ag terminal-overrides ",xterm-256color:RGB" 3 | set-option -g status-position top 4 | set -g status-left "" 5 | set -g status-right "" 6 | 7 | # Enable using mouse 8 | #set-option -g mouse on 9 | 10 | source ~/.config/tmux/binding.conf 11 | source ~/.config/tmux/utility.conf 12 | 13 | # Setup catppucine theme 14 | set -g @catppuccin_flavor 'mocha' 15 | run ~/.config/tmux/plugins/catppuccin/tmux/catppuccin.tmux 16 | -------------------------------------------------------------------------------- /utility.conf: -------------------------------------------------------------------------------- 1 | # Display lazygit 2 | bind g display-popup -d '#{pane_current_path}' -w80% -h80% -E lazygit 3 | 4 | # Open IDE mode 5 | bind F12 run-shell 'sh ~/.config/tmux/scripts/ide' 6 | 7 | # Display file explorer 8 | bind o display-popup -d '#{pane_current_path}' -w80% -h80% -E mc 9 | bind O run-shell "open #{pane_current_path}" 10 | --------------------------------------------------------------------------------