If using ./configure, this can be mitigated by setting CFLAGS and CXXFLAGS as such:
./configure CFLAGS='-Wno-error=incompatible-pointer-types' CXXFLAGS='-Wno-error=incompatible-pointer-types'Code language: JavaScript (javascript)
If using ./configure, this can be mitigated by setting CFLAGS and CXXFLAGS as such:
./configure CFLAGS='-Wno-error=incompatible-pointer-types' CXXFLAGS='-Wno-error=incompatible-pointer-types'Code language: JavaScript (javascript)
In my previous article https://www.nickmcummins.com/index.php/2025/06/18/x410-run-wsl-gui-applications-as-native-windows-applications/, I explain differences between X410 and the WSL out-of-the-box GUI support called WSLg. WSLg actually automatically creates desktop shortcuts for launching GUI applications installed in WSL. For example, in my %USERPROFILE%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\archlinux folder, I see shortcuts

If I open one of the shortcut, I can see its properties:

The shortcut’s target is “C:\Program Files\WSL\wslg.exe” -d archlinux –cd “~” — caja. However, with X410, these shortcuts are not automatically created, and will require a slightly different target due to how X410 works:
C:\Windows\System32\wsl.exe -d archlinux /bin/zsh -lc “nohup caja &> /dev/null & sleep 1”
Open settings.json and add to actions:
"actions":
[
{
"command":
{
"action": "splitPane",
"split": "down",
"splitMode": "duplicate"
},
"id": "User.splitPane.10B260D2"
}
],Code language: JavaScript (javascript)
add to keybindings section:
"keybindings":
[
...,
{
"id": "User.splitPane.10B260D2",
"keys": "alt+shift+d"
}
],Code language: JavaScript (javascript)
Now, after pressing alt+shift+d:

alias strace-defaults='strace -f -tt -T -y -yy '
alias sudo-strace-defaults='strace -f -tt -T -y -yy sudo'
alias ion='sudo ionice -c 1 -n 0 -p'
alias ionp='sudo ionice -c 0 -p'
alias nm-undefined-symbols='nm -C -D -u --undefined-only --with-symbol-versions -g'
alias nm-defined-symbols='nm -C -D --defined-only --with-symbol-versions -g'
alias psx='ps aux | grep -i'
alias rn='sudo renice -n -20 -p'
alias rnp='sudo renice -n 20 -p'
alias psk='sudo kill -9'
alias c='clear'Code language: JavaScript (javascript)
This can be solved by setting the DISPLAY environment variable in your shell’s config file (e.g. ~/.zshrc and /etc/zsh/zprofile if using zsh):
export DISPLAY=$(ip route | grep default | awk '{print $3; exit;}'):0.0
Here are some generally useful extensions I recommend for any Visual Studio user:
Requirements:
import os
import sys
from os import popen, path
def run(cmd):
print(f'Running {cmd} ...')
output = popen(cmd).read()
return output
def pngsize(pngfile):
return pngfile.split('_')[-1].split('x')[0]
if __name__ == '__main__':
icofile = sys.argv[1]
iconname = icofile.replace(".ico", "").replace("-", " ")
if path.exists('tmp'):
run('rm -rf tmp')
os.mkdir('tmp')
run(f'icotool -x {icofile} -o tmp')
pngfiles = os.listdir('tmp')
for pngfile in pngfiles:
run(f'xdg-icon-resource install --novendor --size {pngsize(pngfile)} tmp/{pngfile} "{iconname}"')Code language: JavaScript (javascript)
Usage:
python xdg_icon_resource_install_ico.py folder-pictures.icoCode language: CSS (css)
This error commonly issues with .patch files when the patch and target file use different line ending types (i.e. Windows/DOS/CLRF vs. Unix/LF):
touch .build/x64/status/clone cd .build/x64/src/sshfs && for f in /cygdrive/c/github.com/sshfs-win/patches/*.patch; do patch --binary -p1 <$f; done patching file sshfs.c Hunk #1 FAILED at 365 (different line endings).
The unix2dos / dos2unix and commands can be used to perform conversion. One way to determine the line endings type is to open the files in a text editor like Notepad++ which can indicate the line endings type. But this can also be achieved using the unix2dos command’s -i / --info option:
dos2unix -i 00-passwd.patch
36 0 0 no_bom text 00-passwd.patch
The 36 indicates the number of lines that use DOS-style line endings. Here is a wrapper python script for this which prints out the line endings type:
import os
import sys
import re
if __name__ == '__main__':
filename = sys.argv[1]
infooutput = os.popen(f'dos2unix -i {filename}').read().strip()
doslines = int(re.split(r'\s+', infooutput)[0])
line_ending_type = 'Windows/DOS (CR LF)' if doslines > 0 else 'Unix (LF)'
print(line_ending_type)Code language: JavaScript (javascript)
There are a few different GTK theme configuration tools out there – lxappearance (which doesn’t require the LXDE desktop environment), gnome-tweaks, and xfce4-appearance-settings – to name a few, as well as some desktop-environment agnostic ones such as gtk-chtheme (which supports GTK2 only).
However, my current favorite tool which works for GTK2, GTK3, and GTK4 is nwg-look:

Software developers who work on Windows have likely heard of WSL, which stands for the Windows Subsystem for Windows. Essentially, it is a way to run Linux distributions within Windows somewhat like running a virtual machine (VM) but more seamless – or akin to running a Docker container. WSL provides support for GUI applications out-of-the-box with WSLg. The important thing to note about WSLg is that it is implemented using the RDP protocol, so GUI applications are essentially run via an RDP process running on the host Windows machine. Due to this implementation, the performance of GUI applications running on WSLg will not perform as well as would a native Windows application or compared to running the application on a regular Linux installation.
There are some really cool uses of WSL even outside of software development that may be useful for users who are somewhat technical. Some of these are from the interoperability provided with WSL:
C:\ is mounted in WSL at /mnt/c\\wsl.localhost and can be mounted to network drives (for example I have \\wsl.localhost\Arch mounted as L:\) Windows provides the ability to mount network drives using FTP or SMB – however, it doesn’t provide support natively for mounting network locations using SSH/SFTP. Linux has a FUSE filesystem called sshfs. With WSL, this means network locations can be mounted and accessed from Windows. Similarly, Windows does not natively support mounting external drives containing ext4 formatted partitions.
X410 is a really cool alternative to WSLg, which allows X-Window GUI apps to run like any other Windows application. Note that X410 does require the purchase of a license. The license I purchased is for perpetual for the version when I purchased, though updating to newer versions of X410 will require an additional purchase. Here is an example of Caja running in X410:
Notice how the Window appears like a normal Windows application would. For comparison, here is what Caja looks like in WSLg: 
While it may not look like much of a difference, the advantage of X410 is not about the appearance but performance. The UI responsiveness running X410 is noticeably better than running in WSLg.
You must be logged in to post a comment.