Existem vários idiomas disponíveis para escrever programas no Linux. Mono maio seja um bom começo para você, já que você está mais familiarizado com o mundo do Windows.
O GTK (usando c ++ ou python) parece ser muito popular nos dias de hoje. Há sempre java. O QT é muito bom e funciona na maioria das coisas, sendo o C ++ o que eu mais vejo.
Em suma, você precisa começar escolhendo um idioma, e há muitos para escolher. Não há "melhor" linguagem, mas, se você não usa Java ou Mono, então você vai querer escolher um conjunto de widgets que funcione de plataforma cruzada. O QT e o GTK funcionam em quase tudo.
Portanto, escolha um conjunto de widgets olhando para QT e GTK e vendo qual estilo fica melhor para você codificar (mais toneladas de diferenças aqui, QT é mais uma pilha e GTK é mais "apenas widgets" por exemplo).
Em seguida, escolha um idioma que se integre bem aos widgets escolhidos. Lembre-se de ter em mente a compatibilidade entre plataformas.
Por fim, sugiro que você comece a reescrever sua versão do Windows primeiro. Então você está aprendendo apenas um novo idioma e pilha, sem precisar reaprender as coisas do sistema operacional principal. Então você pode portar esse código para o Linux. Se você mantivesse um olho na compatibilidade do cross platom, não deveria ser um grande problema.
Quando terminar, você terá uma base de código, que pode ser compilada ou qualquer outra coisa para fornecer um aplicativo que será executado em Linux, Mac, Windows, telefones celulares, fornos de torradeira e velocímetros de carro.
Além disso, não tenha medo de ver os atuais projetos de código aberto e aproveitá-los. Seu programa de chat poderia existir como um plugin no pidgen? (por exemplo) Se pudesse seu projeto ficou mais fácil e seu produto melhor.