{"id":16701559,"url":"https://github.com/ferd/slider","last_synced_at":"2025-03-21T19:33:17.953Z","repository":{"id":141683952,"uuid":"248022212","full_name":"ferd/slider","owner":"ferd","description":"A WxErlang application to generate slidesets.","archived":false,"fork":false,"pushed_at":"2024-10-04T01:09:13.000Z","size":7017,"stargazers_count":40,"open_issues_count":0,"forks_count":2,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-03-18T04:42:47.743Z","etag":null,"topics":["erlang","hacktoberfest","presentation","wx"],"latest_commit_sha":null,"homepage":"","language":"Erlang","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ferd.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-03-17T16:42:32.000Z","updated_at":"2024-10-22T10:23:00.000Z","dependencies_parsed_at":"2024-01-31T01:35:05.021Z","dependency_job_id":"b24a36f4-22f2-4380-ba85-40739b59516d","html_url":"https://github.com/ferd/slider","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ferd%2Fslider","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ferd%2Fslider/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ferd%2Fslider/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ferd%2Fslider/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ferd","download_url":"https://codeload.github.com/ferd/slider/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244855716,"owners_count":20521692,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["erlang","hacktoberfest","presentation","wx"],"created_at":"2024-10-12T18:44:31.643Z","updated_at":"2025-03-21T19:33:16.211Z","avatar_url":"https://github.com/ferd.png","language":"Erlang","funding_links":[],"categories":[],"sub_categories":[],"readme":"slider\n=====\n\nA slideshow software stack that is janky as hell, but also what I wanted to use.\nA work in progress.\n\nWhy?\n----\n\nRegular slideshow software is decent, but doesn't necessarily do what I want. The following features are often supported by many tools, but rarely all at once:\n\n- automatic handling of syntax highlighting in code snippets\n- code snippets that can actually be loaded from files rather than wedged in a slide forever\n- format for slideset spec that is easy to prototype and check into source control\n- presenter notes\n- friendly for screenshare mode on a single display\n- working without network connectivity\n- multiplatform (Linux, OSX, Windows)\n- portable (could work without system install, and loadable from a USB drive)\n- minimal presentation size at rest\n- just automatically crop and center most images for backgrounds for me\n- while you're at it do that for images I put in slides on the foreground too\n- easy ways to make a basic \"template\" for style guidelines\n- unicode support for things like emojis (everyone does it but I still need it)\n- get out of the way\n\nAlso I wanted to try my hand at GUI programming, I've never done that before.\n\nWhat does it look like?\n-----------------------\n\nAll the content is put in a given directory where a single file with a `.set` extension is located.\n\n```\n=== defaults ===\n// this section defines attributes that are defaults for all slides\ntext color: #ffffff\nbackground: sloths.jpg\ntype: base\n=== slides ===\n// Now we start with actual slides. Each slide has two sections.\n// This is the slide content for a 'base' slide:\ntitle: This is one of the slides\nsubtitle: with a subtitle\n---\n// This is the presenter notes section\nLorem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam erat nisl,\nrhoncus vel quam in, accumsan tincidunt leo. Vivamus condimentum congue\nsagittis. Vestibulum eget orci placerat, suscipit ligula ut, ullamcorper dui.\n\n===\ntitle: Other slide\nsubtitle: Third subtitles\n// specific attributes can be overridden\nbackground: control.jpg\ntext color: #66FF66\n---\nJust say some things\n- this is one\n- this is another\n\n===\ntitle: Emojis!\nsubtitle: To the moon! 🌕\ntext color: #000000\n---\nChecking for Unicode support: 👩‍👩‍👦‍👦\nThis works hopefully\n\n===\n// for code slides, the 'source's extension specifies the highlight language\ntype: code\nsource: rebalance1.erl\nsource size: 32\ntitle: Rebalance\n---\nThis is part of the rebalancing of a treap\n\n===\ntype: code\nsource: elixir.ex\nsource size: 32\ntitle: Elixir\n---\nElixir falls back to ruby as it has a similar syntax\nand Wx doesn't have elixir\n\n===\n// image slides show just one big image\ntype: image\ntitle: horizontal image\nimage: wind.jpg\n---\n\n```\n\nThe slideshow is started by calling the `show.sh` executable (see [Build](#build)) within the directory calling this.\n\nHere are some of the rendered slides:\n\n![](https://i.imgur.com/d8fOLUm.png)\n![](https://i.imgur.com/Kszxes1.png)\n![](https://i.imgur.com/UvyLJDw.png)\n\n\nStuff that still sucks\n----------------------\n\n- Haven't tested the build on Windows, which is sure to need a bunch of patching\n- Nightmode on OSX clashes with the notes' panes default style\n- The notes pane on linux includes the size of the title bar in its size so that sometimes truncates the last line of notes halfway through\n- Haven't looked to make fonts portable yet so the portability part of this software is not fully there yet\n- if you close one of the windows you gotta reboot the whole freaking thing to bring em back\n- I picked \"thousandths of screen height\" for font-size so it scales with window size and it works but it's completely unintuitive\n- font sizes turn out to look different across platforms and need fixing\n- wouldn't be surprised if there were memory leaks in there\n- the preview mode shows the current slide (in case you don't have a monitor display and can't mirror screens to show notes) but not future/previous slides\n- the code is messy\n\nThings I have not started figuring out (and may never do)\n---------------------------------------------------------\n\n- reloading of slide descriptions when editing them\n- adding more languages to syntax highlight (currently: Erlang, Python, Ruby, C/C++, Elixir (via Ruby), Go (via C))\n- proper preview mode with small versions of prev/next slides\n- testing with a clicker for event registration\n- using comments in code to load a subset of a file like in asciidoctor\n- would be nice to automatically make text fit the boxes available in terms of size\n- export to PDF\n- automated tests of slide rendering\n- themes for syntax highlighting\n- slides with an interactive REPL in them\n- slides with paragraphs of text\n- credits slide that loads citations from files\n- tables and charts\n\nThings I can't be bothered with\n-------------------------------\n\n- Animations\n- Embedded video/gifs\n\nBuild\n-----\n\n    $ rebar3 as prod release\n\nAnd run with:\n\n    $ /path/to/slider/_build/prod/rel/slider/show.sh\n\nI have an issue or suggestion\n-----------------------------\n\nThis is a toy project. Come have a chat.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fferd%2Fslider","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fferd%2Fslider","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fferd%2Fslider/lists"}