-- Leo's gemini proxy

-- Connecting to scrollprotocol.us.to:1965...

-- Connected

-- Sending request

-- Meta line: 20 text/gemini; lang=en

Publish Date: 2024-04-11T07:48:59Z

Modification Date: 2024-05-19T01:40:00Z

Udc-class: docs

Profectus


Overview


Current Version: Beta 1.1

Copyright: 2024 Christian Lee Seibold

License: MIT

Repository


What is Profectus?


Profectus is a new GUI client for the scroll, gemini, nex, and spartan protocols that is intended to rival Lagrange in performance, visual design, features, and cross-platform compatibility. It is written in Golang using SDL and a custom GUI. Font rendering is currently done with SDL-TTF, but will be moved to Harfbuzz eventually.


Download the Linux and Windows precompiled zip files here:

Download precompiled binaries


Recent Updates


Beta 1.1 removes libwebp support.

Beta 1.0 contains new themes, finished outline, and scroll metadata info in sidebar.

Alpha 0.10 contains Spartan support, two new themes based on firefox, and address-bar searching.

Alpha 0.9 contains theming, Ctrl+T and Ctrl+Shift+T to shuffle between themes, basic theming documentation, and more UI animations.

Alpha 0.8 contains smooth scrolling, animatted tabbar, and Ctrl+B to show/hide the sidebar.

Alpha 0.7 contains tabs, animated AVIF image support, optimized text rendering, and memory leak fixes.

Alpha 0.6 contains support for animated JPEG XL and WebP image files, fixes for animated PNGs (APNGs), and a fix for images getting cut off.

Alpha 0.5 contains support for animated GIFs and animated PNGs, a slightly increased scrolling speed, and some small performance and memory optimizations.

Alpha 0.4 contains the final fixes for DPI, improvements to the styling of quotes, Ctrl+Shift+Plus/Minus shortcut to manually increase/decrease the UI scale, fixes to hover/click events (they are clipped properly), and support for youtube:// and ytdl:// links.

Alpha 0.3 contains more proper fixes for DPI on Wayland and macOS, as well as very basic CSV file support.

Alpha 0.2 contains quick fixes for DPI on Wayland Linux systems.


Installation


Linux

You will need to install the following dependencies:

sdl2

sdl2-image

sdl2-ttf

sdl2-gfx

libjxl

libwebp - for Beta 1.0, removed in Beta 1.1


For Debian-based distributions, you can run the following:

sudo apt install libsdl2 libsdl2-image libsdl2-gfx libsdl2-ttf libjxl

For Fedora-based distributions, run the following:

sudo dnf install SDL2 SDL2_image SDL2_gfx SDL2_ttf libjxl

Unzip the zip, and double click `profectus` to run the program. It runs in portable mode for now.


Windows

You should not need to download any dependencies, unless you want to be able to pipe streaming videos into a video player (mpv, vlc, or ffplay); you can download mpv, vlc, or ffmpeg through winget, choco, or some other method. Make sure they are added to your PATH.


Unzip the zip, and double click `profectus.exe` to run the program. It runs in portable mode for now.


macOS

There is now an experimental precompiled binary for macOS on the Precompiled Binaries page:

Precompiled Binaries


Profectus has not been tested with macOS, but you can try to manually build it for macOS by visiting the repository. You will need the development packages for SDL2, SDL2-image, SDL2-ttf, SDL2-gfx, jpeg-xl, and libavif installed.

Profectus Repository


Getting Updates

You can get updates on the Scroll Protocol's software downloads page:

Scroll Protocol


Upcoming Features


Scroll-Specific features:

** Abstracts

** Language Selection

File Upload via Titan/Spartan, and Sensitive Input being hidden

Downloads

Bookmarks and history pages

Sibling links

TOFU verification

Configure search engine

View pages as plain text

Tab dragging

More document formats: markdown, asciidoc

Inline document viewing (for images and audio) - based on Lagrange

Certificate management

Harfbuzz and bidi

Gemsub feeds and Atom feeds

Custom fonts and more UI customization

Split View


About the Name "Profectus"


Profectus in Latin means progress, or advancement. It is an intentional contrast to lack of change, or staying put, but it is not a dichotomy; progress requires both stability and change.


Staying the same, at the same points, in the same ranges, using the same tools, embracing the same limits, and keeping to the same sources of knowledge, means we do not learn from failures, we do not branch out, we do not explore and discover. Staying in constant motion, always advancing, chasing the next achievement, the next shiny object, the next best tech, means we do not have the chance to reflect on our choices and our past.


Scroll finds a balance between reflecting on the successes and failures of Gemini and Gopher, and advancing the idea of a reader-focused protocol. It offers stability and change. The stability is largely in the protocol that can be more widely utilized toward the specific goal of reading and media, and the change is in both the extended markup and the potential for media and other document formats. This change reflects on real-world usage of documents that are meant to be read. This advancement through stability and reflection perfectly encapsulates literature and media in general.


UI Navigation


Mouse Shortcuts


Middle Click - tab, closes the tab; link, opens link in new tab.

Shift+Middle Click Link - opens link in new tab and sets it active.

Ctrl+Click Link - opens link in new tab.

Ctrl+Shift+Click Link - opens link in new tab and sets it active.

Back/Forward Mouse Buttons - go back and forward in the history.


Keyboard Shortcuts


Arrow keys (up/down) - Scroll the document.

Ctrl+B - Show/Hide the sidebar.

Ctrl+T - Open new tab and switch to it.

Ctrl+W - Close current active tab.

Alt+T - Switch through themes in themes directory.

Alt+Shift+T - Switch through themes (backwards) in themes directory.

Ctrl+Shift+Plus/Minus - Increase/decrease UI scale.

Ctrl+Alt+Plus/Minus - Increase/decrease document max width.

Ctrl+V - Paste text from clipboard if a textbox is in focus.is in focus.


Theming Documentation


You can toggle themes with `Alt+T` and `Alt+Shift+T`. Profectus will toggle through the files in the themes folder. You can create your own themes and place them in the themes folder, and Profectus will be able to toggle through them as well.


Intro


Theme Files are organized into Sections and Elements. Sections refer to which part of the UI one is customizing: the Topbar, the Tabbar, the Sidebar, or the Page. The Topbar and Tabbar are distinct panes that usually sit next to each other. The Topbar contains the address and navigation buttons, whereas the Tabbar contains the tabs. Elements refer to UI elements that can appear inside of each of those sections, and includes buttons, textboxes, and list items.


Every Section also has a panel element which controls the characteristics of the section's panel. For example, the sidebar's panel element controls the sidebar's background, border, etc. rather than the elements inside of it.


Special Section Properties


The Tabbar, Sidebar, and Page sections have their own properties unique to themselves.


The Tabbar has a position property that controls whether it will be displayed "above" or "below" the topbar. The Firefox and Kristall themes place the tabbar above, whereas the Lagrange, Castor, and Default Dark themes place it below.


The Tabbar also has an add_button_position property to control the position of the add tab button. The value may be one of the following:

opposite - placed to the opposite side of the tabs, with a spacer between. Default.

after_tabs - placed just after the tabs (to the right on the LTR interface). Used by the Firefox and Kristall themes.

before_tabs - placed before the tabs (to the left on the LTR interface)


The Sidebar has max_width and min_width that controls the sizing of the sidebar. The sidebar also contains a "dock" value which may be one of the following:

"default" - left for LTR, right for RTL

"opposite" - right for LTR, left for RTL

"left" - always left

"right" - always right


Note that these are properties inside the section object, not any element.


Page has max_width, max_image_width, center, and nex_char_width properties that control the width and positioning of the page. These properties are inside the section object and not inside any element.


The Page section also contains Elements for each Document Linetype in the "document" object. Each element is labelled based on the linetype: heading1, heading2, heading3, heading4, body, blockquote, preformat, link, link_nex, and list_item. These control how a document is colored and spaced.


Element Properties


Lastly, Elements consist of padding, spacing, radius, and indent_size, as well as a list of backgrounds, borders, and text colors based on a selector. The selector is much like a CSS selector. It can be "default", "hover", "active", "focused", "placeholder" (for textbox placeholders), or "disabled" (for disabled buttons/elements). Note that not all elements utilize all selectors. Use the bundled themes as a guide.


Colors (backgrounds and text colors) are hexadecimal strings prefixed with "#". Three and six characters are interpreted as rgb, whereas four and eight are interpreted as rgba.


Borders include a uint16 thickness and a color. Note that a thickness of greater than 1 isn't supported yet. Also note that a thickness of 0 will remove the border.


Padding is an object of point size values for left, right, top, and bottom.


Spacing is an array of two float32 values, X and Y respectively, that controls the spacing between elements within a section.


Radius is an int32 that controls the radius of the rounded corners. A radius of <= 1 means the element will not be rounded. Currently, tabbar buttons will not be rounded unless they are in a detached state, meaning there is bottom padding on the tabbar itself. See the Firefox themes for an example of this.


Indent_size controls indenting for blockquotes and the outline list element within the sidebar.


Special Elements


Button is a special element in that it has a unique property, called outset. When outset is set to true, a button will have a highlight on the top and left, and a shadow on the bottom and right, like a bevelled button. You cannot currently use outset with a radius.


Points vs. Pixels


All border thicknesses are in pixels. The page section's nex_char_width is in characters. All other size values, including radius, are in float32 points which are then scaled by the user's UI Scale (and/or DPI) automatically to convert into pixels.


Defaults


When an entire section is omitted, Profectus will use the default section's properties for that section. If the default section is omitted, then it will use the Default Dark theme's default section.


If a document element is omitted, then Profectus will use the default document theming from the Default Dark theme. This is useful if you want to change the UI but not the document styling, or if you only want to change some linetype stylings but not all of them.


A page max_width (or max_image_width) of 0 will result in a page that goes to the edge of the window. A nex_char_width of 0 will result in a width of 80 characters for nex documents.


When an entire element is omitted, the corresponding element from the default section is used.


If a selector within an element's background, border, or textcolor arrays is omitted, it will default to the default selector. If the default selector is also omitted, then it will default to the default selector of the corresponding element in the default section.


If an element's padding or spacing values are omitted, then it will default to the padding and spacing of the corresponding element in the default section.


If an element's indentSize is omitted, the default is 0 (no indent).


Special Theme-Level Properties


There are two more properties that are special and they are in the upmost level, within the theme object:


content_container_padding controls the padding of the container that includes the sidebar and the page.

sidebar_divider controls the x-spacing between the sidebar and the page.


When omitted, both will default to their zero values.


Note that themes are likely to have some changes in the future. I plan on adding text sizes and a few more positionings. Since this is alpha, the structure of theme files is likely to change. However, each new version will always make sure the bundled themes are updated for any changes.

-- Response ended

-- Page fetched on Sun May 19 08:40:30 2024