diff --git a/ivette/src/dome/misc/system.ts b/ivette/src/dome/misc/system.ts
index b43e52c2b7a1c8635656388283dce94ee2635554..99bcf87c156d06697c1cf614b40227f90fc06f62 100644
--- a/ivette/src/dome/misc/system.ts
+++ b/ivette/src/dome/misc/system.ts
@@ -144,6 +144,9 @@ export function getDocuments() { return appProxy.getPath('documents'); }
 /** Returns user's downloads directory. */
 export function getDownloads() { return appProxy.getPath('downloads'); }
 
+/** Returns temporary directory. */
+export function getTempDir() { return appProxy.getPath('temp'); }
+
 /**
    Working directory (Application Window).
 
diff --git a/ivette/src/frama-c/server.ts b/ivette/src/frama-c/server.ts
index 774de2e8f93a727263a0f70ea2a129e5f30bd3c1..986a69a6695b861c487abe11278b056cec1458f7 100644
--- a/ivette/src/frama-c/server.ts
+++ b/ivette/src/frama-c/server.ts
@@ -401,7 +401,7 @@ export interface Configuration {
   command?: string;
   /** Additional server arguments (default: empty). */
   params: string[];
-  /** Server socket (default: `ipc:///.frama-c.<pid>.io`). */
+  /** Server socket (default: `ipc:///tmp/ivette.frama-c.<pid>.io`). */
   sockaddr?: string;
   /** Shutdown timeout before server is hard killed, in milliseconds
    *  (default: 300ms). */
@@ -465,12 +465,14 @@ async function _launch() {
   }
   buffer.append('\n');
 
-  if (!cwd) cwd = System.getWorkingDir();
   if (!sockaddr) {
-    const socketfile = System.join(cwd, `.frama-c.${System.getPID()}.io`);
+    const tmp = System.getTempDir();
+    const pid = System.getPID();
+    const socketfile = System.join(tmp, `ivette.frama-c.${pid}.io`);
     System.atExit(() => System.remove(socketfile));
     sockaddr = `ipc://${socketfile}`;
   }
+  if (!cwd) cwd = System.getWorkingDir();
   logout = logout && System.join(cwd, logout);
   logerr = logerr && System.join(cwd, logerr);
   params = ['-server-zmq', sockaddr, '-then'].concat(params);