Hey everyone, I’m trying to replace most of the private owned app I use by FOSS ones, and today i’m pointing at notion.

I just use it as a way to organize my notes and use it both on my laptop and phone, and i’m looking for something that can have that fonctionnality.

I’ve already looked into a bunch of foss note taking apps but I didn’t see any that could do it. (maybe i didn’t look hard enough tho)

I’m willing to use syncthing or smth similar if needed.

do you have any recommendations? anyway, have a nice day and thanks to everyone making the internet/softwares more libre and accessible!

  • [object Object]@lemmy.world
    link
    fedilink
    arrow-up
    2
    ·
    10 hours ago

    includes a Lua interpreter so you can get scripty with it

    Any examples of what you’re doing with scripts? I use some custom programming in Org-mode in Emacs, but curious about what other people are doing in different apps.

    • clif@lemmy.world
      link
      fedilink
      arrow-up
      1
      ·
      edit-2
      3 hours ago

      The two biggest things I use it for are programmatically generating “lists of lists” (lists of pages, more accurately) and as a semi-hacky way to get text colors. Semi-related, the “Treeview” plugin gives you a folder hierarchy panel off to the left (by default) which is really, really nice.

      I should probably clarify that I didn’t write these, I stole them from the Silverbullet community forums… also I should reiterate that I suck at Lua so take my explanations with a grain of “this person may not know what they’re talking about” ; )

      Lists of Lists : I have a bad memory so I create a LOT of lists. I even have a base page named “Lists” that I then nest different types of lists under (TODOs for home, for work, for school, for projects, for selfhosting, etc). Since the table is programmatically generated, it’s always up to date on each load. This first snippet relies on using frontmatter on the respective pages along with the tags property.

      ${query[[
      from index.tag "todolist"
      order by lastModified desc
      select {
        List="[[" .. _.name .. "]]",
        Modified=_.lastModified
        }
      ]]}
      

      This retrieves all pages from the space index with a tag of todolist (from the frontmatter), orders them by lastModified, descending, and renders a table that contains the name and lastModified date. This is excellent for providing a list of pages (based on tag, todolist in this case) related to a topic and ordering them by the last time they were changed. I use this in the base page for pretty much all of my “folders”. Screenshot :

      Text Color Hack : Since the Silverbullet markdown interpreter doesn’t (currently) support plain HTML, and the way we usually color specific areas of text within Markdown is <span style="color: #fff">white text</span>, they had to get inventive. Somebody came up with a way to provide Lua functions that will accept text as a parameter and then render it with the specified HTML color/style.

      In my CONFIG page (that is applied to the entire space) I included a space-lua code block like :

      function Red(text)
        return widget.html(dom.span {
          style="color:#e60000; font-weight: bold;",
          text
        })
      end
      // Also about 5 more for different colors I use, snipped for simplicity.
      

      Then, anywhere in my Silverbullet space I can use a Lua code snippet like The following word is ${Red("red")} and it will invoke the space-lua function named Red() on the text red, apply the styling, and render it with CSS color #e60000. Hacky? Yeah… but it works for now. Screenshot :

      … I’ve been meaning to build a generic Colorize(text, hexColor) function (which would likely take all of 30 seconds : ) but haven’t yet. Maybe tonight.

      EDIT: That did, in fact, take 30 seconds. Function :

      // This assumes "color" parameter is a valid/properly formatted CSS color, meaning a known word ("red"), hex ("#ff0000"), or presumably RGB/etc but so far I've only tested color names and hex (I typically use hex)
      function Colorize(text, color)
      return widget.html(dom.span {
          style=string.format("color:%s; font-weight: bold;", color),
          text
        })
      end
      

      Usage : ${Colorize("any text", "#00ff00")}