oh mach mal, ich bin ja am lernen zur Zeit......
Beiträge von Pinguin
-
-
ich weis das ich da auch ein Video dazu gemacht, aber ......
-
Vielleicht würde es helfen, wenn man bestimmte Themen/Kanäle stumm schalten könnte?
Vielleicht geht das ja schon und ich weiss nur nicht wie. Ich würde zB die Themen
- "Zählen bis ... " und
- "Letzter Buchstabe ..."
gerne stumm schalten. Das interessiert mich nicht aber irgendwie bekomme ich trotzdem bei Aktualisierungen immer einen Hinweis. Wenn ich den verhindern/abschalten könnte, dann würde ich die Aktualisierungen gar nicht mehr mitbekommen.das ist eine gute idee, vielleicht kann man das wirklich machen, Sven hast du eine Idee wie wir das machen könnten?
-
hier ist der Link: https://codeberg.org/pinguin-tv/gui-scripte/src/branch/main
der Fehler ist von start.py, da ich das gestern nicht hinbekommen habe schauch ich das ich das änder und vielleicht sogar eine Art Softwarestore mache,
die ersten versuche sind im gleichen Ordner unter test, das schaut noch nach nix aus, aber wenn ich die Trenne so wie bei webseiten in eine main.py wo das aussehen, installation usw. festgelegt ist und eine xx.json dann wird das viel flexibler und beim starten ist das auch schneller denn es wird ja der ganze code nicht geladen, da kann ich dann angeben als was ein paket installiert wird oder auch eine Auswahl od als xbps (also System) Flatpak oder selbst Appimages gehen dann, so das der Benutzer die Möglichkeit hat,
nur ist das verdammt aufwendig, geschrieben muss es ja werden, ich habe gestern abend (halbe Nacht) noch angefangen, aber das ist ja ich muss ja immer den Pfad angeben also jedes Flatpak oder den Pfad für ein Appimages, das ist bei xbps wesentlich schneller
-
Wer sind die beiden? Ich zumindest störe mich nicht an void. Ich habe nur geschrieben, wie ich es sehe.
egal wer die beiden sind, jeder hat seine Meinung.
-
Es sind einfach zu wenige mit anderen Interessen/ Themen hier unterwegs. Ich gucke hier rein und bin fast nur am Void-weg-klicken, und dann bleibt oft nicht viel über.
das ist vermultich richtig, aber es kann doch jeder schreiben was er will, egal zu welchem Thema, übrigens das mit den Koch Rezepten finde ich nicht mal schlecht
-
Hat er, @juppsupp hat mir das schon vorher geschrieben das er aufhören will, wenn sich das mit void nicht ändert
-
wer kann mir helfen, ich dachte ich habe ein schön designedes Startfenster erstellt,
nur bekomme ich lauter Fehlermeldungen, die einzelnen script laufen alle wenn ich die direkt starte, kann mir jemand helfen?
Python
Alles anzeigen#!/usr/bin/env python3 import gi import subprocess import threading import os import stat import shutil gi.require_version("Gtk", "3.0") from gi.repository import Gtk, GLib, GdkPixbuf # Diese Liste enthält die Programme/Skripte, die gestartet werden sollen. # Jedes Tupel besteht aus: # (Anzeigename, Skriptname, ist_void_installer, Icon-Pfad) PROGRAMS = [ ("Drucker-Treiber und Scanner-Programme installieren", "drucker_installer.py", False, "/usr/local/bin/icons/drucker.png"), ("Grafikkarten-Treiber installieren", "gpu.py", False, "/usr/local/bin/icons/gpu.png"), ("Grafik-Programme installieren", "grafik_installer.py", False, "/usr/local/bin/icons/drawing.jpg"), ("Internet-Programme installieren", "internet_installer.py", False, "/usr/local/bin/icons/internet.png"), ("Multimedia-Programme installieren", "multimedia_installer.py", False, "/usr/local/bin/icons/video.png"), ("Office-Programme installieren", "office_installer.py", False, "/usr/local/bin/icons/office.png"), ("System-Wartungs - Tools", "system.py", False, "/usr/local/bin/icons/system.jpg"), ("Virtuelle-Maschinen installieren", "vm_installer.py", False, "/usr/local/bin/icons/vm.png"), ("Gaming-Tools (Steam, Lutris usw.) installieren", "gaming.py", False, "/usr/local/bin/icons/gaming.png"), ("Void-Installer starten", "void-installer", True, "/usr/local/bin/icons/installer.png"), ] class AllInstallersWindow(Gtk.Window): def __init__(self): super().__init__(title="🛠️ Treiber und Software Installation für Void Community Flavours") self.set_border_width(10) self.set_default_size(750, 550) self.vbox = Gtk.VBox(spacing=10) self.add(self.vbox) self.status_label = Gtk.Label(label="Wähle deine Kategorie aus:") self.vbox.pack_start(self.status_label, False, False, 0) self.select_all_cb = Gtk.CheckButton(label="Alle auswählen / abwählen") self.select_all_cb.connect("toggled", self.on_select_all_toggled) self.vbox.pack_start(self.select_all_cb, False, False, 0) self.dark_mode_switch = Gtk.Switch() self.dark_mode_switch.set_active(False) self.dark_mode_switch.connect("notify::active", self.on_dark_mode_toggled) dark_mode_box = Gtk.HBox(spacing=10) dark_mode_label = Gtk.Label(label="Dunkelmodus") dark_mode_box.pack_start(dark_mode_label, False, False, 0) dark_mode_box.pack_end(self.dark_mode_switch, False, False, 0) self.vbox.pack_start(dark_mode_box, False, False, 0) self.checkbuttons = [] self.program_list = PROGRAMS.copy() for i, (name, script_name, is_void_installer, icon_path) in enumerate(self.program_list): self.add_program_row(name, script_name, is_void_installer, icon_path) if script_name == "void-installer": separator = Gtk.Separator(orientation=Gtk.Orientation.HORIZONTAL) self.vbox.pack_start(separator, False, False, 5) button_box = Gtk.HBox(spacing=10) run_button = Gtk.Button(label="Ausführen") run_button.connect("clicked", self.on_run_clicked) button_box.pack_start(run_button, True, True, 0) self.vbox.pack_start(button_box, False, False, 0) self.output_view = Gtk.TextView() self.output_view.set_editable(False) self.output_view.set_cursor_visible(False) self.output_buffer = self.output_view.get_buffer() scroll = Gtk.ScrolledWindow() scroll.set_min_content_height(200) scroll.add(self.output_view) self.vbox.pack_start(scroll, True, True, 0) self.progress = Gtk.ProgressBar() self.vbox.pack_start(self.progress, False, False, 0) self.css_provider = Gtk.CssProvider() self.style_context = Gtk.StyleContext() self.screen = self.get_screen() self.style_context.add_provider_for_screen(self.screen, self.css_provider, Gtk.STYLE_PROVIDER_PRIORITY_APPLICATION) self.update_start_buttons() self.apply_theme(False) def add_program_row(self, name, script_name, is_void_installer, icon_path): hbox = Gtk.HBox(spacing=10) try: if os.path.isfile(icon_path): pixbuf = GdkPixbuf.Pixbuf.new_from_file_at_scale(icon_path, 42, 43, preserve_aspect_ratio=True) icon = Gtk.Image.new_from_pixbuf(pixbuf) else: icon = Gtk.Image.new_from_icon_name("image-missing", Gtk.IconSize.BUTTON) except Exception: icon = Gtk.Image.new_from_icon_name("image-missing", Gtk.IconSize.BUTTON) hbox.pack_start(icon, False, False, 0) check = Gtk.CheckButton(label=f"{name}") start_button = Gtk.Button(label="Ausführen") start_button.set_sensitive(False) start_button.connect("clicked", self.on_start_program, (script_name, is_void_installer)) hbox.pack_start(check, True, True, 0) hbox.pack_start(start_button, False, False, 0) if script_name == "void-installer": remove_button = Gtk.Button(label="Entfernen") remove_button.connect("clicked", self.on_remove_program, (name, script_name, is_void_installer, hbox)) hbox.pack_start(remove_button, False, False, 0) self.vbox.pack_start(hbox, False, False, 0) self.checkbuttons.append((check, script_name, is_void_installer, start_button, hbox)) self.vbox.show_all() def on_remove_program(self, button, data): name, script_name, is_void_installer, hbox = data self.program_list = [p for p in self.program_list if p[:3] != (name, script_name, is_void_installer)] self.checkbuttons = [(c, sn, iv, btn, hb) for c, sn, iv, btn, hb in self.checkbuttons if hb != hbox] self.vbox.remove(hbox) for child in self.vbox.get_children(): if isinstance(child, Gtk.Separator) and script_name == "void-installer": self.vbox.remove(child) break GLib.idle_add(self.append_output, f"Eintrag '{name}' wurde aus der Liste entfernt.") self.vbox.show_all() def on_select_all_toggled(self, widget): active = widget.get_active() for check, *_ in self.checkbuttons: check.set_active(active) def on_run_clicked(self, widget): selected = [(script_name, is_void_installer) for check, script_name, is_void_installer, _, _ in self.checkbuttons if check.get_active()] if selected: threading.Thread(target=self.run_commands, args=(selected,)).start() def make_script_executable(self, script_path): try: if os.path.isfile(script_path): current_mode = os.stat(script_path).st_mode os.chmod(script_path, current_mode | stat.S_IXUSR | stat.S_IXGRP | stat.S_IXOTH) return True return False except Exception as e: GLib.idle_add(self.append_output, f"⚠️ Fehler beim Setzen der Ausführrechte für {script_path}: {e}") return False def run_commands(self, scripts): total = len(scripts) if shutil.which("pkexec") is None: GLib.idle_add(self.append_output, "⚠️ Fehler: 'pkexec' nicht gefunden. Bitte installiere policykit-1.") return for i, (script_name, is_void_installer) in enumerate(scripts): GLib.idle_add(self.progress.set_fraction, i / total) GLib.idle_add(self.append_output, f"Starte {script_name}...") if is_void_installer: cmd = ["pkexec", "void-installer"] else: script_path = os.path.join("/usr/local/bin/", script_name) if self.make_script_executable(script_path): cmd = ["pkexec", "/usr/bin/python3", script_path] else: GLib.idle_add(self.append_output, f"⚠️ Fehler: {script_name} nicht gefunden oder nicht ausführbar in /usr/local/bin/") continue try: subprocess.Popen(cmd) GLib.idle_add(self.append_output, f"✅ '{script_name}' wurde gestartet. Bitte beachte die Passwortabfrage.") except Exception as e: GLib.idle_add(self.append_output, f"⚠️ Fehler beim Starten von {script_name}: {e}") GLib.idle_add(self.progress.set_fraction, 1.0) GLib.idle_add(self.append_output, "\n✅ Alle Aktionen abgeschlossen.") GLib.idle_add(self.show_completion_notification) def show_completion_notification(self): dialog = Gtk.MessageDialog( parent=self, flags=0, message_type=Gtk.MessageType.INFO, buttons=Gtk.ButtonsType.OK, text="Ausführung abgeschlossen", ) dialog.format_secondary_text("Alle ausgewählten Installer wurden gestartet.") dialog.run() dialog.destroy() def append_output(self, text): end_iter = self.output_buffer.get_end_iter() self.output_buffer.insert(end_iter, text + "\n") # Automatisch zur letzten Zeile scrollen scroll_to_end = self.output_view.get_property("parent").get_vadjustment() scroll_to_end.set_value(scroll_to_end.get_upper() - scroll_to_end.get_page_size()) def update_start_buttons(self): for _, script_name, is_void_installer, button, _ in self.checkbuttons: if is_void_installer: button.set_sensitive(shutil.which("void-installer") is not None) else: script_path = os.path.join("/usr/local/bin/", script_name) button.set_sensitive(os.path.isfile(script_path)) def on_start_program(self, button, data): script_name, is_void_installer = data if shutil.which("pkexec") is None: GLib.idle_add(self.append_output, "⚠️ Fehler: 'pkexec' nicht gefunden. Bitte installiere policykit-1.") return GLib.idle_add(self.append_output, f"Starte '{script_name}'...") if is_void_installer: if shutil.which("void-installer") is None: GLib.idle_add(self.append_output, f"⚠️ Fehler: void-installer nicht gefunden") return try: subprocess.Popen(["pkexec", "void-installer"]) GLib.idle_add(self.append_output, f"✅ '{script_name}' wurde gestartet. Bitte beachte die Passwortabfrage.") except Exception as e: GLib.idle_add(self.append_output, f"⚠️ Fehler beim Starten von {script_name}: {e}") else: script_path = os.path.join("/usr/local/bin/", script_name) if not os.path.isfile(script_path): GLib.idle_add(self.append_output, f"⚠️ Fehler: {script_name} nicht gefunden in /usr/local/bin/") return if self.make_script_executable(script_path): try: subprocess.Popen(["pkexec", "/usr/bin/python3", script_path]) GLib.idle_add(self.append_output, f"✅ '{script_name}' wurde gestartet. Bitte beachte die Passwortabfrage.") except Exception as e: GLib.idle_add(self.append_output, f"⚠️ Fehler beim Starten von {script_name}: {e}") else: GLib.idle_add(self.append_output, f"⚠️ Fehler: {script_name} ist nicht ausführbar") def on_dark_mode_toggled(self, switch, *args): self.apply_theme(switch.get_active()) def apply_theme(self, dark_mode): if dark_mode: css = """ window, box, button, label, textview, progressbar { background-color: #2e2e2e; color: #ffffff; } textview text { background-color: #2e2e2e; color: #ffffff; } checkbutton check { background-color: #ffffff; color: #000000; border: 1px solid #ffffff; } checkbutton:checked check { background-color: #4CAF50; color: #ffffff; } checkbutton label { color: #ffffff; } """ self.css_provider.load_from_data(css.encode()) else: self.css_provider.load_from_data(b"") # Starte GUI win = AllInstallersWindow() win.connect("destroy", Gtk.main_quit) win.show_all() Gtk.main() -
Alles anzeigen
Tja Leute,
möchte mich aus diesem Forum verabschieden.
Ich mein jeder so wie er will und kann....aber leider ist das Forum hier zu einem Void Forum geworden. ( ist jetzt nicht böse gemeint...)
Mich hatte damals die Vielseitigkeit dieses Forum`s so angesprochen, das scheint leider vorbei, aber ist ja auch okay.
Ist halt der Wandel der Zeit.....alles verändert sich..
Aber was soll man jetzt meckern oder jammern.....jeder wie er kann und ich kann meinen Account hier kündigen....


Ich wollte aber nicht gehen ohne Tschüss zu sagen.....macht`s gut und bleibt gesund.....war schön mit euch.


Denkt bitte daran in der nächsten Zeit den Com. Ordner nochmal unter die Lupe zu nehmen ob dieser noch wichtige Sachen enthält die ihr benötigt.......
Ich möchte mich von ganzem Herzen für deinen Einsatz in den letzten Jahren bedanken und wünsche Dir für die Zukunft alles GUTE! und falls du mal wieder Lust hast mit ein paar "Linux-Spinner" ........ oder vielleicht schaust du ja mal wieder vorbei

-
OK, da muss ich ganz alleine mir die Schuld dafür geben

-
das von mir war allgemein, warum Fedora x11 bei cinnamon hat
-
Mein lieber Pinguin, ich zolle dir wieder grossen Respekt und Anerkennung für deine Arbeit und was du da auf die Beine stellst. Tiefer Respekt!
nein noch nicht, jetzt sind zwar alle geschrieben, und jetzt muss ich aber alles noch richtig testen. Das dauert, nur jetzt sind es eigentlich überall aber nur kleine fehler wie Berechtigungen usw,
-
Ich habe ja angekündigt und schon begonnen Scripte für Void Linux zu erstellen,
unter dem Link findet ihr alle, die sind jetzt alle mit einer GUI, einem light und dark Modus
hier mal ein paar Bilder:
unter start.py sind dann alle anderen ausführbar
-
in Cinnamon funktioniert Wayland nocht nicht, ist noch in Entwicklung
-
XFCE gefällt mir, Thunar ist mittlerweile ein richtig guter Dateibrowser, das einzige was ich vermisse (aber nicht brauche) sind die Spielereien wie wacklige Fenster

usw.XFCE ist oder wäre mir jetzt lieber als KDE, aber das ist vermutlich Geschmackssache, nachdem ich auch einiges mit Cinnamon mache, setze ich beide fast gleich
-
Du könntest einen KI automatischen Email-Antworter erstellen. Geht ganz einfach in make.com und dann erledigt sich so einiges.
super, aber woher weis der dann was ich lesen will und was nicht? wäre super wenn so etwas ginge
-
alles gut, ich habe mich auch schon mit einem Youtuber darüber unterhalten wie er das macht, (ist fast 10 mal größer wie mein Kanal) er ignoriert einfach, gibt keine Antworten auf so etwas oder auf die meisten kommentare, nur das mit den mails ist ein Problem wo ich noch nicht weis wie ich das löse, manchmal sind ja gut dabei nur muss ich ja erst lesen...
-
jaaaaaaaaaaaaaaaaaaaaa, Debian 13 oder Trixie kannst du denke ich ganz beruhigt verwenden,
du hast ja bei Debian 3 oder eigentlich sogar 4 (ich nenn es mal Stufen)
alles was es neues gibt kommt in experimental, dann unstable (sid) dann Testing und Stable und jedesmal also alle 2 Jahre circa wird aus Testing Stable und 4 oder 5 Monate vorher wird das Testing eingefroren oder besser bekommt keine neuen Pakete mehr, so dass da nichts dabei ist das noch großartig Probleme macht
Orobiere einfach die von Daniel, TGG Debian 13, wenn du den Standard Kernel lässt läuft die einwandfrei
-
bitte probier es einfach mal, auf der ISO sollte alles dabei sein -
aber jetzt wo wir bei dem Thema sind, ich bin im Moment so frustriert das ich am liebsten mit Void aufhöre, also nicht für mich aber das es keine Downloads, scripte usw. mehr von mir gibt.
Ich bekomme ständig - oder besser ich werde zugemüllt mit Fragen, das ich zu nichts mehr komme. jetzt wenn das noch fragen wären die ....
ich zeig euch mal ein Beispiel:
wenn so etwas einmal kommt, dann lach ich darüber, eigentlich würde ich eine Antwort geben wie "steht bei MediaMarkt" aber wenn ich mein Postfach aufmache und da sind dann 60 oder 70 mails mit solchen Fragen? also nicht alle suchen einen Drucker es gibt auch welche die ein anderes Hintergrundbild möchten und nicht wissen wie das geht, usw.
Ich habe einfach keine Lust mehr mit so etwas meine Zeit zu verschwenden!!!!!!
-
Hey Mädels, bitte auch oder gerade bei unterschiedlichen Meinungen bitte anständig miteinander umgehen,!!
Wir sind kein Forum in dem andere dumm angemacht werden.
Egal wer Recht hat oder nicht, wenn dann miteinander nach dem richtigen suchen