~/.xprofile allow you to execute commands at the beginning of the X user session, before the Window Manager is started. Therefore it cannot be used to start window-based applications. See Autostarting#Graphical for that.
Making it compatible with xinit
It is possible to make xprofiles compatible with these programs:
All of these execute, directly or indirectly,
~/.xinitrc (usually copied from
/etc/X11/xinit/xinitrc if it doesn't exist. That's why we have to source xprofiles from these files.
~/.xinitrc and /etc/X11/xinit/xinitrc and /etc/skel/.xinitrc
#!/bin/sh # Make sure this is before the 'exec' command or it won't be sourced. [ -f /etc/xprofile ] && source /etc/xprofile [ -f ~/.xprofile ] && source ~/.xprofile ...