Launcher doesn't respect TMPDIR

Try putting the variable definition in .profile instead of .bashrc. The latter has a statement near the top that causes it to exit very early when executed by a non-interactive shell. Log out and back in to see whether it works.

Also don't forget to add export like this:

export TMPDIR="$HOME/tmp"

If that doesn't work, modify the launcher (it's in /usr/share/applications) so that its Exec line says:

Exec=sh -c 'TMPDIR="$HOME/tmp" emacs'