Skip to content

buzzqw/Python_Connection_Manager

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

26 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

PCM — Python Connection Manager 🚀

PCM è un Connection Manager avanzato per Linux, sviluppato in Python e PyQt6. Nasce come alternativa open-source a MobaXterm, con un'interfaccia a schede unificata per gestire connessioni remote multi-protocollo, trasferimenti file e terminali locali.


✨ Funzionalità

  • Multi-protocollo: SSH, Telnet, SFTP, FTP/FTPS, RDP, VNC, Mosh, Seriale
  • Terminale integrato: xterm embedded nelle schede, con temi colore, font configurabili e scrollback
  • VNC integrato: sessioni VNC in scheda tramite noVNC (opzionale), oppure client esterno
  • RDP avanzato: dominio Active Directory, pannello interno (rdesktop nativo con -X, o xfreerdp3 via xdotool reparent) o finestra esterna; autenticazione NTLM o Kerberos selezionabile; solo client installati nel combo
  • Browser SFTP grafico: si apre in automatico per le sessioni SSH, con drag & drop
  • Browser FTP: client FTP/FTPS integrato con interfaccia grafica tipo WinSCP
  • Pannello sessioni: raggruppate per gruppo, ordinate per nome, con icone per protocollo e ricerca live
  • Import da app esterne: importa connessioni da Remmina e Remote Desktop Manager (XML e JSON)
  • Modalità Split: divide l'area di lavoro verticalmente o orizzontalmente (2 pannelli)
  • Quick Connect: barra superiore per connessioni rapide (utente@host:porta)
  • Gestione Tunnel SSH: tunnel SOCKS, locali e remoti con interfaccia grafica dedicata
  • Multi-exec: invia lo stesso comando a più sessioni SSH contemporaneamente
  • Variabili globali: sostituzioni {NOME} nei comandi delle sessioni
  • Cifratura credenziali: utenti e password cifrati con AES-256 (Fernet/PBKDF2) — opzionale, con password master
  • Server FTP locale: avvia un server FTP sulla macchina locale
  • Modalità protetta: nasconde le password dall'interfaccia (****)
  • System tray: minimizza in background, sessioni accessibili dal tray
  • Interfaccia multilingua: Italiano, English, Deutsch, Français, Español
  • Tema chiaro con icone PNG dedicate per ogni protocollo
  • Backup sessioni: connections.json — basta copiarlo per salvare tutte le sessioni (cifrato se attivata la protezione)

� Screenshot

Per una panoramica visiva dell'interfaccia e delle funzionalità di PCM, guarda gli screenshot disponibili nella cartella immagini.


�🛠 Installazione

Metodo rapido (consigliato)

git clone <repo>
cd PCM
bash setup.sh
./run_pcm.sh

setup.sh installa automaticamente tutte le dipendenze di sistema e Python, crea il virtualenv con uv e crea il launcher.

Manuale

1. Dipendenze di sistema

Debian/Ubuntu:

sudo apt install python3 xterm xdotool xwininfo openssh-client sshpass lftp \
                 freerdp3-x11 xfreerdp2-x11 rdesktop tigervnc-viewer libxcb-cursor0

Arch/Manjaro:

sudo pacman -S python xterm xdotool xorg-xwininfo openssh sshpass lftp freerdp rdesktop tigervnc

Fedora/RHEL:

sudo dnf install python3 xterm xdotool xorg-x11-utils openssh-clients sshpass lftp freerdp rdesktop tigervnc

2. Virtualenv Python

python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt

3. Icone

Le icone PNG sono già incluse nella cartella icons/ del repository, incluso checkmark.png per i checkbox dell'interfaccia.

3. Avvio

./run_pcm.sh
# oppure
.venv/bin/python PCM.py

📁 Struttura file

PCM/
├── PCM.py                  # Finestra principale
├── config_manager.py       # Gestione sessioni e impostazioni (connections.json)
├── session_panel.py        # Sidebar sessioni
├── session_dialog.py       # Dialog creazione/modifica sessione
├── session_command.py      # Costruzione comandi shell per protocollo
├── themes.py               # Tema UI e temi terminale
├── terminal_widget.py      # Widget xterm embedded
├── sftp_browser.py         # Browser SFTP (paramiko)
├── winscp_widget.py        # Browser SFTP/FTP grafico
├── tunnel_manager.py       # Gestore tunnel SSH
├── settings_dialog.py      # Dialog impostazioni globali
├── importer.py             # Import da Remmina e Remote Desktop Manager
├── ftp_server_dialog.py    # Server FTP locale
├── vnc_widget.py           # Widget VNC integrato (noVNC)
├── rdp_widget.py           # Widget RDP pannello interno (rdesktop -X / xfreerdp3 xdotool)
├── crypto_manager.py       # Cifratura AES-256 credenziali (Fernet/PBKDF2)
├── connections.json        # Sessioni salvate (creato al primo avvio)
├── pcm_settings.json       # Impostazioni globali (creato al primo avvio)
├── requirements.txt        # Dipendenze Python
├── setup.sh                # Installer automatico
├── run_pcm.sh              # Launcher con virtualenv
└── icons/                  # Icone PNG (incluso checkmark.png)

⌨ Scorciatoie da tastiera

Scorciatoia Azione
Ctrl+Shift+N Nuova sessione remota
Ctrl+Alt+T Terminale locale
Ctrl+Shift+B Mostra/Nascondi sidebar
Ctrl+Shift+P Modalità protetta (toggle)
Ctrl+Shift+M Multi-exec
Ctrl+Shift+V Variabili globali
Ctrl+Shift+F Server FTP locale
Ctrl+Alt+1 Vista singola
Ctrl+Alt+2 Split verticale
Ctrl+Alt+3 Split orizzontale
Ctrl+Alt+Q Chiudi tab corrente
Ctrl+Alt+←/→ Tab precedente / successivo
F11 Schermo intero

📥 Import connessioni

Da Strumenti → Importa da applicazione esterna:

  • Remmina — legge automaticamente ~/.local/share/remmina/ o un file/cartella scelto
  • Remote Desktop Manager (XML) — file .rdm esportato da RDM
  • Remote Desktop Manager (JSON) — file .json esportato da RDM

Le password non vengono importate (sono cifrate nelle app sorgente). I gruppi RDM vengono mantenuti come gruppi PCM.


🔧 Dipendenze Python

Pacchetto Uso
PyQt6 Interfaccia grafica
PyQt6-WebEngine VNC integrato via noVNC (opzionale)
paramiko SSH/SFTP nativo, browser SFTP
pyftpdlib Server FTP locale
cryptography Cifratura AES-256 delle credenziali (opzionale ma consigliato)

🌍 Lingue supportate

PCM è disponibile nelle seguenti lingue:

  • Italiano 🇮🇹
  • English 🇬🇧
  • Deutsch 🇩🇪
  • Français 🇫🇷
  • Español 🇪🇸

La lingua può essere cambiata dalle impostazioni dell'applicazione (Strumenti → Impostazioni).


� Licenza

Questo progetto è licenziato sotto la European Union Public Licence v1.2 (EUPL).

L'EUPL è una licenza open-source approvata dall'Unione Europea che promuove il riutilizzo del software e garantisce la libertà di uso, modifica e distribuzione, mantenendo al contempo il copyleft.

Per maggiori dettagli, consulta il file LICENSE.


�💰 Donazioni

Se apprezzi questo progetto e vuoi supportare il suo sviluppo, considera una donazione via PayPal:

Donate


Sviluppato con ♥ per la community Linux.




PCM — Python Connection Manager 🚀

PCM is an advanced Connection Manager for Linux, developed in Python and PyQt6. It is an open-source alternative to MobaXterm, with a unified tabbed interface for managing multi-protocol remote connections, file transfers, and local terminals.


✨ Features

  • Multi-protocol: SSH, Telnet, SFTP, FTP/FTPS, RDP, VNC, Mosh, Serial
  • Integrated Terminal: xterm embedded in tabs, with configurable color themes, fonts and scrollback
  • Integrated VNC: VNC sessions in tabs via noVNC (optional), or external client
  • Advanced RDP: Active Directory domain, internal panel (rdesktop native -X embedding, or xfreerdp3 via xdotool reparent) or external window; NTLM or Kerberos authentication; combo shows only installed clients
  • SFTP Browser: automatically opens for SSH sessions, with drag & drop
  • FTP Browser: FTP/FTPS client with WinSCP-like graphical interface
  • Session Panel: grouped by group, sorted by name, with protocol icons and live search
  • Import from external apps: import connections from Remmina and Remote Desktop Manager (XML and JSON)
  • Split Mode: divide workspace vertically or horizontally (2 panels)
  • Quick Connect: top bar for quick connections (user@host:port)
  • SSH Tunnel Management: SOCKS, local and remote tunnels with dedicated graphical interface
  • Multi-exec: send the same command to multiple SSH sessions simultaneously
  • Global Variables: {NAME} substitutions in session commands
  • Credential encryption: usernames and passwords encrypted with AES-256 (Fernet/PBKDF2) — optional, with master password
  • Local FTP Server: start an FTP server on the local machine
  • Protected Mode: hide passwords from the interface (****)
  • System Tray: minimize to background, sessions accessible from tray
  • Multilingual UI: Italiano, English, Deutsch, Français, Español
  • Light Theme with dedicated PNG icons for each protocol

📸 Screenshots

For a visual overview of PCM's interface and features, check out the available screenshots in the immagini folder.


🛠 Installation

Quick method (recommended)

git clone <repo>
cd PCM
bash setup.sh
./run_pcm.sh

setup.sh automatically installs all system and Python dependencies, creates the virtualenv with uv and creates the launcher.

Manual

1. System Dependencies

Debian/Ubuntu:

sudo apt install python3 xterm xdotool xwininfo openssh-client sshpass lftp \
                 freerdp3-x11 xfreerdp2-x11 rdesktop tigervnc-viewer libxcb-cursor0

Arch/Manjaro:

sudo pacman -S python xterm xdotool xorg-xwininfo openssh sshpass lftp freerdp rdesktop tigervnc

Fedora/RHEL:

sudo dnf install python3 xterm xdotool xorg-x11-utils openssh-clients sshpass lftp freerdp rdesktop tigervnc

2. Python Virtualenv

python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt

3. Icons

PNG icons are already included in the icons/ folder of the repository, including checkmark.png for interface checkboxes.

3. Launch

./run_pcm.sh
# or
.venv/bin/python PCM.py

📁 File Structure

PCM/
├── PCM.py                  # Main window
├── config_manager.py       # Session and settings management (connections.json)
├── session_panel.py        # Sessions sidebar
├── session_dialog.py       # Session creation/modification dialog
├── session_command.py      # Shell command construction for protocol
├── themes.py               # UI theme and terminal themes
├── terminal_widget.py      # Embedded xterm widget
├── sftp_browser.py         # SFTP browser (paramiko)
├── winscp_widget.py        # Graphical SFTP/FTP browser
├── tunnel_manager.py       # SSH tunnel manager
├── settings_dialog.py      # Global settings dialog
├── importer.py             # Import from Remmina and Remote Desktop Manager
├── ftp_server_dialog.py   # Local FTP server
├── vnc_widget.py           # Integrated VNC widget (noVNC)
├── rdp_widget.py           # RDP internal panel widget (rdesktop -X / xfreerdp3 xdotool)
├── crypto_manager.py       # AES-256 credential encryption (Fernet/PBKDF2)
├── connections.json        # Saved sessions (created on first launch)
├── pcm_settings.json       # Global settings (created on first launch)
├── requirements.txt        # Python dependencies
├── setup.sh                # Automatic installer
├── run_pcm.sh              # Launcher with virtualenv
└── icons/                  # PNG icons (including checkmark.png)

⌨ Keyboard Shortcuts

Shortcut Action
Ctrl+Shift+N New remote session
Ctrl+Alt+T Local terminal
Ctrl+Shift+B Show/Hide sidebar
Ctrl+Shift+P Protected mode (toggle)
Ctrl+Shift+M Multi-exec
Ctrl+Shift+V Global variables
Ctrl+Shift+F Local FTP server
Ctrl+Alt+1 Single view
Ctrl+Alt+2 Vertical split
Ctrl+Alt+3 Horizontal split
Ctrl+Alt+Q Close current tab
Ctrl+Alt+←/→ Previous / next tab
F11 Full screen

📥 Import Connections

From Tools → Import from external application:

  • Remmina — automatically reads ~/.local/share/remmina/ or chosen file/folder
  • Remote Desktop Manager (XML).rdm file exported from RDM
  • Remote Desktop Manager (JSON).json file exported from RDM

Passwords are not imported (they are encrypted in the source apps). RDM groups are maintained as PCM groups.


🌍 Supported Languages

PCM is available in the following languages:

  • Italiano 🇮🇹
  • English 🇬🇧
  • Deutsch 🇩🇪
  • Français 🇫🇷
  • Español 🇪🇸

Language can be changed from application settings (Tools → Settings).


🔧 Python Dependencies

Package Use
PyQt6 Graphical interface
PyQt6-WebEngine Integrated VNC via noVNC (optional)
paramiko Native SSH/SFTP, SFTP browser
pyftpdlib Local FTP server
cryptography AES-256 credential encryption (optional but recommended)

📜 License

This project is licensed under the European Union Public Licence v1.2 (EUPL).

EUPL is an open-source license approved by the European Union that promotes software reuse and guarantees freedom of use, modification and distribution, while maintaining copyleft.

For more details, see the LICENSE file.


💰 Donations

If you appreciate this project and want to support its development, consider a donation via PayPal:

Donate


Developed with ♥ for the Linux community.

Releases

No releases published

Packages

 
 
 

Contributors