• Operand
  • odyssey, u hear?

gram: build

> ./config/nushell/session.nu

Lenses
(coming soon!)


source ./disc.nu

# 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 -y }

def "session choices" [] {
  ((ls ~/.config/zellij/session/ | get name) | path parse).stem
}

def "session choose" [] {
  ((session choices) ++ (sessions | get name)) | uniq | choose }

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 }
  zellij a -c $name options --default-layout $name
}

def "session record" [name?:string] {
  d -b nvme0n1p6; mkcd rec
  let name = if ($name == null) { session choose } else { $name }
  asciinema rec --command $"nu -e 'session hop ($name)'" $"session.(day).(cloc).($name).rec"
}

def "session play" [] { d -b nvme0n1p6; mkcd rec
  asciinema play ((ls).name | sort | choose) }

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