[{"data":1,"prerenderedAt":345},["ShallowReactive",2],{"project-9498874":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":48,"what":49,"said":95,"maker_in_thread":211,"shape":218,"grid":222,"attempts":306,"same_week":307,"maker_shows":40,"maker_hidden":337,"reader_version":338,"card":339},"9498874","kiUi","Lightweight auto-layout stylable UI toolkit","title","Show HN: kiUi – Lightweight auto-layout stylable UI toolkit","http:\u002F\u002Fnovembermonk.github.io\u002Fkiui\u002Farticle.html","novembermonk.github.io","hugoamnov",1430922694,2015,136,39,159,2565,7,"notable","languages","ui toolkit library","library",[24,25,26,27,28],"c++ ui toolkit","auto-layout","stylable ui","emscripten","retained mode ui","mixed",-0.119,{"positive":32,"neutral":33,"mixed":34,"critical":35},5,8,0,9,22,{"performance":38,"idea":41,"execution":42,"design":44,"docs":45},{"positive":39,"critical":40},1,2,{"positive":40,"critical":40},{"positive":34,"critical":43},4,{"positive":34,"critical":39},{"positive":34,"critical":34},[47,32,34,39,47,32,47,34,39,34,39,39,39,34,34,47,34,34,47,39,34,47,47,34,34,39,34,32,34,32,47,34,34,34,39,32,34,39,34],3,null,{"problem":50,"audience":48,"pricing":48,"motivation":60,"time_to_build":48,"stack":66,"openness":92,"stage":93,"team_size":94},{"value":51,"source":52,"evidence":53},"Building lightweight, skinnable UI with automatic layout in native code","maker",[54,57],{"id":55,"by":11,"text":56},"9502324","You are somewhat right in that HTML and CSS heavily inspired what kiUi became. But there are two major concerns that are not adressed by your solution : - Embedding a whole…",{"id":58,"by":11,"text":59},"9502635","One thing you misunderstood : You don't specify any absolute measurement when using kiUi from C++. The whole point is to get rid of them. They are calculated under the hood. The…",{"value":61,"source":52,"evidence":62},"Native UI in code is more concise and less error prone than XML or HTML",[63],{"id":64,"by":11,"text":65},"9502358","I have a simple answer but it may not suit you : After spending quite some time writing UI, I believe doing it in either XML or HTML is just pure madness. UI is a very complex…",[67,75,81,87],{"value":68,"source":52,"evidence":69},"C++",[70,74],{"id":71,"by":72,"text":73},"9500182","statico","This is wonderful. Thank you for building this. Your emphasis on modern C++ and small dependencies is especially appreciated, especially in a world where an Emscripten bundle…",{"id":64,"by":11,"text":65},{"value":76,"source":52,"evidence":77},"NanoVG",[78],{"id":79,"by":11,"text":80},"9500296","Thank you. As to the draw calls, NanoVG draws everything directly each frame so this is constant whether or not you are updating. As to the overhead, not too long ago everything…",{"value":82,"source":52,"evidence":83},"GLFW",[84],{"id":85,"by":11,"text":86},"9499863","the input and scrolling is handled by GLFW, I'll look into the issue. also it's specific to the web version which is weird",{"value":88,"source":89,"evidence":90},"Emscripten","commenter",[91],{"id":71,"by":72,"text":73},"open_source","beta","unknown",{"praise":96,"objections":116,"requests":142,"questions":168,"alternatives":180},[97,105],{"value":98,"source":89,"evidence":99},"Performance-focused design and small dependencies appreciated",[100,101],{"id":71,"by":72,"text":73},{"id":102,"by":103,"text":104},"9504320","ocornut","statico: you can load a different TTF with ImGui, it doesn't have to be monospaced and they can be smooth. The perf differences are due to designing the library with performances…",{"value":106,"source":89,"evidence":107},"Interesting alternative to HTML\u002FCSS UI layers",[108,112],{"id":109,"by":110,"text":111},"9501911","tracker1","I think it's funny how many xml based UI frameworks have been made over the years that are better composed better than html with more strict rules and consistency that are…",{"id":113,"by":114,"text":115},"9503613","marti","I agree, embedding a browser doesn't seem lightweight at all. What it does give, however, is a common and comprehensive framework for laying out and styling your UI elements.…",[117,123,134],{"value":118,"source":89,"evidence":119},"Slow per-frame cost (8-9ms) in the Emscripten demo",[120],{"id":121,"by":72,"text":122},"9502347","Gotcha. I ask because, on my machine, kiUi takes 8-9ms every frame regardless of what I'm doing (e.g., typing, dragging windows, resizing things). If I'm trying to maintain 60…",{"value":124,"source":89,"evidence":125},"Input and scrolling bugs, including inverted natural scrolling",[126,130],{"id":127,"by":128,"text":129},"9498998","billconan","two issues: 1. it doesn't accept asian language inputs. 2. the scrolling direction doesn't respect my system settings. (I have unchecked natural scrolling direction on my mac)",{"id":131,"by":132,"text":133},"9499859","fastball","Still wrong. The scrolling direction is the opposite of your system settings. I have my mac set to \"natural\" scrolling and for me the demo scrolls conventionally.",{"value":135,"source":89,"evidence":136},"Crashes Chrome and does not accept Asian language input",[137,141],{"id":138,"by":139,"text":140},"9499760","theikkila","Crashed my chrome :D",{"id":127,"by":128,"text":129},[143,151,158],{"value":144,"source":89,"evidence":145},"Support natural scrolling and system scroll settings",[146,150],{"id":147,"by":148,"text":149},"9499521","mcintyre1994","It seems to be hardcoded natural scrolling - I'm getting it on a Windows desktop with a mouse wheel.",{"id":131,"by":132,"text":133},{"value":152,"source":89,"evidence":153},"Clarify license, MIT on site vs zlib on GitHub",[154],{"id":155,"by":156,"text":157},"9500870","yellowapple","The webpage says that it's MIT licensed, but the GitHub page says that it's zlib licensed. Which is it?",{"value":159,"source":89,"evidence":160},"A lighter version with fewer widgets",[161,165],{"id":162,"by":163,"text":164},"9499856","iyn","I would love to see\u002Fexperiment with light version of this.",{"id":166,"by":11,"text":167},"9500226","If you want to strip it down, you can start by not compiling all the widgets you don't need as there are quite a lot of them. The renderer (glfw, NanoVG) takes about half of the…",[169,173],{"value":170,"source":89,"evidence":171},"What is rendering performance when updating many text fields or images per frame?",[172],{"id":71,"by":72,"text":73},{"value":174,"source":89,"evidence":175},"Why build a custom UI instead of XML, Qt, GTK, or an embedded browser?",[176,177],{"id":109,"by":110,"text":111},{"id":178,"by":114,"text":179},"9501478","Many game developers seem to build their own UI libraries from scratch. Wouldn't it make sense to use Chromium Embedded Framework[0] or Awesomium[1] instead? I haven't used them…",[181,189,196,203,207],{"value":182,"source":89,"evidence":183},"Dear ImGui",[184,188],{"id":185,"by":186,"text":187},"9500046","greggman","How about IMGUI? https:\u002F\u002Fgithub.com\u002Focornut\u002Fimgui",{"id":121,"by":72,"text":122},{"value":190,"source":89,"evidence":191},"Embedded browser (CEF, Awesomium, Coherent)",[192,193],{"id":178,"by":114,"text":179},{"id":194,"by":72,"text":195},"9507598","Or HTML. http:\u002F\u002Fcoherent-labs.com\u002F",{"value":197,"source":89,"evidence":198},"Scaleform (Flash)",[199],{"id":200,"by":201,"text":202},"9501716","pjmlp","AAA studios use Flash. http:\u002F\u002Fgameware.autodesk.com\u002Fscaleform",{"value":204,"source":89,"evidence":205},"libRocket",[206],{"id":121,"by":72,"text":122},{"value":208,"source":89,"evidence":209},"XAML, Flex, Qt, GTK",[210],{"id":109,"by":110,"text":111},{"comments":212,"answered":213,"key":214},11,6,[215,216,217],{"id":79,"text":80},{"id":64,"text":65},{"id":58,"text":59},{"commenters":219,"max_depth":32,"maker_replies":212,"first_comment_mins":220,"lifespan_hours":221},21,16,29,[223,226,228,229,231,232,235,237,239,242,244,246,247,248,251,252,253,255,256,259,262,263,264,265,267,270,273,275,278,280,283,285,288,291,295,298,300,302,303],[224,34,47,225,132,34],"9500112","project\u002Fneutral\u002Fperformance",[71,39,32,227,72,34],"project\u002Fpositive\u002Fperformance",[79,39,34,225,11,39],[121,39,39,230,72,34],"project\u002Fcritical\u002Fperformance",[102,39,47,225,103,34],[233,39,32,234,72,34],"9507572","maker\u002Fpositive\u002Fnone",[109,40,47,236,110,34],"project\u002Fneutral\u002Fidea",[64,40,34,238,11,39],"project\u002Fpositive\u002Fidea",[240,40,39,241,110,34],"9502552","project\u002Fcritical\u002Fidea",[58,40,34,243,11,39],"project\u002Fneutral\u002Fdesign",[127,47,39,245,128,34],"project\u002Fcritical\u002Fexecution",[147,47,39,245,148,34],[131,47,39,245,132,34],[249,47,34,250,11,39],"9500204","project\u002Fneutral\u002Fexecution",[85,47,34,250,11,39],[178,43,47,236,114,34],[200,43,34,254,201,34],"other\u002Fneutral\u002Fnone",[194,43,34,254,72,34],[257,43,47,236,258,34],"9501765","pavlov",[260,43,39,241,261,34],"9502084","supercoder",[55,43,34,236,11,39],[113,43,47,236,114,34],[185,32,47,236,186,34],[266,32,34,236,11,39],"9500077",[268,32,34,254,269,34],"9501370","yoklov",[271,32,39,272,72,34],"9500198","project\u002Fcritical\u002Fdesign",[274,32,34,254,72,34],"9500251",[276,213,32,238,277,34],"9502064","scoopr",[279,213,34,236,11,39],"9502386",[281,213,32,234,282,34],"9502478","bkudria",[155,18,47,284,156,34],"project\u002Fneutral\u002Fdocs",[286,33,34,254,287,34],"9499918","chingjun",[289,33,34,290,11,39],"9500054","maker\u002Fneutral\u002Fdocs",[292,33,34,293,294,34],"9500109","commenter\u002Fneutral\u002Fnone","CompanyLaser",[296,35,39,230,297,34],"9499854","WaxProlix",[162,299,32,238,163,34],10,[166,299,34,301,11,39],"maker\u002Fneutral\u002Fperformance",[138,212,39,245,139,34],[304,212,34,305,11,39],"9499870","maker\u002Fneutral\u002Fexecution",[],[308,313,318,323,328,333],{"id":309,"name":310,"points":311,"category":312},"9477032","zindex",125,"dev_tools",{"id":314,"name":315,"points":316,"category":317},"9485714","nvParse",123,"data",{"id":319,"name":320,"points":321,"category":322},"9491978","My Hacker News",78,"consumer_social",{"id":324,"name":325,"points":326,"category":327},"9476603","PID",73,"learning_science",{"id":329,"name":330,"points":331,"category":332},"9502015","Estimote Indoor Location SDK",71,"infrastructure",{"id":334,"name":335,"points":336,"category":312},"9500823","Onboarded",54,false,"v2",{"id":340,"name":5,"line":6,"ai":337,"cat":20,"year":13,"points":14,"comments":15,"rec":29,"s":341,"top":18,"kw":342,"maker":11,"domain":10,"tier":19,"attempts":34,"strip":343,"url":9,"mix":344,"praise":98,"objection":118,"sub":21},9498874,-0.12,[24,25,26,27,28],"350135301011100300310330010505300015010",[32,33,34,35],1793990924131]