127 lines
4.1 KiB
Text
127 lines
4.1 KiB
Text
// this is my custom "system" layout, loosely based on the official
|
|
// zellij development layout - it's simplified for desktop use
|
|
// and allows me to remain in a single workspace even when I'm
|
|
// using a tiling window manager and am constrained to a single
|
|
// workspace. It provides default tabs for media, file browsing
|
|
// which should be everything that I need, but I may add more
|
|
// in the future
|
|
|
|
layout {
|
|
// define default tab layout
|
|
default_tab_template {
|
|
// tab bar on the top
|
|
pane size=1 borderless=true {
|
|
plugin location="zellij:tab-bar"
|
|
}
|
|
|
|
// child tabs and panes
|
|
children
|
|
|
|
// status bar on the bottom
|
|
pane size=2 borderless=true {
|
|
plugin location="zellij:status-bar"
|
|
}
|
|
}
|
|
|
|
// strider tab uses the strider plugin of zellij
|
|
// which is similar to neovim's nvimtree
|
|
// ...but slower and much less configurable
|
|
tab_template name="strider_tab" {
|
|
pane size=1 borderless=true {
|
|
plugin location="zellij:tab-bar"
|
|
}
|
|
|
|
// use the strider plugin on the left side of the screen
|
|
// to achieve a nvim-tree like layout on the left 15% of
|
|
// the terminal window - looks cool but is not flexible
|
|
pane split_direction="Vertical" {
|
|
pane size="15%" name="Filetree" {
|
|
plugin location="zellij:strider"
|
|
}
|
|
children
|
|
}
|
|
|
|
pane size=2 borderless=true {
|
|
plugin location="zellij:status-bar"
|
|
}
|
|
}
|
|
|
|
// define a template pane for the terminal
|
|
// this once again imitates the neovim layout
|
|
// by providing a terminal instance on the bottom
|
|
// 25% of the screen that enters the z shell when
|
|
// zellij starts - the exec duration for zsh matters
|
|
// here as it'll repeat for each "tab" that exists
|
|
pane_template name="term" {
|
|
// horizontal split to place the terminal
|
|
// on the bottom half of the screen like the
|
|
// toggleterm neovim plugin
|
|
pane split_direction="horizontal" {
|
|
children
|
|
pane command="fish" size="25%" name="Shell"
|
|
}
|
|
}
|
|
|
|
// create a "strider tab" for my system configuration
|
|
// which is a tab that utilizes the strider tab template
|
|
// that we have defined earlier, provides a file-tree
|
|
// view in my system config directory, and opens flake.nix
|
|
// with the $EDITOR variable - has focus, is the first tab
|
|
strider_tab name="nichts" cwd="~/projects/nichts" focus=true {
|
|
term split_direction="vertical" {
|
|
// FIXME: edit does not open the file from cwd
|
|
// instead opens a buffer named flake.nix in cwd
|
|
// which should be the original flake.nix
|
|
// but is not
|
|
pane edit="./flake.nix" name="Flake"
|
|
}
|
|
}
|
|
|
|
// regular vertical tab that will open btop automatically for
|
|
// viewing active processes in a standalone tab
|
|
// more utilities can go here if seen necessary
|
|
tab name="Processes" split_direction="vertical" {
|
|
pane {
|
|
// open btop in the home directory
|
|
// doesn't really matter where you open it
|
|
cwd "$HOME"
|
|
command "btop"
|
|
}
|
|
}
|
|
|
|
// the media tab opens musikcube, the TUI music player
|
|
// and pulsemixer for volume control across different
|
|
// audio devices - this is split horizontally so that
|
|
// the mixer covers less space on the screen, at the
|
|
// bottom 35% of the active tab
|
|
tab name="Media" split_direction="vertical" {
|
|
// run musikcube in the Music directory
|
|
// the CWD doesn't really matter as musikcube
|
|
// is capable of binding to mpd daemon but
|
|
// the music directory seemed suitable as
|
|
// the working directory for the player
|
|
pane split_direction="horizontal" name="Player" {
|
|
pane {
|
|
cwd "$HOME/Nextcloud/Media/Music"
|
|
command "ncmpcpp"
|
|
}
|
|
}
|
|
|
|
// standalone pane for pulsemixer
|
|
pane split_direction="horizontal" name="Mixer" {
|
|
pane size="35%" {
|
|
command "pulsemixer"
|
|
}
|
|
}
|
|
}
|
|
|
|
// The last tab is a file browser that opens in the home directory
|
|
// so that I may freely browse my files and open them using the XDG
|
|
// specs when yazi can handle the file type.
|
|
tab name="Files" split_direction="horizontal" name="Files" {
|
|
pane {
|
|
cwd "$HOME"
|
|
command "yazi"
|
|
}
|
|
}
|
|
}
|