[{"data":1,"prerenderedAt":389},["ShallowReactive",2],{"project-44306041":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":29,"sentiment":30,"stance_mix":31,"scored_comments":36,"aspects":37,"strip":46,"post_text":47,"what":48,"said":64,"maker_in_thread":179,"shape":188,"grid":193,"attempts":352,"same_week":353,"maker_shows":34,"maker_hidden":382,"reader_version":383,"card":384},"44306041","Lstr","A modern, interactive tree command written in Rust","title","Show HN: Lstr – A modern, interactive tree command written in Rust","https:\u002F\u002Fgithub.com\u002Fbgreenwell\u002Flstr","github.com","w108bmg",1750212439,2025,227,66,271,3837,8,"notable","dev_tools","directory listing tool","cli",[24,25,26,27,28],"tree command","rust cli","git status","interactive tui","directory viewer","curious",0.05,{"positive":32,"neutral":33,"mixed":34,"critical":35},5,17,2,4,28,{"performance":38,"execution":41,"design":43,"docs":44,"idea":45},{"positive":39,"critical":40},1,3,{"positive":34,"critical":42},0,{"positive":39,"critical":39},{"positive":42,"critical":42},{"positive":39,"critical":42},[40,40,40,40,39,40,32,40,42,42,42,42,42,42,42,42,42,42,42,40,39,40,42,42,42,42,42,42,40,39,40,42,40,32,42,40,42,32,32,40],"Hi HN,\n\n(First time poster!)\n\nI'm the author of `lstr`. I've always loved the classic Linux `tree` command for its simplicity, but I often found myself wanting more modern features like interactivity and Git integration. So, I decided to build my own version in Rust with a philosophy of being fast, minimalist, and interactive. It was also an excuse to help learn more about Rust\\!\n\nHere's a quick look at the interactive mode:\n\nhttps:\u002F\u002Fraw.githubusercontent.com\u002Fbgreenwell\u002Flstr\u002Fmain\u002Fassets\u002Flstr-demo.gif\n\nI've just released v0.2.0 with some features I think this community might find useful:\n\n\n```\n",{"problem":49,"audience":55,"pricing":55,"motivation":56,"time_to_build":55,"stack":60,"openness":61,"stage":62,"team_size":63},{"value":50,"source":51,"evidence":52},"Classic tree lacks interactivity and Git integration","maker",[53],{"id":54},"post",null,{"value":57,"source":51,"evidence":58},"Wanted modern features like interactivity and Git integration, and a way to learn Rust",[59],{"id":54},[],"open_source","launched","unknown",{"praise":65,"objections":93,"requests":116,"questions":138,"alternatives":158},[66,82],{"value":67,"source":68,"evidence":69},"Display looks great and the interactive mode is useful","commenter",[70,74,78],{"id":71,"by":72,"text":73},"44306152","drabbiticus","First off, the display looks great! Second off, I didn't realize how deep the dep tree would be for this type of program -- 141 total! So much of it is the url crate, itself a…",{"id":75,"by":76,"text":77},"44306364","sdegutis","I didn't notice, I was too busy seeing how impressive and useful this tool is. And with fuzzy matching built in? Just amazing. Good job OP.",{"id":79,"by":80,"text":81},"44307434","rewgs","This looks awesome! Right up my alley. Side-note: what theme are you using in the linked gif? It's right in the middle of my two favorite themes, onedark and gruvbox.",{"value":83,"source":68,"evidence":84},"Impressive that it fits in about 1000 lines of code",[85,89],{"id":86,"by":87,"text":88},"44306516","JoshTriplett","Among the features it has: an interactive terminal GUI, threaded parallel directory walking, and git repository support. In around a thousand lines of code, total, including…",{"id":90,"by":91,"text":92},"44313764","gorgoiler","Doing this in just over 1000 lines of code is really inspiring. I was bracing myself for something quite a lot larger and, honestly, gearing up to use that as an excuse not to…",[94,105],{"value":95,"source":68,"evidence":96},"Release binary size is large (around 4MB) for what it does",[97,101],{"id":98,"by":99,"text":100},"44306283","esafak","No offense, but 4.3MB is huge for what it does. Most shells take less space than that! Where's all the bloat coming from?",{"id":102,"by":103,"text":104},"44306278","getcrunk","Great catch! Comments mentioned getting it down to ~2MB but that’s still humongous. If you just think about how roughly (napkin math) 2MB can be 100k loc, that’s nuts",{"value":106,"source":68,"evidence":107},"Demo gif shows broken icons from missing fonts",[108,112],{"id":109,"by":110,"text":111},"44306230","ipdashc","Seems quite cool! Though the demo gif with (what seem to be?) broken icons is a bold choice :p",{"id":113,"by":114,"text":115},"44310169","nightpool","How would that solve the font problem? I feel like that would only make the problem of having unsupported fonts even worse.",[117,131],{"value":118,"source":68,"evidence":119},"Reduce binary size through release build settings",[120,124,128],{"id":121,"by":122,"text":123},"44306218","fabrice_d","You are probably looking at a debug build. On Linux, a release build (cargo build -r) is ~4.3M, and down to ~3.5M once stripped. This could be reduced further with some tricks…",{"id":125,"by":126,"text":127},"44306224","pveierland","Building in release: ``` cargo build --release du -sh .\u002Ftarget\u002Frelease\u002Flstr -> 4.4M ``` Building with other release options brings it down to 2.3M: ``` [profile.release]…",{"id":129,"by":87,"text":130},"44306262","> The binary is also 53M That's a debug binary, and the vast majority of that is debug symbols. A release build of this project is 4.3M, an order of magnitude smaller. Also,…",{"value":132,"source":68,"evidence":133},"Fix the demo gif rendering",[134,135],{"id":109,"by":110,"text":111},{"id":136,"by":11,"text":137},"44306310","lol good catch, and I totally missed it I used vhs to record the gif which must not run the script in my native terminal! I’ll have to see about fixing it!",[139,147],{"value":140,"source":68,"evidence":141},"Why are Rust dependencies so numerous and what makes the binary large",[142,143],{"id":71,"by":72,"text":73},{"id":144,"by":145,"text":146},"44306644","koito17","> Most shells take less space than that! Most shells dynamically link to a runtime your OS provides \"for free\". The 4.3 MiB binary in question is bundling the Rust runtime and…",{"value":148,"source":68,"evidence":149},"How does it differ from erdtree and broot",[150,154],{"id":151,"by":152,"text":153},"44306096","aystatic","Neat, looks like a combination of erdtree[0] and broot[1]. I use both on a daily basis, are there any features that stand out from the two? [0]:…",{"id":155,"by":156,"text":157},"44308059","fer","On interactive mode \"ls tree\" tools, an interesting one is broot. https:\u002F\u002Fgithub.com\u002FCanop\u002Fbroot",[159,170,175],{"value":160,"source":68,"evidence":161},"eza",[162,166],{"id":163,"by":164,"text":165},"44307473","berkes","I really love all the \"modern\" takes on classic tools by the Rust community. I'm using eza (aka exa), aliased as ls, which has \"tree\" built in (aliased as lt), amongst others, as…",{"id":167,"by":168,"text":169},"44306202","CGamesPlay","Likely needs features tuned. I compared Eza, similarly in Rust, and it's 1.6 MiB compiled. Looking at the Cargo.toml, it includes git2 with default-features = false.…",{"value":171,"source":68,"evidence":172},"broot",[173,174],{"id":155,"by":156,"text":157},{"id":151,"by":152,"text":153},{"value":176,"source":68,"evidence":177},"erdtree",[178],{"id":151,"by":152,"text":153},{"comments":40,"answered":34,"key":180},[181,182,185],{"id":136,"text":137},{"id":183,"text":184},"44306405","Really appreciate all the comments and useful feedback (first Rust package). Especially ways to reduce the size of the binary!",{"id":186,"text":187},"44306431","I appreciate the ecosystem of packages that seem really well maintained. I don’t love the syntax and find Rust harder to read and learn so far compared to something like golang…",{"commenters":189,"max_depth":190,"maker_replies":40,"first_comment_mins":191,"lifespan_hours":192},41,10,13,140,[194,196,198,199,200,204,205,207,210,213,215,219,220,222,224,228,230,233,236,239,242,245,247,249,251,254,258,260,262,264,266,268,270,273,275,276,280,282,285,288,291,293,295,297,299,302,305,308,310,312,314,318,322,324,326,329,331,333,337,339,340,342,343,346,349,351],[71,42,40,195,72,42],"project\u002Fmixed\u002Fperformance",[167,42,40,197,168,42],"project\u002Fneutral\u002Fperformance",[121,42,40,197,122,42],[125,42,40,197,126,42],[201,42,42,202,203,42],"44307091","commenter\u002Fneutral\u002Fperformance","cyann",[129,42,40,197,87,42],[98,42,39,206,99,42],"project\u002Fcritical\u002Fperformance",[208,42,40,197,209,42],"44306440","have-a-break",[211,42,40,197,212,42],"44306448","o11c",[86,42,32,214,87,42],"project\u002Fpositive\u002Fexecution",[216,42,42,217,218,42],"44306677","commenter\u002Fneutral\u002Fnone","oguz-ismail",[144,42,40,197,145,42],[221,42,42,202,99,42],"44306682",[223,42,42,202,145,42],"44306698",[225,42,42,226,227,42],"44313658","other\u002Fneutral\u002Fperformance","3836293648",[229,42,42,226,227,42],"44306752",[231,42,42,202,232,42],"44309817","surajrmal",[234,42,42,226,235,42],"44314688","AdieuToLogic",[237,42,42,202,238,42],"44360357","creatonez",[240,42,42,202,241,42],"44306914","wahern",[243,42,42,202,244,42],"44310133","mtndew4brkfst",[246,42,42,202,241,42],"44311522",[248,42,42,202,227,42],"44313677",[250,42,42,202,238,42],"44360433",[252,42,42,217,253,42],"44309222","fuzztester",[255,42,42,256,257,42],"44309639","other\u002Fneutral\u002Fnone","AnthOlei",[259,42,42,217,253,42],"44311342",[261,42,42,256,87,42],"44312630",[263,42,42,256,253,42],"44313437",[265,42,42,256,227,42],"44313689",[267,42,42,256,87,42],"44314438",[269,42,42,256,253,42],"44313494",[271,42,40,197,272,42],"44306274","ethan_smith",[274,42,39,206,152,42],"44306317",[102,42,39,206,103,42],[277,42,32,278,279,42],"44306424","project\u002Fpositive\u002Fperformance","arlort",[281,42,42,202,103,42],"44306469",[283,42,42,217,284,42],"44306901","dotancohen",[286,42,42,217,287,42],"44307289","hnlmorg",[289,42,42,217,290,42],"44307534","nicoburns",[292,42,42,217,287,42],"44308607",[294,42,42,217,290,42],"44308963",[296,42,42,217,287,42],"44309106",[298,42,42,217,290,42],"44309853",[300,42,42,217,301,42],"44308176","ghosty141",[303,42,42,217,304,42],"44311039","pxc",[306,42,40,197,307,42],"44306592","vlovich123",[309,42,40,197,244,42],"44310176",[109,39,39,311,110,42],"project\u002Fcritical\u002Fdesign",[136,39,42,313,11,39],"maker\u002Fneutral\u002Fdesign",[315,39,40,316,317,42],"44306661","project\u002Fneutral\u002Fdocs","yonatan8070",[319,39,42,320,321,42],"44308920","other\u002Fneutral\u002Fdocs","diggan",[323,39,42,320,317,42],"44310250",[113,39,40,325,114,42],"project\u002Fneutral\u002Fdesign",[327,39,40,325,328,42],"44310456","wonger_",[75,39,32,330,76,42],"project\u002Fpositive\u002Fidea",[183,34,42,332,11,39],"maker\u002Fneutral\u002Fnone",[334,40,40,335,336,42],"44310484","project\u002Fneutral\u002Fexecution","dboreham",[338,35,40,332,76,42],"44306379",[186,35,42,332,11,39],[341,35,42,256,76,42],"44306486",[90,32,32,214,91,42],[79,344,32,345,80,42],6,"project\u002Fpositive\u002Fdesign",[163,347,40,348,164,42],7,"project\u002Fmixed\u002Fidea",[155,347,40,350,156,42],"project\u002Fneutral\u002Fidea",[151,18,40,350,152,42],[],[354,359,363,367,372,377],{"id":355,"name":356,"points":357,"category":358},"44309320","Workout.cool",827,"consumer_social",{"id":360,"name":361,"points":362,"category":20},"44314085","Unregistry",726,{"id":364,"name":365,"points":366,"category":20},"44293260","Chawan",387,{"id":368,"name":369,"points":370,"category":371},"44292103","Canine",320,"infrastructure",{"id":373,"name":374,"points":375,"category":376},"44256765","Tritium",312,"productivity",{"id":378,"name":379,"points":380,"category":381},"44284871","Zeekstd",214,"languages",false,"v2",{"id":385,"name":5,"line":6,"ai":382,"cat":20,"year":13,"points":14,"comments":15,"rec":29,"s":30,"top":18,"kw":386,"maker":11,"domain":10,"tier":19,"attempts":42,"strip":387,"url":9,"mix":388,"praise":67,"objection":95,"sub":21},44306041,[24,25,26,27,28],"3333135300000000000313000000313035030553",[32,33,34,35],1794036676892]