Fixing FreeRDP 3’s BadAtom Error on QubesOS (or Just Downgrade, Honestly)

When you try to run FreeRDP 3, you will likely get the following error:

┌─[✗]─[user@parrot]─[~]
└──╼ $xfreerdp3 /v:10.129.115.179 /u:htb-student /p:HTB_@cademy_stdnt!
<SNIP>
[23:03:46:654] [4770:000012a3] [ERROR][com.freerdp.client.x11] - [winpr_log_backtrace_ex]: 11: dli_fname=xfreerdp3 [0x55591c0c8000], dli_sname=(null) [(nil)]
[23:03:46:654] [4770:000012a3] [ERROR][com.freerdp.client.x11] - [winpr_log_backtrace_ex]: 12: dli_fname=/lib/x86_64-linux-gnu/libwinpr3.so.3 [0x71a313c9b000], dli_sname=(null) [(nil)]
[23:03:46:654] [4770:000012a3] [ERROR][com.freerdp.client.x11] - [winpr_log_backtrace_ex]: 13: dli_fname=/lib/x86_64-linux-gnu/libc.so.6 [0x71a3135f0000], dli_sname=(null) [(nil)]
[23:03:46:654] [4770:000012a3] [ERROR][com.freerdp.client.x11] - [winpr_log_backtrace_ex]: 14: dli_fname=/lib/x86_64-linux-gnu/libc.so.6 [0x71a3135f0000], dli_sname=(null) [(nil)]
[23:03:46:654] [4770:000012a3] [ERROR][com.freerdp.client.x11] - [winpr_log_backtrace_ex]: 15: unresolvable, address=(nil)
X Error of failed request:  BadAtom (invalid Atom parameter)
  Major opcode of failed request:  17 (X_GetAtomName)
  Atom id in failed request:  0xd2c610ab
  Serial number of failed request:  87
  Current serial number in output stream:  89

This error likely happens because of the lack of GPU passthrough in Qubes VMs (more about it here), the option I see working for me right now is using the freerdp2-x11 package from the apt package manager, as apt packages play nicer with GPU-less Qubes VMs

Bonus

Features like mounting a drive from your host also work, and it’s a very convenient way to transfer files to your target machine using RDP. Example:

xfreerdp /v:10.129.209.72 /u:johanna /p:1231234! /dynamic-resolution /drive:kali-drive,/tmp/johanna

In /drive:, you specify the name of your mounted drive on the target machine, then the folder you want to mount on your host.