jrgd

joined 1 year ago
[–] jrgd@lemm.ee 3 points 3 days ago

As far as KDE vs. GNOME is concerned: KDE contains a lot of customizable features as an expectation and thus has great support for a wide array of customization. Both KDE and GNOME are extensible, with third-party extensions to extend or change functionality available. What makes GNOME less customizable, albeit supporting stylesheets and extensions, both are not expected to be used in any form (outside of defaults provided via Adwaita), and neither do many independent apps written in GTK3, GTK4. GNOME offers fairly minimal customization options without resorting to GNOME Tweaks, third-party extensions, and unsupported customized themes: all things that can break GNOME as while the customization does exist, the developers don't embrace it and have no expectation to not break it with any update.

[–] jrgd@lemm.ee 8 points 1 week ago* (last edited 1 week ago) (1 children)

KDE has had ICC support implemented for a while now in Wayland. The necessary protocol for ICC support/color management in Wayland recently got merged, so the next release of many popular compositors (plasma 6.3 for KDE) will be protocol-compliant.

[–] jrgd@lemm.ee 1 points 1 week ago

A general checklist for flags that software will enshittify:

  • owned by publicly-traded company
  • backed by VC or other expecting sources of funding
  • product is closed-source
  • company tries to circumvent open-source licensing of product (often for financial gain)
  • product has transferred ownership to a different company (through monetary transaction or similar)
  • product incorporates DRM
  • organization that owns the product has a track record for bad behavior

On their own, not all of these flags are excellent indicators. Some are better than others in a vacuum. If you see a product start to check several of these flags, it might be time to jump ship early (to a fork or other competing project).

[–] jrgd@lemm.ee 5 points 2 weeks ago

Without getting into more outright malicious possibilities as I don't use Windows and cannot inspect how the application behaves on the platform, you could have things as simple like:

  • EA didn't see Linux users as profitable enough to support long-term
  • EA/Respawn wanted an attempt to garner good will from the community by dropping support for a minority platform
[–] jrgd@lemm.ee 55 points 2 weeks ago (2 children)

It's funny how EA is attributing their statistic to something can be strongly disproven. When looking at the given statistic they provided, they don't specify the raw count of cheaters banned, but simply the rate. Even giving the generous assumption that EA's statistics aren't significantly flawed, they show an alleged large drop in cheaters bottoming out in the week of Nov. 4, 2024, before starting to rise up again. Does something else coincide with the rate of cheaters dropping in the week of Nov. 4? There is in fact something that does. Season 23 was released the fifth with a large spike of players being brought into the game. Without a more comprehensive statistic graph over several months, it looks like EA is trying to just capitalize on the fact that a large influx of players joining the game will drop the rates of cheaters momentarily, and then passing it off as evidence that Linux cheating was rampant. Quite disingenuous.

[–] jrgd@lemm.ee 6 points 2 weeks ago* (last edited 2 weeks ago) (2 children)

I'm not really sure I can support using DNT headers currently. Some good points were made about alongside GPC, DNT being legally recognized for GDPR requests in some countries. I live in the US outside of California, and don't closely follow along to the nuances of either CCPA or GDPR, so correct me if I get something wrong. Given the list of websites in a comment that respect DNT, the notion that DNT is voluntary to handle, and how many websites use to harm users instead (further fingerprinting data points), I don't see why Mozilla should be keeping around DNT for the time being.

Yes, the fingerprinting metric for DNT may not be that unique of a data point if a given user isn't using content blocking extensions and other browser-hardening techniques. It still is however a data point often masked to follow the herd in order to minimize fingerprinting in territories where user privacy isn't enforced by law. If law actually demanded respect to user privacy, I think DNT could work. As it stands though, it really doesn't seem like DNT is well-ingrained in law.

Given the list of sites you listed, I only recognize two websites on the list that claim to support DNT. Perhaps a majority of these sites are from smaller organizations and/or based in the EU? On top, this is only what the sites' privacy policies claim, no? How many of these sites are actively proven to respect DNT beyond claiming that they do?

It really seems like DNT is still considered way too optional for websites to handle and respect. The best way for this to change is for the GDPR to recognize proper DNT handling as mandatory for sites to be compliant in the EU. Furthermore (unlikely to happen anytime soon but would be helpful) is for the US to gain similar privacy laws at the country-level that also defines enforcement.

There is just about zero reason I think nicely asking website admins to monitor and add support for DNT. Given that a majority of the problem with violations isn't with the smallest of independent websites, but those run by larger businesses, I doubt simple activism will work. If just activism for respecting the privacy of users actually did something, I feel like in ~15 years Do Not Track headers would have shown meaningful progress. The only way going forward is deliberate user-enforced destruction of available tracking points granted to websites or law that dictates when and how websites may track users: be it GPC, DNT, or something else. Only when a consensus is being reached should Mozilla and browsers prepare to support the enforced feature.

EDIT: re-reading the list of websites claiming support for DNT, I found a second website I recognize.

[–] jrgd@lemm.ee 21 points 2 weeks ago (3 children)

Certainly a failure but at least it wouldn't actually be as harmful as it reads, given / is a directory and the assumption you're not root.

[–] jrgd@lemm.ee 2 points 3 weeks ago

A majority of the Linux-native titles I have played work well. It's only a handful of titles that have blatant neglect or malice from the developers, publishers that don't work fully. Dying Light looks to fall under neglect as it doesn't seem to have been updated (except for the inclusion of DLCs) beyond the 2015 build of the game, and seems to be stuck in a console-ready graphics preset.

[–] jrgd@lemm.ee 2 points 3 weeks ago (2 children)

I started playing Dying Light for the first time recently. Compared to the Windows version, it looks like Techland completely abandoned the Linux native version of the game. Is this update fixing the Linux native version to be on par with Windows?

[–] jrgd@lemm.ee 2 points 3 weeks ago (1 children)

You're not referring to this satire article by chance?

[–] jrgd@lemm.ee 2 points 4 weeks ago

I can only guess the previous BIOS wasn't enabling every virtualization extension necessary for some applications for some reason then, given that GNOME Boxes did work. Glad you've found a solution.

[–] jrgd@lemm.ee 2 points 4 weeks ago* (last edited 4 weeks ago) (1 children)

The explicit denial I saw is multi-genre, multi-artist in ID3 v2.4 I won't be parsed.

EDIT: The source.

Rockbox will only pick up one of a tag (RIP Vorbis) and will only parse up to 500 bytes on higher end players, 240 bytes on other players of the grouped tag (RIP ID3 v2.4).

 

Intro

For quick context: I still use a digital music player (Sony Walkman NW-A45) frequently. I am not super fond of this player for reasons.

I have looked around for a while now, and I personally cannot find any suitable solutions (both new or old). I am curious if there exists anything that I might have missed, I would love to know about it.

The Short List:

  • Handles large media libraries
  • MicroSD Support
  • Preferably no network connectivity
  • Properly handles ID3 v2.4, Vorbis tags (A45 FAIL)
  • Handles album covers in a sensible manner (cover.png, embedded) (A45 FAIL)
  • Live play queue editing (A45 FAIL)
  • Preferably Sub-$300 USD
 

As per the title. Posting this right after Ondsel yet again catastrophically destroying a smaller, but mid-complexity multi-part assembly. As such, FreeCAD and Ondsel are non-starters due to the amount of detrimental bugs. I have used SolveSpace for a short time, but it lacks many features (chamfer, fillet tools as base examples).

I have looked into OpenSCAD previously, but decided learning the scripting language wasn't worth the time. Perhaps with other FOSS options running out, it's time to give it a fair try. If it's CAD kernel is particularly reliable and it has some way to interchange sets of defined parameters like FreeCAD's Configuration Tables, OpenSCAD may be a clear winner.

To note at this point, I am not opposed to using or purchasing proprietary software, as long as the Linux support isn't half-assed and the price is reasonable (no subscriptions, having a lifetime license for personal/small-time commercial under ~$400 USD per seat).

If anyone has suggestions, or better yet has used something that might fit what I am looking for, I'd love to hear about it.

UPDATE:

I ended up trying out CADQuery with CQ-Editor and my text editor of choice as a replacement for the project I was working on in Ondsel. So why CADQuery specifically? (This is long; I've included a TL;DR near the bottom if you don't want to read a wall of text.)

Defining Features For Me:

Both CADQuery and OpenSCAD support programmatic definition of CAD, which affords having a very declarative way to construct your CAD assemblies. Having global control over models with some ways offered to tackle topological naming makes for a functional experience that allows for quick edits to parts that don't typically result in footguns. FreeCAD 1.0 just released, supposedly solving the TNP. I might have to demo it at some point just to see if a lot of the bugs and footguns that relate to a lack of TN in previous versions have also been fixed. Above OpenSCAD, CADQuery's script for writing CAD is directly Python, meaning one has a relatively mature language to really do some powerful things (such as scripted templating for sketches and other parts or having an alternative to FreeCAD's configuration tables). Given that many complex things (such as lofting dissimilar surfaces) people write in OpenSCAD end up referring back to Python scripts anyway, natively using Python as the basis for CADQuery is honestly a good choice.

Another thing (for better or for worse) is that CADQuery is based on OpenCascade. OCC certainly has its quirks like not being able to define zero-length bodies. It also has a lot of nice features such as STEP export, lofting between dissimilar surfaces, support for splines, etc. A lot of the core features I would expect coming from FreeCAD do exist in some manner in in CADQuery as a result. Some features aren't fully baked however. Spline support does exist in CADQuery, but is limited in how it can be used (it cannot be used with the Sketch Constraint Solver unlike line segments and arcs). For some very specific projects, this might end up being a dealbreaker, requiring me to use FreeCAD just to get the feature. For most applications I design for however, I don't see this being a huge caveat in many cases. Due to the declarative nature on top of OCC; if you make a defective design that won't resolve properly, it will result in a swift error (for as long as you are checking) rather than some of the quieter failures that FreeCAD may emanate. On top of that, the core sketching tools and other implementations of core part-building features aren't completely riddled with bugs. CAD models actually stay consistent when designed with CADQuery compared to FreeCAD occasionally mutating sketches and parts.

Overall, CADQuery as a CAD design language is quite solid, and seeing that it's quite extensible with projects like cq-kit existing is a decent sign for its maturity.

Flaws and Nitpicks:

While CADQuery itself is pretty good, I can't really say the same for the onboarding documentation as well as the officially-supported CQ-Editor. As someone with not a lot of Python 3rd-party tooling experience (conda, mamba, etc.), I went mostly by the books initially for installing CADQuery and CQ-Editor together. This was a mistake. CADQuery and CQ-Editor can be either installed through a huge set of release files bundled and unpacked in a shell script or through conda, pip. I initially tried the bundled command set using conda and mamba, but stopped when I realized the recommended tool of use (mamba) was really attempting to mess with my shell configuration and other properties. So out the window with it and in with just pip in a venv. I ended up getting things mostly installed until I ran into issues with core functionality in CQ-Editor that many said didn't have issues using package installation via mamba. I then also found that CQ-Editor recommended using micromamba in lieu of mamba for a less shell-invasive installation. So I dumped my venv and setup an installation with micromamba. I then ran into issues with just being able to display a CADQuery test sample. While wading through several similar issues, I found the one that noted that an older version of a given dependency actually needed to be installed for the latest nightly builds of CQ-Editor to properly function. This worked, and CQ-Editor works, but this left me with several questions. In my bug resolving, I curiously looked up queries for distro-specific packages or even a Flatpak for CQ-Editor. The devs explicitly shot down Flatpak support a while back, citing the installation through pip (and conda now) was sufficient.

Based on my experience, not providing distro packages or a Flatpak for CQ-Editor is honestly a mistake. I tend to try a lot of software on Linux so that I can gauge how various pieces of open-source software stack up against each other. I interact with a fair amount of newer Linux users and generally like having a decent answer to most queries of 'How do I do x'. Obviously, CADQuery has a steeper learning curve than many CAD solutions (especially comparing to the likes of Fusion 360), so for many I might recommend something more along the lines of Dune 3D instead. I do however think that no distro packages, no Flatpak, no actual stable releases that work on the current version of CADQuery (no stable releases for 3+ years), and an installation process to get a minimum viable installation that differs significantly from the documentation is a good onboarding experience. This is honestly just not acceptable if CADQuery and the CQ-Editor project want people to actually use it.

Furthermore, CQ-Editor is the primary and supposedly most feature-filled graphical viewer/editor for CADQuery. This is honestly disappointing to hear as the editor just lacks a lot of basic features. I'll just list a few basics. It's a Qt5 application that takes from the system theme by default, but has hardcoded editor and terminal color schemes and a lack of dark-mode icons. It also seems to be a Qt5 application running without native Wayland support. The viewer has no clipping planes, meaning that the only way to gauge part tolerance and internals is to set the opacity of parts in view. The editor is very basic in terms of features, and is almost certainly something that will get disabled immediately in favor of an external editor.

TL;DR:

CADQuery is great as someone coming from FreeCAD and descendants. It has a steeper learning curve being that it uses Python scripting. It has less core bugs than FreeCAD, but some bits of functionality are missing. It also shares many familiar quirks with FreeCAD due to both being built on top of OpenCascade. CQ-Editor really drops the ball in UX and general quality. The installation of CADQuery together with CQ-Editor was unnecessarily painful, and easily the worst part of the experience thus far. I might recommend using CADQuery if you're familiar with Python (a relatively simple programming language). Installing it however, will likely be a major hurdle to actually using it. More so than actually learning CADQuery.

Alternative I Might Recommend to Beginner Users:

A curious and relatively new software I came across that wasn't already recommended is Dune 3D. It's a non-starter for me because it has no configuration-table analogues, but seems to be something that tries to mimic the ease-of-use and reliability of SolveSpace, but with some more features such as chamfers and fillets. I do need to play around with this more, but does look to be a nice solution, if it's not riddled with bugs.

 

A bit of basic information beforehand that should be relevant:

  • OS: Fedora 40 (x86_64)
  • Desktop: KDE Plasma 6.1.3 (5.27.x -> current) (Wayland)
  • Motherboard: ASUS PRIME X470-PRO
  • Primary keyboard: Keychron S1 (tested on stock firmware, Windows layers)

The issue in some more detail: alt-tabbing windows in KDE sometimes leaves behind an alt keypress in the window that was alt-tabbed from that won't go away until alt is registered as pressed again by the window.

This has certainly been an interesting issue that has been a problem for at least a year at this point. I've finally gone in to do basic troubleshooting regarding the issue. I have pretty much ruled out hardware at this point. Originally, I had my primary keyboard plugged into my monitor's USB hub. In testing, I tried another keyboard, migrated the connect to my motherboard rather the monitor's USB hub, and the alternate keyboard plugged into the motherboard. All tests eventually result in the same issue happening over time.

One thing I see as a potential pattern but cannot fully confirm is that it appears these remnants of alt keypresses only show up in XWayland windows, and not native Wayland applications. Applications I have seen it occur in include Minecraft Java Edition, various Proton games, Electron applications that don't enable native Wayland support (e.g. Discord), Steam. This issue also occurs less if I allow XWayland apps to always see modifier keypresses. Though I assume this is more from the tendency to alt-tab back into affected windows, registering another alt keypress.

At this point, I am pretty confident this is software-related, but I cannot find any existing bug reports within the past three years (especially noting any relevant to KDE) that describe this problem. I am unsure of how one would go to debug this category of issue or even find the root cause component that is causing the issue. I am curious if anyone here has also had this irritating quirk occur and/or if you know any workarounds/fixes for this given problem.

 

Greetings all!

I have been working on getting a new network setup. The current test host (A server running OpenSUSE Leap 15.6 w/ Wicked) is able to get routes and obtain an address via DHCP from the router of the network (running OPNSense 24.7.6), but is unable to resolve routes and obtain an address via the local DHCPv6 server. Admittedly, I am not great with IPv6 doubled with the ISP for this network granting a statically-defined /128 address for the router and manually-delegated /64 address blocks.

The OPNSense configuration has a /64 address block assigned as its address space for the LAN interface. The configuration has the ISC DHCPv6 server allocating address range 2602:xxxx:xxxx:xxxx::8888:0 - 2602:xxxx:xxxx:xxxx::8888:ffff. The radvd server is set to managed, set with an automatic source address, set to advertise the default gateway, set to use the dhcpv6 dns configuration, and set with no additional routes advertised.

As noted, the OpenSUSE machine is unable to get any routes beyond link-local via ipv6 nor is it able to automatically be assigned an ipv6 address from the DHCPv6 server. I have done some diagnostics, but have been unable to determine any conclusive issue.

Starting ip route and address checks:

ip -6 addr

2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 state UP qlen 1000
    inet6 fe80::xxxx:xxxx:xxxx:a4ee/64 scope link proto kernel_ll [OpenSUSE Leap 15.6 Server link-local address]
       valid_lft forever preferred_lft forever

ip -6 route

fe80::/64 dev eth0 proto kernel metric 256 pref medium

The eth0 interface noted is using a standard configuration as provided by Wicked (BOOTPROTO=dhcp, STARTMODE=auto, ZONE=public). Testing dhcpv6 address acquisition by hand results in nothing:

wicked test dhcp6 -m auto eth0

wicked: eth0: Request to acquire DHCPv6 lease with UUID <$uuid-a> in mode auto

However, testing in forced managed mode does get results from the DHCPv6 server:

wicked test dhcp6 -m managed eth0

wicked: eth0: Request to acquire DHCPv6 lease with UUID <$uuid-b> in mode managed
INTERFACE='eth0'
TYPE='dhcp'
FAMILY='ipv6'
UUID='<$uuid-b>'
IPADDR='2602:xxxx:xxxx:xxxx::8888:807/128' [theoretical bound address on LAN]
PREFIXLEN='128'
DNSSERVERS='2602:xxxx:xxxx:xxxx::1' [LAN address of router]
DNSSEARCH='<$domain>'
ACQUIRED='1729020515'
CLIENTID='<$clientid>'
SERVERID='<$serverid>'
SERVERADDR='fe80::xxxx:xxxx:xxxx:a4ee' [OpenSUSE Leap 15.6 Server link-local address]

So unless I am mistaken at this point, this likely means that something is going wrong with the Router Advertisements for the system to not automatically try get assigned an ipv6 address. Checking a router advertisement broadcast to the OpenSUSE server, I am not seeing anything out of the ordinary:

radvdump

#
# radvd configuration generated by radvdump 2.17
# based on Router Advertisement from fe80::xxxx:xxxx:xxxx:4eb4 [router link-local on LAN]
# received by interface eth0
#

interface eth0
{
        AdvSendAdvert on;
        # Note: {Min,Max}RtrAdvInterval cannot be obtained with radvdump
        AdvManagedFlag on;
        AdvOtherConfigFlag on;
        AdvReachableTime 0;
        AdvRetransTimer 0;
        AdvCurHopLimit 64;
        AdvDefaultLifetime 1800;
        AdvHomeAgentFlag off;
        AdvDefaultPreference medium;
        AdvLinkMTU 1500;
        AdvSourceLLAddress on;

        prefix 2602:xxxx:xxxx:xxxx::/64 [public /64 address block manually delegated as LAN]
        {
                AdvValidLifetime 86400;
                AdvPreferredLifetime 14400;
                AdvOnLink on;
                AdvAutonomous off;
                AdvRouterAddr off;
        }; # End of prefix definition


        RDNSS 2602:xxxx:xxxx:xxxx::1 [LAN address of router]
        {
                AdvRDNSSLifetime 600;
        }; # End of RDNSS definition


        DNSSL <$domain>
        {
                AdvDNSSLLifetime 600;
        }; # End of DNSSL definition

}; # End of interface definition

sysctl -a | grep eth0.accept_ra

net.ipv6.conf.eth0.accept_ra = 1
net.ipv6.conf.eth0.accept_ra_defrtr = 1
net.ipv6.conf.eth0.accept_ra_from_local = 0
net.ipv6.conf.eth0.accept_ra_min_hop_limit = 1
net.ipv6.conf.eth0.accept_ra_mtu = 1
net.ipv6.conf.eth0.accept_ra_pinfo = 1
net.ipv6.conf.eth0.accept_ra_rt_info_max_plen = 0
net.ipv6.conf.eth0.accept_ra_rt_info_min_plen = 0
net.ipv6.conf.eth0.accept_ra_rtr_pref = 1

Am I missing something with why Wicked doesn't actually get a proper route to the LAN nor an address via IPv6?

To recap: IPv4 works, this is the only device connected to the network thus far, IPv6 configuration appears (to me at least) correct for the router advertisements and DHCPv6 config.

EDIT:

Found the source of the problem. The OPNSense configuration is in fact correct for what I want to do. The issue is on the OpenSUSE machine. I forgot about a funny little Linux kernel networking quirk regarding ipv6 forwarding. In OpenSUSE, enabling forwarding for IPv6 from the installer keeps net.ipv6.conf.*.accept_ra set to 1. However, setting net.ipv6.conf.*.forwarding to 1 will disable accepting routes from RA, and in my case of expecting automatic IPv6 configuration from DHCPv6 without forcing managed mode on the Linux server.

Unless I feel like bypassing some functionality provided by the router, one needs to set net.ipv6.conf.*.accept_ra to 2 for all affected network interfaces. This enforces accepting routes with forwarding enabled. This in turn for my case also allows for DHCPv6 resolution to function without forcing or bypassing it from the OpenSUSE machine. I can only assume the reason this isn't just default if applied from the installer is that fully-manual static IP addressing is expected rather than wanting to use DHCP reservations for assigning addresses.

So in short:

All is good with the OPNSense configuration. I needed to change the sysctl flag net.ipv6.conf.eth0.accept_ra = 1 to net.ipv6.conf.eth0.accept_ra = 2, in order to forcefully accept RA routes and normal DHCPv6 address assignment on my ethernet interface. This is necessary because I need forwarding over IPv6 for the affected machine.

 

Greetings,

For several years, I have used the wonderful Cantata as a frontend to MPD. Sadly, the frontend stopped receiving updates in 2022 and has started to some problems with age. While I continue to use Cantata for as long as I can, I have been looking around at other music players. However, I haven't seen anything that aims to implement some of the nice things from Cantata.

In short, a few things I have been looking for in a player:

  • suitable for playing single songs, albums, full artists, custom mixes, or playlists (no hyperfocus)
  • can either set a custom artist sort tag (albumartist, composer, etc.) or properly handle semicolons (or some other separator char) in tags
  • semicolon tag split in general would be nice for genre handling
  • powerful active queue handling (move; shuffle and sort by song, album, artist; remove duplicates; consume on play; etc)
  • online lyrics search from multiple providers

Additionally, some nice-to-haves that Cantata handles:

  • CD ripping
  • export library to portable device (with compatibility)

Anyone have a favorite that can handle at least the shortlist of functionality I come to expect? I don't expect specifically a frontend for MPD, but I would prefer a player that doesn't struggle to handle a library with 10^4^ magnitude library size.

 

cross-posted from: https://lemm.ee/post/38676431

A while back I ended up getting tired of making hacks to get custom binaries to launch in Steam for Windows titles. Primarily for modding, I would find a way to simply launch custom EXE files through Steam to ensure the modding tools and the game were contained neatly in the same prefix. My first ventures with this were Skyrim and Fallout: New Vegas. With these titles, I overrode the gamebryo/creation engine launcher EXE with Mod Organizer 2 (renamed to be the launcher). While this worked, the solution doesn't work for other games without a secondary launcher that is targeted through Steam.

I eventually came to the conclusion that one can override launch targets entirely in Steam, and that tools like SteamTinkerLaunch could take advantage of this. However, STL certainly does a lot and honestly, that is way more than I really desired just to launch games with a custom EXE. Thus I made a shell script that essentially allows for the user to write in their own custom target and have it launch right through Steam.

The usage for this is simple. Just copy the 'shim' file into the game directory, override the Steam launch arguments to include "./shim %command%", and all is good. Furthermore, environment variables (such as DRI_PRIME=1), additional launch wrappers (gamemoderun), and game launch arguments (-novid for Source Engine titles) all work. If one needed a combination of all of this, it would look something like "DRI_PRIME=1 gamemoderun ./shim %command% -novid".

The way target editing currently works is on first launch the shim file grabs the default game target and writes it as the contents of 'target', another file in the game directory. From there, one can simply edit the target location in the file and shim will launch the custom executable.

So far, I have used this to get things like RaftModLoader and BeamMP working (mod loader for Raft and multiplayer for BeamNG.Drive respectively). I see no issue with this being able to also work for Bethesda titles and others that need custom executables. As I understand as well, the actual game install directories on a Steam Deck with SteamOS are mutable, and with a bit of tinkering through desktop mode should help get a seamless experience for launching modded Steam games for Deck users as well.

I hope someone finds as much use and utility that I have for getting a lot of modding tools for Windows games working without needing to mangle the prefix using protontricks in some cases or install the absolute multi-tool that is SteamTinkerLaunch.

 

A while back I ended up getting tired of making hacks to get custom binaries to launch in Steam for Windows titles. Primarily for modding, I would find a way to simply launch custom EXE files through Steam to ensure the modding tools and the game were contained neatly in the same prefix. My first ventures with this were Skyrim and Fallout: New Vegas. With these titles, I overrode the gamebryo/creation engine launcher EXE with Mod Organizer 2 (renamed to be the launcher). While this worked, the solution doesn't work for other games without a secondary launcher that is targeted through Steam.

I eventually came to the conclusion that one can override launch targets entirely in Steam, and that tools like SteamTinkerLaunch could take advantage of this. However, STL certainly does a lot and honestly, that is way more than I really desired just to launch games with a custom EXE. Thus I made a shell script that essentially allows for the user to write in their own custom target and have it launch right through Steam.

The usage for this is simple. Just copy the 'shim' file into the game directory, override the Steam launch arguments to include "./shim %command%", and all is good. Furthermore, environment variables (such as DRI_PRIME=1), additional launch wrappers (gamemoderun), and game launch arguments (-novid for Source Engine titles) all work. If one needed a combination of all of this, it would look something like "DRI_PRIME=1 gamemoderun ./shim %command% -novid".

The way target editing currently works is on first launch the shim file grabs the default game target and writes it as the contents of 'target', another file in the game directory. From there, one can simply edit the target location in the file and shim will launch the custom executable.

So far, I have used this to get things like RaftModLoader and BeamMP working (mod loader for Raft and multiplayer for BeamNG.Drive respectively). I see no issue with this being able to also work for Bethesda titles and others that need custom executables. As I understand as well, the actual game install directories on a Steam Deck with SteamOS are mutable, and with a bit of tinkering through desktop mode should help get a seamless experience for launching modded Steam games for Deck users as well.

I hope someone finds as much use and utility that I have for getting a lot of modding tools for Windows games working without needing to mangle the prefix using protontricks in some cases or install the absolute multi-tool that is SteamTinkerLaunch.

view more: next ›