Eu acho que o código é executado como root, ou um usuário do udev, e que esses usuários não têm autoridade para conversar com o seu gerenciador de janelas e fazer janelas Tk ou algo parecido. Alguma forma de comunicação pode ajudar, por ex. o script udev escreve entradas de log ou envia mensagens para um soquete, que do outro lado de algo no ambiente do gerenciador de janelas pode ler mensagens e executar ações apropriadas.