setAsSystemProxyLinux static method

void setAsSystemProxyLinux(
  1. ProxyTypes types,
  2. String url,
  3. int port
)

Implementation

static void setAsSystemProxyLinux(ProxyTypes types, String url, int port) {
  final homeDir = Platform.environment['HOME']!;
  final configDir = join(homeDir, ".config");
  final cmdList = List<List<String>>.empty(growable: true);
  final desktop = Platform.environment['XDG_CURRENT_DESKTOP'];
  final isKDE = desktop == "KDE";
  // gsetting
  cmdList
      .add(["gsettings", "set", "org.gnome.system.proxy", "mode", "manual"]);
  cmdList.add([
    "gsettings",
    "set",
    "org.gnome.system.proxy.${types.name}",
    "host",
    url
  ]);
  cmdList.add([
    "gsettings",
    "set",
    "org.gnome.system.proxy.${types.name}",
    "port",
    "$port"
  ]);
  // kde
  if (isKDE) {
    cmdList.add([
      "kwriteconfig5",
      "--file",
      "$configDir/kioslaverc",
      "--group",
      "Proxy Settings",
      "--key",
      "ProxyType",
      "1"
    ]);
    cmdList.add([
      "kwriteconfig5",
      "--file",
      "$configDir/kioslaverc",
      "--group",
      "Proxy Settings",
      "--key",
      "${types.name}Proxy",
      "${types.name}://$url:$port"
    ]);
  }
  for (final cmd in cmdList) {
    final res = Process.runSync(cmd[0], cmd.sublist(1), runInShell: true);
    Get.printInfo(info: 'cmd: $cmd returns ${res.exitCode}');
  }
}