commit 9499debf01e2bc1e49f9e7ab3c5cff70c9db5210 Author: Guilhem Baccialone Date: Wed Jun 17 23:29:22 2026 +0200 First commit 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 0000000..6ba1d01 Binary files /dev/null and b/mango/scripts/screenshot.png differ 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