From 9499debf01e2bc1e49f9e7ab3c5cff70c9db5210 Mon Sep 17 00:00:00 2001 From: Guilhem Baccialone Date: Wed, 17 Jun 2026 23:29:22 +0200 Subject: [PATCH] First commit --- README.md | 9 + alacritty/alacritty.toml | 11 + alacritty/dank-theme.toml | 31 ++ fish/config.fish | 20 ++ helix/config.toml | 56 ++++ helix/languages.toml | 26 ++ mango/config.conf | 304 ++++++++++++++++++ mango/dms/binds.conf | 0 mango/dms/colors.conf | 6 + mango/dms/cursor.conf | 3 + mango/dms/layout.conf | 7 + mango/dms/outputs.conf | 0 mango/scripts/screenshot.png | Bin 0 -> 26445 bytes mango/scripts/screenshot.sh | 10 + zellij/config.kdl | 594 +++++++++++++++++++++++++++++++++++ 15 files changed, 1077 insertions(+) create mode 100644 README.md create mode 100755 alacritty/alacritty.toml create mode 100644 alacritty/dank-theme.toml create mode 100644 fish/config.fish create mode 100644 helix/config.toml create mode 100644 helix/languages.toml create mode 100644 mango/config.conf create mode 100644 mango/dms/binds.conf create mode 100644 mango/dms/colors.conf create mode 100644 mango/dms/cursor.conf create mode 100644 mango/dms/layout.conf create mode 100644 mango/dms/outputs.conf create mode 100644 mango/scripts/screenshot.png create mode 100755 mango/scripts/screenshot.sh create mode 100644 zellij/config.kdl diff --git a/README.md b/README.md new file mode 100644 index 0000000..555d541 --- /dev/null +++ b/README.md @@ -0,0 +1,9 @@ +### DOTFILES +## Configuration + +* Tools I use on my different machine +- alacritty +- fish +- helix +- mango +- zellij diff --git a/alacritty/alacritty.toml b/alacritty/alacritty.toml new file mode 100755 index 0000000..9feea3f --- /dev/null +++ b/alacritty/alacritty.toml @@ -0,0 +1,11 @@ +[general] +import = [ + "~/.config/alacritty/dank.toml" +] + +[scrolling] +history = 100000 + +[font] +normal = { family = "MesloLGS NF", style = "regular" } +size = 10 diff --git a/alacritty/dank-theme.toml b/alacritty/dank-theme.toml new file mode 100644 index 0000000..2331c74 --- /dev/null +++ b/alacritty/dank-theme.toml @@ -0,0 +1,31 @@ +[colors.primary] +background = '#0a0a15' +foreground = '#e6f0ff' + +[colors.selection] +text = '#e6f0ff' +background = '#cc5200' + +[colors.cursor] +text = '#0a0a15' +cursor = '#ff6600' + +[colors.normal] +black = '#0A0A15' +red = '#ff0c00' +green = '#2dff00' +yellow = '#ffd100' +blue = '#f26000' +magenta = '#762f00' +cyan = '#FF6600' +white = '#ffece0' + +[colors.bright] +black = '#a5968c' +red = '#ff483f' +green = '#6cff4c' +yellow = '#ffdf4c' +blue = '#ff7c26' +magenta = '#ff934c' +cyan = '#ffba8c' +white = '#fff7f2' diff --git a/fish/config.fish b/fish/config.fish new file mode 100644 index 0000000..021d54d --- /dev/null +++ b/fish/config.fish @@ -0,0 +1,20 @@ +if status is-interactive + # Commands to run in interactive sessions can go here + set -gx ZELLIJ_AUTO_EXIT true + eval (zellij setup --generate-auto-start fish | string collect) +end +set -gx EDITOR hx +set -gx SSH_AUTH_SOCK /run/user/1000/ssh-agent.socket + +alias ls eza +alias ll "ls -lh" +alias la "ls -laBg" + +fzf_configure_bindings --directory=\cf --variables=\e\cv --git_status=\cg --history=\ch --git_log=\cl +set fzf_diff_highlighter delta --paging=never --width=20 + +zoxide init fish | source + +# uv +fish_add_path "/home/gbaccialone/.local/bin" +fastfetch --config paleofetch.jsonc diff --git a/helix/config.toml b/helix/config.toml new file mode 100644 index 0000000..529e001 --- /dev/null +++ b/helix/config.toml @@ -0,0 +1,56 @@ +theme = "molokai" +# theme = "emacs" + +[editor] +line-number = "absolute" +cursorline = true +mouse = true +true-color = true +color-modes = true +bufferline = "multiple" +auto-save = true +shell=["zsh", "-c"] + +[editor.cursor-shape] +insert = "bar" +normal = "block" +select = "underline" + +[editor.file-picker] +hidden = false + +[editor.lsp] +display-messages = true +display-inlay-hints = true + +[editor.whitespace.render] +space = "none" +tab = "all" +newline = "none" + +[editor.whitespace.characters] +space = "·" +tab = "→" +tabpad = "·" +nbsp = "⍽" + +[editor.indent-guides] +render = true +character = "┆" +skip-levels = 1 + +[editor.statusline] +# right = ["diagnostics", "selections", "position-percentage", "file-encoding"] +left = ["mode", "spinner", "file-name", "total-line-numbers", "file-encoding"] +center = ["file-type"] +right = ["selections", "primary-selection-length", "position", "position-percentage", "spacer", "diagnostics", "workspace-diagnostics", "version-control"] + +[editor.soft-wrap] +enable = true +max-wrap = 25 # increase value to reduce forced mid-word wrapping +max-indent-retain = 0 +wrap-indicator = "" # set wrap-indicator to "" to hide it + +[editor.inline-diagnostics] +cursor-line = "hint" +other-lines = "error" diff --git a/helix/languages.toml b/helix/languages.toml new file mode 100644 index 0000000..16049c9 --- /dev/null +++ b/helix/languages.toml @@ -0,0 +1,26 @@ +[[language]] +name = "rust" +auto-format = true + +[language-server.rust-analyzer] +config = { check = { command = "clippy" } } + +[language-server.ruff] +command = "ruff" +args = ["server"] + +[[language]] +name = "python" +language-servers = [ "ruff", "pylsp" ] +auto-format = true + +[language-server.ruff.config.settings.lint] +select = ["E4", "E7"] +preview = true + +[language-server.ruff.config.settings.format] +preview = true + +[language-server.pylsp.config.pylsp] +plugins.ruff.enabled = true +plugins.black.enabled = true diff --git a/mango/config.conf b/mango/config.conf new file mode 100644 index 0000000..a61c28a --- /dev/null +++ b/mango/config.conf @@ -0,0 +1,304 @@ +# | Outputs Configuration | +# Configure your monitors here or in the DMS "Displays" settings. | https://mangowm.github.io/docs/configuration/monitors +# Run `wlr-randr` to get your monitors information. +# You will have to remove "#" and edit it for it to take effect. + +# monitorrule = name:DP-1, width:2560, height:1440, refresh:179.999, x:0, y:0, rr:0, vrr:1 + + +# Change your layout here for each workspace. +# tile, scroller, grid, deck, monocle, center_tile, vertical_tile, vertical_scroller +tagrule = id:1, layout_name:scroller +tagrule = id:2, layout_name:scroller +tagrule = id:3, layout_name:scroller +tagrule = id:4, layout_name:scroller +tagrule = id:5, layout_name:scroller +tagrule = id:6, layout_name:scroller +tagrule = id:7, layout_name:scroller +tagrule = id:8, layout_name:scroller +tagrule = id:9, layout_name:scroller + + +# | Environment Variables | +# Set your environment variables here. | https://mangowm.github.io/docs/configuration/basics#environment-variables + +# env = QT_QPA_PLATFORMTHEME,qt6ct +# env = QT_QPA_PLATFORMTHEME_QT6,qt6ct +env=QT_QPA_PLATFORM,wayland +env=ELECTRON_OZONE_PLATFORM_HINT,auto +env=QT_QPA_PLATFORMTHEME,gtk3 + +# | Input Devices | +# Configure your input devices here. | https://mangowm.github.io/docs/configuration/input + +xkb_rules_layout = fr +xkb_rules_variant=ergol + +# If you want to disable pointer acceleration, uncomment the lines below. +# accel_profile = 1 +# accel_speed = 0.2 + + +# | Layout | +# layouts | https://mangowm.github.io/docs/window-management/layouts + +# Scrolling layout settings. +scroller_structs = 40 +scroller_default_proportion = 0.5 +scroller_focus_center = 0 +scroller_prefer_center = 0 +scroller_prefer_overspread = 1 +edge_scroller_pointer_focus = 1 +scroller_default_proportion_single = 2.0 +scroller_proportion_preset = 0.5, 0.8, 1.0 + +# Master-Stack layout settings. +new_is_master = 1 +default_mfact = 0.55 +default_nmaster = 1 +smartgaps = 0 + + +# https://mangowm.github.io/docs/configuration/miscellaneous + +allow_tearing = 2 +# syncobj_enable = 1 +# xwayland-persistence = 1 + +drag_tile_to_tile = 1 + + +# | Look n Feel | +# theming | https://mangowm.github.io/docs/visuals + +gappih = 20 +gappiv = 20 +gappoh = 40 +gappov = 40 +borderpx = 4 +border_radius = 10 + +scratchpad_width_ratio = 0.8 +scratchpad_height_ratio = 0.9 + +rootcolor = 0x201b14ff +bordercolor = 0x444444ff +focuscolor = 0x47add6ff +maximizescreencolor = 0x47add6ff +urgentcolor = 0xad401fff +scratchpadcolor = 0x516c93ff +globalcolor = 0xb153a7ff +overlaycolor = 0x14a57cff + +cursor_theme = capitaine-cursors +cursor_size = 24 + +blur = 1 +blur_layer = 1 +blur_optimized = 1 +blur_params_num_passes = 2 +blur_params_radius = 4 +blur_params_noise = 0.04 +blur_params_brightness = 0.9 +blur_params_contrast = 0.9 +blur_params_saturation = 1.2 + +shadows = 0 +layer_shadows = 1 +shadow_only_floating = 0 +shadows_size = 10 +shadows_blur = 5 +shadows_position_x = 0 +shadows_position_y = 0 +shadowscolor = 0x000000ff + +animations = 1 +layer_animations = 1 +animation_type_open = zoom +animation_type_close = zoom +animation_fade_in = 1 +animation_fade_out = 1 +tag_animation_direction = 1 +zoom_initial_ratio = 0.1 +zoom_end_ratio = 0.5 +fadein_begin_opacity = 0.3 +fadeout_begin_opacity = 0.2 +animation_duration_move = 300 +animation_duration_open = 100 +animation_duration_tag = 300 +animation_duration_close = 400 +animation_duration_focus = 0 +animation_curve_open = 0.87, 0, 0.13, 1 +animation_curve_move = 0.46, 1.0, 0.29, 1 +animation_curve_tag = 0.46, 1.0, 0.29, 1 +animation_curve_close = 0.87, 0, 0.13, 1 +animation_curve_focus = 0.46, 1.0, 0.29, 1 +animation_curve_opafadeout = 0.5, 0.5, 0.5, 0.5 +animation_curve_opafadein = 0.46, 1.0, 0.29, 1 + + +# | Keybinds | +# Configure your keybinds here. | https://mangowm.github.io/docs/bindings/keys + +# Your favorite applications. +bind = SUPER, Return, spawn, alacritty +bind = SUPER, e, spawn, dolphin +bind = SUPER, b, spawn, firefox-bin + +# Please choose the text editor of your choice. +# bind = SUPER, x, spawn, alacritty -e hx + +# DMS specific keybinds. +bind = SUPER+CTRL, Return, spawn, dms ipc call spotlight toggle +bind = SUPER, c, spawn, dms ipc call clipboard toggle +bind = SUPER, m, spawn, dms ipc call processlist focusOrToggle +bind = SUPER, s, spawn, dms ipc call settings focusOrToggle +bind = SUPER, n, spawn, dms ipc call notifications toggle +bind = SUPER, w, spawn, dms ipc call dankdash wallpaper +bind = SUPER+SHIFT, q, spawn, dms ipc call powermenu toggle + +# Lockscreen +bind = SUPER+ALT, l, spawn, dms ipc call lock lock + +# Screenshots +bind = SUPER, p, spawn, ~/.config/mango/scripts/screenshot.sh + +# Reload config +bind = SUPER, r, reload_config + +# Audio controls +bind = NONE, XF86AudioRaiseVolume, spawn, dms ipc call audio increment 5 +bind = NONE, XF86AudioLowerVolume, spawn, dms ipc call audio decrement 5 +bind = NONE, XF86AudioMute, spawn, dms ipc call audio mute + +# Brightness controls +bind = NONE, XF86MonBrightnessUp, spawn, dms ipc call brightness increment 5 backlight:intel_backlight +bind = NONE, XF86MonBrightnessDown, spawn, dms ipc call brightness decrement 5 backlight:intel_backlight + +# bind=SUPER,space,spawn,qs -c noctalia-shell ipc call launcher toggle +# bind=SUPER,s,spawn,qs -c noctalia-shell ipc call controlCenter toggle +# bind=SUPER,comma,spawn,qs -c noctalia-shell ipc call settings toggle +# bind=NONE,XF86AudioRaiseVolume,spawn,qs -c noctalia-shell ipc call volume increase +# bind=NONE,XF86AudioLowerVolume,spawn,qs -c noctalia-shell ipc call volume decrease +# bind=NONE,XF86AudioMute,spawn,qs -c noctalia-shell ipc call volume muteOutput +# bind=NONE,XF86MonBrightnessUp,spawn,qs -c noctalia-shell ipc call brightness increase 5 backlight:intel_backlight +# bind=NONE,XF86MonBrightnessDown,spawn,qs -c noctalia-shell ipc call brightness decrease 5 backlight:intel_backlight + +bind = SUPER, q, killclient, + +# Switch window focus +bind = SUPER, Tab, focusstack, next +bind = SUPER, Left, focusdir, left +bind = SUPER, Right, focusdir, right +bind = SUPER, Up, focusdir, up +bind = SUPER, Down, focusdir, down + +# Swap window +bind = SUPER+SHIFT, Up, exchange_client, up +bind = SUPER+SHIFT, Down, exchange_client, down +bind = SUPER+SHIFT, Left, exchange_client, left +bind = SUPER+SHIFT, Right, exchange_client, right + +# Switch window status +bind = SUPER, g, toggleglobal, +bind = ALT, Tab, toggleoverview, +bind = SUPER, v, togglefloating, +bind = SUPER, f, togglemaximizescreen, +bind = SUPER+SHIFT, f, togglefullscreen, +bind = SUPER+ALT, f, togglefakefullscreen, +bind = SUPER, i, minimized, +bind = SUPER, o, toggleoverlay, +bind = SUPER+SHIFT, I, restore_minimized +bind = SUPER, z, toggle_scratchpad + +# Scroller layout +bind = SUPER+SHIFT, e, set_proportion, 1.0 +bind = SUPER, x, switch_proportion_preset, + +# Switch layout +bind = SUPER, l, switch_layout + +# Switch between workspaces +bind = SUPER, 1, view, 1, 0 +bind = SUPER, 2, view, 2, 0 +bind = SUPER, 3, view, 3, 0 +bind = SUPER, 4, view, 4, 0 +bind = SUPER, 5, view, 5, 0 +bind = SUPER, 6, view, 6, 0 +bind = SUPER, 7, view, 7, 0 +bind = SUPER, 8, view, 8, 0 +bind = SUPER, 9, view, 9, 0 + +# Tag: move client to another workspace. +# Tagsilent: move client to another workspace but do not focus it. +# E.g bind = SUPER+SHIFT, 1, tagsilent, 1 +bind = SUPER+SHIFT ,1, tag, 1, 0 +bind = SUPER+SHIFT, 2, tag, 2, 0 +bind = SUPER+SHIFT, 3, tag, 3, 0 +bind = SUPER+SHIFT, 4, tag, 4, 0 +bind = SUPER+SHIFT, 5, tag, 5, 0 +bind = SUPER+SHIFT, 6, tag, 6, 0 +bind = SUPER+SHIFT, 7, tag, 7, 0 +bind = SUPER+SHIFT, 8, tag, 8, 0 +bind = SUPER+SHIFT, 9, tag, 9, 0 + +# Switch between monitors +bind = SUPER+ALT, Left, focusmon, left +bind = SUPER+ALT, Right, focusmon, right +# Move window to another monitor +bind = SUPER+ALT, Left, tagmon, left +bind = SUPER+ALT, Right, tagmon, right + +# Gaps +bind = SUPER+SHIFT, X, incgaps, 1 +bind = SUPER+SHIFT, Z, incgaps, -1 +bind = SUPER+SHIFT, R, togglegaps + +# Movewin +bind = CTRL+SHIFT, Up, movewin, +0, -50 +bind = CTRL+SHIFT, Down, movewin, +0, +50 +bind = CTRL+SHIFT, Left, movewin, -50,+0 +bind = CTRL+SHIFT, Right, movewin, +50,+0 + +# Resizewin +bind = CTRL+ALT, Up, resizewin, +0, -50 +bind = CTRL+ALT, Down, resizewin, +0, +50 +bind = CTRL+ALT, Left, resizewin, -50, +0 +bind = CTRL+ALT, Right, resizewin, +50, +0 + +# Mouse Button Bindings. +# btn_left and btn_right can't bind none mod key +mousebind = SUPER, btn_left, moveresize,curmove +mousebind = NONE, btn_middle, togglemaximizescreen, 0 +mousebind = SUPER, btn_right, moveresize, curresize + + +# | Rules | +# Window/Tag/Layer rules. | https://mangowm.github.io/docs/window-management/rules + +windowrule = isfloating:1, appid:[Ss]team +windowrule = isfloating:0, title:Steam +windowrule = isfloating:1, appid:steam, title:Steam Settings + +layerrule = noanim:1, noblur:1, layer_name:selection + +source=~/.config/mango/dms/colors.conf +source=~/.config/mango/dms/layout.conf +source=~/.config/mango/dms/outputs.conf +source=./dms/cursor.conf + +# autostart your favorite applications here + +exec-once = sleep 1 && gentoo-pipewire-launcher & +exec-once = kdeconnectd +# exec-once = qs -c noctalia-shell +exec-once = dms run +exec-once = bash -c wl-paste --watch cliphist store & # optional: clipboard history | cliphist is needed +exec-once = ssh-agent -a /run/user/1000/ssh-agent.socket & +exec-once = /usr/lib/xdg-desktop-portal-wlr & +exec-once = discord --start-minimized & + +source=./dms/cursor.conf + +source=./dms/outputs.conf +source = ./dms/binds.conf diff --git a/mango/dms/binds.conf b/mango/dms/binds.conf new file mode 100644 index 0000000..e69de29 diff --git a/mango/dms/colors.conf b/mango/dms/colors.conf new file mode 100644 index 0000000..0151676 --- /dev/null +++ b/mango/dms/colors.conf @@ -0,0 +1,6 @@ +# ! Auto-generated file. Do not edit directly. +# Remove source = ./dms/colors.conf from your config to override. + +bordercolor = 0x4d80ffff +focuscolor = 0xff6600ff +urgentcolor = 0xff3366ff diff --git a/mango/dms/cursor.conf b/mango/dms/cursor.conf new file mode 100644 index 0000000..d4e2492 --- /dev/null +++ b/mango/dms/cursor.conf @@ -0,0 +1,3 @@ +# Auto-generated by DMS - do not edit manually +cursor_size=24 +cursor_theme=Adwaita diff --git a/mango/dms/layout.conf b/mango/dms/layout.conf new file mode 100644 index 0000000..61ff92e --- /dev/null +++ b/mango/dms/layout.conf @@ -0,0 +1,7 @@ +# Auto-generated by DMS - do not edit manually +border_radius=12 +gappih=28 +gappiv=28 +gappoh=28 +gappov=28 +borderpx=3 diff --git a/mango/dms/outputs.conf b/mango/dms/outputs.conf new file mode 100644 index 0000000..e69de29 diff --git a/mango/scripts/screenshot.png b/mango/scripts/screenshot.png new file mode 100644 index 0000000000000000000000000000000000000000..6ba1d01f08e0822715b98fe29bb0df4706a435f2 GIT binary patch literal 26445 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 T-kF4O^bJ5=MMt?-5&HIjthb=k literal 0 HcmV?d00001 diff --git a/mango/scripts/screenshot.sh b/mango/scripts/screenshot.sh new file mode 100755 index 0000000..2ff5331 --- /dev/null +++ b/mango/scripts/screenshot.sh @@ -0,0 +1,10 @@ +#!/usr/bin/env bash +# +DIR="$HOME/Pictures/Screenshots" +mkdir -p "$DIR" + +FILE="$DIR/screenshot_$(date +'%Y-%m-%d_%H-%M-%S').png" + +grim -g "$(slurp)" - | tee "$FILE" | wl-copy + +notify-send "Screenshot Captured" "Saved to $FILE" -i $HOME/.config/mango/scripts/screenshot.png diff --git a/zellij/config.kdl b/zellij/config.kdl new file mode 100644 index 0000000..5c95b67 --- /dev/null +++ b/zellij/config.kdl @@ -0,0 +1,594 @@ +// +// THIS FILE WAS AUTOGENERATED BY ZELLIJ, THE PREVIOUS FILE AT THIS LOCATION WAS COPIED TO: /home/guiglin/.config/zellij/config.kdl.bak.1 +// + +keybinds clear-defaults=true { + locked { + bind "Ctrl g" { SwitchToMode "normal"; } + } + pane { + bind "left" { MoveFocus "left"; } + bind "down" { MoveFocus "down"; } + bind "up" { MoveFocus "up"; } + bind "right" { MoveFocus "right"; } + bind "c" { SwitchToMode "renamepane"; PaneNameInput 0; } + bind "d" { NewPane "down"; SwitchToMode "normal"; } + bind "e" { TogglePaneEmbedOrFloating; SwitchToMode "normal"; } + bind "f" { ToggleFocusFullscreen; SwitchToMode "normal"; } + bind "h" { MoveFocus "left"; } + bind "i" { TogglePanePinned; SwitchToMode "normal"; } + bind "j" { MoveFocus "down"; } + bind "k" { MoveFocus "up"; } + bind "l" { MoveFocus "right"; } + bind "n" { NewPane; SwitchToMode "normal"; } + bind "p" { SwitchFocus; } + bind "Ctrl p" { SwitchToMode "normal"; } + bind "r" { NewPane "right"; SwitchToMode "normal"; } + bind "s" { NewPane "stacked"; SwitchToMode "normal"; } + bind "w" { ToggleFloatingPanes; SwitchToMode "normal"; } + bind "z" { TogglePaneFrames; SwitchToMode "normal"; } + } + tab { + bind "left" { GoToPreviousTab; } + bind "down" { GoToNextTab; } + bind "up" { GoToPreviousTab; } + bind "right" { GoToNextTab; } + bind "1" { GoToTab 1; SwitchToMode "normal"; } + bind "2" { GoToTab 2; SwitchToMode "normal"; } + bind "3" { GoToTab 3; SwitchToMode "normal"; } + bind "4" { GoToTab 4; SwitchToMode "normal"; } + bind "5" { GoToTab 5; SwitchToMode "normal"; } + bind "6" { GoToTab 6; SwitchToMode "normal"; } + bind "7" { GoToTab 7; SwitchToMode "normal"; } + bind "8" { GoToTab 8; SwitchToMode "normal"; } + bind "9" { GoToTab 9; SwitchToMode "normal"; } + bind "[" { BreakPaneLeft; SwitchToMode "normal"; } + bind "]" { BreakPaneRight; SwitchToMode "normal"; } + bind "b" { BreakPane; SwitchToMode "normal"; } + bind "h" { GoToPreviousTab; } + bind "j" { GoToNextTab; } + bind "k" { GoToPreviousTab; } + bind "l" { GoToNextTab; } + bind "n" { NewTab; SwitchToMode "normal"; } + bind "r" { SwitchToMode "renametab"; TabNameInput 0; } + bind "s" { ToggleActiveSyncTab; SwitchToMode "normal"; } + bind "Ctrl t" { SwitchToMode "normal"; } + bind "x" { CloseTab; SwitchToMode "normal"; } + bind "tab" { ToggleTab; } + } + resize { + bind "left" { Resize "Increase left"; } + bind "down" { Resize "Increase down"; } + bind "up" { Resize "Increase up"; } + bind "right" { Resize "Increase right"; } + bind "+" { Resize "Increase"; } + bind "-" { Resize "Decrease"; } + bind "=" { Resize "Increase"; } + bind "H" { Resize "Decrease left"; } + bind "J" { Resize "Decrease down"; } + bind "K" { Resize "Decrease up"; } + bind "L" { Resize "Decrease right"; } + bind "h" { Resize "Increase left"; } + bind "j" { Resize "Increase down"; } + bind "k" { Resize "Increase up"; } + bind "l" { Resize "Increase right"; } + bind "Ctrl n" { SwitchToMode "normal"; } + } + move { + bind "left" { MovePane "left"; } + bind "down" { MovePane "down"; } + bind "up" { MovePane "up"; } + bind "right" { MovePane "right"; } + bind "h" { MovePane "left"; } + bind "Ctrl h" { SwitchToMode "normal"; } + bind "j" { MovePane "down"; } + bind "k" { MovePane "up"; } + bind "l" { MovePane "right"; } + bind "n" { MovePane; } + bind "p" { MovePaneBackwards; } + bind "tab" { MovePane; } + } + scroll { + bind "Alt left" { MoveFocusOrTab "left"; SwitchToMode "normal"; } + bind "Alt down" { MoveFocus "down"; SwitchToMode "normal"; } + bind "Alt up" { MoveFocus "up"; SwitchToMode "normal"; } + bind "Alt right" { MoveFocusOrTab "right"; SwitchToMode "normal"; } + bind "e" { EditScrollback; SwitchToMode "normal"; } + bind "Alt h" { MoveFocusOrTab "left"; SwitchToMode "normal"; } + bind "Alt j" { MoveFocus "down"; SwitchToMode "normal"; } + bind "Alt k" { MoveFocus "up"; SwitchToMode "normal"; } + bind "Alt l" { MoveFocusOrTab "right"; SwitchToMode "normal"; } + bind "s" { SwitchToMode "entersearch"; SearchInput 0; } + } + search { + bind "c" { SearchToggleOption "CaseSensitivity"; } + bind "n" { Search "down"; } + bind "o" { SearchToggleOption "WholeWord"; } + bind "p" { Search "up"; } + bind "w" { SearchToggleOption "Wrap"; } + } + session { + bind "a" { + LaunchOrFocusPlugin "zellij:about" { + floating true + move_to_focused_tab true + } + SwitchToMode "normal" + } + bind "c" { + LaunchOrFocusPlugin "configuration" { + floating true + move_to_focused_tab true + } + SwitchToMode "normal" + } + bind "l" { + LaunchOrFocusPlugin "zellij:layout-manager" { + floating true + move_to_focused_tab true + } + SwitchToMode "normal" + } + bind "Ctrl o" { SwitchToMode "normal"; } + bind "p" { + LaunchOrFocusPlugin "plugin-manager" { + floating true + move_to_focused_tab true + } + SwitchToMode "normal" + } + bind "s" { + LaunchOrFocusPlugin "zellij:share" { + floating true + move_to_focused_tab true + } + SwitchToMode "normal" + } + bind "w" { + LaunchOrFocusPlugin "session-manager" { + floating true + move_to_focused_tab true + } + SwitchToMode "normal" + } + } + shared_except "locked" { + bind "Alt +" { Resize "Increase"; } + bind "Alt -" { Resize "Decrease"; } + bind "Alt =" { Resize "Increase"; } + bind "Alt [" { PreviousSwapLayout; } + bind "Alt ]" { NextSwapLayout; } + bind "Alt f" { ToggleFloatingPanes; } + bind "Ctrl g" { SwitchToMode "locked"; } + bind "Alt i" { MoveTab "left"; } + bind "Alt n" { NewPane; } + bind "Alt o" { MoveTab "right"; } + bind "Alt p" { TogglePaneInGroup; } + bind "Alt Shift p" { ToggleGroupMarking; } + bind "Ctrl q" { Quit; } + } + shared_except "locked" "move" { + bind "Ctrl h" { SwitchToMode "move"; } + } + shared_except "locked" "session" { + bind "Ctrl o" { SwitchToMode "session"; } + } + shared_except "locked" "scroll" { + bind "Alt left" { MoveFocusOrTab "left"; } + bind "Alt down" { MoveFocus "down"; } + bind "Alt up" { MoveFocus "up"; } + bind "Alt right" { MoveFocusOrTab "right"; } + bind "Alt h" { MoveFocusOrTab "left"; } + bind "Alt j" { MoveFocus "down"; } + bind "Alt k" { MoveFocus "up"; } + bind "Alt l" { MoveFocusOrTab "right"; } + } + shared_except "locked" "scroll" "search" "tmux" { + bind "Ctrl b" { SwitchToMode "tmux"; } + } + shared_except "locked" "scroll" "search" { + bind "Ctrl s" { SwitchToMode "scroll"; } + } + shared_except "locked" "tab" { + bind "Ctrl t" { SwitchToMode "tab"; } + } + shared_except "locked" "pane" { + bind "Ctrl p" { SwitchToMode "pane"; } + } + shared_except "locked" "resize" { + bind "Ctrl n" { SwitchToMode "resize"; } + } + shared_except "normal" "locked" "entersearch" { + bind "enter" { SwitchToMode "normal"; } + } + shared_except "normal" "locked" "entersearch" "renametab" "renamepane" { + bind "esc" { SwitchToMode "normal"; } + } + shared_among "pane" "tmux" { + bind "x" { CloseFocus; SwitchToMode "normal"; } + } + shared_among "scroll" "search" { + bind "PageDown" { PageScrollDown; } + bind "PageUp" { PageScrollUp; } + bind "left" { PageScrollUp; } + bind "down" { ScrollDown; } + bind "up" { ScrollUp; } + bind "right" { PageScrollDown; } + bind "Ctrl b" { PageScrollUp; } + bind "Ctrl c" { ScrollToBottom; SwitchToMode "normal"; } + bind "d" { HalfPageScrollDown; } + bind "Ctrl f" { PageScrollDown; } + bind "h" { PageScrollUp; } + bind "j" { ScrollDown; } + bind "k" { ScrollUp; } + bind "l" { PageScrollDown; } + bind "Ctrl s" { SwitchToMode "normal"; } + bind "u" { HalfPageScrollUp; } + } + entersearch { + bind "Ctrl c" { SwitchToMode "scroll"; } + bind "esc" { SwitchToMode "scroll"; } + bind "enter" { SwitchToMode "search"; } + } + renametab { + bind "esc" { UndoRenameTab; SwitchToMode "tab"; } + } + shared_among "renametab" "renamepane" { + bind "Ctrl c" { SwitchToMode "normal"; } + } + renamepane { + bind "esc" { UndoRenamePane; SwitchToMode "pane"; } + } + shared_among "session" "tmux" { + bind "d" { Detach; } + } + tmux { + bind "left" { MoveFocus "left"; SwitchToMode "normal"; } + bind "down" { MoveFocus "down"; SwitchToMode "normal"; } + bind "up" { MoveFocus "up"; SwitchToMode "normal"; } + bind "right" { MoveFocus "right"; SwitchToMode "normal"; } + bind "space" { NextSwapLayout; } + bind "\"" { NewPane "down"; SwitchToMode "normal"; } + bind "%" { NewPane "right"; SwitchToMode "normal"; } + bind "," { SwitchToMode "renametab"; } + bind "[" { SwitchToMode "scroll"; } + bind "Ctrl b" { Write 2; SwitchToMode "normal"; } + bind "c" { NewTab; SwitchToMode "normal"; } + bind "h" { MoveFocus "left"; SwitchToMode "normal"; } + bind "j" { MoveFocus "down"; SwitchToMode "normal"; } + bind "k" { MoveFocus "up"; SwitchToMode "normal"; } + bind "l" { MoveFocus "right"; SwitchToMode "normal"; } + bind "n" { GoToNextTab; SwitchToMode "normal"; } + bind "o" { FocusNextPane; } + bind "p" { GoToPreviousTab; SwitchToMode "normal"; } + bind "z" { ToggleFocusFullscreen; SwitchToMode "normal"; } + } +} + +// Plugin aliases - can be used to change the implementation of Zellij +// changing these requires a restart to take effect +plugins { + about location="zellij:about" + compact-bar location="zellij:compact-bar" + configuration location="zellij:configuration" + filepicker location="zellij:strider" { + cwd "/" + } + plugin-manager location="zellij:plugin-manager" + session-manager location="zellij:session-manager" + status-bar location="zellij:status-bar" + strider location="zellij:strider" + tab-bar location="zellij:tab-bar" + welcome-screen location="zellij:session-manager" { + welcome_screen true + } +} + +// Plugins to load in the background when a new session starts +// eg. "file:/path/to/my-plugin.wasm" +// eg. "https://example.com/my-plugin.wasm" +load_plugins { + zellij:link +} +web_client { + font "monospace" +} + +// Use a simplified UI without special fonts (arrow glyphs) +// Options: +// - true +// - false (Default) +// +// simplified_ui true + +// Enable OSC8 hyperlink output +// Options: +// - true (Default) +// - false +// +// osc8_hyperlinks true + +// Choose the theme that is specified in the themes section. +// Default: default +// +theme "dracula" + +// Theme to use when the host terminal reports a dark color palette. +// Requires `theme_light` to also be set; otherwise `theme` is used. +// +// theme_dark "dracula" + +// Theme to use when the host terminal reports a light color palette. +// Requires `theme_dark` to also be set; otherwise `theme` is used. +// +// theme_light "solarized-light" + +// Choose the base input mode of zellij. +// Default: normal +// +default_mode "normal" + +// Choose the path to the default shell that zellij will use for opening new panes +// Default: $SHELL +// +// default_shell "fish" + +// Choose the path to override cwd that zellij will use for opening new panes +// +// default_cwd "/tmp" + +// The name of the default layout to load on startup +// Default: "default" +// +// default_layout "compact" + +// The folder in which Zellij will look for layouts +// (Requires restart) +// +// layout_dir "/tmp" + +// The folder in which Zellij will look for themes +// (Requires restart) +// +// theme_dir "/tmp" + +// Toggle enabling the mouse mode. +// On certain configurations, or terminals this could +// potentially interfere with copying text. +// Options: +// - true (default) +// - false +// +// mouse_mode false + +// Toggle having pane frames around the panes +// Options: +// - true (default, enabled) +// - false +// +// pane_frames false + +// When attaching to an existing session with other users, +// should the session be mirrored (true) +// or should each user have their own cursor (false) +// (Requires restart) +// Default: false +// +// mirror_session true + +// Choose what to do when zellij receives SIGTERM, SIGINT, SIGQUIT or SIGHUP +// eg. when terminal window with an active zellij session is closed +// (Requires restart) +// Options: +// - detach (Default) +// - quit +// +on_force_close "quit" + +// 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. +// (Requires restart) +// 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 +// +// copy_command "pbcopy" + +// 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 "primary" + +// Enable automatic copying (and clearing) 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" + +// A fixed name to always give the Zellij session. +// Consider also setting `attach_to_session true,` +// otherwise this will error if such a session exists. +// Default: +// +// session_name "My singleton session" + +// When `session_name` is provided, attaches to that session +// if it is already running or creates it otherwise. +// Default: false +// +// attach_to_session true + +// Toggle between having Zellij lay out panes according to a predefined set of layouts whenever possible +// Options: +// - true (default) +// - false +// +// auto_layout false + +// Whether sessions should be serialized to the cache folder (including their tabs/panes, cwds and running commands) so that they can later be resurrected +// Options: +// - true (default) +// - false +// +// session_serialization false + +// Whether pane viewports are serialized along with the session, default is false +// Options: +// - true +// - false (default) +// +// serialize_pane_viewport false + +// Scrollback lines to serialize along with the pane viewport when serializing sessions, 0 +// defaults to the scrollback size. If this number is higher than the scrollback size, it will +// also default to the scrollback size. This does nothing if `serialize_pane_viewport` is not true. +// +// scrollback_lines_to_serialize 10000 + +// Enable or disable the rendering of styled and colored underlines (undercurl). +// May need to be disabled for certain unsupported terminals +// (Requires restart) +// Default: true +// +// styled_underlines false + +// How often in seconds sessions are serialized +// +// serialization_interval 10000 + +// Enable or disable writing of session metadata to disk (if disabled, other sessions might not know +// metadata info on this session) +// (Requires restart) +// Default: false +// +// disable_session_metadata false + +// Enable or disable support for the enhanced Kitty Keyboard Protocol (the host terminal must also support it) +// (Requires restart) +// Default: true (if the host terminal supports it) +// +// support_kitty_keyboard_protocol false +// Whether to make sure a local web server is running when a new Zellij session starts. +// This web server will allow creating new sessions and attaching to existing ones that have +// opted in to being shared in the browser. +// When enabled, navigate to http://127.0.0.1:8082 +// (Requires restart) +// +// Note: a local web server can still be manually started from within a Zellij session or from the CLI. +// If this is not desired, one can use a version of Zellij compiled without +// `web_server_capability` +// +// Possible values: +// - true +// - false +// Default: false +// +// web_server false +// Whether to allow sessions started in the terminal to be shared through a local web server, assuming one is +// running (see the `web_server` option for more details). +// (Requires restart) +// +// Note: This is an administrative separation and not intended as a security measure. +// +// Possible values: +// - "on" (allow web sharing through the local web server if it +// is online) +// - "off" (do not allow web sharing unless sessions explicitly opt-in to it) +// - "disabled" (do not allow web sharing and do not permit sessions started in the terminal to opt-in to it) +// Default: "off" +// +// web_sharing "off" +// A path to a certificate file to be used when setting up the web client to serve the +// connection over HTTPs +// +// web_server_cert "/path/to/cert.pem" +// A path to a key file to be used when setting up the web client to serve the +// connection over HTTPs +// +// web_server_key "/path/to/key.pem" +/// Whether to enforce https connections to the web server when it is bound to localhost +/// (127.0.0.0/8) +/// +/// Note: https is ALWAYS enforced when bound to non-local interfaces +/// +/// Default: false +// +// enforce_https_for_localhost false + +// Whether to stack panes when resizing beyond a certain size +// Default: true +// +// stacked_resize false + +// Whether to show tips on startup +// Default: true +// +show_startup_tips false + +// Whether to show release notes on first version run +// Default: true +// +// show_release_notes false + +// Whether to enable mouse hover effects and pane grouping functionality +// default is true +// advanced_mouse_actions false + +// Whether to enable mouse hover visual effects (frame highlight and help text) +// default is true +// mouse_hover_effects false + +// Whether to show visual bell indicators (pane/tab frame flash and [!] suffix) +// default is true +// visual_bell true + +// Whether to focus panes on mouse hover +// default is false +// focus_follows_mouse false + +// Whether clicking a pane to focus it also sends the click into the pane +// default is false +// mouse_click_through false + +// The ip address the web server should listen on when it starts +// Default: "127.0.0.1" +// (Requires restart) +// web_server_ip "127.0.0.1" + +// The port the web server should listen on when it starts +// Default: 8082 +// (Requires restart) +// web_server_port 8082 + +// A command to run (will be wrapped with sh -c and provided the RESURRECT_COMMAND env variable) +// after Zellij attempts to discover a command inside a pane when resurrecting sessions, the STDOUT +// of this command will be used instead of the discovered RESURRECT_COMMAND +// can be useful for removing wrappers around commands +// Note: be sure to escape backslashes and similar characters properly +// post_command_discovery_hook "echo $RESURRECT_COMMAND | sed " + +// Number of async worker tasks to spawn per active client. +// +// Allocating few tasks may result in resource contention and lags. Small values (around 4) should +// typically work best. Set to 0 to use the number of (physical) CPU cores. +// Note: This only applies to web clients at the moment. +// client_async_worker_tasks 4