[{"data":1,"prerenderedAt":393},["ShallowReactive",2],{"project-44268644":3},{"id":4,"name":5,"line":6,"line_source":7,"title":8,"url":9,"domain":10,"maker":11,"posted_at":12,"year":13,"points":14,"comments":15,"rank_in_year":16,"shown_in_year":17,"top":18,"tier":19,"category":20,"subcategory":21,"format":22,"keywords":23,"reception":28,"sentiment":29,"stance_mix":30,"scored_comments":35,"aspects":36,"strip":45,"post_text":47,"what":48,"said":72,"maker_in_thread":192,"shape":203,"grid":206,"attempts":356,"same_week":357,"maker_shows":40,"maker_hidden":385,"reader_version":386,"card":387},"44268644","Tattoy","a text-based terminal compositor","title","Show HN: Tattoy – a text-based terminal compositor","https:\u002F\u002Ftattoy.sh","tattoy.sh","tombh",1749823475,2025,200,65,327,3837,9,"notable","dev_tools","terminal compositor","cli",[21,24,25,26,27],"wcag contrast","terminal emulator","ansi codes","tui shaders","mixed",0.212,{"positive":31,"neutral":32,"mixed":33,"critical":34},11,15,0,6,32,{"execution":37,"design":39,"idea":42,"performance":43,"docs":44},{"positive":38,"critical":33},1,{"positive":40,"critical":41},4,5,{"positive":40,"critical":33},{"positive":33,"critical":38},{"positive":38,"critical":33},[46,46,46,46,46,46,46,33,41,46,38,33,41,46,33,33,38,46,33,33,41,33,41,46,41,41,38,38,33,41,33,41,33,33,33,33,38,46,33,33],3,"Whereas this is mostly a terminal eye-candy project to get you street cred, it does have some serious aspects.\n\nFirstly it solves the age-old problem of low-contrast text, like when you `ls` a broken symlink and the red background colour is too near your current theme's foreground colour. Tattoy solves this by using none other than the web's WCAG 2.1 contrast algorithm for accessible text.\n\nSecondly, an explicit design goal is that Tattoy should be able to polyfill new terminal protocols, the `xwayland` of the TTY if you will. Say if we want to experiment with completely deprecating ANSI codes",{"problem":49,"audience":55,"pricing":55,"motivation":56,"time_to_build":55,"stack":60,"openness":69,"stage":70,"team_size":71},{"value":50,"source":51,"evidence":52},"Low-contrast text in terminals, and a need for new terminal protocols beyond ANSI codes","maker",[53],{"id":54},"post",null,{"value":57,"source":51,"evidence":58},"Partly terminal eye-candy and art, partly serving as a polyfill for new terminal protocols",[59],{"id":54},[61],{"value":62,"source":63,"evidence":64},"Rust","commenter",[65],{"id":66,"by":67,"text":68},"44288953","globnomulous","Thank you for (1) sharing a fascinating project that has nothing to do with \"AI,\" (2) mentioning not once, anywhere, even in the repo docs (as far as I can tell) that Tattoy is…","open_source","beta","unknown",{"praise":73,"objections":104,"requests":140,"questions":164,"alternatives":180},[74,82,93],{"value":75,"source":63,"evidence":76},"Clean presentation and high-quality work",[77,78],{"id":66,"by":67,"text":68},{"id":79,"by":80,"text":81},"44270592","gfalcao","SUPER COOL",{"value":83,"source":63,"evidence":84},"Fun visual effects and shader ideas",[85,89],{"id":86,"by":87,"text":88},"44269342","grandma_tea","Oh wow, now I can finally have terminal that creates fire effects the faster I type! (if I ever get the time to make the plugin) Is there anyway for plugins to interact with…",{"id":90,"by":91,"text":92},"44269348","ramon156","This is like the pinnacle of term ricing, I love it",{"value":94,"source":63,"evidence":95},"Interesting protocol evolution idea",[96,100],{"id":97,"by":98,"text":99},"44276509","sevensor","I especially like the idea of evolving the protocol. Just because the text first ui is a great idea doesn’t mean we achieved perfection with ansi escape codes.",{"id":101,"by":102,"text":103},"44268889","nerflad","This is brilliant, thanks for making public and best wishes",[105,115,126,133],{"value":106,"source":63,"evidence":107},"Palette parsing fails on some terminals due to inaccurate color rendering",[108,112],{"id":109,"by":110,"text":111},"44270251","tfsh","This looks really cool, I'd like to give it a go. The idea of taking a screenshot of the terminal and then parsing that to determine the true colour support is definitely novel,…",{"id":113,"by":11,"text":114},"44270620","Thanks for trying it out. It looks like either your terminal or screenshotter isn't faithfully rendering the pure red marker column (it's needed for calibration in the parser).…",{"value":116,"source":63,"evidence":117},"Videos autoplay fullscreen on mobile, hurting the website experience",[118,122],{"id":119,"by":120,"text":121},"44270789","djaychela","Id probably have an easier time finding out about this project if it didn't full screen auto play videos as I scroll?",{"id":123,"by":124,"text":125},"44272031","phatskat","I get the same experience on iOS using the OS web view - my guess is because iOS (and maybe android?) don’t typically play videos in “windowed mode” (for lack of a better term)…",{"value":127,"source":63,"evidence":128},"Light theme gives white on white text",[129],{"id":130,"by":131,"text":132},"44271050","em-bee","my first attempt at using a light theme with gnome-terminal gets me white on white either in the prompt or on the commandline itself. don't have time to debug that now though.…",{"value":134,"source":63,"evidence":135},"High memory use concern",[136],{"id":137,"by":138,"text":139},"44271320","cenobyte","Because why shouldn't my terminal be the largest consumer of memory on my PC?",[141,148,158],{"value":142,"source":63,"evidence":143},"Support OSC 4 palette querying instead of screenshots",[144],{"id":145,"by":146,"text":147},"44270561","shiomiru","> The idea of taking a screenshot of the terminal and then parsing that to determine the true colour support is definitely novel, A better way to do this is to send `OSC 1 0 ; ?…",{"value":149,"source":63,"evidence":150},"Windows support and beta testing",[151,155],{"id":152,"by":153,"text":154},"44269602","TheSilva","I see you added then removed Windows from your Release plan: https:\u002F\u002Fgithub.com\u002Ftattoy-org\u002Ftattoy\u002Fissues\u002F42 So, it is supported or not? Looks great by the way.",{"id":156,"by":67,"text":157},"44379402","If you need Windows beta testers, I'd be happy to volunteer.",{"value":159,"source":63,"evidence":160},"Light theme examples",[161],{"id":162,"by":131,"text":163},"44269921","Tattoy manages its own scrollback buffer (like say `tmux` does), and so can therefore also provide its own scrollbar. this raises two questions: doesn't every (gui) terminal do…",[165,169,173],{"value":166,"source":63,"evidence":167},"How tmux scrollback interacts with Tattoy",[168],{"id":130,"by":131,"text":132},{"value":170,"source":63,"evidence":171},"Whether plugins can interact with shaders",[172],{"id":86,"by":87,"text":88},{"value":174,"source":63,"evidence":175},"Whether it can run Doom",[176],{"id":177,"by":178,"text":179},"44269653","ainiriand","Can it run doom?",[181,188],{"value":182,"source":63,"evidence":183},"Arcan",[184],{"id":185,"by":186,"text":187},"44275438","cb321","Interesting project. You might check out Arcan (https:\u002F\u002Farcan-fe.com\u002F) if you've never heard of it. (EDIT: I see author recently added a link:…",{"value":189,"source":63,"evidence":190},"tmux",[191],{"id":162,"by":131,"text":163},{"comments":193,"answered":194,"key":195},16,10,[196,199,200],{"id":197,"text":198},"44270627","OMG really!? That link is blocked for me for some reason. If that OSC code is widely supported it's going to make things sooooo much easier.",{"id":113,"text":114},{"id":201,"text":202},"44276020","Interesting, I'd never thought of that.",{"commenters":35,"max_depth":34,"maker_replies":193,"first_comment_mins":204,"lifespan_hours":205},2,291,[207,209,210,212,215,218,219,222,224,226,228,231,233,234,237,239,241,243,245,247,248,251,256,258,261,263,266,270,271,274,276,279,281,282,284,287,292,294,296,299,301,302,305,307,308,311,313,316,318,320,322,324,327,329,332,335,338,341,344,346,348,350,353],[109,33,46,208,110,33],"project\u002Fneutral\u002Fexecution",[145,33,46,208,146,33],[197,33,33,211,11,38],"project\u002Fpositive\u002Fexecution",[213,33,46,208,214,33],"44272341","hnlmorg",[216,33,46,208,217,33],"44272707","ku1ik",[113,33,33,208,11,38],[220,33,46,208,221,33],"44275606","mkesper",[201,33,33,223,11,38],"maker\u002Fneutral\u002Fnone",[152,38,46,225,153,33],"project\u002Fneutral\u002Fnone",[227,38,33,208,11,38],"44269667",[229,38,46,223,230,33],"44274444","PeterStuer",[232,38,33,223,11,38],"44275908",[156,38,41,211,67,33],[235,204,46,225,236,33],"44268658","pvg",[162,46,46,238,131,33],"project\u002Fneutral\u002Fdesign",[240,46,33,238,11,38],"44270038",[130,46,38,242,131,33],"project\u002Fcritical\u002Fdesign",[244,46,33,223,11,38],"44271174",[97,40,41,246,98,33],"project\u002Fpositive\u002Fidea",[101,41,41,246,102,33],[249,34,46,238,250,33],"44269700","otterpro",[252,253,46,254,255,33],"44269674",7,"project\u002Fneutral\u002Fidea","msgodel",[257,253,33,238,11,38],"44269767",[259,253,33,260,255,33],"44269788","commenter\u002Fneutral\u002Fidea",[262,253,33,260,11,38],"44269849",[137,264,38,265,138,33],8,"project\u002Fcritical\u002Fperformance",[267,264,33,268,269,33],"44271351","other\u002Fneutral\u002Fnone","tines",[185,18,46,238,186,33],[272,18,33,273,11,38],"44275901","maker\u002Fpositive\u002Fnone",[275,18,33,260,186,33],"44276634",[277,18,33,278,146,33],"44276800","commenter\u002Fneutral\u002Fnone",[280,18,33,278,186,33],"44277563",[86,194,41,246,87,33],[283,194,33,238,11,38],"44269426",[285,31,41,246,286,33],"44268787","pacifika",[288,289,41,290,291,33],"44270014",12,"project\u002Fpositive\u002Fdesign","MatthewPhillips",[177,293,46,254,178,33],13,[295,293,33,254,11,38],"44269697",[66,297,41,298,67,33],14,"project\u002Fpositive\u002Fdocs",[79,32,41,300,80,33],"project\u002Fpositive\u002Fnone",[119,193,38,242,120,33],[303,193,33,304,11,38],"44270831","maker\u002Fneutral\u002Fdesign",[306,193,38,242,120,33],"44271398",[123,193,38,242,124,33],[309,193,33,310,11,38],"44275937","maker\u002Fneutral\u002Fperformance",[312,193,41,290,120,33],"44276907",[314,193,46,238,315,33],"44273651","eieio",[317,193,33,304,11,38],"44276011",[319,193,41,290,315,33],"44276268",[90,321,41,290,91,33],17,[323,321,33,268,124,33],"44272048",[325,321,33,268,326,33],"44272273","efilife",[328,321,33,268,124,33],"44272991",[330,321,33,268,331,33],"44273229","notnmeyer",[333,321,33,268,334,33],"44273896","simlevesque",[336,321,33,268,337,33],"44274052","emmelaich",[339,321,33,268,340,33],"44274514","rhet0rica",[342,343,38,242,214,33],"44272320",18,[345,343,46,238,217,33],"44272774",[347,343,33,278,214,33],"44275366",[349,343,33,304,11,38],"44275986",[351,343,33,352,214,33],"44308657","commenter\u002Fneutral\u002Fdesign",[354,355,33,268,230,33],"44274438",19,[],[358,363,367,371,376,381],{"id":359,"name":360,"points":361,"category":362},"44309320","Workout.cool",827,"consumer_social",{"id":364,"name":365,"points":366,"category":20},"44314085","Unregistry",726,{"id":368,"name":369,"points":370,"category":20},"44293260","Chawan",387,{"id":372,"name":373,"points":374,"category":375},"44292103","Canine",320,"infrastructure",{"id":377,"name":378,"points":379,"category":380},"44256765","Tritium",312,"productivity",{"id":382,"name":383,"points":384,"category":20},"44306041","Lstr",227,false,"v2",{"id":388,"name":5,"line":6,"ai":385,"cat":20,"year":13,"points":14,"comments":15,"rec":28,"s":389,"top":18,"kw":390,"maker":11,"domain":10,"tier":19,"attempts":33,"strip":391,"url":9,"mix":392,"praise":75,"objection":106,"sub":21},44268644,0.21,[21,24,25,26,27],"3333333053105300130050535511050500001300",[31,32,33,34],1793991123155]