Closed matiuri closed 8 years ago
Verificaste si no ocurre en MacOS X?
Pues no le he preguntado a dani, pero si recuerdo bien no pasaba.
Confirmó que pasa en Ubuntu 15.10, No lo puedo probar en Debian por que no se ejecuta.
MacOS X: la carpeta voxel se crea donde tengas el Launcher. He probado en varias carpetas y funciona como debería.
Ubuntu MATE 15.10: Puedo replicar el bug. He estado investigando y parece que Java utiliza como directorio inicial $HOME cuando se abre un JAR haciendo doble clic sobre él (pero no cuando se abre desde la consola):
El código está aquí, son estos dos archivos: https://gist.github.com/danirod/a676dbf86c5d3ac3badb Se puede compilar el JAR con:
javac Test.java
jar cfm Test.jar Manifest Test.class
PS: ¿Esto no debería ser un issue para https://github.com/guerra24/voxel-launcher? xD
Windows 10: al hacer la prueba el directorio inicial se pone correctamente tanto desde terminal como desde Explorer.
Explicación más lógica: en UNIX el CWD inicial de un proceso es el directorio desde el que se invoque el comando. Por ejemplo, si hago lo siguiente en Ubuntu:
~/Downloads $ cd /tmp
/tmp $ java -jar /home/danirod/Downloads/Launcher.jar
se crea una carpeta llamada /tmp/voxel. El comportamiento del CWD inicial en una terminal está claro, pero en un entorno gráfico es indefinido y no se sabe muy bien lo que puede pasar. Parece que en este caso es una cosa propia de Java porque he creado el siguiente shellscript:
#!/bin/sh
notify-send $PWD
Y al hacer doble clic sobre él en la notificación sí veo /tmp en la notificación.
Antecedente relacionado: en MacOS X si hago doble clic en un shell-script desde el explorador se abre una terminal en la que se ejecuta el comando desde el directorio home invocado de forma absoluta, así que el CWD inicial de ese shell-script es /Users/[usuario]/ cuando se hace doble clic.
Last login: Thu Jan 21 9:00:00 on ttyp1
Welcome to Darwin!
danirod@box:~$ /Users/danirod/Test/script_en_el_que_hago_doble_click.sh
Hola, mi PWD es /Users/danirod
Posible solución: si la intención del launcher es abstraer el inicio de la aplicación y el usuario no debe tocar el directorio voxel por su cuenta, lo mejor será usar un directorio interno como AppData
en Windows, ~/Library/Application Support
en Mac y ~ en Linux y renombrar el directorio voxel por .voxel para hacerlo oculto en los últimos dos: http://stackoverflow.com/questions/11113974/what-is-the-cross-platform-way-of-obtaining-the-path-to-the-local-application-da
En vez de usar la carpeta en donde se encuentre el Launcher, se crea una carpeta ~/voxel, en donde se colocan todos los archivos. OS: Ubuntu 14.04.3 LTS