[{"data":1,"prerenderedAt":428},["ShallowReactive",2],{"project-36020717":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":44,"post_text":46,"what":47,"said":88,"maker_in_thread":192,"shape":201,"grid":205,"attempts":392,"same_week":393,"maker_shows":285,"maker_hidden":420,"reader_version":421,"card":422},"36020717","Trogon","An automatic TUI for command line apps","title","Show HN: Trogon – An automatic TUI for command line apps","https:\u002F\u002Fgithub.com\u002FTextualize\u002Ftrogon","github.com","willm",1684676204,2023,248,70,197,3109,7,"notable","dev_tools","terminal ui generator","library",[24,25,26,27,28],"tui","command line","click","textual","cli interface","mixed",0.225,{"positive":32,"neutral":33,"mixed":34,"critical":35},14,13,0,4,31,{"idea":38,"execution":41,"design":42},{"positive":39,"critical":40},5,1,{"positive":35,"critical":40},{"positive":43,"critical":43},2,[45,34,34,45,34,39,39,45,34,45,39,34,34,34,34,45,34,39,40,39,34,45,34,34,34,34,45,40,45,39,45,34,40,45,39,45,34,39,34,39],3,"Hi HN,\n\nTrogon is a project to generate a TUI for command line apps.\n\nIt presents the arguments, options, and switches as a form. Editing the form generates a command line, which you can then run with a keypress.\n\nI'm a lover of the command line. But I can recall only a fraction of the switches for most commands I use. I would love it if there was a TUI available for most commands.\n\nTrogon currently works with Python and the Click library, but I would like it to cover more of the Python ecosystem and also generate TUIs for apps not written in Python.\n\nMore information in the repository.\n\nLet m",{"problem":48,"audience":54,"pricing":63,"motivation":64,"time_to_build":63,"stack":68,"openness":85,"stage":86,"team_size":87},{"value":49,"source":50,"evidence":51},"Hard to remember CLI switches and options for command line apps","maker",[52],{"id":53},"post",{"value":55,"source":56,"evidence":57},"Command line users and Python developers building CLI apps","inferred",[58,59],{"id":53},{"id":60,"by":61,"text":62},"36023107","hprotagonist","How easy is it to get this to compose nicely with typer, which also sits on top of click? like, if i expose the command group to the decorator or something, will that work?",null,{"value":65,"source":50,"evidence":66},"Author can't recall switches for most commands and wants a TUI for them",[67],{"id":53},[69,73,77],{"value":70,"source":50,"evidence":71},"Python",[72],{"id":53},{"value":74,"source":50,"evidence":75},"Click",[76],{"id":53},{"value":78,"source":79,"evidence":80},"Textual","commenter",[81],{"id":82,"by":83,"text":84},"36023990","stavros","This looks interesting, I love Textual so I tried this with one of the apps I wrote: https:\u002F\u002Fgitlab.com\u002Fstavros\u002Fparachute Unfortunately, it doesn't seem to work, failing to find…","unknown","launched","team",{"praise":89,"objections":112,"requests":128,"questions":157,"alternatives":169},[90,105],{"value":91,"source":79,"evidence":92},"Useful idea and clean UX",[93,97,101],{"id":94,"by":95,"text":96},"36027325","mkoubaa","I've used the python library gooey which seems to do the same thing. I like the ux of trogon",{"id":98,"by":99,"text":100},"36025250","eiiot","Does anyone know what terminal is being used in the demo? It looks really clean.",{"id":102,"by":103,"text":104},"36021242","simonw","This is really fun. I have an experimental branch of my sqlite-utils CLI tool (which has dozens of sub-commands) running with this now and it really did only take 6 lines of code…",{"value":106,"source":79,"evidence":107},"Easy integration into existing Click apps",[108,109],{"id":102,"by":103,"text":104},{"id":110,"by":83,"text":111},"36024048","Thanks Simon, I can't believe I looked twice to make sure I wasn't calling it wrong, and still didn't see it. That did, indeed, fix it!",[113,120],{"value":114,"source":79,"evidence":115},"Manual docs and man pages may be faster than a form",[116],{"id":117,"by":118,"text":119},"36028085","gloosx","I don't understand why is it more effective than the manual lookup... If a certain cli tool has hundreds of arguments from which I need certain 2, I would rather open…",{"value":121,"source":79,"evidence":122},"Only works with Python and Click so far",[123,124],{"id":82,"by":83,"text":84},{"id":125,"by":126,"text":127},"36024974","david2ndaccount","For various reasons, I use the stdlib argparse library. Will this work with that?",[129,139,147],{"value":130,"source":79,"evidence":131},"Support for unannotated CLI programs via help or man pages",[132,136],{"id":133,"by":134,"text":135},"36022484","fbdab103","Significantly harder problem, but what would be of most interest for me is for a program to offer this interface to an unannotated program (which will always be the majority).…",{"id":137,"by":11,"text":138},"36023156","That is a tricky problem indeed. I’m thinking a lot could be extracted from help and man pages. But maybe for some apps we could just write it by hand, or partially by hand.…",{"value":140,"source":79,"evidence":141},"Support for argparse",[142,143],{"id":125,"by":126,"text":127},{"id":144,"by":145,"text":146},"36026786","linsomniac","This is exactly my current experiment on a personal project I'm working on, though I'm trying to create a Textual UI on a dynamic Python argparse CLI. Creating a Textual UI is…",{"value":148,"source":79,"evidence":149},"Support for default system commands like ls",[150,154],{"id":151,"by":152,"text":153},"36022978","dr_kiszonka","Looks very nice! Does it also support default \"apps\" like, e.g., ls?",{"id":155,"by":11,"text":156},"36023384","Not currently, but I think it will in the future.",[158,165],{"value":159,"source":79,"evidence":160},"Does it generate shell completion scripts?",[161],{"id":162,"by":163,"text":164},"36023616","d0mine","Can it generate bash completion scripts? eg: ``` $ . \u003C(fab --print-completion-script zsh) ``` to enable autocomplete for fab in zsh shell.",{"value":166,"source":79,"evidence":167},"Does it work with typer?",[168],{"id":60,"by":61,"text":62},[170,174,181],{"value":171,"source":79,"evidence":172},"Gooey",[173],{"id":94,"by":95,"text":96},{"value":175,"source":79,"evidence":176},"Typer autocompletion",[177],{"id":178,"by":179,"text":180},"36023726","codethief","No idea about Trogon but Typer[0], which is based on the Click library that Trogon leverages, does provide autocompletion. [0]: https:\u002F\u002Ftyper.tiangolo.com\u002F",{"value":182,"source":79,"evidence":183},"tldr and cheat.sh",[184,188],{"id":185,"by":186,"text":187},"36025491","underwater","You should check out https:\u002F\u002Ftldr.sh\u002F It gives you practical examples for common use cases.",{"id":189,"by":190,"text":191},"36028161","hxii","Also https:\u002F\u002Fgithub.com\u002Fchubin\u002Fcheat.sh (https:\u002F\u002Fcht.sh). Actually using it quite often!",{"comments":18,"answered":45,"key":193},[194,197,198],{"id":195,"text":196},"36023010","I think so to! The schema has possibilities beyond just this tool.",{"id":137,"text":138},{"id":199,"text":200},"36023036","My interest is piqued! You might want to join our Discord server to discuss TUI related things.",{"commenters":202,"max_depth":18,"maker_replies":18,"first_comment_mins":203,"lifespan_hours":204},43,54,91,[206,210,214,216,219,222,226,228,231,233,236,238,241,242,243,246,249,250,254,257,260,263,266,267,268,271,273,277,279,281,283,288,290,293,296,300,304,307,310,312,314,316,318,320,323,325,329,332,334,337,339,340,344,346,348,349,351,356,359,362,365,367,369,371,372,374,378,382,385,388],[207,34,45,208,209,34],"36022518","project\u002Fneutral\u002Fidea","brap",[211,34,34,212,213,34],"36022977","other\u002Fneutral\u002Fidea","tuchsen",[195,34,34,215,11,40],"maker\u002Fpositive\u002Fidea",[217,34,34,218,163,34],"36023357","other\u002Fneutral\u002Fnone",[220,34,34,221,61,34],"36023680","other\u002Fneutral\u002Fdocs",[223,34,45,224,225,34],"36024295","project\u002Fneutral\u002Fnone","bee_rider",[227,34,34,212,134,34],"36024683",[229,34,34,212,230,34],"36025074","alex_hirner",[102,40,39,232,103,34],"project\u002Fpositive\u002Fexecution",[234,40,39,235,61,34],"36023115","project\u002Fpositive\u002Fnone",[237,40,39,232,103,34],"36023900",[239,40,34,240,61,34],"36026382","commenter\u002Fneutral\u002Fnone",[133,43,45,208,134,34],[137,43,34,208,11,40],[244,43,34,212,245,34],"36023524","em-bee",[247,43,45,208,248,34],"36024571","pmarreck",[144,45,34,212,145,34],[251,45,39,252,253,34],"36039710","project\u002Fpositive\u002Fidea","xk3",[255,35,39,252,256,34],"36023102","Orangeair",[258,35,34,221,259,34],"36024253","jlundberg",[261,35,34,218,262,34],"36024891","bregma",[264,35,34,218,265,34],"36024349","casey2",[185,35,34,221,186,34],[189,35,34,221,190,34],[269,39,34,218,270,34],"36022982","russellendicott",[199,39,34,272,11,40],"maker\u002Fneutral\u002Fnone",[274,275,34,218,276,34],"36026929",6,"whartung",[60,18,45,278,61,34],"project\u002Fneutral\u002Fexecution",[280,18,34,232,11,40],"36023135",[282,18,39,232,61,34],"36023172",[284,285,39,286,287,34],"36022495",8,"maker\u002Fpositive\u002Fnone","gigatexal",[289,285,34,286,11,40],"36022843",[117,291,40,292,118,34],9,"project\u002Fcritical\u002Fidea",[294,291,39,252,295,34],"36028240","aembleton",[297,298,45,208,299,34],"36027495",10,"anotherpaulg",[301,302,34,218,303,34],"36068244",11,"kdeldycke",[305,306,45,208,179,34],"36023684",12,[308,306,34,240,309,34],"36023735","grayhatter",[311,306,34,240,179,34],"36024414",[313,306,34,240,309,34],"36027101",[315,306,34,240,179,34],"36030533",[317,306,34,240,309,34],"36034009",[319,306,34,240,179,34],"36035147",[321,306,34,218,322,34],"36023860","kej",[324,306,34,218,61,34],"36026386",[326,33,45,327,328,34],"36023189","project\u002Fneutral\u002Fdesign","vaughan",[330,33,34,218,331,34],"36023750","zokier",[333,32,34,221,186,34],"36025530",[82,335,40,336,83,34],15,"project\u002Fcritical\u002Fexecution",[338,335,45,278,103,34],"36024027",[110,335,39,232,83,34],[341,342,45,327,343,34],"36023629",16,"eviks",[125,345,45,278,126,34],17,[162,347,45,224,163,34],18,[178,347,34,218,179,34],[350,347,34,218,103,34],"36023789",[352,353,40,354,355,34],"36043531",19,"project\u002Fcritical\u002Fdesign","Rovoska",[357,353,40,354,358,34],"36049736","ropeladder",[94,360,39,361,95,34],20,"project\u002Fpositive\u002Fdesign",[363,360,34,218,364,34],"36027614","anitil",[98,366,39,361,99,34],21,[368,366,34,272,11,40],"36025289",[151,370,45,208,152,34],22,[155,370,34,208,11,40],[373,370,39,215,152,34],"36035410",[375,376,39,286,377,34],"36027376",23,"vanous",[379,380,34,212,381,34],"36024367",24,"cies",[383,380,34,384,118,34],"36028026","commenter\u002Fcritical\u002Fidea",[386,380,34,387,381,34],"36036893","commenter\u002Fneutral\u002Fidea",[389,390,39,252,391,34],"36023525",25,"nonethewiser",[],[394,398,403,408,412,416],{"id":395,"name":396,"points":397,"category":20},"36009774","YouTube Full Text Search",540,{"id":399,"name":400,"points":401,"category":402},"36064639","Pixian",383,"ai",{"id":404,"name":405,"points":406,"category":407},"36047143","Open sourcing Harmonic",305,"consumer_social",{"id":409,"name":410,"points":411,"category":20},"36020001","SpaceBadgers",199,{"id":413,"name":414,"points":415,"category":402},"36037419","Blotter",166,{"id":417,"name":418,"points":419,"category":402},"36038815","DB-GPT",156,false,"v2",{"id":423,"name":5,"line":6,"ai":420,"cat":20,"year":13,"points":14,"comments":15,"rec":29,"s":424,"top":18,"kw":425,"maker":11,"domain":10,"tier":19,"attempts":34,"strip":426,"url":9,"mix":427,"praise":91,"objection":114,"sub":21},36020717,0.23,[24,25,26,27,28],"3003055303500003051503000031353013530505",[32,33,34,35],1794036635903]