{ ... }: { text = '' # Attach/create container box in current directory with specified name. # By default uses current dir name. # Usage: ca [NAME] function ca() { local name="''${1}" # Set default name. # [[ "''${name}" = "" ]] && name="main" [[ "''${name}" = "" ]] && name=$(parse_alnum "''${PWD##*/}") # Append box prefix. name="box-''${name}" # Create container. docker run \ --privileged \ -d -it \ -h "''${HOSTNAME}''${name#box}" --name "''${name}" \ --workdir /data \ -e XDG_RUNTIME_DIR=/tmp \ -e WAYLAND_DISPLAY=''${WAYLAND_DISPLAY} \ -v ''${XDG_RUNTIME_DIR}/''${WAYLAND_DISPLAY}:/tmp/''${WAYLAND_DISPLAY} \ -v ''${PWD}:/data \ -v ''${HOME}:/root \ debian:latest bash -c bash &> /dev/null # Attempt to start container. docker start "''${name}" &> /dev/null # Attach to running container. docker attach "''${name}" } # Remove container box with specified name. # By default uses current dir name. # Usage: ck [NAME] function ck() { local name="''${1}" # Set default name. [[ "''${name}" = "" ]] && name=$(parse_alnum "''${PWD##*/}") # Append box prefix. name="box-''${name}" # Kill container. docker kill "''${name}" &> /dev/null docker rm "''${name}" &> /dev/null } # Remove all container boxes. function cka() { local IFS=$'\n' local boxes=$(_get_boxes) for box in ''${boxes[@]}; do ck "''${box}" done } # List all container boxes. function cl() { _get_boxes } # Print all boxes. function _get_boxes() { local IFS=$'\n' local boxes=$(docker ps -a | grep "box-" | sed -e "s/.*box-//") [[ "''${boxes[@]}" != "" ]] && echo "''${boxes[@]}" || true } # Autocomplete with boxes. function _comp_get_boxes() { local IFS=$'\n' _autocomplete_first $(_get_boxes) } complete -F _comp_get_boxes ca ck ''; }