diff --git a/src/custom_widgets/terminal_widget.py b/src/custom_widgets/terminal_widget.py index f5c8ef8..51fae45 100644 --- a/src/custom_widgets/terminal_widget.py +++ b/src/custom_widgets/terminal_widget.py @@ -18,10 +18,15 @@ class terminal(Vte.Terminal): pty = Vte.Pty.new_sync(Vte.PtyFlags.DEFAULT, None) self.set_pty(pty) + + env = { + "TERM": "xterm-256color" + } + pty.spawn_async( GLib.get_current_dir(), script, - [], + [f"{key}={value}" for key, value in env.items()], GLib.SpawnFlags.DEFAULT, None, None, diff --git a/src/dialogs.py b/src/dialogs.py index 096e1b2..9c41878 100644 --- a/src/dialogs.py +++ b/src/dialogs.py @@ -437,14 +437,25 @@ def run_script_response(self, dialog, task, script, language_name): else: with open(os.path.join(data_dir, 'pyenv', 'requirements.txt'), 'w') as f: f.write('') - print(script) script = ';\n'.join(script) script += '; echo "\nšŸ¦™ {}"'.format(_('Script exited')) + if language_name == 'bash': + script = script.replace('sudo ', 'pkexec ') if shutil.which('flatpak-spawn') and language_name == 'bash': - script = 'echo "šŸ¦™ {}\n";'.format(_('The script is contained inside Flatpak')) + script - - self.run_terminal(['bash', '-c', script]) + sandbox = True + try: + process = subprocess.run(['flatpak-spawn', '--host', 'bash', '-c', 'echo "test"'], check=True) + sandbox = False + except Exception as e: + pass + if sandbox: + script = 'echo "šŸ¦™ {}\n";'.format(_('The script is contained inside Flatpak')) + script + self.run_terminal(['bash', '-c', script]) + else: + self.run_terminal(['flatpak-spawn', '--host', 'bash', '-c', script]) + else: + self.run_terminal(['bash', '-c', script]) def run_script(self, script:str, language_name:str): dialog = Adw.AlertDialog(