[{"data":1,"prerenderedAt":217},["ShallowReactive",2],{"\u002Fprojects\u002Fggate":3},{"id":4,"title":5,"body":6,"description":204,"extension":205,"icon":206,"license":207,"meta":208,"navigation":209,"path":210,"repo":211,"seo":212,"stem":213,"version":214,"website":215,"__hash__":216},"projects\u002Fprojects\u002Fggate.md","GGate",{"type":7,"value":8,"toc":198},"minimark",[9,13,21,26,29,32,36,75,81,87,91,113,157,164,179,183,194],[10,11,12],"p",{},"GGate lets you place logic gates on a canvas, wire them up, run the simulation,\nand watch the circuit change over time. It's written in Python with GTK 4 and\nLibadwaita, and the canvas is drawn with Cairo (the 2D drawing library GTK uses\nunder the hood).",[10,14,15],{},[16,17],"img",{"alt":18,"src":19,"width":20},"GGate playing back an oscillator circuit","\u002Fimages\u002Fggate\u002Fplayback.png",640,[22,23,25],"h2",{"id":24},"where-did-it-come-from","Where did it come from?",[10,27,28],{},"GGate is a fork of GLogic, a logic circuit simulator Koichi Akabe released back\nin 2012. It started out as a wxWidgets app and moved to GTK+ in its second\nversion.",[10,30,31],{},"I picked it up in 2022 and ported it to GTK 4, adding the tri-state buffer and\nshift registers along the way. Later that year I renamed it to GGate so it could\nbe published. The latest round (v5) moved everything over to Libadwaita, added\nlight and dark themes, and made the simulation play back as an animation.",[22,33,35],{"id":34},"what-can-you-do-in-it","What can you do in it?",[37,38,39,43,46,49,52,55,58,61,64,67],"ul",{},[40,41,42],"li",{},"Use all the standard logic gates, with both IEC and MIL\u002FANSI symbols.",[40,44,45],{},"Add flip-flops, counters, shift registers, and a tri-state buffer.",[40,47,48],{},"Watch outputs on LEDs and a 7-segment display.",[40,50,51],{},"Drive circuits with switches and a clock oscillator.",[40,53,54],{},"Run the simulation and play it back, with stop, restart, pause, and seek.",[40,56,57],{},"See how every signal changes over time on a timing diagram.",[40,59,60],{},"Export drawings and timing diagrams as PNG, PDF, PS, or SVG.",[40,62,63],{},"Edit the properties of each component.",[40,65,66],{},"Pick a theme: Classic, Space, Frappé, or Mocha, each in light and dark.",[40,68,69,70,74],{},"Open and save circuits as ",[71,72,73],"code",{},".glc"," files.",[10,76,77],{},[16,78],{"alt":79,"src":80,"width":20},"The GGate timing diagram","\u002Fimages\u002Fggate\u002Ftiming-diagram.png",[10,82,83],{},[16,84],{"alt":85,"src":86,"width":20},"GGate with the Frappé dark theme","\u002Fimages\u002Fggate\u002Feditor-frappe-dark.png",[22,88,90],{"id":89},"how-do-i-run-it","How do I run it?",[10,92,93,94,97,98,101,102,97,105,108,109,112],{},"Packages (Flatpak, Snap, and Deb) are still in the works, so for now you run it\nfrom source. You'll need Python 3.10 or higher, GTK 4.16 or higher, Libadwaita\n1.6.8 or higher, and these Python packages: ",[71,95,96],{},"pygobject",", ",[71,99,100],{},"pycairo",",\n",[71,103,104],{},"python-igraph",[71,106,107],{},"shapely",", and ",[71,110,111],{},"packaging",".",[114,115,120],"pre",{"className":116,"code":117,"language":118,"meta":119,"style":119},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","git clone https:\u002F\u002Fgithub.com\u002Fastraldev\u002FGGate\ncd GGate\npython3 run.py\n","bash","",[71,121,122,138,148],{"__ignoreMap":119},[123,124,127,131,135],"span",{"class":125,"line":126},"line",1,[123,128,130],{"class":129},"sBMFI","git",[123,132,134],{"class":133},"sfazB"," clone",[123,136,137],{"class":133}," https:\u002F\u002Fgithub.com\u002Fastraldev\u002FGGate\n",[123,139,141,145],{"class":125,"line":140},2,[123,142,144],{"class":143},"s2Zo4","cd",[123,146,147],{"class":133}," GGate\n",[123,149,151,154],{"class":125,"line":150},3,[123,152,153],{"class":129},"python3",[123,155,156],{"class":133}," run.py\n",[10,158,159,160,163],{},"You can also open a circuit straight away. There are a few examples in\n",[71,161,162],{},"data\u002Fexamples\u002F",":",[114,165,167],{"className":116,"code":166,"language":118,"meta":119,"style":119},"python3 run.py data\u002Fexamples\u002Foscillators.glc\n",[71,168,169],{"__ignoreMap":119},[123,170,171,173,176],{"class":125,"line":126},[123,172,153],{"class":129},[123,174,175],{"class":133}," run.py",[123,177,178],{"class":133}," data\u002Fexamples\u002Foscillators.glc\n",[22,180,182],{"id":181},"want-to-help","Want to help?",[10,184,185,186,193],{},"Contributions and translations are welcome. Fork the repo, make your changes,\nand open a pull request, or\n",[187,188,192],"a",{"href":189,"rel":190},"https:\u002F\u002Fgithub.com\u002Fastraldev\u002FGGate\u002Fissues\u002Fnew",[191],"nofollow","open an issue"," if something's\nbroken. GGate is licensed under GPL v3.",[195,196,197],"style",{},"html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":119,"searchDepth":140,"depth":140,"links":199},[200,201,202,203],{"id":24,"depth":140,"text":25},{"id":34,"depth":140,"text":35},{"id":89,"depth":140,"text":90},{"id":181,"depth":140,"text":182},"A logic circuit simulator for Linux, built with Python, GTK 4, and Libadwaita. A fork of GLogic.","md","\u002Fimages\u002Fggate\u002Ficon.png","GPL-3.0",{},true,"\u002Fprojects\u002Fggate","https:\u002F\u002Fgithub.com\u002Fastraldev\u002FGGate",{"title":5,"description":204},"projects\u002Fggate","5.0.0",null,"YWVK57zaV-m6uJe--Gp4uLFTY9VTsS-D-pl5LjJhC00",1789778980835]