Skip to content

Conversation

@Calebh101
Copy link

@Calebh101 Calebh101 commented May 16, 2025

I added a script called buildapp-linux.py in Scripts that generates an executable for Linux users, similar to buildapp-select.py, officially supporting Debian-based distros. The script basically generates a payload, a main script, and an installer script. The main script handles things like extracting itself, handling temporary files/directories, and managing data. buildapp-linux also compiles a generated C file using gcc that extracts the main script from itself, then runs it. The installer script adds ProperTree to ~/.local/bin and creating a desktop entry.

Even though it doesn't have -select in the title (mainly for consistency), the desktop entry specifies the executable as supporting text/xml and application/x-plist, which is associated with .plists in Linux, thus providing -select capabilities.

I also added two other new files: Scripts/linux-app.c and Scripts/icon.png. linux-app.c is the file containing the base source code for generating the executable, and icon.png is a 256x256 image extracted out of shortcut.icns that is used for the icon for the desktop entry. (I did this because Linux can't easily read .icns files without third-party tools.) Please note, when you change the icon, I'd recommend also changing icon.png, as that's used as the application icon.

I also attached a link the documentation I wrote for buildapp-linux.py that you can add manually to the end of README.md or add it as a separate in the repository. (Or you can write your own if you want to.) I made it with a similar in format as the section describing buildapp-select.py's usage. The documentation I wrote can be reformatted or edited if you'd like. ProperTree-buildapp-linux-Usage.md.

@Calebh101 Calebh101 marked this pull request as draft July 11, 2025 20:38
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant