Skip to content

2KAbhishek/tmux-tilit

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

81 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

License People Stars Forks Watches Last Updated

Better tiling for tmux πŸͺŸπŸͺ“

tmux-tilit Demo
tmux-tilit screenshot

What is this

tmux-tilit brings tiling window manager features and intuitive keybindings to your tmux workflows, boosting your productivity like never before.

Features

  • Intuitive Tiling Management: Split and arrange panes, layouts, workspaces with intuitive keybindings similar to tiling window managers
  • Vim/Neovim Integration: Seamless navigation between vim/neovim splits and tmux panes with Navigator support
  • External Tools: Integration with utilities like lazygit, extrakto for text grabbing and tdo for notes management
  • Session Management: Integration with tea for session management
  • Prefix Mode: Optional prefix mode for compatibility with window managers that use Alt as default modifier
  • International Keyboard Support: Configurable shift+number mappings for different keyboard layouts

Prerequisites

Before you begin, ensure you have met the following requirements:

  • You have installed the latest version of tmux (>= 3.0) and tpm.

Installing tmux-tilit

To get tmux-tilit, add the following to your tmux.conf:

set -g @plugin '2kabhishek/tmux-tilit'

Using tmux-tilit

Keybindings

Keybinding Action
Alt + ` Last active window
Alt + , Rename current window
Alt + / Horizontal Split
Alt + </kbd> Vertical Split
Alt + [ or ] Focus prev/next window
Alt + - / = Increase / Decrease width
Alt + ←/↓/↑/β†’ Resize pane in direction
Alt + 0-9 Switch to window 0-9
Alt + Enter Create a new pane
Alt + Shift + 0-9 Move pane to window 0-9
Alt + Shift + C Customize mode
Alt + Shift + D Detach
Alt + Shift + E Layout: Even Horizontal
Alt + Shift + H/J/K/L Move pane in direction
Alt + Shift + I Open tilit keybindings
Alt + Shift + M Layout: Main Horizontal
Alt + Shift + R Rotate window
Alt + Shift + T Layout: Tiled
Alt + Shift + X Close window
Alt + a Command mode
Alt + b Toggle status bar
Alt + c Edit config
Alt + d Run launcher, dexe
Alt + e Layout: Even Vertical
Alt + f Text grab, extrakto
Alt + g Open lazygit
Alt + h/j/k/l Focus pane in direction
Alt + i Synchronize pane inputs
Alt + m Layout: Main Vertical
Alt + n Show daily todos tdo
Alt + N Search all notes tdo
Alt + o Open floating terminal
Alt + p Last active pane
Alt + q Close session
Alt + r Reload config
Alt + s Switch between all panse
Alt + t Session manager tea
Alt + T Show all pending tdo
Alt + w Move pane to new window
Alt + x Close pane
Alt + y Copy mode
Alt + z Layout: Zoom
Shift + ←/β†’ Focus prev/next window

Prefix Bindings

tmux-tilit sets up keybindings that work with the tmux prefix key:

Keybinding Action
H/J/K/L Resize pane in direction
r Reload config

Default prefix key is Ctrl + b, I recommend Ctrl + a

You can remap the prefix key by adding this to your tmux.conf:

# Change prefix
set -g prefix C-a
bind C-a send-prefix

Copy Mode Bindings

Enable copy mode by pressing Alt + y:

This mode supports vi navigation keys by default

Keybinding Action
y Copy
Ctrl + v Toggle block/rectangle mode
v Start selection
V Line selection

Customizing tmux-tilit

easymode for arrow key navigation

To navigate using arrow keys, you can enable easy mode with: set -g @tilit-easymode 'on'

The revised keybindings for the pane focus and movement then become:

Keybinding Description
Alt + ←/↓/↑/β†’ Focus pane in direction
Alt + Shift + ←/↓/↑/β†’ Move pane in direction
Alt + h/j/k/l Resize pane in direction

layout for customizing default layout

You can set the default layout with set -g @tilit-default 'layout', this will be used when creating new windows or panes.

Available layouts are:

  • main-vertical
  • main-horizontal
  • tiled
  • even-vertical
  • even-horizontal

navigator for integrating with vim/neovim

To setup navigation with neovim install Navigator.nvim and for vim use vim-tmux-navigator

Then, in your ~/.tmux.conf add:

set -g @tilit-navigator 'on'

This will let you seamlessly navigate between vim/neovim splits and tmux panes with Ctrl + hjkl.

prefix for integrating with window managers

If your window manager uses Alt as default modifier, it's recommended to switch to Super or Meta for a smoother experience.

If you do not want to do that you can enable prefix mode and faster repeat-time in tmux:

set -g @tilit-prefix 'M-space'
set -g repeat-time 1000

This will let you hit Alt + Space and then a key to perform an action, repeat time lets you run more actions with a single prefix.

shiftnum for working with international keyboards

You can set the @tilit-shiftnum option to match your keyboard layout:

# US Keyboard
set -g @tilit-shiftnum '!@#$%^&*()'
# UK Keyboard
set -g @tilit-shiftnum '!"Β£$%^&*()'

How I built this

Major credits to tmux-tilish for the inspiration I wanted to add some new commands and integrations, make the keybindings match better with tmux defaults.

Challenges faced

Making sure the keybindings work across different command line programs and environments was challenging.

What I learned

  • Learned more about the tmux api.

What's next

You tell me!

Hit the ⭐ button if you found this useful.

🧰 Tooling

  • dots2k β€” Dev Environment
  • nvim2k β€” Personalized Editor
  • sway2k β€” Desktop Environment
  • qute2k β€” Personalized Browser

πŸ” More Info

  • tmux-tea β€” Simple and powerful tmux session manager
  • tmux2k β€” Makes your tmux statusbar pretty!

About

Better tiling for tmux πŸͺŸπŸͺ“

Topics

Resources

License

Code of conduct

Stars

Watchers

Forks

Releases

No releases published

Sponsor this project

  •  

Packages

No packages published

Languages