24#include <wx/filename.h>
38 if( wxGetEnv( wxT(
"XDG_CURRENT_DESKTOP" ), &wm ) && wm.CmpNoCase( wxT(
"Unity" ) ) == 0 )
39 wxSetEnv( wxT(
"UBUNTU_MENUPROXY" ), wxT(
"0" ) );
41 bool forceX11 =
false;
43#if wxCHECK_VERSION( 3, 3, 2 )
46 if( !wxGetEnv( wxT(
"WAYLAND_DISPLAY" ),
nullptr ) )
47 wxSystemOptions::SetOption(
"opengl.egl", 0 );
53 #if !wxUSE_GLCANVAS_EGL
60 wxSetEnv( wxT(
"GDK_BACKEND" ), wxT(
"x11" ) );
66 if( !wxGetEnv( wxT(
"WAYLAND_DISPLAY" ),
nullptr ) )
67 wxSetEnv( wxT(
"GDK_CORE_DEVICE_EVENTS" ), wxT(
"1" ) );
73 GError* err =
nullptr;
74 GFile* file = g_file_new_for_path( aPath.fn_str() );
76 bool retVal = g_file_trash( file,
nullptr, &err );
80 aError = err->message;
82 g_clear_error( &err );
83 g_object_unref( file );
98 char* resolved = realpath( aPath.fn_str(),
nullptr );
103 GFile* file = g_file_new_for_path( resolved );
106 GMount* mount = g_file_find_enclosing_mount( file,
nullptr,
nullptr );
107 g_object_unref( file );
113 GDrive* drive = g_mount_get_drive( mount );
114 bool removable = drive && g_drive_is_removable( drive );
117 g_object_unref( drive );
119 g_object_unref( mount );
126 wxString docsPath = g_get_user_data_dir();
128 if( docsPath.IsEmpty() )
132 fallback.AssignDir( g_get_home_dir() );
133 fallback.AppendDir( wxT(
".local" ) );
134 fallback.AppendDir( wxT(
"share" ) );
135 fallback.MakeAbsolute();
137 docsPath = fallback.GetFullPath();
146 return g_get_user_config_dir();
152 return g_get_user_data_dir();
158 return g_get_user_data_dir();
164 return g_get_user_cache_dir();
170 bool success =
false;
172 GProxyResolver*
resolver = g_proxy_resolver_get_default();
177 GError* error =
nullptr;
178 char** proxyList = g_proxy_resolver_lookup(
resolver, aURL.utf8_str(),
nullptr, &error );
182 g_error_free( error );
191 for(
int i = 0; proxyList[i] !=
nullptr; i++ )
193 wxString proxyUriStr( proxyList[i], wxConvUTF8 );
196 if( proxyUriStr == wxT(
"direct://" ) )
199 wxURI proxyUri( proxyUriStr );
208 wxString scheme = proxyUri.GetScheme();
210 if( !scheme.IsEmpty() )
211 aCfg.
host = scheme + wxT(
"://" );
213 wxString server = proxyUri.GetServer();
216 bool isIPv6 = server.Contains( wxT(
":" ) );
218 if( isIPv6 && proxyUri.HasPort() )
219 aCfg.
host += wxT(
"[" ) + server + wxT(
"]" );
223 if( proxyUri.HasPort() )
224 aCfg.
host += wxT(
":" ) + proxyUri.GetPort();
227 wxString userInfo = proxyUri.GetUserInfo();
229 if( !userInfo.IsEmpty() )
231 int colonPos = userInfo.Find( wxT(
":" ) );
233 if( colonPos != wxNOT_FOUND )
235 aCfg.
username = userInfo.Left( colonPos );
236 aCfg.
password = userInfo.Mid( colonPos + 1 );
248 g_strfreev( proxyList );
262 return wxEmptyString;
267 const wxString& aRelaunchDisplayName )
274 return wxEmptyString;
static FILENAME_RESOLVER * resolver