• Operand
  • # (b)ring mi - belles.

gram:build

> ./config/nushell/session.nu

Lenses
(coming soon!)


# session manager: zellij
# https://zellij.dev
def "sessions" [] { zellij list-sessions | columnar | reject column1 | rename name age bind }
def recess [] { session end; sessions; }

def "session end" [] { zellij da }

def "session choose" [] {
  ((ls ~/.config/zellij/session/ | get name) ++ (sessions | get name)) |
  each {|l| basename $l '.kdl' } |
  uniq | str join "\n" | fzf }

def "session running" []: nothing -> bool {
  $env | items {|k,s| $k} | any {|k| $k == ZELLIJ } }

def "session name" [name?:string]: nothing -> string {
  if ($name != null) { $name } else { basename $env.PWD | tr . _ } | str trim }

def "session has" [name?:string]: nothing -> bool {
  (session name $name) in (sessions).name }

def "session hop" [name?:string] {
  let name = if ($name == null) { session choose } else { $name }
  if (session has $name) {
    zellij attach $name
  } else {
    let schema = if ($"~/.config/zellij/session/($name).kdl" | path expand | path exists) {
      [ -l $name ] } else {[]}
    zellij ...($schema) -s $name
} }

def "session record" [name?:string] {
  # let name = if ($name == null) { session choose } else { $name }
  asciinema rec --command $"nu -e 'session hop ($name)'" $"($env.HOME)/rec/session.run.($name).(clock | str trim).rec" }

def hop [name?:string] { session hop $name }