diff --git a/com.angoosh.RDPConnect/com.angoosh.RDPConnect.svg b/com.angoosh.RDPConnect/com.angoosh.RDPConnect.svg
new file mode 100644
index 0000000..9c8132c
--- /dev/null
+++ b/com.angoosh.RDPConnect/com.angoosh.RDPConnect.svg
@@ -0,0 +1,532 @@
+
+
+
+
diff --git a/com.angoosh.RDPConnect/com.angoosh.RDPConnect.ui b/com.angoosh.RDPConnect/com.angoosh.RDPConnect.ui
index c404534..e02360a 100644
--- a/com.angoosh.RDPConnect/com.angoosh.RDPConnect.ui
+++ b/com.angoosh.RDPConnect/com.angoosh.RDPConnect.ui
@@ -110,11 +110,23 @@
-
diff --git a/com.angoosh.RDPConnect/com.angoosh.RDPConnect/com.angoosh.RDPConnect.ui b/com.angoosh.RDPConnect/com.angoosh.RDPConnect/com.angoosh.RDPConnect.ui
new file mode 100644
index 0000000..c404534
--- /dev/null
+++ b/com.angoosh.RDPConnect/com.angoosh.RDPConnect/com.angoosh.RDPConnect.ui
@@ -0,0 +1,126 @@
+
+
+
+
+
+
+
+
+ 200
+ 450
+ False
+ RDPConnect
+
+
+
+
+ start
+ 5
+ 5
+ 5
+ 5
+ vertical
+
+
+ False
+ False
+ False
+ False
+ False
+ start
+ 5
+ 5
+ IP:
+ center
+ 1.0
+
+
+
+
+ False
+ False
+ False
+ False
+ False
+ start
+ 5
+ 5
+ User:
+ center
+ 1.0
+
+
+
+
+ False
+ False
+ False
+ False
+ False
+ start
+ 5
+ 5
+ Password:
+ center
+ 1.0
+
+
+
+
+
+
+ True
+ 5
+ 5
+ 5
+ 5
+ vertical
+
+
+ textentry
+ 5
+ 5
+ 5
+ ip-adresa
+ 0.02
+
+
+
+
+ textentry
+ True
+ 5
+ 5
+ 5
+ uzivatel
+ True
+ 0.02
+
+
+
+
+ textentry
+ True
+ 5
+ 5
+ 5
+ heslo
+ False
+ 0.02
+
+
+
+
+ end
+ Connect
+ end
+ True
+
+
+
+
+
+
+
+
+
diff --git a/com.angoosh.RDPConnect/com.angoosh.cmb b/com.angoosh.RDPConnect/com.angoosh.cmb
index 20bb979..c0cf0cc 100644
--- a/com.angoosh.RDPConnect/com.angoosh.cmb
+++ b/com.angoosh.RDPConnect/com.angoosh.cmb
@@ -22,7 +22,9 @@
(1,10,"GtkText","pass_label",7,None,None,None,2,None,None),
(1,11,"GtkText","user",5,None,None,None,1,None,None),
(1,12,"GtkText","pass",5,None,None,None,2,None,None),
- (1,13,"GtkButton","connect",5,None,None,None,3,None,None),
+ (1,14,"GtkBox",None,5,None,None,None,3,None,None),
+ (1,15,"GtkButton","connect",14,None,None,None,1,None,None),
+ (1,16,"GtkCheckButton","save_conf",14,None,None,None,0,None,None),
(2,1,"GtkWindow","main_window",None,None,None,None,0,None,None),
(2,2,"GtkBox",None,1,None,None,None,0,None,None),
(2,3,"GtkBox",None,2,None,None,None,0,None,None),
@@ -108,10 +110,14 @@
(1,12,"GtkWidget","margin-bottom","5",None,None,None,None,None,None,None,None,None),
(1,12,"GtkWidget","margin-end","5",None,None,None,None,None,None,None,None,None),
(1,12,"GtkWidget","margin-top","5",None,None,None,None,None,None,None,None,None),
- (1,13,"GtkButton","label","Connect",None,None,None,None,None,None,None,None,None),
- (1,13,"GtkWidget","halign","end",None,None,None,None,None,None,None,None,None),
- (1,13,"GtkWidget","valign","end",None,None,None,None,None,None,None,None,None),
- (1,13,"GtkWidget","vexpand","True",None,None,None,None,None,None,None,None,None),
+ (1,14,"GtkWidget","valign","end",None,None,None,None,None,None,None,None,None),
+ (1,14,"GtkWidget","vexpand","True",None,None,None,None,None,None,None,None,None),
+ (1,15,"GtkButton","label","Connect",0,None,None,None,None,None,None,None,None),
+ (1,15,"GtkWidget","css-classes","suggested-action",None,None,None,None,None,None,None,None,None),
+ (1,15,"GtkWidget","halign","end",None,None,None,None,None,None,None,None,None),
+ (1,15,"GtkWidget","hexpand","True",None,None,None,None,None,None,None,None,None),
+ (1,15,"GtkWidget","valign","end",0,None,None,None,None,None,None,None,None),
+ (1,16,"GtkCheckButton","label","save config",None,None,None,None,None,None,None,None,None),
(2,1,"GtkWidget","css-classes","\n",0,None,None,None,None,None,None,None,None),
(2,1,"GtkWindow","default-height","200",0,None,None,None,None,None,None,None,None),
(2,1,"GtkWindow","default-width","450",0,None,None,None,None,None,None,None,None),
diff --git a/com.angoosh.RDPConnect/ico_base.svg b/com.angoosh.RDPConnect/ico_base.svg
new file mode 100644
index 0000000..9c8132c
--- /dev/null
+++ b/com.angoosh.RDPConnect/ico_base.svg
@@ -0,0 +1,532 @@
+
+
+
+
diff --git a/com.angoosh.RDPConnect/main.py b/com.angoosh.RDPConnect/main.py
old mode 100644
new mode 100755
index cf3c533..db136c3
--- a/com.angoosh.RDPConnect/main.py
+++ b/com.angoosh.RDPConnect/main.py
@@ -6,14 +6,44 @@ Created on Mon Nov 18 12:04:53 2024
@author: angoosh
"""
import sys
+import os
import gi
import subprocess
+import json
gi.require_version('Gtk', '4.0')
gi.require_version('Adw', '1')
from gi.repository import Gtk, Adw, Gdk, Gio
APPID = "com.angoosh.RDPConnect"
+HOMEDIR = os.path.expanduser('~')
+print(HOMEDIR)
+
+conn_info = {}
+settings = {}
+
+def load_config():
+ global conn_info, settings
+ loaded_json = ""
+ try:
+ with open(HOMEDIR+"/.config/rdpconnect/connection.json", "r") as connection_file:
+ for line in connection_file:
+ loaded_json += line
+
+ conn_info = json.loads(loaded_json)
+ except:
+ print("[WARN] FILE: "+HOMEDIR+"/.config/rdpconnect/connection.json doesn't exist")
+
+ loaded_json = ""
+ try:
+ with open(HOMEDIR+"/.config/rdpconnect/settings.json", "r") as settings_file:
+ for line in settings_file:
+ loaded_json += line
+
+ settings = json.loads(loaded_json)
+ except:
+ print("[WARN] FILE: "+HOMEDIR+"/.config/rdpconnect/settings.json doesn't exist")
+
class MyApp(Adw.Application):
def __init__(self, **kwargs):
@@ -29,25 +59,63 @@ class MyApp(Adw.Application):
Gtk.StyleContext.add_provider_for_display(Gdk.Display.get_default(), css_provider, Gtk.STYLE_PROVIDER_PRIORITY_APPLICATION)
connect = builder.get_object("connect")
- connect.connect("clicked", self.hello)
+ connect.connect("clicked", self.connectRDP)
self.ip = builder.get_object("ip")
self.user = builder.get_object("user")
self.passwd = builder.get_object("pass")
+ self.save_conf = builder.get_object("save_conf")
+
+ try:
+ if settings["save_conn"]:
+ self.ip.get_buffer().set_text(str(conn_info["ip"]), len(conn_info["ip"]))
+ self.user.get_buffer().set_text(str(conn_info["user"]), len(conn_info["user"]))
+ self.passwd.get_buffer().set_text(str(conn_info["passwd"]), len(conn_info["passwd"]))
+
+ self.save_conf.set_active(True)
+ except:
+ pass
+
self.win = builder.get_object("main_window")
self.win.set_application(self)
self.win.present()
- def hello(self, button):
- print("Hello world")
- ip = self.ip.get_buffer().get_text()
- user = self.user.get_buffer().get_text()
- passwd = self.passwd.get_buffer().get_text()
+ def saveConnConf(self):
+ if settings["save_conn"]:
+ print("Saving connection config to "+HOMEDIR+"/.config/rdpconnect/connection.json")
+ with open(HOMEDIR+"/.config/rdpconnect/connection.json", "w") as connection_file:
+ js = json.dumps(conn_info, sort_keys=True, indent=4, separators=(',', ': '))
+ connection_file.write(js)
+ else:
+ with open(HOMEDIR+"/.config/rdpconnect/connection.json", "w") as connection_file:
+ connection_file.write("")
- #subprocess.run(["flatpak", "run", "com.freerdp.FreeRDP", "/v:"+str(ip), "/u:"+str(user), "/p:"+str(passwd)])
- subprocess.run(["xfreerdp", "/v:"+str(ip), "/u:"+str(user), "/p:"+str(passwd)])
+ print("Saving settings config to "+HOMEDIR+"/.config/rdpconnect/settings.json")
+ with open(HOMEDIR+"/.config/rdpconnect/settings.json", "w") as settings_file:
+ js = json.dumps(settings, sort_keys=True, indent=4, separators=(',', ': '))
+ settings_file.write(js)
+ def connectRDP(self, button):
+ conn_info["ip"] = self.ip.get_buffer().get_text()
+ conn_info["user"] = self.user.get_buffer().get_text()
+ conn_info["passwd"] = self.passwd.get_buffer().get_text()
+
+ if self.save_conf.get_active():
+ settings["save_conn"] = True
+ else:
+ settings["save_conn"] = False
+ if not "extra_params" in settings:
+ settings["extra_params"] = []
+
+ self.saveConnConf()
+ subprocess.Popen(["flatpak", "run", "com.freerdp.FreeRDP", "/v:"+str(conn_info["ip"]), "/u:"+str(conn_info["user"]), "/p:"+str(conn_info["passwd"])]+settings["extra_params"])
+ #subprocess.run(["xfreerdp", "/v:"+str(ip), "/u:"+str(user), "/p:"+str(passwd)])
+
+if not os.path.isdir(HOMEDIR+"/.config/rdpconnect"):
+ os.makedirs(HOMEDIR+"/.config/rdpconnect")
+#subprocess.run(["ls", "-a", HOMEDIR])
+load_config()
app = MyApp(application_id=APPID)
app.run(sys.argv)