tuxifreund
Projektleitung
Anmeldungsdatum: 7. November 2020
Beiträge: 1175
|
Hallo, Da ich mich aktuell damit beschäftige mein System so schlank wie möglich zu gestalten, kam ich auch nicht darum mir Alternativen für Firefox anzuschauen.Lariza wäre für mich fast perfekt gewesen. Da ich aber Zeit hatte, habe ich beschlossen mir einen eigenen WebKit-Browser in Python zu programmieren. Leider waren viele Beispiele noch für Python2 und ich konnte damit nich viel anfangen. Aus einer Mischung von Beispielen und meinen Pythonkenntnissen bekann ich vor drei Tagen MyBrowse zu entwickeln. Viel ist aktuell noch ähnlich zu Beispielen, die ich fand, aber das wird sich verwachsen... 😉 Die Installation gestaltet sich wie folgt: sudo apt-add-repository ppa:tuxifreund/mybrowse
sudo apt-get install mybrowse
Alternativ kann man sich den Browser auch von Github herunterladen. Über Feedback würde ich mich freuen. Meine TODO-Liste ist bisher: Tabs der Adressleiste beibringen, dass sie sich bei Links entsprechend anpasst Fortschrittbalken in der Adressleiste mehr Konfigurationsmöglichkeiten (u.a. für JavaScript) Download-Manager Lesezeichen Chronik Tastenkombinationen
Ich werde MyBrowse wahrscheinlich die nächsten Tage als DEB-Paket packen oder in ein PPA hochladen. LG tuxifreund
- Bilder
|
kim88
Anmeldungsdatum: 7. Juni 2007
Beiträge: 357
Wohnort: Schweiz
|
Ich kann den Browser leider nicht ausführen: Siehe Fehler im angehängten Screenshot.
- Bilder
|
Axel-Erfurt
Anmeldungsdatum: 18. Mai 2016
Beiträge: 1347
|
vielleicht noch automatisch den Fenstertitel setzen. | self.view.connect("notify::title", self.change_title)
|
| def change_title(self, widget, data, *arg):
title = widget.get_title()
self.set_title(title)
|
Viele Beispiele findest Du auch hier. https://athenajc.gitbooks.io/python-gtk-3-api/content/ conf_dir = '~/.config/mybrowse/' ist keine gute Idee, verwende lieber os.path.expanduser('~') | conf_dir = f"{os.path.expanduser('~')}/.config/mybrowse/"
|
~/ funktioniert in der shell, in python nicht.
|
tuxifreund
Projektleitung
(Themenstarter)
Anmeldungsdatum: 7. November 2020
Beiträge: 1175
|
Hallo, kim88 schrieb: Ich kann den Browser leider nicht ausführen:
das ist jetzt behoben (wie konnte ich das selber beim Testen eigentlich nicht merken...?) und hing mit dem von Axel-Erfurt angesprochenen Pfad in das Homeverzeichnis zusammen. Es funktioniert jetzt aber. Danke für den Hinweis! Axel-Erfurt schrieb: vielleicht noch automatisch den Fenstertitel setzen.
Dem nehme ich mich dann unter der Woche an. LG tuxifreund
|
gerold123
Anmeldungsdatum: 18. April 2006
Beiträge: 1320
Wohnort: /Wild/Eastern/Europe
|
tuxifreund schrieb: Es funktioniert jetzt aber.
dazu ein kleines Feedback: tuxracer@tuxracer-HP-Laptop-17-ca1xxx:~$ wget https://raw.githubusercontent.com/KaiserBarbarossa/MyBrowse/master/install.sh
--2021-02-08 09:04:55-- https://raw.githubusercontent.com/KaiserBarbarossa/MyBrowse/master/install.sh
Auflösen des Hostnamens raw.githubusercontent.com (raw.githubusercontent.com) … 151.101.112.133
Verbindungsaufbau zu raw.githubusercontent.com (raw.githubusercontent.com)|151.101.112.133|:443 … verbunden.
HTTP-Anforderung gesendet, auf Antwort wird gewartet … 200 OK
Länge: 215 [text/plain]
Wird in »install.sh« gespeichert.
install.sh 100%[==================================>] 215 --.-KB/s in 0s
2021-02-08 09:04:56 (3,46 MB/s) - »install.sh« gespeichert [215/215]
tuxracer@tuxracer-HP-Laptop-17-ca1xxx:~$ chmod +x install.sh
tuxracer@tuxracer-HP-Laptop-17-ca1xxx:~$ ./install.sh
Klone nach 'MyBrowse' ...
remote: Enumerating objects: 11, done.
remote: Counting objects: 100% (11/11), done.
remote: Compressing objects: 100% (7/7), done.
remote: Total 11 (delta 3), reused 10 (delta 2), pack-reused 0
Entpacke Objekte: 100% (11/11), Fertig.
[sudo] Passwort für tuxracer:
tuxracer@tuxracer-HP-Laptop-17-ca1xxx:~$ mybrowse.py der Adressleiste beibringen, dass sie sich bei Links entsprechend anpasst:
mybrowse.py https://searchx.mobi/ gleich, siehe Anhang. Danke && 👍 Tante Edit: tuxracer@tuxracer-HP-Laptop-17-ca1xxx:~$ mybrowse.py
Failed to launch /usr/lib/x86_64-linux-gnu/webkit2gtk-4.0/WebKitPluginProcess: Kindprozess »/usr/lib/x86_64-linux-gnu/webkit2gtk-4.0/WebKitPluginProcess« konnte nicht ausgeführt werden (Datei oder Verzeichnis nicht gefunden)
noch ein edit (sorry) tuxracer@tuxracer-HP-Laptop-17-ca1xxx:~$ cat /home/tuxracer/.config/mybrowse/mybrowse.cfg
[General]
#neue Startseite#
home = https://searchx.mobi/
- Bilder
|
tuxifreund
Projektleitung
(Themenstarter)
Anmeldungsdatum: 7. November 2020
Beiträge: 1175
|
Hallo gerold123, durch die Edits ist das jetzt für mich ein bisschen verworren, aber ich hoffe, dass ich weiß, was Du meinst. gerold123 schrieb: tuxifreund schrieb: der Adressleiste beibringen, dass sie sich bei Links entsprechend anpasst:
mybrowse.py https://searchx.mobi/
Mit meinem Beitrag meinte ich, dass sich der Eintrag in der Adressleiste automatisch anpassen soll, wenn ich einen Link anklicke, dass geschieht aktuell nämlich noch nicht. Das von dir beobachtete Verhalten, hatte ich auch beobachtet, es hatte für mich aber keine hohe Priorität. Das Kommandozeilenargument lies sich aber erstaunlich einfach einbauen und MyBrowse unterstützt das jetzt (die Implementierung geht wahrscheinlich deutlich schöner, daas müsste ich mir nochmal anschauen). Bei dem Befehl müsste sich jetzt also (bei einer erneuten Installation vorher) die Adresse https://searx.mobi in MyBrowse öffnen.
Danke && 👍
Vielen Dank für die Blumen ☺
tuxracer@tuxracer-HP-Laptop-17-ca1xxx:~$ mybrowse.py
Failed to launch /usr/lib/x86_64-linux-gnu/webkit2gtk-4.0/WebKitPluginProcess: Kindprozess »/usr/lib/x86_64-linux-gnu/webkit2gtk-4.0/WebKitPluginProcess« konnte nicht ausgeführt werden (Datei oder Verzeichnis nicht gefunden)
Komischer Fehler. Die Datei gehört zum Paket libwebkit2gtk-4.0-37 ist jedoch nicht in focal-updates sondern nur in focal enthalten. Bei mir ist die Datei auf dem System auch nicht vorhanden, aber der Browser läuft ohne Fehlermeldungen. Wann genau tritt dieser Fehler denn auf? Zu starten scheint der Browser ja. LG tuxifreund
|
IchFragMalSo
Anmeldungsdatum: 30. November 2020
Beiträge: 5
Wohnort: Lichess
|
Hallo tuxifreund, nachdem du die Fehler behoben hast, ist der Browser richtig toll, aber halt ein bisschen altmodisch 😉 ... Du schaffst es noch, dass der Browser gut wird, glaub ich.
|
Axel-Erfurt
Anmeldungsdatum: 18. Mai 2016
Beiträge: 1347
|
tuxifreund Mit meinem Beitrag meinte ich, dass sich der Eintrag in der Adressleiste automatisch anpassen soll, wenn ich einen Link anklicke.
Kannst Du machen mit | self.view.connect("notify::uri", self.change_uri)
|
| def change_uri(self, widget, data, *arg):
uri = widget.get_uri()
self.addressbar.set_text(uri)
|
|
Axel-Erfurt
Anmeldungsdatum: 18. Mai 2016
Beiträge: 1347
|
Noch ein Tipp, Du hast ein Installations-Skript, es sollte auch eins zum Deinstallieren geben.
|
tuxifreund
Projektleitung
(Themenstarter)
Anmeldungsdatum: 7. November 2020
Beiträge: 1175
|
Hallo, Axel-Erfurt schrieb: vielleicht noch automatisch den Fenstertitel setzen.
ist eingefügt. Axel-Erfurt schrieb: Kannst Du machen mit | self.view.connect("notify::uri", self.change_uri)
|
Auch das ist jetzt in den Code gewandert. Axel-Erfurt schrieb: Du hast ein Installations-Skript, es sollte auch eins zum Deinstallieren geben.
Es gibt jetzt kein sperates Deinstallationsskript. Die bisherige install.sh wurde überarbeitet: ./install.sh install #installiert MyBrowse, kein Argument notwendig
./install.sh remove #deinstalliert MyBrowse
./install.sh upgrade #aktualisiert MyBrowse Danke dir nochmal vielmals, Axel-Erfurt!! LG tuxifreund
|
gerold123
Anmeldungsdatum: 18. April 2006
Beiträge: 1320
Wohnort: /Wild/Eastern/Europe
|
tuxifreund schrieb: Bei mir ist die Datei auf dem System auch nicht vorhanden, aber der Browser läuft ohne Fehlermeldungen. Wann genau tritt dieser Fehler denn auf? Zu starten scheint der Browser ja.
Der Browser startet ohne Fehlermeldung im Terminal.
Der Fehler kommt erst beim Aufrufen einer anderen URL.
|
tuxifreund
Projektleitung
(Themenstarter)
Anmeldungsdatum: 7. November 2020
Beiträge: 1175
|
Hallo, ich habe gerade den Code mit v0.2 getaggt. MyBrowse steht ab jetzt unter Version3 der GPL. Neue Funktionen sind: Zur URL wird automatisch "https://" hinzugefügt wenn kein Protokoll angegeben wurde. Es gibt eine Suchleiste. Suchmaschine ist aktuell noch DuckDuckGo. In der nächsten Version wird man das einstellen können.
Ein Update geht mit dem Installationsskript mit folgendem Befehl ./install.sh upgrade LG tuxifreund
|
noisefloor
Ehemaliger
Anmeldungsdatum: 6. Juni 2006
Beiträge: 29551
Wohnort: WW
|
Hallo,
ist keine gute Idee, verwende lieber os.path.expanduser('~')
Stand der Ding ist das pathlib Modul und die Path.home Methode. Macht das gleich, aber halt in "modern". Gruß, noisefloor
|
Axel-Erfurt
Anmeldungsdatum: 18. Mai 2016
Beiträge: 1347
|
noisefloor schrieb: Stand der Ding ist das pathlib Modul und die Path.home Methode. Macht das gleich, aber halt in "modern".
Da hast Du natürlich recht. Ein Beispiel dazu. Ich habe noch eine Abfrage eingebaut ob mybrowse.cfg auch existiert, wenn nicht wird eine neue angelegt. Denn wenn ein DAU die Datei löscht startet das Programm sonst gleich mit einem Crash. 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28 | import configparser
from pathlib import Path
config = configparser.ConfigParser()
conf_dir = f"{Path.home()}/.config/mybrowse/"
p = Path(conf_dir)
if p.is_dir():
print(f"{conf_dir} exists")
else:
print(f"{conf_dir} not exists, creating ...")
p.mkdir()
conf_file = p / 'mybrowse.cfg'
if Path.is_file(conf_file):
print(f"found config file: {conf_file}")
config.read(conf_file)
else:
print("no config file found")
# config erzeugen
with open(conf_file, 'w') as f:
f.write("[General]\nhome = https://lite.duckduckgo.com/lite/")
f.close()
config.read(conf_file)
print(config['General']['home'])
|
|
seahawk1986
Anmeldungsdatum: 27. Oktober 2006
Beiträge: 11228
Wohnort: München
|
Das könnte man nach dem Motto "ask forgiveness not permission" noch etwas umstellen:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 | import configparser
import logging
from pathlib import Path
config = configparser.ConfigParser()
conf_file = Path.home() / ".config/mybrowse/mybrowse.cfg"
conf_file.parent.mkdir(parents=True, exist_ok=True)
try:
with open(conf_file) as f:
config.read_file(f)
except FileNotFoundError:
logging.error("no config file found")
with open(conf_file, 'w') as f:
config.read_dict({'General': {'home': "https://lite.duckduckgo.com/lite/"}})
config.write(f)
except IOError:
logging.exception(f"{conf_file} is not a readable file")
raise SystemExit(2)
except configparser.ParsingError:
logging.exception("parsing the config file failed")
raise SystemExit(1)
print(config['General']['home'])
|
|