ProffieConfig Version 1.9 In Beta

This version is a sizeable update to all parts of ProffieConfig, targeting QoL, reliability, performance, and consistency, as well as adding additional support for ProffieOS8.

ProffieOS8 is now the default version shipped with ProffieConfig.

To Test It Out

With ProffieConfig Version 1.8+, go to “File”->“Update Channel…” and change it to “beta”.
Restarting ProffieConfig will provide you with the update, but you must make sure to download v1.0.9 of the Launcher. Earlier launchers are aware of this, but fail to provide the proper message and results in a generic failure, unfortunately.

What Changed?

The “big” ones:

  • Undo/Redo Support in the editor
  • Improved modification tracking and new compilation caching

Add preferences

  • Choose style editor
  • Choose preset insertion location

Added full support for style aliases (CONFIG_STYLES)
Added formatting button when editing bladestyles
Added “Sync” to custom options
Updated Serial Monitor
Updated versions management
Prop Buttons/Info update real-time
Cancel long verify/apply operations
Bladestyles keep line comments in-line for layer-type comments

Editor Window icons follow system accent color
Substantial updates specifically for UI
Improved config parsing speed

Lots of other little improvements

What’s Pending?

The BC 8.10 and Fett263 8.10 prop file data is out of date (simply a copy of 7.15 currently), and they need the new options to be added to them. For testing, custom defines can of course be added via the General Page.

There is no UI for the MENU_SPEC_TEMPLATE. It seems like it should be on the General Page, but it’s prop-dependent if it’s supported, so I’ve not added it yet. Similarly this can be added with a custom option for now.

These’ll ideally be rectified before a stable-channel release.

There are a few other new OS8 things which don’t have UI, but, unless I missed something, they’re minor, more advanced and w/o enough demand to make it seemingly worth it, and/or need their own advanced section of UI to implement. If there’s anything notable you’re interested in that you see isn’t present, let me know.

What to look out for?

The UI and config handling received by far the most attention this update.

  • Visual glitches
  • Config UI not behaving/updating properly (e.g. settings not being enabled/disabled/shown/unshown correctly)
  • Unexpected behavior/crashing with undo/redo
    • The Undo/Redo system is a massive change to how ProffieConfig handles editing, futzing around with it would be greatly appreciated.

The Serial Monitor

  • This guy got a face lift, with the ability to copy/paste time-stamped messaged from the output, and a lot under the hood.

Other than that, just trying out different configs, playing around, and making sure things work as expected.

I greatly appreciate if you take the time to try it out, even just to give it a quick once-over :slight_smile:

2 Likes

The launcher available on the website is now 1.0.10, and should fix the launching issues in 1.0.9, so the 1.0.9 links in this post have been removed.

1 Like

Want to mention that there’s known visual bugs in the current beta for Windows when in dark mode.

This was resolved in the GUI library, and I’ll update the beta soon.

I believe I’ve figured out the launcher issue, and I’ll be updating that also soon.

Any plans for Linux

I don’t quite understand well how to setup things for linux in terms of the launcher.

There is a linux build, and I use it personally (launching/updating manually), but since the launcher isn’t fully setup for Linux (only for macOS and Windows) I’ve never distributed it (despite publishing the files to the server for a while now).

On Windows, ProffieConfig (Launcher) drops into the Program Files and sets up a start menu shortcut, and registers uninstallation details before installing the actual files into AppData and the launcher manages updating those files and passing through when you launch and whatnot.

On macOS, the launcher also self-installs, largely as a carry-over from Windows (it doesn’t have a real reason to there, users could just as well drag and drop it to their /Applications or ~/Applications if the launcher wasn’t insistent on being in ~/Applications). There’s no need for such “start menu” shortcut because macOS handles this automatically in e.g. Spotlight, and that or directly in the folder is where users expect to find apps.

On Linux, I don’t know what’s expected, especially across all the various desktop and distribution environments.

I think the launcher on linux should go into ~/.local/bin or /usr/local/bin. Probably the latter as the former I think can move based on XDG vars and the latter is more static? (maybe there’s an XDG query for it also…)

I think then the actual binary files would go into the corresponding local/share/proffieconfig directory, though the files specific to the user should definitely go into ~/.local/share (or wherever the XDG var points for the user local/share).

From there, it’d be launchable via $ proffieconfig, and I think I can put a .desktop into /usr/local/share/applications to make it available to the desktop environment (at least GNOME and I think Cinnamon? I don’t know about KDE or others though).

TL;DR linux support exists on a technical level. I’ve been maintaining functionality since the very first version of ProffieConfig and haven’t stopped, and while there’s probably a couple more rough edges, it does work roughly just as well. The problem is I wasn’t particularly certain how it should install itself, and I decided to defer handling that problem until there was someone who actually asked for it to make it “worth it.”

So, if you are indeed interested, I’d appreciate any info/knowledge/feedback you have about what I described as far as installation and file dirs, what desktop environment you’re using, distribution, etc., and if that seems reasonable to you from a Linux-user perspective (of which I am one, but doubt my own perspective being accurate! :sweat_smile:).

1 Like

I suppose it’s also worth mentioning that it’s supported only for x86_64/amd64 Linux and I’ve tested it on openSUSE and Debian.

I’ve not the faintest clue about what building for ARM on Linux would mean, and, as you’ve seen firsthand, there’s a lot of sharp edges when it comes to handling the proffie toolchain on ARM that is probably more work than I feel is worth it or interesting to do myself. Setting up compilation toolchains/procedures for ProffieConfig is easily the worst part of maintaining it! :laughing:

If someone is inclined to make Linux on ARM happen, it’s open source of course, and PRs of reasonable (I say only because of the vast swath of AI garbage) quality are welcome :wink:

1 Like

Oh, right, and if I’m not adding ProffieConfig to a package manager(s), which is entirely a realm I’m unfamiliar with, there’s a whole bunch of dependencies that wxWidgets brings in on Linux that I don’t have to deal with on the other two platforms (either because stuff is guaranteed to be on the system or because wx uses builtin libraries… or just has to handle less stuff since they’re less fragmented platforms).

        libgobject-2.0.so.0 => /lib/x86_64-linux-gnu/libgobject-2.0.so.0 (0x00007f43d8f9d000)
        libglib-2.0.so.0 => /lib/x86_64-linux-gnu/libglib-2.0.so.0 (0x00007f43d82a8000)
        libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f43d932c000)
        libgtk-3.so.0 => /lib/x86_64-linux-gnu/libgtk-3.so.0 (0x00007f43d7600000)
        libgdk-3.so.0 => /lib/x86_64-linux-gnu/libgdk-3.so.0 (0x00007f43d8e8d000)
        libpangocairo-1.0.so.0 => /lib/x86_64-linux-gnu/libpangocairo-1.0.so.0 (0x00007f43d9319000)
        libpango-1.0.so.0 => /lib/x86_64-linux-gnu/libpango-1.0.so.0 (0x00007f43d758f000)
        libcairo-gobject.so.2 => /lib/x86_64-linux-gnu/libcairo-gobject.so.2 (0x00007f43d930e000)
        libcairo.so.2 => /lib/x86_64-linux-gnu/libcairo.so.2 (0x00007f43d7441000)
        libgdk_pixbuf-2.0.so.0 => /lib/x86_64-linux-gnu/libgdk_pixbuf-2.0.so.0 (0x00007f43d827a000)
        libgio-2.0.so.0 => /lib/x86_64-linux-gnu/libgio-2.0.so.0 (0x00007f43d7249000)
        libX11.so.6 => /lib/x86_64-linux-gnu/libX11.so.6 (0x00007f43d7101000)
        libwayland-client.so.0 => /lib/x86_64-linux-gnu/libwayland-client.so.0 (0x00007f43d8267000)
        libSM.so.6 => /lib/x86_64-linux-gnu/libSM.so.6 (0x00007f43d9301000)
        libxkbcommon.so.0 => /lib/x86_64-linux-gnu/libxkbcommon.so.0 (0x00007f43d70b6000)
        libXtst.so.6 => /lib/x86_64-linux-gnu/libXtst.so.6 (0x00007f43d7e03000)
        libpangoft2-1.0.so.0 => /lib/x86_64-linux-gnu/libpangoft2-1.0.so.0 (0x00007f43d7099000)
        libfontconfig.so.1 => /lib/x86_64-linux-gnu/libfontconfig.so.1 (0x00007f43d704b000)
        libcurl-gnutls.so.4 => /lib/x86_64-linux-gnu/libcurl-gnutls.so.4 (0x00007f43d6f60000)
        libffi.so.8 => /lib/x86_64-linux-gnu/libffi.so.8 (0x00007f43d6f53000)
        libatomic.so.1 => /lib/x86_64-linux-gnu/libatomic.so.1 (0x00007f43d6f49000)
        libpcre2-8.so.0 => /lib/x86_64-linux-gnu/libpcre2-8.so.0 (0x00007f43d6e9a000)
        libgmodule-2.0.so.0 => /lib/x86_64-linux-gnu/libgmodule-2.0.so.0 (0x00007f43d6e93000)
        libharfbuzz.so.0 => /lib/x86_64-linux-gnu/libharfbuzz.so.0 (0x00007f43d6d52000)
        libfribidi.so.0 => /lib/x86_64-linux-gnu/libfribidi.so.0 (0x00007f43d6d33000)
        libatk-1.0.so.0 => /lib/x86_64-linux-gnu/libatk-1.0.so.0 (0x00007f43d6d09000)
        libepoxy.so.0 => /lib/x86_64-linux-gnu/libepoxy.so.0 (0x00007f43d6bd9000)
        libXi.so.6 => /lib/x86_64-linux-gnu/libXi.so.6 (0x00007f43d6bc5000)
        libatk-bridge-2.0.so.0 => /lib/x86_64-linux-gnu/libatk-bridge-2.0.so.0 (0x00007f43d6b87000)
        libcloudproviders.so.0 => /lib/x86_64-linux-gnu/libcloudproviders.so.0 (0x00007f43d6b6f000)
        libXfixes.so.3 => /lib/x86_64-linux-gnu/libXfixes.so.3 (0x00007f43d6b67000)
        libwayland-cursor.so.0 => /lib/x86_64-linux-gnu/libwayland-cursor.so.0 (0x00007f43d6b5d000)
        libwayland-egl.so.1 => /lib/x86_64-linux-gnu/libwayland-egl.so.1 (0x00007f43d6b58000)
        libXext.so.6 => /lib/x86_64-linux-gnu/libXext.so.6 (0x00007f43d6b43000)
        libXcursor.so.1 => /lib/x86_64-linux-gnu/libXcursor.so.1 (0x00007f43d6b36000)
        libXdamage.so.1 => /lib/x86_64-linux-gnu/libXdamage.so.1 (0x00007f43d6b31000)
        libXcomposite.so.1 => /lib/x86_64-linux-gnu/libXcomposite.so.1 (0x00007f43d6b2c000)
        libXrandr.so.2 => /lib/x86_64-linux-gnu/libXrandr.so.2 (0x00007f43d6b1f000)
        libXinerama.so.1 => /lib/x86_64-linux-gnu/libXinerama.so.1 (0x00007f43d6b1a000)
        libthai.so.0 => /lib/x86_64-linux-gnu/libthai.so.0 (0x00007f43d6b0d000)
        libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007f43d6aed000)
        libpng16.so.16 => /lib/x86_64-linux-gnu/libpng16.so.16 (0x00007f43d6ab5000)
        libfreetype.so.6 => /lib/x86_64-linux-gnu/libfreetype.so.6 (0x00007f43d69e5000)
        libXrender.so.1 => /lib/x86_64-linux-gnu/libXrender.so.1 (0x00007f43d69d8000)
        libxcb.so.1 => /lib/x86_64-linux-gnu/libxcb.so.1 (0x00007f43d69ab000)
        libxcb-render.so.0 => /lib/x86_64-linux-gnu/libxcb-render.so.0 (0x00007f43d699c000)
        libxcb-shm.so.0 => /lib/x86_64-linux-gnu/libxcb-shm.so.0 (0x00007f43d6997000)
        libpixman-1.so.0 => /lib/x86_64-linux-gnu/libpixman-1.so.0 (0x00007f43d68ea000)
        libjpeg.so.62 => /lib/x86_64-linux-gnu/libjpeg.so.62 (0x00007f43d6853000)
        libmount.so.1 => /lib/x86_64-linux-gnu/libmount.so.1 (0x00007f43d67d5000)
        libselinux.so.1 => /lib/x86_64-linux-gnu/libselinux.so.1 (0x00007f43d67a1000)
        libICE.so.6 => /lib/x86_64-linux-gnu/libICE.so.6 (0x00007f43d6782000)
        libuuid.so.1 => /lib/x86_64-linux-gnu/libuuid.so.1 (0x00007f43d6778000)
        libexpat.so.1 => /lib/x86_64-linux-gnu/libexpat.so.1 (0x00007f43d674c000)
        libnghttp3.so.9 => /lib/x86_64-linux-gnu/libnghttp3.so.9 (0x00007f43d6720000)
        libngtcp2_crypto_gnutls.so.8 => /lib/x86_64-linux-gnu/libngtcp2_crypto_gnutls.so.8 (0x00007f43d6714000)
        libngtcp2.so.16 => /lib/x86_64-linux-gnu/libngtcp2.so.16 (0x00007f43d66cb000)
        libnghttp2.so.14 => /lib/x86_64-linux-gnu/libnghttp2.so.14 (0x00007f43d6699000)
        libidn2.so.0 => /lib/x86_64-linux-gnu/libidn2.so.0 (0x00007f43d6666000)
        librtmp.so.1 => /lib/x86_64-linux-gnu/librtmp.so.1 (0x00007f43d6648000)
        libssh2.so.1 => /lib/x86_64-linux-gnu/libssh2.so.1 (0x00007f43d65fe000)
        libpsl.so.5 => /lib/x86_64-linux-gnu/libpsl.so.5 (0x00007f43d65ea000)
        libnettle.so.8 => /lib/x86_64-linux-gnu/libnettle.so.8 (0x00007f43d6594000)
        libgnutls.so.30 => /lib/x86_64-linux-gnu/libgnutls.so.30 (0x00007f43d6200000)
        libgssapi_krb5.so.2 => /lib/x86_64-linux-gnu/libgssapi_krb5.so.2 (0x00007f43d653e000)
        libldap.so.2 => /lib/x86_64-linux-gnu/libldap.so.2 (0x00007f43d64da000)
        liblber.so.2 => /lib/x86_64-linux-gnu/liblber.so.2 (0x00007f43d64c7000)
        libzstd.so.1 => /lib/x86_64-linux-gnu/libzstd.so.1 (0x00007f43d6136000)
        libbrotlidec.so.1 => /lib/x86_64-linux-gnu/libbrotlidec.so.1 (0x00007f43d64b9000)
        libgraphite2.so.3 => /lib/x86_64-linux-gnu/libgraphite2.so.3 (0x00007f43d648f000)
        libatspi.so.0 => /lib/x86_64-linux-gnu/libatspi.so.0 (0x00007f43d6451000)
        libdbus-1.so.3 => /lib/x86_64-linux-gnu/libdbus-1.so.3 (0x00007f43d60df000)
        libdatrie.so.1 => /lib/x86_64-linux-gnu/libdatrie.so.1 (0x00007f43d6445000)
        libbz2.so.1.0 => /lib/x86_64-linux-gnu/libbz2.so.1.0 (0x00007f43d6432000)
        libXau.so.6 => /lib/x86_64-linux-gnu/libXau.so.6 (0x00007f43d642d000)
        libXdmcp.so.6 => /lib/x86_64-linux-gnu/libXdmcp.so.6 (0x00007f43d60d7000)
        libblkid.so.1 => /lib/x86_64-linux-gnu/libblkid.so.1 (0x00007f43d6077000)
        libunistring.so.5 => /lib/x86_64-linux-gnu/libunistring.so.5 (0x00007f43d5e8f000)
        libhogweed.so.6 => /lib/x86_64-linux-gnu/libhogweed.so.6 (0x00007f43d5e44000)
        libgmp.so.10 => /lib/x86_64-linux-gnu/libgmp.so.10 (0x00007f43d5dba000)
        libcrypto.so.3 => /lib/x86_64-linux-gnu/libcrypto.so.3 (0x00007f43d5600000)
        libp11-kit.so.0 => /lib/x86_64-linux-gnu/libp11-kit.so.0 (0x00007f43d545f000)
        libtasn1.so.6 => /lib/x86_64-linux-gnu/libtasn1.so.6 (0x00007f43d5da4000)
        libkrb5.so.3 => /lib/x86_64-linux-gnu/libkrb5.so.3 (0x00007f43d5ccc000)
        libk5crypto.so.3 => /lib/x86_64-linux-gnu/libk5crypto.so.3 (0x00007f43d5c9e000)
        libcom_err.so.2 => /lib/x86_64-linux-gnu/libcom_err.so.2 (0x00007f43d5c98000)
        libkrb5support.so.0 => /lib/x86_64-linux-gnu/libkrb5support.so.0 (0x00007f43d5c88000)
        libsasl2.so.2 => /lib/x86_64-linux-gnu/libsasl2.so.2 (0x00007f43d5c6c000)
        libssl.so.3 => /lib/x86_64-linux-gnu/libssl.so.3 (0x00007f43d5351000)
        libbrotlicommon.so.1 => /lib/x86_64-linux-gnu/libbrotlicommon.so.1 (0x00007f43d5c49000)
        libsystemd.so.0 => /lib/x86_64-linux-gnu/libsystemd.so.0 (0x00007f43d523c000)
        libkeyutils.so.1 => /lib/x86_64-linux-gnu/libkeyutils.so.1 (0x00007f43d5c40000)
        libresolv.so.2 => /lib/x86_64-linux-gnu/libresolv.so.2 (0x00007f43d522a000)
        libcap.so.2 => /lib/x86_64-linux-gnu/libcap.so.2 (0x00007f43d521e000)

To make sure they’re all installed, you’d almost certainly want whatever registration is needed for a package manager (an AppImage or FlatPak for ProffieConfig sounds like it’d be substantially more complicated, if I understand it correctly) that way the package manager can handle those and you don’t have to just manually make sure they’re installed like a Linux caveman.

Yet another thing that varies by distribution and is its own realm of complexity where I have no knowledge of and without specific targets I can’t really do work on (not that I’m particularly inclined to without any incentive if I’m being very honest).

Alternatively, @Afrojedi you could just build it from source with -DLOCAL_BUILD=ON and call it a day…

:sweat_smile: I hope you’re at least a little sympathetic to why it’s not been a high priority. To me it feels like a lot of squeeze for very little juice, and not one I feel I could test to make sure it works well.

1 Like

I got “compiler ran out of memory” trying to verify OS 8.10

my_saber.h (47.3 KB)

@Fahmi_Alias That’d mean you’re on Windows then.

If you:

  1. Go to File->Manage Versions from the main ProffieConfig menu
  2. Click “Show Local Folder”
  3. Go to os\[version]\ (e.g. os\8.10)
  4. Edit info.pconf with Notepad or another text editor.
  5. Change CORE_VER: "3.6" to CORE_VER: "4.6"
  6. Save the file and then click “Reload Local” in the ProffieConfig Versions Manager

Then you can try again and you shouldn’t have that problem.

3.6 is faster and creates smaller binaries (i.e. you can fit more into proffie’s flash memory) usually, so ProffieConfig uses it by default but on Windows it’s limited in the amount of Ram it can use (and it seems increasingly common that compiling ProffieOS requires large amounts of memory).

4.6 doesn’t have that limitation, but be prepared to wait a little longer whenever you have to verify/apply.

See here for more info:

that fixed it. thank you very much for the help and hard work

1 Like

Glad to hear! You’re welcome :slight_smile:

thanks and yes I can appreciate that it’s a lot of work.

I’ve gotta get back and add those last couple of things, but once I do that (unless I hear otherwise) 1.9 will probably be going to stable, finally.