Como o Inkscape é o software FOSS , podemos adicionar uma opção ao programa que permitirá que você passe o nome de outro arquivo de configuração, assim:
=== modified file 'src/inkscape.cpp'
--- src/inkscape.cpp 2013-09-28 19:20:27 +0000
+++ src/inkscape.cpp 2013-11-02 04:07:45 +0000
@@ -1443,6 +1443,12 @@
prefdir = g_strdup(val);
}
+ // Also accept an override via the command line
+ extern gchar* sp_preferences;
+ if (sp_preferences) {
+ prefdir = sp_preferences;
+ }
+
#ifdef HAS_SHGetSpecialFolderLocation
// prefer c:\Documents and Settings\UserName\Application Data\ to
// c:\Documents and Settings\userName\;
=== modified file 'src/main.cpp'
--- src/main.cpp 2013-09-24 18:31:44 +0000
+++ src/main.cpp 2013-11-02 04:05:30 +0000
@@ -179,6 +179,7 @@
SP_ARG_VERB_LIST,
SP_ARG_VERB,
SP_ARG_SELECT,
+ SP_ARG_PREFERENCES,
SP_ARG_LAST
};
@@ -228,6 +229,7 @@
static gboolean sp_query_all = FALSE;
static gchar *sp_query_id = NULL;
static gboolean sp_shell = FALSE;
+gchar *sp_preferences = NULL;
static gboolean sp_vacuum_defs = FALSE;
#ifdef WITH_DBUS
static gboolean sp_dbus_listen = FALSE;
@@ -520,6 +522,11 @@
N_("Start Inkscape in interactive shell mode."),
NULL},
+ {"preferences", 0,
+ POPT_ARG_STRING, &sp_preferences, SP_ARG_PREFERENCES,
+ N_("Specify a different preferences.xml file."),
+ NULL},
+
POPT_AUTOHELP POPT_TABLEEND
};
Eu não esperaria que os desenvolvedores do Inkscape aceitassem este patch, por dois motivos. Primeiro, eles têm um recurso alternativo com o mesmo efeito. Mas segundo, eu não esperaria que eles gostassem do modo como eu fiz sp_preferences
global de programas em vez de global de módulos. Esse tipo de código é bom para um recurso pessoal que você não pretende fazer parte do software principal, no entanto.
O patch acima pode parecer bastante feio para um não-programador ou não familiarizado com C ++ e arquivos de patch , mas confie em mim, isso é tão simples quanto as mudanças no software. São apenas 10 linhas de código novo.
(Se você fizer a sua própria contagem e chegar a 13 novas linhas, três delas estão em branco ou têm apenas uma chave, então você não inclui as que estão no SLOC count.)