{"id":3487,"date":"2024-08-15T08:22:53","date_gmt":"2024-08-15T13:22:53","guid":{"rendered":"https:\/\/frontendmasters.com\/blog\/?p=3487"},"modified":"2024-08-15T08:22:54","modified_gmt":"2024-08-15T13:22:54","slug":"tuis","status":"publish","type":"post","link":"https:\/\/frontendmasters.com\/blog\/tuis\/","title":{"rendered":"TUIs"},"content":{"rendered":"\n<p>I mentioned <a href=\"https:\/\/frontendmasters.com\/blog\/lazygit\/\">lazygit<\/a> the other day, a project I find to have a tremendously well done interface for being entirely at the command line. As frustrated as I get with <a href=\"https:\/\/github.com\/tmux\/tmux\/wiki\">tmux<\/a> sometimes (the scrolling and the copying text, ughgkh), I still find it to be useful and impressive that &#8220;UI&#8221; can exist at all in the terminal. <\/p>\n\n\n\n<p>I&#8217;ve since seen <a href=\"https:\/\/github.com\/darrenburns\/posting\">Posting<\/a>, an API client, which also looks amazing. The <a href=\"https:\/\/charm.sh\/\">Charm<\/a> tools are pretty jaw dropping to me, which include stuff like <a href=\"https:\/\/github.com\/charmbracelet\/glow\">a Markdown app<\/a> and <a href=\"https:\/\/github.com\/charmbracelet\/pop\">email sender<\/a>. Turns out, there are <a href=\"https:\/\/github.com\/rothgar\/awesome-tuis?tab=readme-ov-file\">actually a ton of &#8220;TUI&#8221; apps<\/a>, collected here by Justin Garrison. <a href=\"https:\/\/github.com\/jorgerojas26\/lazysql\">An SQL client<\/a>, <a href=\"https:\/\/github.com\/anmitsu\/goful\">a file manager<\/a>, and <a href=\"https:\/\/github.com\/hzeller\/timg\">an image viewer<\/a>, are a few that caught my eye. <\/p>\n\n\n\n<!--more-->\n\n\n\n<div class=\"wp-block-jetpack-slideshow aligncenter is-style-rectangular\" data-effect=\"slide\"><div class=\"wp-block-jetpack-slideshow_container swiper-container\"><ul class=\"wp-block-jetpack-slideshow_swiper-wrapper swiper-wrapper\"><li class=\"wp-block-jetpack-slideshow_slide swiper-slide\"><figure><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"617\" alt=\"\" class=\"wp-block-jetpack-slideshow_image wp-image-3500\" data-id=\"3500\" src=\"https:\/\/i0.wp.com\/frontendmasters.com\/blog\/wp-content\/uploads\/2024\/08\/api-client-1.png?resize=1024%2C617&#038;ssl=1\" srcset=\"https:\/\/i0.wp.com\/frontendmasters.com\/blog\/wp-content\/uploads\/2024\/08\/api-client-1.png?resize=1024%2C617&amp;ssl=1 1024w, https:\/\/i0.wp.com\/frontendmasters.com\/blog\/wp-content\/uploads\/2024\/08\/api-client-1.png?resize=300%2C181&amp;ssl=1 300w, https:\/\/i0.wp.com\/frontendmasters.com\/blog\/wp-content\/uploads\/2024\/08\/api-client-1.png?resize=768%2C462&amp;ssl=1 768w, https:\/\/i0.wp.com\/frontendmasters.com\/blog\/wp-content\/uploads\/2024\/08\/api-client-1.png?resize=1536%2C925&amp;ssl=1 1536w, https:\/\/i0.wp.com\/frontendmasters.com\/blog\/wp-content\/uploads\/2024\/08\/api-client-1.png?resize=2048%2C1233&amp;ssl=1 2048w\" sizes=\"(max-width: 1000px) 100vw, 1000px\" \/><\/figure><\/li><li class=\"wp-block-jetpack-slideshow_slide swiper-slide\"><figure><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"724\" alt=\"\" class=\"wp-block-jetpack-slideshow_image wp-image-3503\" data-id=\"3503\" src=\"https:\/\/i0.wp.com\/frontendmasters.com\/blog\/wp-content\/uploads\/2024\/08\/markdown-1.png?resize=1024%2C724&#038;ssl=1\" srcset=\"https:\/\/i0.wp.com\/frontendmasters.com\/blog\/wp-content\/uploads\/2024\/08\/markdown-1.png?resize=1024%2C724&amp;ssl=1 1024w, https:\/\/i0.wp.com\/frontendmasters.com\/blog\/wp-content\/uploads\/2024\/08\/markdown-1.png?resize=300%2C212&amp;ssl=1 300w, https:\/\/i0.wp.com\/frontendmasters.com\/blog\/wp-content\/uploads\/2024\/08\/markdown-1.png?resize=768%2C543&amp;ssl=1 768w, https:\/\/i0.wp.com\/frontendmasters.com\/blog\/wp-content\/uploads\/2024\/08\/markdown-1.png?w=1194&amp;ssl=1 1194w\" sizes=\"(max-width: 1000px) 100vw, 1000px\" \/><\/figure><\/li><li class=\"wp-block-jetpack-slideshow_slide swiper-slide\"><figure><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"623\" alt=\"\" class=\"wp-block-jetpack-slideshow_image wp-image-3506\" data-id=\"3506\" src=\"https:\/\/i0.wp.com\/frontendmasters.com\/blog\/wp-content\/uploads\/2024\/08\/lazysql.png?resize=1024%2C623&#038;ssl=1\" srcset=\"https:\/\/i0.wp.com\/frontendmasters.com\/blog\/wp-content\/uploads\/2024\/08\/lazysql.png?resize=1024%2C623&amp;ssl=1 1024w, https:\/\/i0.wp.com\/frontendmasters.com\/blog\/wp-content\/uploads\/2024\/08\/lazysql.png?resize=300%2C182&amp;ssl=1 300w, https:\/\/i0.wp.com\/frontendmasters.com\/blog\/wp-content\/uploads\/2024\/08\/lazysql.png?resize=768%2C467&amp;ssl=1 768w, https:\/\/i0.wp.com\/frontendmasters.com\/blog\/wp-content\/uploads\/2024\/08\/lazysql.png?resize=1536%2C934&amp;ssl=1 1536w, https:\/\/i0.wp.com\/frontendmasters.com\/blog\/wp-content\/uploads\/2024\/08\/lazysql.png?resize=2048%2C1245&amp;ssl=1 2048w, https:\/\/i0.wp.com\/frontendmasters.com\/blog\/wp-content\/uploads\/2024\/08\/lazysql.png?w=3000&amp;ssl=1 3000w\" sizes=\"(max-width: 1000px) 100vw, 1000px\" \/><\/figure><\/li><li class=\"wp-block-jetpack-slideshow_slide swiper-slide\"><figure><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"687\" alt=\"\" class=\"wp-block-jetpack-slideshow_image wp-image-3507\" data-id=\"3507\" src=\"https:\/\/i0.wp.com\/frontendmasters.com\/blog\/wp-content\/uploads\/2024\/08\/Screenshot-2024-08-15-at-7.04.50%E2%80%AFAM.png?resize=1024%2C687&#038;ssl=1\" srcset=\"https:\/\/i0.wp.com\/frontendmasters.com\/blog\/wp-content\/uploads\/2024\/08\/Screenshot-2024-08-15-at-7.04.50%E2%80%AFAM.png?resize=1024%2C687&amp;ssl=1 1024w, https:\/\/i0.wp.com\/frontendmasters.com\/blog\/wp-content\/uploads\/2024\/08\/Screenshot-2024-08-15-at-7.04.50%E2%80%AFAM.png?resize=300%2C201&amp;ssl=1 300w, https:\/\/i0.wp.com\/frontendmasters.com\/blog\/wp-content\/uploads\/2024\/08\/Screenshot-2024-08-15-at-7.04.50%E2%80%AFAM.png?resize=768%2C515&amp;ssl=1 768w, https:\/\/i0.wp.com\/frontendmasters.com\/blog\/wp-content\/uploads\/2024\/08\/Screenshot-2024-08-15-at-7.04.50%E2%80%AFAM.png?w=1402&amp;ssl=1 1402w\" sizes=\"(max-width: 1000px) 100vw, 1000px\" \/><\/figure><\/li><li class=\"wp-block-jetpack-slideshow_slide swiper-slide\"><figure><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"665\" alt=\"\" class=\"wp-block-jetpack-slideshow_image wp-image-3505\" data-id=\"3505\" src=\"https:\/\/i0.wp.com\/frontendmasters.com\/blog\/wp-content\/uploads\/2024\/08\/sunflower-term.png?resize=1024%2C665&#038;ssl=1\" srcset=\"https:\/\/i0.wp.com\/frontendmasters.com\/blog\/wp-content\/uploads\/2024\/08\/sunflower-term.png?resize=1024%2C665&amp;ssl=1 1024w, https:\/\/i0.wp.com\/frontendmasters.com\/blog\/wp-content\/uploads\/2024\/08\/sunflower-term.png?resize=300%2C195&amp;ssl=1 300w, https:\/\/i0.wp.com\/frontendmasters.com\/blog\/wp-content\/uploads\/2024\/08\/sunflower-term.png?resize=768%2C499&amp;ssl=1 768w, https:\/\/i0.wp.com\/frontendmasters.com\/blog\/wp-content\/uploads\/2024\/08\/sunflower-term.png?w=1291&amp;ssl=1 1291w\" sizes=\"(max-width: 1000px) 100vw, 1000px\" \/><\/figure><\/li><li class=\"wp-block-jetpack-slideshow_slide swiper-slide\"><figure><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"990\" height=\"990\" alt=\"\" class=\"wp-block-jetpack-slideshow_image wp-image-3499\" data-id=\"3499\" src=\"https:\/\/i0.wp.com\/frontendmasters.com\/blog\/wp-content\/uploads\/2024\/08\/send-email-1.png?resize=990%2C990&#038;ssl=1\" srcset=\"https:\/\/i0.wp.com\/frontendmasters.com\/blog\/wp-content\/uploads\/2024\/08\/send-email-1.png?w=990&amp;ssl=1 990w, https:\/\/i0.wp.com\/frontendmasters.com\/blog\/wp-content\/uploads\/2024\/08\/send-email-1.png?resize=300%2C300&amp;ssl=1 300w, https:\/\/i0.wp.com\/frontendmasters.com\/blog\/wp-content\/uploads\/2024\/08\/send-email-1.png?resize=150%2C150&amp;ssl=1 150w, https:\/\/i0.wp.com\/frontendmasters.com\/blog\/wp-content\/uploads\/2024\/08\/send-email-1.png?resize=768%2C768&amp;ssl=1 768w\" sizes=\"(max-width: 990px) 100vw, 990px\" \/><\/figure><\/li><\/ul><a class=\"wp-block-jetpack-slideshow_button-prev swiper-button-prev swiper-button-white\" role=\"button\"><\/a><a class=\"wp-block-jetpack-slideshow_button-next swiper-button-next swiper-button-white\" role=\"button\"><\/a><a aria-label=\"Pause Slideshow\" class=\"wp-block-jetpack-slideshow_button-pause\" role=\"button\"><\/a><div class=\"wp-block-jetpack-slideshow_pagination swiper-pagination swiper-pagination-white\"><\/div><\/div><\/div>\n","protected":false},"excerpt":{"rendered":"<p>I mentioned lazygit the other day, a project I find to have a tremendously well done interface for being entirely at the command line. As frustrated as I get with tmux sometimes (the scrolling and the copying text, ughgkh), I still find it to be useful and impressive that &#8220;UI&#8221; can exist at all in [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":3509,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"sig_custom_text":"","sig_image_type":"featured-image","sig_custom_image":0,"sig_is_disabled":false,"inline_featured_image":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[29],"tags":[52],"class_list":["post-3487","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-the-beat","tag-command-line"],"acf":[],"jetpack_featured_media_url":"https:\/\/i0.wp.com\/frontendmasters.com\/blog\/wp-content\/uploads\/2024\/08\/lazysql-1.png?fit=3020%2C1836&ssl=1","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/frontendmasters.com\/blog\/wp-json\/wp\/v2\/posts\/3487","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/frontendmasters.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/frontendmasters.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/frontendmasters.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/frontendmasters.com\/blog\/wp-json\/wp\/v2\/comments?post=3487"}],"version-history":[{"count":7,"href":"https:\/\/frontendmasters.com\/blog\/wp-json\/wp\/v2\/posts\/3487\/revisions"}],"predecessor-version":[{"id":3511,"href":"https:\/\/frontendmasters.com\/blog\/wp-json\/wp\/v2\/posts\/3487\/revisions\/3511"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/frontendmasters.com\/blog\/wp-json\/wp\/v2\/media\/3509"}],"wp:attachment":[{"href":"https:\/\/frontendmasters.com\/blog\/wp-json\/wp\/v2\/media?parent=3487"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/frontendmasters.com\/blog\/wp-json\/wp\/v2\/categories?post=3487"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/frontendmasters.com\/blog\/wp-json\/wp\/v2\/tags?post=3487"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}