dex() { clear local container container=$( docker ps --format '{{.Names}}\t{{.Image}}\t{{.Status}}' | sort | fzf \ --delimiter=$'\t' \ --with-nth=1,2,3 \ --header=$'Ctrl-I: Inspect | Ctrl-L: Logs | Ctrl-R: Refresh | ?: Toggle Preview\n\nNAME\tIMAGE\tSTATUS' \ --tabstop=4 \ --height=100% \ --layout=reverse \ --border=rounded \ --info=inline-right \ --prompt='🐳 Container > ' \ --pointer='▶' \ --marker='✓' \ --preview 'docker logs -f --tail=50 {1} 2>&1' \ --preview-label=' Logs ' \ --preview-window='right,65%,follow,border-left,wrap' \ --bind 'ctrl-r:reload(docker ps --format "{{.Names}}\t{{.Image}}\t{{.Status}}" | sort)' \ --bind 'ctrl-u:preview-half-page-up' \ --bind 'ctrl-d:preview-half-page-down' \ --bind '?:toggle-preview' \ --bind 'ctrl-l:change-preview(docker logs -f --tail=50 {1} 2>&1)+change-preview-label(Logs)' \ --bind 'ctrl-i:change-preview( docker inspect --format " Name: {{.Name}} Image: {{.Config.Image}} Status: {{.State.Status}} Running: {{.State.Running}} Started: {{.State.StartedAt}} Finished: {{.State.FinishedAt}} PID: {{.State.Pid}} Exit Code: {{.State.ExitCode}} Networks: {{range .NetworkSettings.Networks}} • {{.IPAddress}} {{end}} Mounts: {{range .Mounts}} • {{.Source}} -> {{.Destination}} {{end}} " {1} )+change-preview-label(Inspect)' | cut -f1 ) || return docker exec -it "$container" sh -c ' for shell in bash ash zsh sh; do command -v "$shell" >/dev/null 2>&1 && exec "$shell" done echo "No suitable shell found." >&2 exit 1 ' }