added com.angoosh.RDPConnect app WIP

This commit is contained in:
2024-11-18 15:03:40 +01:00
parent 0c66ff1c84
commit ea0b73935f
4 changed files with 389 additions and 0 deletions

View File

@@ -0,0 +1,126 @@
<?xml version='1.0' encoding='UTF-8'?>
<!-- Created with Cambalache 0.92.2 -->
<interface>
<!-- interface-name com.angoosh.RDPConnect.ui -->
<requires lib="gtk" version="4.12"/>
<object class="GtkWindow" id="main_window">
<property name="css-classes">
</property>
<property name="default-height">200</property>
<property name="default-width">450</property>
<property name="resizable">False</property>
<property name="title">RDPConnect</property>
<child>
<object class="GtkBox">
<child>
<object class="GtkBox">
<property name="halign">start</property>
<property name="margin-bottom">5</property>
<property name="margin-end">5</property>
<property name="margin-start">5</property>
<property name="margin-top">5</property>
<property name="orientation">vertical</property>
<child>
<object class="GtkText" id="ip_label">
<property name="can-focus">False</property>
<property name="can-target">False</property>
<property name="editable">False</property>
<property name="enable-undo">False</property>
<property name="focus-on-click">False</property>
<property name="halign">start</property>
<property name="margin-bottom">5</property>
<property name="margin-top">5</property>
<property name="placeholder-text">IP:</property>
<property name="valign">center</property>
<property name="xalign">1.0</property>
</object>
</child>
<child>
<object class="GtkText" id="user_label">
<property name="can-focus">False</property>
<property name="can-target">False</property>
<property name="editable">False</property>
<property name="enable-undo">False</property>
<property name="focus-on-click">False</property>
<property name="halign">start</property>
<property name="margin-bottom">5</property>
<property name="margin-top">5</property>
<property name="placeholder-text">User:</property>
<property name="valign">center</property>
<property name="xalign">1.0</property>
</object>
</child>
<child>
<object class="GtkText" id="pass_label">
<property name="can-focus">False</property>
<property name="can-target">False</property>
<property name="editable">False</property>
<property name="enable-undo">False</property>
<property name="focus-on-click">False</property>
<property name="halign">start</property>
<property name="margin-bottom">5</property>
<property name="margin-top">5</property>
<property name="placeholder-text">Password:</property>
<property name="valign">center</property>
<property name="xalign">1.0</property>
</object>
</child>
</object>
</child>
<child>
<object class="GtkBox">
<property name="hexpand">True</property>
<property name="margin-bottom">5</property>
<property name="margin-end">5</property>
<property name="margin-start">5</property>
<property name="margin-top">5</property>
<property name="orientation">vertical</property>
<child>
<object class="GtkText" id="ip">
<property name="css-name">textentry</property>
<property name="margin-bottom">5</property>
<property name="margin-end">5</property>
<property name="margin-top">5</property>
<property name="placeholder-text">ip-adresa</property>
<property name="xalign">0.02</property>
</object>
</child>
<child>
<object class="GtkText" id="user">
<property name="css-name">textentry</property>
<property name="hexpand">True</property>
<property name="margin-bottom">5</property>
<property name="margin-end">5</property>
<property name="margin-top">5</property>
<property name="placeholder-text">uzivatel</property>
<property name="truncate-multiline">True</property>
<property name="xalign">0.02</property>
</object>
</child>
<child>
<object class="GtkText" id="pass">
<property name="css-name">textentry</property>
<property name="hexpand">True</property>
<property name="margin-bottom">5</property>
<property name="margin-end">5</property>
<property name="margin-top">5</property>
<property name="placeholder-text">heslo</property>
<property name="visibility">False</property>
<property name="xalign">0.02</property>
</object>
</child>
<child>
<object class="GtkButton" id="connect">
<property name="halign">end</property>
<property name="label">Connect</property>
<property name="valign">end</property>
<property name="vexpand">True</property>
</object>
</child>
</object>
</child>
</object>
</child>
<style/>
</object>
</interface>

View File

@@ -0,0 +1,196 @@
<?xml version='1.0' encoding='UTF-8' standalone='no'?>
<!DOCTYPE cambalache-project SYSTEM "cambalache-project.dtd">
<cambalache-project version="0.92.0" target_tk="gtk-4.0">
<ui>
(1,None,"com.angoosh.RDPConnect.ui","com.angoosh.RDPConnect.ui",None,None,None,None,None,None,None),
(2,None,"com.angoosh.RDPConnect.ui","com.angoosh.RDPConnect/com.angoosh.RDPConnect.ui",None,None,None,None,None,None,None)
</ui>
<ui_library>
(2,"gtk","4.12",None)
</ui_library>
<css>
(1,"./style.css",None,1)
</css>
<object>
(1,1,"GtkWindow","main_window",None,None,None,None,0,None,None),
(1,2,"GtkBox",None,1,None,None,None,0,None,None),
(1,5,"GtkBox",None,2,None,None,None,1,None,None),
(1,6,"GtkText","ip",5,None,None,None,0,None,None),
(1,7,"GtkBox",None,2,None,None,None,0,None,None),
(1,8,"GtkText","ip_label",7,None,None,None,0,None,None),
(1,9,"GtkText","user_label",7,None,None,None,1,None,None),
(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),
(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),
(2,4,"GtkText","ip_label",3,None,None,None,0,None,None),
(2,5,"GtkText","user_label",3,None,None,None,1,None,None),
(2,6,"GtkText","pass_label",3,None,None,None,2,None,None),
(2,7,"GtkBox",None,2,None,None,None,1,None,None),
(2,8,"GtkText","ip",7,None,None,None,0,None,None),
(2,9,"GtkText","user",7,None,None,None,1,None,None),
(2,10,"GtkText","pass",7,None,None,None,2,None,None),
(2,11,"GtkButton","connect",7,None,None,None,3,None,None)
</object>
<object_property>
(1,1,"GtkWidget","css-classes","\n",None,None,None,None,None,None,None,None,None),
(1,1,"GtkWindow","default-height","200",None,None,None,None,None,None,None,None,None),
(1,1,"GtkWindow","default-width","450",None,None,None,None,None,None,None,None,None),
(1,1,"GtkWindow","resizable","False",None,None,None,None,None,None,None,None,None),
(1,1,"GtkWindow","title","RDPConnect",None,None,None,None,None,None,None,None,None),
(1,5,"GtkOrientable","orientation","vertical",None,None,None,None,None,None,None,None,None),
(1,5,"GtkWidget","hexpand","True",None,None,None,None,None,None,None,None,None),
(1,5,"GtkWidget","margin-bottom","5",None,None,None,None,None,None,None,None,None),
(1,5,"GtkWidget","margin-end","5",None,None,None,None,None,None,None,None,None),
(1,5,"GtkWidget","margin-start","5",None,None,None,None,None,None,None,None,None),
(1,5,"GtkWidget","margin-top","5",None,None,None,None,None,None,None,None,None),
(1,6,"GtkEditable","xalign","0.02",None,None,None,None,None,None,None,None,None),
(1,6,"GtkText","placeholder-text","ip-adresa",None,None,None,None,None,None,None,None,None),
(1,6,"GtkWidget","css-name","textentry",None,None,None,None,None,None,None,None,None),
(1,6,"GtkWidget","margin-bottom","5",None,None,None,None,None,None,None,None,None),
(1,6,"GtkWidget","margin-end","5",None,None,None,None,None,None,None,None,None),
(1,6,"GtkWidget","margin-top","5",None,None,None,None,None,None,None,None,None),
(1,7,"GtkOrientable","orientation","vertical",0,None,None,None,None,None,None,None,None),
(1,7,"GtkWidget","halign","start",None,None,None,None,None,None,None,None,None),
(1,7,"GtkWidget","margin-bottom","5",None,None,None,None,None,None,None,None,None),
(1,7,"GtkWidget","margin-end","5",None,None,None,None,None,None,None,None,None),
(1,7,"GtkWidget","margin-start","5",None,None,None,None,None,None,None,None,None),
(1,7,"GtkWidget","margin-top","5",None,None,None,None,None,None,None,None,None),
(1,8,"GtkEditable","editable","False",None,None,None,None,None,None,None,None,None),
(1,8,"GtkEditable","enable-undo","False",None,None,None,None,None,None,None,None,None),
(1,8,"GtkEditable","xalign","1.0",None,None,None,None,None,None,None,None,None),
(1,8,"GtkText","placeholder-text","IP:",None,None,None,None,None,None,None,None,None),
(1,8,"GtkWidget","can-focus","False",None,None,None,None,None,None,None,None,None),
(1,8,"GtkWidget","can-target","False",None,None,None,None,None,None,None,None,None),
(1,8,"GtkWidget","focus-on-click","False",None,None,None,None,None,None,None,None,None),
(1,8,"GtkWidget","halign","start",None,None,None,None,None,None,None,None,None),
(1,8,"GtkWidget","margin-bottom","5",None,None,None,None,None,None,None,None,None),
(1,8,"GtkWidget","margin-top","5",None,None,None,None,None,None,None,None,None),
(1,8,"GtkWidget","valign","center",None,None,None,None,None,None,None,None,None),
(1,9,"GtkEditable","editable","False",0,None,None,None,None,None,None,None,None),
(1,9,"GtkEditable","enable-undo","False",0,None,None,None,None,None,None,None,None),
(1,9,"GtkEditable","xalign","1.0",0,None,None,None,None,None,None,None,None),
(1,9,"GtkText","placeholder-text","User:",0,None,None,None,None,None,None,None,None),
(1,9,"GtkWidget","can-focus","False",0,None,None,None,None,None,None,None,None),
(1,9,"GtkWidget","can-target","False",0,None,None,None,None,None,None,None,None),
(1,9,"GtkWidget","focus-on-click","False",0,None,None,None,None,None,None,None,None),
(1,9,"GtkWidget","halign","start",0,None,None,None,None,None,None,None,None),
(1,9,"GtkWidget","margin-bottom","5",None,None,None,None,None,None,None,None,None),
(1,9,"GtkWidget","margin-top","5",None,None,None,None,None,None,None,None,None),
(1,9,"GtkWidget","valign","center",0,None,None,None,None,None,None,None,None),
(1,10,"GtkEditable","editable","False",0,None,None,None,None,None,None,None,None),
(1,10,"GtkEditable","enable-undo","False",0,None,None,None,None,None,None,None,None),
(1,10,"GtkEditable","xalign","1.0",0,None,None,None,None,None,None,None,None),
(1,10,"GtkText","placeholder-text","Password:",0,None,None,None,None,None,None,None,None),
(1,10,"GtkWidget","can-focus","False",0,None,None,None,None,None,None,None,None),
(1,10,"GtkWidget","can-target","False",0,None,None,None,None,None,None,None,None),
(1,10,"GtkWidget","focus-on-click","False",0,None,None,None,None,None,None,None,None),
(1,10,"GtkWidget","halign","start",0,None,None,None,None,None,None,None,None),
(1,10,"GtkWidget","margin-bottom","5",None,None,None,None,None,None,None,None,None),
(1,10,"GtkWidget","margin-top","5",None,None,None,None,None,None,None,None,None),
(1,10,"GtkWidget","valign","center",0,None,None,None,None,None,None,None,None),
(1,11,"GtkEditable","xalign","0.02",None,None,None,None,None,None,None,None,None),
(1,11,"GtkText","placeholder-text","uzivatel",0,None,None,None,None,None,None,None,None),
(1,11,"GtkText","truncate-multiline","True",None,None,None,None,None,None,None,None,None),
(1,11,"GtkWidget","css-name","textentry",None,None,None,None,None,None,None,None,None),
(1,11,"GtkWidget","hexpand","True",0,None,None,None,None,None,None,None,None),
(1,11,"GtkWidget","margin-bottom","5",None,None,None,None,None,None,None,None,None),
(1,11,"GtkWidget","margin-end","5",None,None,None,None,None,None,None,None,None),
(1,11,"GtkWidget","margin-top","5",None,None,None,None,None,None,None,None,None),
(1,12,"GtkEditable","xalign","0.02",None,None,None,None,None,None,None,None,None),
(1,12,"GtkText","placeholder-text","heslo",0,None,None,None,None,None,None,None,None),
(1,12,"GtkText","visibility","False",None,None,None,None,None,None,None,None,None),
(1,12,"GtkWidget","css-name","textentry",None,None,None,None,None,None,None,None,None),
(1,12,"GtkWidget","hexpand","True",0,None,None,None,None,None,None,None,None),
(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),
(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),
(2,1,"GtkWindow","resizable","False",0,None,None,None,None,None,None,None,None),
(2,1,"GtkWindow","title","RDPConnect",0,None,None,None,None,None,None,None,None),
(2,3,"GtkOrientable","orientation","vertical",0,None,None,None,None,None,None,None,None),
(2,3,"GtkWidget","halign","start",0,None,None,None,None,None,None,None,None),
(2,3,"GtkWidget","margin-bottom","5",0,None,None,None,None,None,None,None,None),
(2,3,"GtkWidget","margin-end","5",0,None,None,None,None,None,None,None,None),
(2,3,"GtkWidget","margin-start","5",0,None,None,None,None,None,None,None,None),
(2,3,"GtkWidget","margin-top","5",0,None,None,None,None,None,None,None,None),
(2,4,"GtkEditable","editable","False",0,None,None,None,None,None,None,None,None),
(2,4,"GtkEditable","enable-undo","False",0,None,None,None,None,None,None,None,None),
(2,4,"GtkEditable","xalign","1.0",0,None,None,None,None,None,None,None,None),
(2,4,"GtkText","placeholder-text","IP:",0,None,None,None,None,None,None,None,None),
(2,4,"GtkWidget","can-focus","False",0,None,None,None,None,None,None,None,None),
(2,4,"GtkWidget","can-target","False",0,None,None,None,None,None,None,None,None),
(2,4,"GtkWidget","focus-on-click","False",0,None,None,None,None,None,None,None,None),
(2,4,"GtkWidget","halign","start",0,None,None,None,None,None,None,None,None),
(2,4,"GtkWidget","margin-bottom","5",0,None,None,None,None,None,None,None,None),
(2,4,"GtkWidget","margin-top","5",0,None,None,None,None,None,None,None,None),
(2,4,"GtkWidget","valign","center",0,None,None,None,None,None,None,None,None),
(2,5,"GtkEditable","editable","False",0,None,None,None,None,None,None,None,None),
(2,5,"GtkEditable","enable-undo","False",0,None,None,None,None,None,None,None,None),
(2,5,"GtkEditable","xalign","1.0",0,None,None,None,None,None,None,None,None),
(2,5,"GtkText","placeholder-text","User:",0,None,None,None,None,None,None,None,None),
(2,5,"GtkWidget","can-focus","False",0,None,None,None,None,None,None,None,None),
(2,5,"GtkWidget","can-target","False",0,None,None,None,None,None,None,None,None),
(2,5,"GtkWidget","focus-on-click","False",0,None,None,None,None,None,None,None,None),
(2,5,"GtkWidget","halign","start",0,None,None,None,None,None,None,None,None),
(2,5,"GtkWidget","margin-bottom","5",0,None,None,None,None,None,None,None,None),
(2,5,"GtkWidget","margin-top","5",0,None,None,None,None,None,None,None,None),
(2,5,"GtkWidget","valign","center",0,None,None,None,None,None,None,None,None),
(2,6,"GtkEditable","editable","False",0,None,None,None,None,None,None,None,None),
(2,6,"GtkEditable","enable-undo","False",0,None,None,None,None,None,None,None,None),
(2,6,"GtkEditable","xalign","1.0",0,None,None,None,None,None,None,None,None),
(2,6,"GtkText","placeholder-text","Password:",0,None,None,None,None,None,None,None,None),
(2,6,"GtkWidget","can-focus","False",0,None,None,None,None,None,None,None,None),
(2,6,"GtkWidget","can-target","False",0,None,None,None,None,None,None,None,None),
(2,6,"GtkWidget","focus-on-click","False",0,None,None,None,None,None,None,None,None),
(2,6,"GtkWidget","halign","start",0,None,None,None,None,None,None,None,None),
(2,6,"GtkWidget","margin-bottom","5",0,None,None,None,None,None,None,None,None),
(2,6,"GtkWidget","margin-top","5",0,None,None,None,None,None,None,None,None),
(2,6,"GtkWidget","valign","center",0,None,None,None,None,None,None,None,None),
(2,7,"GtkOrientable","orientation","vertical",0,None,None,None,None,None,None,None,None),
(2,7,"GtkWidget","hexpand","True",0,None,None,None,None,None,None,None,None),
(2,7,"GtkWidget","margin-bottom","5",0,None,None,None,None,None,None,None,None),
(2,7,"GtkWidget","margin-end","5",0,None,None,None,None,None,None,None,None),
(2,7,"GtkWidget","margin-start","5",0,None,None,None,None,None,None,None,None),
(2,7,"GtkWidget","margin-top","5",0,None,None,None,None,None,None,None,None),
(2,8,"GtkEditable","xalign","0.02",0,None,None,None,None,None,None,None,None),
(2,8,"GtkText","placeholder-text","ip-adresa",0,None,None,None,None,None,None,None,None),
(2,8,"GtkWidget","css-name","textentry",0,None,None,None,None,None,None,None,None),
(2,8,"GtkWidget","margin-bottom","5",0,None,None,None,None,None,None,None,None),
(2,8,"GtkWidget","margin-end","5",0,None,None,None,None,None,None,None,None),
(2,8,"GtkWidget","margin-top","5",0,None,None,None,None,None,None,None,None),
(2,9,"GtkEditable","xalign","0.02",0,None,None,None,None,None,None,None,None),
(2,9,"GtkText","placeholder-text","uzivatel",0,None,None,None,None,None,None,None,None),
(2,9,"GtkText","truncate-multiline","True",0,None,None,None,None,None,None,None,None),
(2,9,"GtkWidget","css-name","textentry",0,None,None,None,None,None,None,None,None),
(2,9,"GtkWidget","hexpand","True",0,None,None,None,None,None,None,None,None),
(2,9,"GtkWidget","margin-bottom","5",0,None,None,None,None,None,None,None,None),
(2,9,"GtkWidget","margin-end","5",0,None,None,None,None,None,None,None,None),
(2,9,"GtkWidget","margin-top","5",0,None,None,None,None,None,None,None,None),
(2,10,"GtkEditable","xalign","0.02",0,None,None,None,None,None,None,None,None),
(2,10,"GtkText","placeholder-text","heslo",0,None,None,None,None,None,None,None,None),
(2,10,"GtkText","visibility","False",0,None,None,None,None,None,None,None,None),
(2,10,"GtkWidget","css-name","textentry",0,None,None,None,None,None,None,None,None),
(2,10,"GtkWidget","hexpand","True",0,None,None,None,None,None,None,None,None),
(2,10,"GtkWidget","margin-bottom","5",0,None,None,None,None,None,None,None,None),
(2,10,"GtkWidget","margin-end","5",0,None,None,None,None,None,None,None,None),
(2,10,"GtkWidget","margin-top","5",0,None,None,None,None,None,None,None,None),
(2,11,"GtkButton","label","Connect",0,None,None,None,None,None,None,None,None),
(2,11,"GtkWidget","halign","end",0,None,None,None,None,None,None,None,None),
(2,11,"GtkWidget","valign","end",0,None,None,None,None,None,None,None,None),
(2,11,"GtkWidget","vexpand","True",0,None,None,None,None,None,None,None,None)
</object_property>
<object_data>
(1,1,"GtkWidget",1,1,None,None,None,None,None,None),
(2,1,"GtkWidget",1,1,None,None,None,None,None,None)
</object_data>
</cambalache-project>

View File

@@ -0,0 +1,53 @@
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Created on Mon Nov 18 12:04:53 2024
@author: angoosh
"""
import sys
import gi
import subprocess
gi.require_version('Gtk', '4.0')
gi.require_version('Adw', '1')
from gi.repository import Gtk, Adw, Gdk, Gio
APPID = "com.angoosh.RDPConnect"
class MyApp(Adw.Application):
def __init__(self, **kwargs):
super().__init__(**kwargs)
self.connect('activate', self.on_activate)
def on_activate(self, app):
builder = Gtk.Builder()
builder.add_from_file(APPID+".ui")
css_provider = Gtk.CssProvider()
css_provider.load_from_file(Gio.File.new_for_path("style.css"))
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)
self.ip = builder.get_object("ip")
self.user = builder.get_object("user")
self.passwd = builder.get_object("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()
#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)])
app = MyApp(application_id=APPID)
app.run(sys.argv)

View File

@@ -0,0 +1,14 @@
text{
font-size: 16pt;
}
textentry{
font-size: 16pt;
background-color: #454545;
border-radius: 6pt;
}
window{
background-color: #303030;
}