Thinkorswim will not paint on startup

Ubuntu Version:
Ubuntu 24.04.3 LTS
GNOME version 46
Win System: Wayland
Kernel: 6.14.0-33-generic

Problem Description*:

  • What goal are you trying to achieve?
    I’m trying to run the ThinkorSwim desktop trading platform for Linux from Schwab. See: “Linux users” here: https://www.schwab.com/trading/thinkorswim/download
    This is the second Ubuntu version/installion on this machine on which I have attempted to install the thinkorswim trading platform. In both cases, the installation process appears to be error-free, but the application fails to paint on startup. So I get the sign-in dialogue box for the application, and upon sign-in the startup progresses in exactly the same way that it does in Windows. For a split second, it kind of looks like the application windows paint. At least the outline of the windows. But then they crash. See: See: “Linux users” here: https://www.schwab.com/trading/thinkorswim/download

Relevant System Information:
Lenovo ThinkPad X1 Carbon 6th
Intel® Core™ i7-8650U × 8
16.0 GiB, 1TB,

Screenshots or Error Messages:
Screenshot from 2025-08-09 09-55-59

Screenshot from 2025-10-05 10-13-19

file:///home/scott/Pictures/Screenshots/Screenshot%20from%202025-08-09%2010-18-47.png

Terminal from installation:

To run a command as administrator (user "root"), use "sudo <command>".
See "man sudo_root" for details.

scott@scott-ThinkPad-X1-Carbon-6th:~$ sudo apt install gnupg ca-certificates curl
[sudo] password for scott: 
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
gnupg is already the newest version (2.4.4-2ubuntu17.3).
gnupg set to manually installed.
ca-certificates is already the newest version (20240203).
ca-certificates set to manually installed.
The following NEW packages will be installed:
  curl
0 upgraded, 1 newly installed, 0 to remove and 12 not upgraded.
Need to get 226 kB of archives.
After this operation, 534 kB of additional disk space will be used.
Do you want to continue? [Y/n] y
Get:1 http://us.archive.ubuntu.com/ubuntu noble-updates/main amd64 curl amd64 8.5.0-2ubuntu10.6 [226 kB]
Fetched 226 kB in 1s (323 kB/s)
Selecting previously unselected package curl.
(Reading database ... 153244 files and directories currently installed.)
Preparing to unpack .../curl_8.5.0-2ubuntu10.6_amd64.deb ...
Unpacking curl (8.5.0-2ubuntu10.6) ...
Setting up curl (8.5.0-2ubuntu10.6) ...
Processing triggers for man-db (2.12.0-4build2) ...
scott@scott-ThinkPad-X1-Carbon-6th:~$ curl -s https://repos.azul.com/azul-repo.key | sudo gpg --dearmor -o /usr/share/keyrings/azul.gpg
scott@scott-ThinkPad-X1-Carbon-6th:~$ echo "deb [signed-by=/usr/share/keyrings/azul.gpg] https://repos.azul.com/zulu/deb stable main" | sudo tee /etc/apt/sources.list.d/zulu.list
deb [signed-by=/usr/share/keyrings/azul.gpg] https://repos.azul.com/zulu/deb stable main
scott@scott-ThinkPad-X1-Carbon-6th:~$ sudo apt update
Hit:1 http://us.archive.ubuntu.com/ubuntu noble InRelease
Hit:2 https://dl.google.com/linux/chrome/deb stable InRelease                                    
Hit:3 http://us.archive.ubuntu.com/ubuntu noble-updates InRelease                                
Hit:4 http://us.archive.ubuntu.com/ubuntu noble-backports InRelease                              
Get:5 https://repos.azul.com/zulu/deb stable InRelease [5,289 B]                                 
Hit:6 https://tvd-packages.tradingview.com/ubuntu/stable jammy InRelease                         
Hit:7 http://security.ubuntu.com/ubuntu noble-security InRelease                                 
Hit:8 https://deb.opera.com/opera-stable stable InRelease                                        
Get:9 https://repos.azul.com/zulu/deb stable/main amd64 Packages [357 kB]
Hit:10 https://repo.yandex.ru/yandex-browser/deb stable InRelease
Fetched 362 kB in 1s (303 kB/s)                        
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
12 packages can be upgraded. Run 'apt list --upgradable' to see them.
scott@scott-ThinkPad-X1-Carbon-6th:~$ ^C
scott@scott-ThinkPad-X1-Carbon-6th:~$ apt list --upgradable
Listing... Done
gnome-initial-setup/noble-updates 46.3-1ubuntu3~24.04.2 amd64 [upgradable from: 46.3-1ubuntu3~24.04.1]
gvfs-backends/noble-updates 1.54.4-0ubuntu1~24.04.1 amd64 [upgradable from: 1.54.0-1ubuntu2]
gvfs-common/noble-updates 1.54.4-0ubuntu1~24.04.1 all [upgradable from: 1.54.0-1ubuntu2]
gvfs-daemons/noble-updates 1.54.4-0ubuntu1~24.04.1 amd64 [upgradable from: 1.54.0-1ubuntu2]
gvfs-fuse/noble-updates 1.54.4-0ubuntu1~24.04.1 amd64 [upgradable from: 1.54.0-1ubuntu2]
gvfs-libs/noble-updates 1.54.4-0ubuntu1~24.04.1 amd64 [upgradable from: 1.54.0-1ubuntu2]
gvfs/noble-updates 1.54.4-0ubuntu1~24.04.1 amd64 [upgradable from: 1.54.0-1ubuntu2]
libnetplan1/noble-updates 1.1.2-2~ubuntu24.04.2 amd64 [upgradable from: 1.1.1-1~ubuntu24.04.1]
netplan-generator/noble-updates 1.1.2-2~ubuntu24.04.2 amd64 [upgradable from: 1.1.1-1~ubuntu24.04.1]
netplan.io/noble-updates 1.1.2-2~ubuntu24.04.2 amd64 [upgradable from: 1.1.1-1~ubuntu24.04.1]
python3-netplan/noble-updates 1.1.2-2~ubuntu24.04.2 amd64 [upgradable from: 1.1.1-1~ubuntu24.04.1]
ubuntu-drivers-common/noble-updates 1:0.9.7.6ubuntu3.2 amd64 [upgradable from: 1:0.9.7.6ubuntu3.1]
scott@scott-ThinkPad-X1-Carbon-6th:~$ sudo apt install zulu21-jdk
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following additional packages will be installed:
  java-common zulu21-ca-doc zulu21-ca-jdk zulu21-ca-jdk-headless zulu21-ca-jre
  zulu21-ca-jre-headless zulu21-doc zulu21-jdk-headless zulu21-jre zulu21-jre-headless
Suggested packages:
  default-jre
The following NEW packages will be installed:
  java-common zulu21-ca-doc zulu21-ca-jdk zulu21-ca-jdk-headless zulu21-ca-jre
  zulu21-ca-jre-headless zulu21-doc zulu21-jdk zulu21-jdk-headless zulu21-jre
  zulu21-jre-headless
0 upgraded, 11 newly installed, 0 to remove and 12 not upgraded.
Need to get 128 MB of archives.
After this operation, 310 MB of additional disk space will be used.
Do you want to continue? [Y/n] y
Get:1 http://us.archive.ubuntu.com/ubuntu noble/main amd64 java-common all 0.75+exp1 [6,798 B]
Get:2 https://repos.azul.com/zulu/deb stable/main amd64 zulu21-ca-doc amd64 21.0.8-1 [151 kB]
Get:3 https://repos.azul.com/zulu/deb stable/main amd64 zulu21-ca-jre-headless amd64 21.0.8-1 [42.8 MB]
Get:4 https://repos.azul.com/zulu/deb stable/main amd64 zulu21-ca-jre amd64 21.0.8-1 [343 kB]
Get:5 https://repos.azul.com/zulu/deb stable/main amd64 zulu21-ca-jdk-headless amd64 21.0.8-1 [84.9 MB]
Get:6 https://repos.azul.com/zulu/deb stable/main amd64 zulu21-ca-jdk amd64 21.0.8-1 [11.6 kB]
Get:7 https://repos.azul.com/zulu/deb stable/main amd64 zulu21-doc amd64 21.0.8-1 [2,926 B]
Get:8 https://repos.azul.com/zulu/deb stable/main amd64 zulu21-jre-headless amd64 21.0.8-1 [2,942 B]
Get:9 https://repos.azul.com/zulu/deb stable/main amd64 zulu21-jre amd64 21.0.8-1 [2,936 B]
Get:10 https://repos.azul.com/zulu/deb stable/main amd64 zulu21-jdk-headless amd64 21.0.8-1 [2,948 B]
Get:11 https://repos.azul.com/zulu/deb stable/main amd64 zulu21-jdk amd64 21.0.8-1 [2,946 B]
Fetched 128 MB in 5s (23.4 MB/s)        
Selecting previously unselected package java-common.
(Reading database ... 153251 files and directories currently installed.)
Preparing to unpack .../00-java-common_0.75+exp1_all.deb ...
Unpacking java-common (0.75+exp1) ...
Selecting previously unselected package zulu21-ca-doc.
Preparing to unpack .../01-zulu21-ca-doc_21.0.8-1_amd64.deb ...
Unpacking zulu21-ca-doc (21.0.8-1) ...
Selecting previously unselected package zulu21-ca-jre-headless.
Preparing to unpack .../02-zulu21-ca-jre-headless_21.0.8-1_amd64.deb ...
Unpacking zulu21-ca-jre-headless (21.0.8-1) ...
Selecting previously unselected package zulu21-ca-jre.
Preparing to unpack .../03-zulu21-ca-jre_21.0.8-1_amd64.deb ...
Unpacking zulu21-ca-jre (21.0.8-1) ...
Selecting previously unselected package zulu21-ca-jdk-headless.
Preparing to unpack .../04-zulu21-ca-jdk-headless_21.0.8-1_amd64.deb ...
Unpacking zulu21-ca-jdk-headless (21.0.8-1) ...
Selecting previously unselected package zulu21-ca-jdk.
Preparing to unpack .../05-zulu21-ca-jdk_21.0.8-1_amd64.deb ...
Unpacking zulu21-ca-jdk (21.0.8-1) ...
Selecting previously unselected package zulu21-doc.
Preparing to unpack .../06-zulu21-doc_21.0.8-1_amd64.deb ...
Unpacking zulu21-doc (21.0.8-1) ...
Selecting previously unselected package zulu21-jre-headless.
Preparing to unpack .../07-zulu21-jre-headless_21.0.8-1_amd64.deb ...
Unpacking zulu21-jre-headless (21.0.8-1) ...
Selecting previously unselected package zulu21-jre.
Preparing to unpack .../08-zulu21-jre_21.0.8-1_amd64.deb ...
Unpacking zulu21-jre (21.0.8-1) ...
Selecting previously unselected package zulu21-jdk-headless.
Preparing to unpack .../09-zulu21-jdk-headless_21.0.8-1_amd64.deb ...
Unpacking zulu21-jdk-headless (21.0.8-1) ...
Selecting previously unselected package zulu21-jdk.
Preparing to unpack .../10-zulu21-jdk_21.0.8-1_amd64.deb ...
Unpacking zulu21-jdk (21.0.8-1) ...
Setting up java-common (0.75+exp1) ...
Setting up zulu21-ca-doc (21.0.8-1) ...
update-alternatives: using /usr/lib/jvm/zulu21-ca-amd64/bin/java to provide /usr/bin/java (java) i
n auto mode
update-alternatives: using /usr/lib/jvm/zulu21-ca-amd64/bin/jfr to provide /usr/bin/jfr (jfr) in a
uto mode
update-alternatives: using /usr/lib/jvm/zulu21-ca-amd64/bin/keytool to provide /usr/bin/keytool (k
eytool) in auto mode
update-alternatives: using /usr/lib/jvm/zulu21-ca-amd64/bin/rmiregistry to provide /usr/bin/rmireg
istry (rmiregistry) in auto mode
update-alternatives: using /usr/lib/jvm/zulu21-ca-amd64/bin/jar to provide /usr/bin/jar (jar) in a
uto mode
update-alternatives: using /usr/lib/jvm/zulu21-ca-amd64/bin/jarsigner to provide /usr/bin/jarsigne
r (jarsigner) in auto mode
update-alternatives: using /usr/lib/jvm/zulu21-ca-amd64/bin/javac to provide /usr/bin/javac (javac
) in auto mode
update-alternatives: using /usr/lib/jvm/zulu21-ca-amd64/bin/javadoc to provide /usr/bin/javadoc (j
avadoc) in auto mode
update-alternatives: using /usr/lib/jvm/zulu21-ca-amd64/bin/javap to provide /usr/bin/javap (javap
) in auto mode
update-alternatives: using /usr/lib/jvm/zulu21-ca-amd64/bin/jcmd to provide /usr/bin/jcmd (jcmd) i
n auto mode
update-alternatives: using /usr/lib/jvm/zulu21-ca-amd64/bin/jdb to provide /usr/bin/jdb (jdb) in a
uto mode
update-alternatives: using /usr/lib/jvm/zulu21-ca-amd64/bin/jdeprscan to provide /usr/bin/jdeprsca
n (jdeprscan) in auto mode
update-alternatives: using /usr/lib/jvm/zulu21-ca-amd64/bin/jdeps to provide /usr/bin/jdeps (jdeps
) in auto mode
update-alternatives: using /usr/lib/jvm/zulu21-ca-amd64/bin/jhsdb to provide /usr/bin/jhsdb (jhsdb
) in auto mode
update-alternatives: using /usr/lib/jvm/zulu21-ca-amd64/bin/jimage to provide /usr/bin/jimage (jim
age) in auto mode
update-alternatives: using /usr/lib/jvm/zulu21-ca-amd64/bin/jinfo to provide /usr/bin/jinfo (jinfo
) in auto mode
update-alternatives: using /usr/lib/jvm/zulu21-ca-amd64/bin/jlink to provide /usr/bin/jlink (jlink
) in auto mode
update-alternatives: using /usr/lib/jvm/zulu21-ca-amd64/bin/jmap to provide /usr/bin/jmap (jmap) i
n auto mode
update-alternatives: using /usr/lib/jvm/zulu21-ca-amd64/bin/jmod to provide /usr/bin/jmod (jmod) i
n auto mode
update-alternatives: using /usr/lib/jvm/zulu21-ca-amd64/bin/jpackage to provide /usr/bin/jpackage 
(jpackage) in auto mode
update-alternatives: using /usr/lib/jvm/zulu21-ca-amd64/bin/jps to provide /usr/bin/jps (jps) in a
uto mode
update-alternatives: using /usr/lib/jvm/zulu21-ca-amd64/bin/jrunscript to provide /usr/bin/jrunscr
ipt (jrunscript) in auto mode
update-alternatives: using /usr/lib/jvm/zulu21-ca-amd64/bin/jshell to provide /usr/bin/jshell (jsh
ell) in auto mode
update-alternatives: using /usr/lib/jvm/zulu21-ca-amd64/bin/jstack to provide /usr/bin/jstack (jst
ack) in auto mode
update-alternatives: using /usr/lib/jvm/zulu21-ca-amd64/bin/jstat to provide /usr/bin/jstat (jstat
) in auto mode
update-alternatives: using /usr/lib/jvm/zulu21-ca-amd64/bin/jstatd to provide /usr/bin/jstatd (jst
atd) in auto mode
update-alternatives: using /usr/lib/jvm/zulu21-ca-amd64/bin/jwebserver to provide /usr/bin/jwebser
ver (jwebserver) in auto mode
update-alternatives: using /usr/lib/jvm/zulu21-ca-amd64/bin/serialver to provide /usr/bin/serialve
r (serialver) in auto mode
update-alternatives: using /usr/lib/jvm/zulu21-ca-amd64/bin/jconsole to provide /usr/bin/jconsole 
(jconsole) in auto mode
Setting up zulu21-ca-jre-headless (21.0.8-1) ...
Setting up zulu21-ca-jre (21.0.8-1) ...
Setting up zulu21-ca-jdk-headless (21.0.8-1) ...
Setting up zulu21-jre-headless (21.0.8-1) ...
Setting up zulu21-doc (21.0.8-1) ...
Setting up zulu21-ca-jdk (21.0.8-1) ...
Setting up zulu21-jdk-headless (21.0.8-1) ...
Setting up zulu21-jre (21.0.8-1) ...
Setting up zulu21-jdk (21.0.8-1) ...
Processing triggers for man-db (2.12.0-4build2) ...
scott@scott-ThinkPad-X1-Carbon-6th:~$ $ java -version
$: command not found
scott@scott-ThinkPad-X1-Carbon-6th:~$ java -version
openjdk version "21.0.8" 2025-07-15 LTS
OpenJDK Runtime Environment Zulu21.44+17-CA (build 21.0.8+9-LTS)
OpenJDK 64-Bit Server VM Zulu21.44+17-CA (build 21.0.8+9-LTS, mixed mode, sharing)
scott@scott-ThinkPad-X1-Carbon-6th:~$ cd Downloads
scott@scott-ThinkPad-X1-Carbon-6th:~/Downloads$ sh ./thinkorswim_installer.sh
Starting Installer ...
scott@scott-ThinkPad-X1-Carbon-6th:~/Downloads$ ^C
scott@scott-ThinkPad-X1-Carbon-6th:~/Downloads$ 



What I’ve Tried:
Uninstalling and reinstalling doesn’t work. The exact same thing happens on an i7 Lenovo Tiny I have running the previous LTS version of Ubuntu. So I’m missing something.

I hope you can help me. My life will be immensely easier if I could live in Ubuntu with this trading platform.

Thanks for your time,
Scott


Hi Scott,

Thinkorswim’s Java/SWT UI often fails on Wayland. Try:

  1. Log out → choose “Ubuntu on Xorg” at login, then launch TOS.
  2. Or run:
GDK_BACKEND=x11 ./thinkorswim
  1. If still blank, try:
export SWT_GTK3=0 ./thinkorswim
  1. If using Java 21, install Zulu 17 JDK and select it with
sudo update-alternatives --config java

Switching to X11 or Java 17 usually fixes the painting issue.

1 Like

It painted on Xorg! I need to import my template and test it, but the default active trader appears to be running fine. I’ll do that soon and then come back and close the ticket. Thanks so much, ayla 1.