Wine 8.0
winehq.org
winehq.org
Woo! No more giant pile of i386 dependencies!
Take for example "decoding an MP3 frame". A 32bit program calls a Windows API to decode an MP3 frame, that gets intercepted by Wine and forwarded to libmpg123. Since it's a 32bit program, you need (or needed, until now) the 32bit mpg123 library to handle the request.
So it's not a matter of a Windows program actually calling a Linux library, but rather Wine forwarding the function call
Forwarding 32bit calls to 64bit functions sounds simple, but it is incredibly complex. It might be simple for a function that only takes an int as argument, but on Windows, functions often take pointers to Windows structures, and those structures are often different between 32 and 64 bit. You have to translate them on-the-fly....
You would need something like qemu to do arm->x86-64 to do CPU emulation and then use WINE to run Windows programs on a Raspberry Pi.
I know how Wine works, and in my example I explicitly said "API". And I don't think I ever said something about ARM or the RaspberryPi?
My point was to explicitly make it simple to understand, as most people don't know what thunks are, or trampolines, or the differences between protected mode and long mode. And yes, I called Wine an emulator, because that's what it is...
Obligatory reminder: Wine Is Not Emulator.
It's original name was "Windows Emulator", even, hence the abbreviation Wine.
Now there's a more clear split between the unix side and the windows side.
To compare:
Main repo wine: https://github.com/archlinux/svntogit-community/blob/abf380b...
AUR wine-stable: https://aur.archlinux.org/cgit/aur.git/tree/PKGBUILD?h=wine-...
What do you all use Wine for (and on which OS)?
I used to keep trying it for running various poker clients on Linux but none ever really worked properly.
I also tried DelftShip (hull designer) on MacOS but couldn't get it to work properly, while an old version of FreeShip (from which DelftShip was forked) did however work IIRC.
In short I've tried various apps throughout the years but have found nothing that's actually worked well enough to keep it running to this day. Last time I tried Wine must've been around version 5 though, maybe things have improved since?
I use Wine on Arch Linux, and pretty much use it to play games, and occasionally the HP PC Connectivity Kit for my HP48G+ calculator (this program was built for Windows 95. I wonder if it'd even work on modern Windows with a USB serial device that I have... but with Wine, I just symlink /dev/ttyUSB0 to COM1: and I'm good).
It has a very high success rate for me, being able to run almost every game I throw at it flawlessly, both old and new.
Every computer should be able to run Ski Free, and Windows 9x versions of Minesweeper, Solitaire, and Hearts.
Every. Computer.
dxvk and vkd3d-proton are essential for it together with Wine.
I only use steam to chat though
I would guess that the number of Proton users is orders of magnitudes higher than the number of vanilla Wine users.
Just for proton work alone, Steam gained a lot of goodwill from me. And that is not to diminish Wine. There is clearly a need for a tool that has the ability to run custom verbose scripts, but Proton mostly solved the gaming piece.
I just use Wine, mostly with older games from GOG.com, and it seems to work alright in all but a few exceptional cases (and has for long before Valve got involved with Proton).
Source is here: https://github.com/ValveSoftware/Proton
Notice that includes a lot of git submodules; the big one is Wine, but it also includes forks of dependencies such as ffmpeg.
What proton is - its a tested distribution of wine and its libraries AND nice wrapper around wine, that helps setting everything up so it just works.
If you want to get games working on linux, proton is the easiest and best way to go. But if you want to get some of the programs running, that are not supported under proton, wine might work.
On the other hand, having that corporate support and isolation from the system sometimes cuts both ways: stock Proton often has worse support for audio and video codecs than a classic Wine install with the proper system libraries, because Valve actually has to worry about patents and licensing for them. They've come up with a system where the layer they otherwise use for sharing cached shaders can also share transcoded media files, but it's not always a seamless experience.
I think parent mean "fork" in the strict sense that there are two source codes "versions" of Wine: upstream, which is the official wine you get when doing `apt-get install wine`, `pacman -Ss wine` or whatever. Then there is Valves own clone of that same codebase, but with additional patches on top of it. Many changes are game specific, at least in the beginning, but many are also generalized and eventually "upstreamed" to the official Wine repository.
So in a way, they maintain their own fork with their own set of patches, and some of those patches makes their way to the "original" Wine while some don't.
Proton can only run Steam games, right? So Wine has its place for all other games.
But Proton can also be run outside of Steam.
SteamOS has the benefit of being basically entirely open and modifiable. Heck, it has KDE Plasma for its desktop mode.
I had heard it wasnt very reliable in the past, but haven't tried yabridge.
Sometimes I think maybe I can run Office 365 on it, but I generally decide it's not worth screwing around with. I can totally get by fine with Evolution + EWS to connect to my Exchange server, and LibreOffice for editing documents.
> I just haven't found anything I like better than it
I can personally highly recommend Sublime Text. The clear downside is that it costs money and is proprietary (the free version is usable though, with a nag screen) but it's lightning fast (and as Notepad++ also handles huge files gracefully) and highly extensible (although the built-in features are way more than enough for text editor use).
> but how many of them are also telnet and serial terminal clients as well?
is "all of them", and they all support way more such things than PuTTY too. I think what you're used to (e.g. the GUI rather than command line switches) is the only thing that counts here, as PuTTY is inferior in almost every other way.
I mean SSH clients. Terminal emulators don't do SSH on their own either.
> PuTTY is inferior in almost every other way.
Not in any way that has ever mattered to me.
A terminal emulator is the interface through which you access programs like SSH clients and Telnet clients, much like a web browser is an interface through which you access videos, news, etc., so it doesn't make much sense to talk about what it does on its own - it exists to run other programs.
Technically, any program on Linux can access serial devices; even basic commands like cp and cat can talk usefully to serial devices for some simple purposes (e.g. short plotter drawings can just be sent to the serial port with cat, and my plotter will draw them - drawings bigger than the plotter's buffer need something a little more sophisticated).
PuTTY bundles together a terminal emulator, SSH client, and Telnet client. When you connect to something it's running the appropriate client in its terminal emulator. It's not an SSH client that supports Telnet, and its terminal emulator doesn't do SSH on its own (e.g. mintty is based on PuTTY's terminal emulator, without the SSH client).
Having a dev node serial device isn't very helpful in itself if you can't easily set the baud rate and other parameters when doing I/O.
Linux Desktop might be more popular if it didn't have such condescending advocates.
screen /dev/ttyS1 300
or
screen /dev/ttyS0 300,cs8
My cheatsheet: screen /dev/ttySX baud_rate,cs8|cs7,ixon|-ixon,ixoff|-ixoff,istrip|-istrip
But I am heavy screen/tmux user so its natural to me.
*I believe GTKTerm has GUI for setting that up
It is easy to set baud rate and other parameters with stty, but I'll stop trying to be helpful now.
Edit: Actually I apparently already knew this since the Linux laptop next to me has PuTTY native on it. I don't know why I had included it in my mental list of things I always install WINE for.
It works like a charm in Wine on Linux, but afaiu the maintainer (developer?) puts some effort to assure compatibility with Wine.
It's been working out nicely for many years, with only a few bumps and bruises in the early stages getting everything stable.
I've got some fixes in for wine. But debugging Wine can be quite a challenge, you need a lot of low level understanding.
Anyway, after focusing so much time and effort on the client-server apps, it is finally time to focus on a web front end (only 10 years or so late!). So I've written a middle-tier (running under Wine) with Nginx in front it. The middle tier translates JSON over HTTP->COM calls, then translates COM->JSON over HTTP on the way back. It's a bit of a Frankenstein's monster, but it works and the approach has meant I can keep a tonne of existing code and keep adding features and improving existing features, which has been nice.
Back in the day, I used it to run Halo: Combat Evolved for PC on my Ubuntu installation. Now I have no need for this, but Wine improved over the years to a point where the game actually ran pretty well. Apparently the 1.0.10 patch for the game from 2014 now has a Gold rating on WineHQ.
If everything else fails, you can always try a full fledged Windows VM. Performance is... not like bare metal, but the results can be surprisingly good.
Also TurboTax.
EDIT: There are two applications that I wish could be installed/run on WINE, but so far there's no luck: Tidal Music Windows Client, Google Drive Client.
It is amazing that both two companies refuse to have a decent client for their applications in Linux :(
I use it to occasionally strip DRM from epubs that I've bought.
- It takes around 1 minute to get auto-logged in. The macOS client takes 11 seconds (I just timed them both).
- About half of the UI doesn't work. Fonts are missing, so there are buttons with no labels. If you scroll with the mouse, sometimes that locks up the page you're looking at and you can no longer use that page until you quit and restart the app. You can do other things and come back, but that page is dead for you now until the next app restart.
- The Library screen works about 5% of the time. The other 95% of the time, it hangs during loading the page with the little Steam icon and the 3 dots under it. In order to play Portal 2 in those cases, I have to go to the store, search for it, click on it to go to its specific page, then click on the play button.
- One or all apps will sometimes (about 10% of the time) just abort with no error message or anything. The app window and the macOS process just go away. You might be in the middle of selecting a game in the Steam client, or you might be in the middle of a game (either alone or with a friend) and it just ends.
- When playing Portal 2 everything renders fine unless you're looking at it through a Portal. When looking through a Portal, random bits of geometry from around the level are displayed among the correct geometry, some textures are incorrect or missing while others are fine, etc. Just weird drawing problems. Once you pass through the portal, everything is fine.
- It mostly plays at 60fps, but very rarely (maybe 1% of the time) starts dropping frames. That part is fairly impressive, honestly.
So yeah, there seems to be some happy path for which it works fairly well, and anything off that is just random glitches, hangs, crashes, etc. I'm having a hard time understanding why the HN crowd thinks it's so great. This seems like the main use case, and others have claimed that Valve pays CodeWeavers (who make CrossOver) to make it work with their games, but it barely even works with the Steam client. I'm at a loss to explain it.
It works really well, considering what it is doing. I'm playing all sorts of games on Linux and my Steam Deck that I didn't even dream of being able to play before (including playing through Portal 2 on my Steam Deck currently :) ).
I'm not alone in this, you can browse a user-sourced DB of experiences over here if you want further proof: https://www.protondb.com/explore?sort=popular Everything rated gold or above runs really well and you don't experience any problems at all. Silver is mostly working ok, besides some edge-cases or aggressive anti-cheats stopping multiplayer from working.
I was impressed I could get Windows games running at all, but the experience was pretty bad as you mentioned. Titanfall 2 was real janky, no audio and the graphics were super bugged.
Plus with Steam on Linux you don't need to run the Windows version of Steam at all. The native client will let you install Windows games using Proton (Valve's modified Wine essentially) by checking a box. Most stuff works very well and it's how the Steam Deck does it's thing. Some titles actually work better than they do on modern Windows like Jedi Knight II which has 3D acceleration support on Linux through Wine but not Windows 10 native.
SRIM/TRIM (http://srim.org/)
u-blox u-center (https://www.u-blox.com/en/product/u-center)
various other vendor software (e.g. power supply control GUI over serial, etc.)- Foobar2000 (unfortiunatly very CPU heavy with audio problems, some incompatibilities)
- Subtitle Edit
- Advanced Renamer
- Faststone Viewer
All fairly ordinary tools but I didnt find suitable alternatives in all these years. Especially FB2K. Hope the Macos version will soon reach feature parity!
And FastStone Image Viewer is also familiar. :) Seems like I've turned lazy (and "cloudy") in recent years, Google Photos is just so convenient.
[0] https://www.navidrome.org/ [1] I'm using Subtracks on Android https://play.google.com/store/apps/details?id=com.subtracks
- Buttons to search for images with artist and album name
- complex renaming patterns
- replaygaining
- batch editing tags...
There is so much I love (ed) about it!
Haven't tried navidrome yet but was planning on installing a multiroom soundsystem with navidrom and snapcast. But that just serves a different purpise :-)
Bonus, the wine+msvc combination is still smaller than using a windows container.
Works fine, also for MSI file generation with Wix:
For years on macOS, I used (try) to run stuff on Wine 2.7, with not terrible success. Since then, Wine has progressed leaps and bounds, although I haven’t actively paid attention to most of its changes.
It's similar times, whether it's WSL, or under crostini (chromebook), and unfortunately in both I either don't have full `perf` support, but do have `strace` working and it kind of shows that `user32` tries to load lots of fonts (but still hard to say for sure).
Wonder if someone here would know and can pin-point me how to debug this easier?
(One of my use cases is https://github.com/mstorsjo/msvc-wine - and invocation of `cl.exe` or `link.exe` taking 250ms at each is not going to be great (then again `cl.exe` can be made to input several .cpp/.c files, but it becomes more awkward to express that at the build level).
export FONTCONFIG_FILE="$HOME/wine-fontconfig/fonts.conf"
export FONTCONFIG_PATH="$HOME/wine-fontconfig"
where fonts.conf is something like <?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "urn:fontconfig:fonts.dtd">
<fontconfig>
<its:rules xmlns:its="http://www.w3.org/2005/11/its" version="1.0">
<its:translateRule translate="no" selector="/fontconfig/*[not(self::description)]"/>
</its:rules>
<dir>~/wine-fontconfig/TTF</dir>
<include ignore_missing="yes">~/wine-fontconfig/conf.d</include>
<cachedir>~/wine-fontconfig/font-cache</cachedir>
</fontconfig>
and there's just one TTF font I want to use in the TTF folder. Then there are a bunch of references to systemwide fonts in the user.reg and system.reg registry files that I deleted manually, but I forget the exact keys - you can search for 'font' to find them. I also entered registry keys to redirect system fonts to the TTF I had provided, I think using [Software\\Microsoft\\Windows NT\\CurrentVersion\\FontSubstitutes] or maybe [1]. If you're running CLI tools this might not be needed.If you ever launch wine in that prefix without these environment variables, it will rescan the system fonts and populate the registry again and that seems to slow down future launches.
Another thing that made a difference that I just remembered is opening winecfg 'Libraries' tab and adding an entry to set 'winemenubuilder.exe' and 'winebus.sys' to disabled. I am not sure what the consequences of the latter are but it didn't seem to break anything for my use case. There might be other inessential libraries you can disable here if they seem slow in WINE_DEBUG output, I also have winehid.sys disabled here but I can't remember if it made much difference.
Do you mean it takes about 0.25s for the process you launched to start after you told Wine to run it? Every time you boot a Wine prefix, Wine has to "simulate" a Windows boot process (launch Explorer.exe and any other startup services, enumerate fonts and devices, read the registry from disk, etc). You can leave the prefix running in the background, which means it will start your process without having to do all the cold boot stuff. See the "-p" switch to wineserver.
Playing Cyberpunk 2077 on Linux using Wine + vkd3d-proton is almost magic.
Also good to see Wine-Wayland getting closer to being merged.
Even on Linux there is some performance overhead comparatively to Windows, but at least it's acceptable.
Since I use ZFS and run ~/.wine on its own dataset, I set the quota to 2t and I'm golden with regards to any app I've seen. Could probably afford way smaller too, but this works for me.
However, on my main desktop with an nVidia GPU and the proprietary driver, most games show no graphics output at all. Sometimes the game windows flicker into view for a split second, so I know it loads them, but somehow the DirectX-to-Vulkan translation is not working correctly with the nv GPU driver. Even the "vkcube" demo shows the spinning cube in a window without decorations that I cannot grab/move/resize, so I guess it's an issue with the nv driver but I don't really want to switch to nouveau...
Might have to do with multiple monitors (one of which is connected to the onboard graphics), I got tired of trying to troubleshoot it after a fruitless 2 hour debugging session...
One thing I remember having issues with at some point is not rebooting after a graphics driver update, causing the running programs that tried to use hardware acceleration to fail to communicate with the GPU. This was especially a problem with the 32 bit version of the driver and programs that I needed to install to get Wine installed (unless I only wanted to run 64 bit executables).
Another issue I've had with Nvidia drivers is that their Wayland support isn't as great as advertised, even with the new drivers. I can't plug in an external screen under Wayland on my laptop, for example, and with just one screen the Wayland compositor messes up the graphics state after a while. Perhaps you're (unknowingly) running Wayland and the compatibility problems come from there?
Either way, I hope you figure it out, seeing games and programs just work on Linux is kind of magical.
I'm running Xorg though, no Wayland, so that's definitely not it. I'll keep trying every now and then, of course, but I guess unless vkcube runs properly (like on my laptops...) things won't change
Why are you doing this to yourself.
There are options that have quality open source drivers and quality NDA-free documentation, and you are aware of this.
Beyond that, some of us need/want CUDA or other GPGPU support, which is a total nightmare with AMD GPUs, and other times the price/performance ratio leans in favor of nvidia, or some people just have nvidia cards and can't/don't want to buy new ones.
Also, I mainly use Windows and only dual-boot to Linux on that system, so Windows driver quality is my primary concern.
If you use Windows, remember to wipe it clean of NVIDIA drivers before attempting to install the AMD card, using DDU, as presence of NVIDIA drivers is well-known to cause issues.
I don't know for certain that the issues were specifically due to Nvidia and not just trying to game on Linux with a powerful, insufficiently cooled GPU, but given how the AMD GPU worked for the same games with no need for any custom configuration, I'm definitely going to stick with AMD graphics whenever I end up getting a new laptop, even if I end up having to pay more to find a model that satisfies all my other constraints.
I'm not a power-user - not even close. I just want things to "work" without any fiddling. Well luckily, most things seem to work flawlessly (for me).
Rocksmith, a video game for playing guitar, worked straight away, even interacting with my USB guitar interface. It even seems to run better than Windows.
It also runs the software for updating my multi-effects pedal & loading effects onto it (Zoom G1 Four).
Pretty impressed as these are the sort of things that force you onto Windows (at least once-in-a-while).
Classic Windows gaming I assume is the main use case now?
Apple is less afraid of changing and breaking their API's. Which makes maintaining an interop layer all the more challenging.
I would love for darling to regularly update their site or blog instead of occasionally peaking in their discord for progress.