First commit

This commit is contained in:
Guilhem Baccialone 2026-06-17 23:29:22 +02:00
commit 9499debf01
15 changed files with 1077 additions and 0 deletions

9
README.md Normal file
View file

@ -0,0 +1,9 @@
### DOTFILES
## Configuration
* Tools I use on my different machine
- alacritty
- fish
- helix
- mango
- zellij

11
alacritty/alacritty.toml Executable file
View file

@ -0,0 +1,11 @@
[general]
import = [
"~/.config/alacritty/dank.toml"
]
[scrolling]
history = 100000
[font]
normal = { family = "MesloLGS NF", style = "regular" }
size = 10

31
alacritty/dank-theme.toml Normal file
View file

@ -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'

20
fish/config.fish Normal file
View file

@ -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

56
helix/config.toml Normal file
View file

@ -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"

26
helix/languages.toml Normal file
View file

@ -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

304
mango/config.conf Normal file
View file

@ -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

0
mango/dms/binds.conf Normal file
View file

6
mango/dms/colors.conf Normal file
View file

@ -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

3
mango/dms/cursor.conf Normal file
View file

@ -0,0 +1,3 @@
# Auto-generated by DMS - do not edit manually
cursor_size=24
cursor_theme=Adwaita

7
mango/dms/layout.conf Normal file
View file

@ -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

0
mango/dms/outputs.conf Normal file
View file

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

10
mango/scripts/screenshot.sh Executable file
View file

@ -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

594
zellij/config.kdl Normal file
View file

@ -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: <RANDOM>
//
// 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 <your_regex_here>"
// 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