diff --git a/.config/pacman/arch-packages.txt b/.config/pacman/arch-packages.txt index 929c6339..f194fc7b 100644 --- a/.config/pacman/arch-packages.txt +++ b/.config/pacman/arch-packages.txt @@ -249,4 +249,5 @@ yarn 1.22.22-1 yazi 0.2.4-1 zathura 0.5.5-2 zathura-pdf-mupdf 0.4.1-19 +zellij 0.39.2-4 zoxide 0.9.4-2 diff --git a/.config/zellij/.github/README.md b/.config/zellij/.github/README.md new file mode 100644 index 00000000..affa9d51 --- /dev/null +++ b/.config/zellij/.github/README.md @@ -0,0 +1,3 @@ +
diff --git a/.config/zellij/.github/title.png b/.config/zellij/.github/title.png new file mode 100644 index 00000000..3140d5e9 Binary files /dev/null and b/.config/zellij/.github/title.png differ diff --git a/.config/zellij/config.kdl b/.config/zellij/config.kdl new file mode 100644 index 00000000..f7257de9 --- /dev/null +++ b/.config/zellij/config.kdl @@ -0,0 +1,111 @@ +keybinds { + +} + +plugins { + tab-bar { path "tab-bar"; } + status-bar { path "status-bar"; } + strider { path "strider"; } + compact-bar { path "compact-bar"; } +} + +// Choose what to do when zellij receives SIGTERM, SIGINT, SIGQUIT or SIGHUP +// eg. when terminal window with an active zellij session is closed +// Options: +// - detach (Default) +// - quit +on_force_close "detach" + +// Send a request r a simplified ui (without arrow fonts) to plugins +// Options: +// - true +// - false (Default) +simplified_ui false + +// Choose the path to the default shell that zellij will use for opening new panes +// Default: $SHELL +// +// default_shell "fish" + +// Toggle between having pane frames around the panes +// Options: +// - true (default) +// - false +pane_frames true + +// Choose the theme that is specified in the themes section. +// Default: default +// theme "catppuccin-macchiato" +theme "default" + +// The name of the default layout to load on startup +// Default: "default" +default_layout "terminal" + +// Choose the mode that zellij uses when starting up. +// Default: normal +default_mode "normal" + +// Toggle enabling the mouse mode. +// On certain configurations, or terminals this could +// potentially interfere with copying text. +// Options: +// - true (default) +// - false +mouse_mode true + +// Configure the scroll back buffer size +// This is the number of lines zellij stores for each pane in the scroll back +// buffer. Excess number of lines are discarded in a FIFO fashion. +// Valid values: positive integers +// Default value: 10000 +// +// scroll_buffer_size 10000 + +// Provide a command to execute when copying text. The text will be piped to +// the stdin of the program to perform the copy. This can be used with +// terminal emulators which do not support the OSC 52 ANSI control sequence +// that will be used by default if this option is not set. +// Examples: +// +// copy_command "xclip -selection clipboard" // x11 +copy_command "wl-copy" // wayland +// copy_command "pbcopy" // osx + +// Choose the destination for copied text +// Allows using the primary selection buffer (on x11/wayland) instead of the system clipboard. +// Does not apply when using copy_command. +// Options: +// - system (default) +// - primary +copy_clipboard "system" + +// Enable or disable automatic copy (and clear) of selection when releasing mouse +// Default: true +copy_on_select true + +// Path to the default editor to use to edit pane scrollbuffer +// Default: $EDITOR or $VISUAL +// +// scrollback_editor "/usr/bin/vim" + +// When attaching to an existing session with other users, +// should the session be mirrored (true) +// or should each user have their own cursor (false) +// Default: false +// +// mirror_session true + +// The folder in which Zellij will look for layouts +// +// layout_dir "/path/to/my/layout_dir" + +// The folder in which Zellij will look for themes +// +// theme_dir "/path/to/my/theme_dir" + +ui { + pane_frames { + rounded_corners true + } + } diff --git a/.config/zellij/layouts/terminal.kdl b/.config/zellij/layouts/terminal.kdl new file mode 100644 index 00000000..9d2eabed --- /dev/null +++ b/.config/zellij/layouts/terminal.kdl @@ -0,0 +1,44 @@ +layout { + default_tab_template { + children + pane size=1 borderless=true { + plugin location="file:~/.config/zellij/plugins/zjstatus.wasm" { + format_left "{mode} #[fg=#8aadf4,bold]{session}" + format_center "{tabs}" + format_right "{command_git_branch} {datetime}" + format_space "" + + border_enabled "true" + border_char "─" + border_format "#[fg=#6C7086]{char}" + border_position "top" + + command_git_branch_command "git rev-parse --abbrev-ref HEAD" + command_git_branch_format "#[fg=blue] {stdout} " + command_git_branch_interval "10" + command_git_branch_rendermode "static" + + hide_frame_for_single_pane "true" + + mode_normal "#[bg=blue] " + mode_locked "#[bg=red] " + mode_pane "#[bg=green] " + mode_tab "#[bg=magenta] " + mode_search "#[bg=orange] " + mode_session "#[bg=yellow] " + mode_tmux "#[bg=cyan] " + + tab_normal "#[fg=#6e738d] {name} " + tab_active "#[fg=#939ab7,bold,italic] {name} " + tab_active_fullscreen "#[fg=#939ab7,bold,italic] {name} []" + + datetime "#[fg=#939ab7,bold] {format} " + datetime_format "%A, %d %b %Y %H:%M" + datetime_timezone "Europe/Madrid" + } + } + } + tab name="terminal" { + pane size="90%" + } +} diff --git a/.config/zellij/plugins/zjstatus.wasm b/.config/zellij/plugins/zjstatus.wasm new file mode 100644 index 00000000..26891167 Binary files /dev/null and b/.config/zellij/plugins/zjstatus.wasm differ diff --git a/.config/zellij/themes/default.kdl b/.config/zellij/themes/default.kdl new file mode 100644 index 00000000..a75ea6a8 --- /dev/null +++ b/.config/zellij/themes/default.kdl @@ -0,0 +1,15 @@ +themes { + default { + bg "#24273a" // Surface2 + fg "#b7bdf8" // Lavender + red "#ed8796" // Red + green "#a6da95" // Green + blue "#8aadf4" // Blue + yellow "#eed49f" // Yellow + magenta "#f5bde6" // Pink + orange "#f5a97f" // Peach + cyan "#91d7e3" // Sky + black "#1e2030" // Mantle + white "#cad3f5" // White + } +} diff --git a/.github/README.md b/.github/README.md index 134600ae..36a85753 100644 --- a/.github/README.md +++ b/.github/README.md @@ -130,6 +130,7 @@ Here is all the information about my setup: | --------------------------- | ------------------------------------------------------------------------------------------------ | | **Shell** | 💖 [fish](https://fishshell.com/) [:gear:](../.config/fish/) | | **Terminal Emulator** | 💖 [kitty](https://sw.kovidgoyal.net/kitty/) [:gear:](../.config/kitty/) | +| **Terminal Multiplexer** | [zellij](https://github.com/zellij-org/zellij) [:gear:](../.config/zellij/) | | **Shell Prompt** | [starship](https://starship.rs/) [:gear:](../.config/starship/) | | **Text Editor** | 💖 [neovim](https://neovim.io/) [:gear:](../.config/nvim/) | | **Shell History** | [atuin](https://github.com/atuinsh/atuin) [:gear:](../.config/atuin/) |