[{"data":1,"prerenderedAt":247},["ShallowReactive",2],{"project-27091167":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":42,"post_text":45,"what":46,"said":68,"maker_in_thread":141,"shape":152,"grid":156,"attempts":209,"same_week":210,"maker_shows":44,"maker_hidden":239,"reader_version":240,"card":241},"27091167","Euporie","A Tui for Jupyter Notebooks","title","Show HN: Euporie, a Tui for Jupyter Notebooks","https:\u002F\u002Fgithub.com\u002Fjoouha\u002Feuporie","github.com","joouha",1620511373,2021,150,23,329,2533,13,"notable","dev_tools","terminal interface","cli",[24,25,26,27,28],"jupyter notebook","terminal ui","tui","prompt_toolkit","python","curious",0.095,{"positive":32,"neutral":33,"mixed":34,"critical":35},2,6,0,1,9,{"execution":38,"design":39,"docs":40,"idea":41},{"positive":35,"critical":34},{"positive":34,"critical":34},{"positive":35,"critical":35},{"positive":34,"critical":34},[43,34,44,34,34,34,34,34,44,43,34,34,34,44,34,44,44,34,44,34,35,34,34],5,3,null,{"problem":47,"audience":45,"pricing":45,"motivation":45,"time_to_build":45,"stack":57,"openness":66,"stage":67,"team_size":67},{"value":48,"source":49,"evidence":50},"Running Jupyter notebooks inside a terminal instead of a browser.","inferred",[51,53],{"id":52},"post",{"id":54,"by":55,"text":56},"27091778","jdnier","See the source code. It's a good real-world example of how to use prompt_toolkit to create a non-trivial TUI application. https:\u002F\u002Fpython-prompt-toolkit.readthedocs.io\u002Fen\u002Fmaster\u002F",[58,62],{"value":59,"source":49,"evidence":60},"Python",[61],{"id":54,"by":55,"text":56},{"value":27,"source":63,"evidence":64},"commenter",[65],{"id":54,"by":55,"text":56},"open_source","unknown",{"praise":69,"objections":81,"requests":96,"questions":110,"alternatives":115},[70,77],{"value":71,"source":63,"evidence":72},"Good README with practical information and a screenshot",[73],{"id":74,"by":75,"text":76},"27091979","tux3","Now that's an example of a good README. All the practical information you could want, and a screenshot. (Also, clever name! I'd heard of that particular Greek deity from…",{"value":78,"source":63,"evidence":79},"Good real-world example of a TUI built with prompt_toolkit",[80],{"id":54,"by":55,"text":56},[82,89],{"value":83,"source":63,"evidence":84},"Missing duplicate and move-line keyboard shortcuts",[85],{"id":86,"by":87,"text":88},"27093268","dr_kiszonka","nbterm, euphorie, and even Jupyter don't seem to support shortcuts for duplicating line and moving it up\u002Fdown. Why is it the case? I can't be the only person using these…",{"value":90,"source":63,"evidence":91},"Ctrl-Enter and Shift-Enter keystrokes not supported in terminal",[92],{"id":93,"by":94,"text":95},"27092440","samatman","Looks cool! Random note: the best way to support keystrokes such as Ctrl-Enter and Shift-Enter in the terminal is CSI-u mode: http:\u002F\u002Fwww.leonerd.org.uk\u002Fhacks\u002Ffixterms\u002F It's…",[97,104],{"value":98,"source":63,"evidence":99},"Vim-style key bindings",[100],{"id":101,"by":102,"text":103},"27093764","qolop","Do you have support for VIM bindings? Or a plan to add them sometime in the future?",{"value":105,"source":63,"evidence":106},"Support for interactive Plotly plots",[107],{"id":108,"by":87,"text":109},"27093830","Thanks for the link. Do you know if it supports interactive Plotły plots? I have tried emacs a couple of times over the last 20 years (spacemacs most recently) and it always made…",[111],{"value":112,"source":63,"evidence":113},"Does it support vim bindings?",[114],{"id":101,"by":102,"text":103},[116,123,134],{"value":117,"source":63,"evidence":118},"nbterm",[119],{"id":120,"by":121,"text":122},"27092763","kbd","Worth noting that Jupyter themselves announced[1] 'nbterm'[2] recently, which seems like an attempt at the same thing but it seems very very immature compared to Euporie. I don't…",{"value":124,"source":63,"evidence":125},"Emacs org-mode with emacs-jupyter",[126,130],{"id":127,"by":128,"text":129},"27092079","snicker7","People who are interest in this should seriously consider Emacs's org-mode.",{"id":131,"by":132,"text":133},"27093644","d0mine","Org Babel + emacs-jupyter is a good combination https:\u002F\u002Fgithub.com\u002Fnnicandro\u002Femacs-jupyter#org-mode-source-blocks",{"value":135,"source":63,"evidence":136},"EIN (Emacs iPython Notebook)",[137],{"id":138,"by":139,"text":140},"27092462","michaericalribo","Yeah! Org babel makes integrating analysis in a transparent way that follows existing org mode workflows \u002F patterns. There is an important feature Jupyter has that org doesn’t…",{"comments":44,"answered":32,"key":142},[143,146,149],{"id":144,"text":145},"27094324","Currently for edit mode, euporie uses the default emacs-style key-bindings from prompt_toolkit. So duplicating a line is as simple as Ctrl-a, Ctrl-k, Ctrl-y, Return, Ctrl-y ! I…",{"id":147,"text":148},"27094255","I hadn't come across this before - thanks!",{"id":150,"text":151},"27094270","Support for vim-style bindings is already there (thanks to prompt_toolkit) - I just need to make euporie read settings from a configuration file \u002F expose them through the menu.…",{"commenters":153,"max_depth":43,"maker_replies":44,"first_comment_mins":154,"lifespan_hours":155},17,90,30,[157,159,161,163,166,167,169,172,174,176,178,180,181,182,184,186,187,190,191,195,198,203,206],[54,34,43,158,55,34],"project\u002Fpositive\u002Fexecution",[120,35,34,160,121,34],"commenter\u002Fcritical\u002Fexecution",[86,35,44,162,87,34],"project\u002Fneutral\u002Fdesign",[164,35,34,165,132,34],"27093689","commenter\u002Fneutral\u002Fnone",[108,35,34,165,87,34],[168,35,34,165,132,34],"27094112",[170,35,34,165,171,34],"27096093","Siira",[144,35,34,173,11,35],"maker\u002Fneutral\u002Fdesign",[175,35,44,162,87,34],"27102692",[74,32,43,177,75,34],"project\u002Fpositive\u002Fdocs",[127,44,34,179,128,34],"other\u002Fneutral\u002Fnone",[138,44,34,179,139,34],[131,44,34,179,132,34],[93,183,44,173,94,34],4,[147,183,34,185,11,35],"maker\u002Fpositive\u002Fnone",[101,43,44,162,102,34],[188,43,44,162,189,34],"27094057","alpaca128",[150,43,34,162,11,35],[192,33,44,193,194,34],"27092691","project\u002Fneutral\u002Fidea","spenczar5",[196,33,34,165,197,34],"27093433","filmor",[199,200,35,201,202,34],"27092176",7,"project\u002Fcritical\u002Fdocs","Dalrymple",[204,200,34,165,205,34],"27092531","kgarten",[207,200,34,165,208,34],"27093110","tptacek",[],[211,216,221,226,231,235],{"id":212,"name":213,"points":214,"category":215},"27132334","Permafrost Engine",1102,"games",{"id":217,"name":218,"points":219,"category":220},"27084995","playground-macos",683,"productivity",{"id":222,"name":223,"points":224,"category":225},"27128424","Mmm.page",591,"web_saas",{"id":227,"name":228,"points":229,"category":230},"27112573","Sequencer64",327,"creative",{"id":232,"name":233,"points":234,"category":215},"27083666","Lovetris",215,{"id":236,"name":237,"points":238,"category":20},"27107428","Django SQL Dashboard",204,false,"v2",{"id":242,"name":5,"line":6,"ai":239,"cat":20,"year":13,"points":14,"comments":15,"rec":29,"s":243,"top":18,"kw":244,"maker":11,"domain":10,"tier":19,"attempts":34,"strip":245,"url":9,"mix":246,"praise":71,"objection":83,"sub":21},27091167,0.1,[24,25,26,27,28],"50300000350003033030100",[32,33,34,35],1794036606555]