Resumo do problema
Por si só, a seção intitulada “Context” abaixo seria uma pergunta para o Stack Overflow. No entanto, após um diagnóstico mais aprofundado, verifiquei que pareço ser totalmente incapaz de acessar o applications:/
URI fora do Dolphin, via CLI:
CLI (
gio
)gio list -l applications:/
PS /home/RokeJulianLockhart/Documents/webpage_frontend> gio list -l applications:/ gio: applications:/: Operation not supported
Golfinho
Por que isso acontece? Até onde sei, isso deve ser acessível como uma montagem virtual por meio do subsistema GVFS. No entanto, não parece estar montado:
PS /home/RokeJulianLockhart/Documents/webpage_frontend> gio mount -l
Mount(0): s11vzd -> file:///run/media/RokeJulianLockhart/s11vzd
Type: GUnixMount
Não há nem mesmo um diretório para eles:
PS /home/RokeJulianLockhart/Documents/webpage_frontend> tree "$Env:XDG_RUNTIME_DIR/gvfs"
/run/user/1000/gvfs [error opening dir]
0 directories, 0 files
Presumo que devo estar fazendo algo errado. No entanto, não consegui descobrir o quê.
Contexto
Estou tentando criar um .JS
arquivo que emita o conteúdo de applications:/
(acessível via gerenciadores de arquivos Dolphin do KDE e Nautilus do GNOME ) para um .HTML
arquivo, para que eu possa renderizá-lo no navegador da Web KDE Plasma 6 plasmashell
plasmoid . No entanto, quando eu conecto ao servidor (em http://localhost:3000/index.html
) eu vejo:
<html><head>
<title>List GVFS Files</title>
</head>
<body>
<h1>Files in applications:/</h1>
<div id="fileList"><ol><li>Error accessing GVFS URI: gio: applications:/: Operation not supported</li></ol></div>
<script>
async function fetchFiles() {
try {
const response = await fetch('http://localhost:3000/list-gvfs-files');
const fileList = await response.text();
// Parse and display the file list
const fileArray = fileList.split('\n').filter(line => line.trim() !== '');
const listContainer = document.getElementById('fileList');
const list = document.createElement('ol');
fileArray.forEach(file => {
const listItem = document.createElement('li');
listItem.textContent = file;
list.appendChild(listItem);
});
listContainer.appendChild(list);
} catch (error) {
console.error("Error fetching files:", error);
}
}
fetchFiles();
</script>
</body></html>
Especificamente:
Erro ao acessar GVFS URI: gio: applications:/: Operação não suportada
Abaixo, incluí uma cópia dos arquivos, caso seja de interesse:
server.js
// server.js const express = require('express'); const { exec } = require('child_process'); const app = express(); const PORT = 3000; // Serve static files from the current directory app.use(express.static(__dirname)); app.get('/list-gvfs-files', (req, res) => { // Check current environment variables console.log('Current Environment Variables:', process.env); // Run the gio command and capture output for debugging exec("gio list -l applications:/", (error, stdout, stderr) => { if (error) { console.error("Command Error:", error); console.error("Standard Error:", stderr); return res.status(500).send("Error accessing GVFS URI: " + stderr); } console.log("Command Output:", stdout); res.send(stdout); }); }); app.listen(PORT, () => { console.log(`Server running at http://localhost:${PORT}`); });
index.html
<!DOCTYPE html> <html> <head> <title>List GVFS Files</title> </head> <body> <h1>Files in applications:/</h1> <div id="fileList"></div> <script> async function fetchFiles() { try { const response = await fetch('http://localhost:3000/list-gvfs-files'); const fileList = await response.text(); // Parse and display the file list const fileArray = fileList.split('\n').filter(line => line.trim() !== ''); const listContainer = document.getElementById('fileList'); const list = document.createElement('ol'); fileArray.forEach(file => { const listItem = document.createElement('li'); listItem.textContent = file; list.appendChild(listItem); }); listContainer.appendChild(list); } catch (error) { console.error("Error fetching files:", error); } } fetchFiles(); </script> </body> </html>
Elas foram bastante improvisadas a partir do que localizei online sobre tópicos semelhantes (infelizmente, a maioria das discussões sobre esse tópico envolveu PHP, que eu preferiria não utilizar, porque sou ainda menos familiarizado com ele).
Não é um URI fornecido pelo GIO/GVFS. O Dolphin não é baseado no GLib2 do GNOME de forma alguma – ele é escrito usando Qt e KDE Frameworks e usa a contraparte do KDE, KIO , para fornecer o recurso de montagem virtual. Você pode acessá-lo usando
kioclient
aplicativos externos baseados em Qt/KF.