Адресная строка как в Яндекс Браузере
-
Github: https://github.com/aminought/vivaldi-yb-address-bar
Подумал, что кому-то может быть интересна фича, которую я реализовал в своей темке Ribbon Theme. Это адресная строка, в которой отображается заголовок текущей страницы и домен, по клику на который происходит переход на главную страницу сайта.
Скриншоты
Color Behind Tabs: ON
Color Behind Tabs: OFF
Accent From Page: OFF
Установка
Нужно действовать, как описано в посте о моддинге:
- Поместить yb_address_bar.js в
<YOURVIVALDIDIRECTORY>\Application\<VERSION>\resources\vivaldi
. - Добавить строчку
<script src="yb_address_bar.js"></script>
в<body>
файлаwindow.html
. - Перезапустить Vivaldi.
UPD 2024-03-24:
- Пофиксил вычисление домена для расширений.
- Поместить yb_address_bar.js в
-
Почему-то только после 2 перезапуска заработало
Ну да неважно.
Я начинаю подозревать, что мне стала очень нужна возможность подключать .js так же, как .css. -
@sedative29rus Вряд ли есть какие-то технические ограничения, скорее связано с безопасностью, раз даже плитки Экспресс-панели нельзя по url подставить. Не думаю, что когда-нибудь сделают подобное.
-
@aminought said in Адресная строка как в Яндекс Браузере:
Не думаю, что когда-нибудь сделают подобное.
Зделол сам (ладно-ладно, ИИ чуточку помог) на пихоне.
import os import shutil import subprocess from bs4 import BeautifulSoup # Начальный путь для поиска файла window.html initial_path = os.path.join(os.getcwd(), "Application") def find_window_html(path): for root, dirs, files in os.walk(path): if "window.html" in files: return os.path.join(root, "window.html") def copy_js_files(js_files, dest_dir): for js_file in js_files: shutil.copy(js_file, dest_dir) window_html_path = find_window_html(initial_path) if window_html_path: with open(window_html_path, "r") as file: html = file.read() soup = BeautifulSoup(html, "html.parser") body_tag = soup.find("body") script_tags = body_tag.find_all("script") if body_tag else [] existing_js_files = set(script["src"] for script in script_tags) js_files = [f for f in os.listdir() if f.endswith(".js")] # Удаляем лишние js-файлы и соответствующие записи тегов script for script_tag in script_tags: if script_tag["src"] not in js_files: script_tag.decompose() for js_file in js_files: if js_file not in existing_js_files: new_script_tag = soup.new_tag("script", src=js_file) body_tag.append(new_script_tag) body_tag.append("\n") with open(window_html_path, "w") as file: file.write(str(soup)) copy_js_files(js_files, os.path.dirname(window_html_path)) vivaldi_path = os.path.join(initial_path, "vivaldi.exe") subprocess.Popen(vivaldi_path)
Работает следующим образом. Кладём питон-скрипт и js-моды сюда
Запускаем скриптом. При каждом запуске он делает так, чтобы включались только лежащие здесь моды. Т.е. если добавить ещё один, он автоматом пропишется и подключится. Если удалить - соотв. запись тега <script> в window.html тоже удалится.
Ну и понятно, что нужен питон и bs4 к нему. -
@sedative29rus Три мода, и все мои :3
-
@aminought ну у меня в загашнике есть ещё парочка, но раз уж оффтоплю здесь, то надо соответствовать
-
@sedative29rus Всё равно приятно)
-
@sedative29rus said in Адресная строка как в Яндекс Браузере:
Почему-то только после 2 перезапуска заработало
Не, серьёзно. Сегодня включил ПК, запустил браузер (с обычного ярлыка, без питонов) - виджеты есть, а адресная строка не сработала.
-
@sedative29rus Можешь в следующий раз заглянуть в консоль, может какие-то ошибки есть? У меня не получилось воспроизвести. Можешь еще попробовать увеличить таймаут в предпоследней строчке.
-
@aminought said in Адресная строка как в Яндекс Браузере:
таймаут в предпоследней строчке.
я как раз уже там.
Это скорее всего из-за того, что у меня сейчас (временно) браузер на хдд стоит. -
@aminought said in Адресная строка как в Яндекс Браузере:
заглянуть в консоль, может какие-то ошибки есть?
Uncaught TypeError: Failed to execute 'observe' on 'MutationObserver': parameter 1 is not of type 'Node'. at #createUrlFieldMutationObserver (yb_address_bar.js:64:38) at new YBAddressBar (yb_address_bar.js:54:81) at initMod (yb_address_bar.js:248:31)
-
@sedative29rus Да, выглядит так, будто UI браузера не успевает подгрузиться до запуска скрипта. Увеличение таймаута точно поможет, чуть позже добавлю повторение попытки запуска.
-
UPD 2024-03-24:
- Пофиксил вычисление домена для расширений.
-
Вдруг кому-то интересно. Я тут переключился с Vivaldi на Floorp, исследую возможности для модификаций. Первое, что я сделал, это портировал текущий мод: https://github.com/aminought/floorp-yb-address-bar. Использовал ту же структуру кода, поменял только детали реализации, и с идентичной функциональностью мод для Floorp получился короче на ~90 строк кода, а это примерно 35% от кода, который потребовался для Vivaldi. Впечатления от модификаций исключительно положительные, внутреннее устройство Firefox (и, соответственно, Floorp) выглядит как-то проще и логичней.
-
@aminought Floorp я вообще случайно нашел, и просто поставил , как форк FireFox. Таких копий существует множество . Я его просто встретил, потому что в одном каталоге он был на F
. Даже интересно, почему ты его выделяешь среди других клонов FF.
Бесконечно люблю твои виджеты . Реально увидеть их реализацию для FF ? -
@sphera Вообще, есть несколько причин, почему Vivaldi меня уже не так привлекает. Во-первых, он тормозит. Прямо лагает на довольно неслабом железе, потому что это монстр, в котором и заметки, и почта, и rss-ридер, и календарь, и еще много всяких свистоперделок, которые нагружают браузер. Я не сторонник таких комбайнов, и где-то уже об этом говорил. Во-вторых, мне, как моддеру, не очень нравится закрытый и обфусцированный код Vivaldi, для изучения которого приходится подключать нейронку. В-третьих, я не питаю особой любви к Chromium. Firefox всегда был где-то в сердце, но не пользовался им из-за боковой панели, в которую из полезного можно поставить только Tree Style Tab, веб-панелей там нет. Да, можно поставить расширение для открытия в панели любого сайта, но при закрытии панели он выгружается. Собственно, поэтому я когда-то с Firefox сперва перешел на Яндекс Браузер, а позже на Vivaldi. Floorp решил эту проблему, добавив вторую панель, теперь в левой у меня Tree Style Tab, который даже удобнее групп вкладок Vivaldi, а в правой веб-панели. Можно сказать, что Floorp меня только этим и подкупил, ну и воркспейсами еще. Потом я начал копаться в его внутренностях, и он меня приятно удивил: всё просто и понятно, модифицируется очень легко. Js-моды не стираются после обновлений, CSS вообще можно на лету переключать прямо из браузера. Единственное, не хватает цепочек команд и нормального форума как этот, но есть Reddit и Discord, в котором посты довольно быстро утопают и никогда не поднимаются.
Насчет виджетов пока не знаю, даже не пробовал. Здесь нет Экспресс-панели с папками, поэтому даже не знаю, куда их тут можно пристроить, разве что в боковую панель. Поэтому для Firefox вряд ли, для Floorp вероятно.
-
@aminought said in Адресная строка как в Яндекс Браузере:
мне, как моддеру, не очень нравится закрытый и обфусцированный код Vivaldi
Где он обфусцирован?
-
@aminought Почему нет. "Floor Home" называется. она может быть забита другим расширением для New Page.
Но папок и правда нет. Очень странно для Floor. нет папок , значит, все ограничено 1-2 десятка плиток. Маловато.
Здесь Вивальди лидер. -
@Capushon Да хоть всякие
*-bundle.js
, там самая мякотка. -
@aminought said in Адресная строка как в Яндекс Браузере:
всякие *-bundle.js
Там открытый код, просто без форматирования, я его пересмотрел весь.