ouvrir le dossier de fichiers dans le répertoire

Je veux que mon application C ++ implémente la fonctionnalité “open File Folder” comme dans Firefox et le gestionnaire de téléchargement. C’est le code que j’ai créé.

int File::openTempFile(std::ssortingng temp_file_dir) { std::ssortingng file_path = temp_file_dir + "/" ; file_path = file_path + this->additional_info ; // if there is already an temporary file then delete it// if( temporary_file != "" ) { // :TODO: open temporary file stack // // so when the application dinit we could remove those // // remove(temporary_file.c_str() ); } /* write temporary file */ FILE* fp = fopen (file_path.c_str(), "w"); if( fp== NULL) return FALSE; fwrite( m_data, 1, m_size, fp); fclose(fp); // now open it using natulus // char * parmList[] = {strdup("nautilus"),strdup(file_path.c_str() )} ; int pid; if(( pid= fork() ) == -1) perror("fork failed"); if( pid ==0 ){ int a = execvp("nautilus" , parmList); printf("exevp failed to load the temporary file"); } temporary_file = file_path ; return TRUE; } 

Mais au lieu d’une fenêtre de Nautilus, il ouvre 3 fenêtres. Toute idée de la raison de cela? Et comment pourrais-je avoir la boîte de dialog “Ouvrir avec” de Nautilus au lieu de la montrer dans le répertoire?

Lors de l’ouverture d’un dossier, j’utilise la commande xdg-open qui ouvre le dossier spécifié avec le gestionnaire de fichiers préféré pour un environnement de bureau donné.

Sur mon système lorsque j’utilise KDE , il appelle dolphin pour afficher le dossier et xfce4 , il appelle thunar , car ce sont les gestionnaires de fichiers préférés selon mes parameters. Je ne veux souvent pas que nautilus soit utilisé, car l’interface diffère de mes applications préférées, ne semble pas cohérente avec les autres applications – en termes de widgets, de style, etc. – et ne regroupera pas la même chose dans ma barre des tâches. .

Il utilise également des préférences distinctes pour mes parameters d’ouverture par défaut et des conflits avec mon stream de travail.

De plus, nautilus n’est pas nécessairement garanti sur mon système. Par exemple, sur certains de mes anciens systèmes, où je suis emerge un système Gentoo personnalisé où je suis contraint par de la RAM ou de l’espace disque dur, je emerge que par twm et xfce4 , donc nautilus n’existe pas.

En ce qui concerne le comportement spécifique à Nautilus, j’ai eu des problèmes similaires avec Nautilus qui crée un ordinateur de bureau lors de l’invocation initiale (comme c’est le cas lorsque je twm ).

Invoquer nautilus --help affiche les options suivantes:

 Application Options: -c, --check Perform a quick set of self-check tests. --version Show the version of the program. -g, --geometry=GEOMETRY Create the initial window with the given geometry. -w, --new-window Always open a new window for browsing specified URIs -n, --no-default-window Only create windows for explicitly specified URIs. --no-desktop Never manage the desktop (ignore the GSettings preference). --force-desktop Always manage the desktop (ignore the GSettings preference). -q, --quit Quit Nautilus. -s, --select Select specified URI in parent folder. --display=DISPLAY X display to use 

Malheureusement, je ne peux pas vous aider à invoquer spécifiquement la boîte de dialog “ouvrir avec …” de nautilus , bien que xdg-open utilise l’application par défaut lorsqu’un fichier est spécifié. Peut-être interroger des configurations dans le fichier mimeapps.list (qui peut se trouver dans plusieurs emplacements de remplacement en cascade: y compris, mais sans s’y limiter, user-desktop, user, sysadmin-desktop, sysadmin, default-desktop et default).