Supondo que os PDFs que você está visualizando tenham a extensão .pdf, o seguinte pode funcionar para obter uma lista de PDFs abertos:
$ lsof | grep ".pdf$"
Se você só usa Evince, veja a resposta similar de Gilles. Na minha máquina (com alguns pdfs abertos), a saída exibida é a seguinte
evince 6267 myuser 14u REG 252,0 363755 7077955 /tmp/SM.pdf
Para obter apenas os nomes dos arquivos, podemos usar awk
:
$ lsof | grep ".pdf$" | awk '{print $9}'
ou melhor ainda,
$ lsof | awk '/.pdf$/ {print $9}'
Podemos salvar esses resultados em um arquivo:
$ lsof | awk '/.pdf$/ {print $9}' > openpdfs
e mais tarde, para restaurá-los:
$ xargs -a openpdfs evince
Para que isso aconteça automaticamente, você pode usar quaisquer mecanismos que seu ambiente de desktop forneça para executar o comando "save" ao sair e o comando "open" no login. Um pouco mais de robustez pode ser adicionado, garantindo que os PDFs retornados por lsof
estejam sendo abertos pelo usuário. Uma vantagem deste método é que ele deve funcionar para qualquer visualizador de pdf que possua argumentos de linha de comando. Uma desvantagem é que isso depende dos nomes dos arquivos; no entanto, com um pouco de cutucão, o requisito de saber a extensão do nome do arquivo provavelmente também pode ser removido.