PS: Wenn du mehr als nur eine Person ansprechen möchtest, wäre es Salvete.
Hä? GL
PS: Wenn du mehr als nur eine Person ansprechen möchtest, wäre es Salvete.
Hä? GL
Salve.
Ich benutze gerne ChatGPT. Und zwar in der FF-Sidebar. Gerne wird es dort auch mal etwas umfangreicher und der Wunsch keimt, die ChatGPT-Konversation ins FF-Hauptfenster zu übertragen.
Geht das?
Grüße Lionsson
CSS Alles anzeigen@-moz-document url-prefix(chrome://browser/content/browser.xhtml) { #TabsToolbar { -moz-box-ordinal-group: 2; } #nav-bar{ border-top-width: 0px !important; } /* Eckige statt abgerundete Elemente */ :root { --border-radius-xsmall: 0 !important; --border-radius-small: 0 !important; --border-radius-medium: 0 !important; --border-radius-large: 0 !important; --border-radius-xlarge: 0 !important; --border-radius-circle: 0 !important; } /* Menüleiste und Tabs Farbe */ #toolbar-menubar, #menubar-items, #main-menubar, { color: #000000 !important; background-color: #cccccc !important; } /* Hintergrundfarbe inaktives Tab */ .tab-background {background: #cccccc !important; } /* Hintergrundfarbe aktives Tab */ .tab-background[selected]{background-color: #ffffff !important; } /* Suchfeld in weiß */ #searchbar-new.urlbar div.urlbar-background { background-color: #ffffff !important; border-color: #ffffff !important; } /* Adressfeld und Suchfeld in weiß */ #urlbar, #urlbar *, #searchbar, #searchbar * { background-color: #ffffff !important; color: #000000 !important; } /* Adressfeld und Suchfeld ohne Rahmen */ #urlbar-container { --toolbar-field-focus-border-color: none !important; } #search-container { --toolbar-field-focus-border-color: none !important; } /* Tab-Schließen-Button weniger Abstand, etwas größer */ #TabsToolbar .tab-close-button { margin-right: -2px !important; padding: 0 !important; height: 15px !important; width: 15px !important; color: #000000 !important; } /* Tab-Schließen-Button immer sichtbar */ .tab-close-button { display: flex !important; } /* Anwendungsmenü Zeilenabstände */ #appMenu-popup .subviewbutton {padding-top: 0px !important; } /* Kontextmenü Zeilenabstände*/ menupopup > menuitem, menupopup > menu { padding-block: 2px !important; padding-inline-start: 14px !important; } /*Hamburgermenü eigene Icons*/ /* Icon Abstand + Farbe weiß/schwarz je nach Theme */ #appMenu-multiView .subviewbutton > .toolbarbutton-icon { margin-inline: 0 6px !important; fill: currentColor; -moz-context-properties: fill; } /*Sync*/ #appMenu-fxa-status2::before { margin-right: 6px !important; margin-left: -5px !important; content: '' !important; display: block !important; width: 19px !important; height: 15px !important; background-image: url("chrome://browser/skin/fxa/avatar-empty.svg") !important; background-repeat: no-repeat !important; background-position: 0px 0px !important; background-size: 15px 15px !important; fill: currentColor; -moz-context-properties: fill; } /* Neuer Tab */ #appMenu-new-tab-button2 { list-style-image: url("chrome://browser/skin/sidebar-collapsed.svg"); } /* Neues Fenster */ #appMenu-new-window-button2 { list-style-image: url("chrome://browser/skin/window.svg"); } /* Neues privates Fenster */ #appMenu-new-private-window-button2 { list-style-image: url("chrome://browser/skin/tab.svg"); } /* Lesezeichen */ #appMenu-bookmarks-button { list-style-image: url("chrome://browser/skin/bookmark-star-on-tray.svg"); } /* Chronik */ #appMenu-history-button { list-style-image: url("chrome://browser/skin/history.svg"); } /* Download */ #appMenu-downloads-button { list-style-image: url("chrome://browser/skin/downloads/downloads.svg"); } /* Passwörter */ #appMenu-passwords-button { list-style-image: url("chrome://browser/skin/login.svg"); } /* Add-ons und Themes */ #appMenu-extensions-themes-button { list-style-image: url("chrome://mozapps/skin/extensions/extension.svg"); } /* Drucken */ #appMenu-print-button2 { list-style-image: url("chrome://global/skin/icons/print.svg"); } /* Seite speichern unter */ #appMenu-save-file-button2 { list-style-image: url("chrome://browser/skin/import.svg"); } #appMenu-save-file-button2 image { transform:rotate(90deg)!important; } /*Seite übersetzen*/ #appMenu-translate-button { list-style-image: url(chrome://browser/skin/translations.svg) !important; } /*In Seite suchen*/ #appMenu-find-button2 { list-style-image: url("chrome://global/skin/icons/search-glass.svg"); } /* Zoom */ #appMenu-zoom-controls > label { padding-bottom: 27px !important; padding-left: 22px !important; content: '' !important; display: block !important; width: 19px !important; height: 16px !important; background-image: url("chrome://browser/skin/fullscreen.svg") !important; background-repeat: no-repeat !important; background-position: 0px 4px !important; background-size: 15px 21px !important; fill: currentColor; -moz-context-properties: fill; } #appMenu-zoom-controls > label:hover { background-color: green !important; border-radius: 8px !important; } /* Vollbild */ #appMenu-fullscreen-button2::before { content: "Vollbild" !important; color: unset !important; font-size: 14px !important; margin-right: 9px !important; } /* Hintergrund bei hover über Sync + Zoom */ panelmultiview .toolbaritem-combined-buttons:hover { background-color: #52525e !important; /*Dark Theme*/ /* background-color: rgba(207,207,216,.66) !important; */ /*Hell Theme*/ border-radius: 5px !important; } /*Einstellungen */ #appMenu-settings-button { list-style-image: url("chrome://global/skin/icons/settings.svg"); } /*Weitere Werkzeuge */ #appMenu-more-button2 { list-style-image: url(chrome://browser/skin/permissions.svg); } /* Hilfe */ #appMenu-help-button2 { list-style-image: url("chrome://global/skin/icons/help.svg"); } /* Beenden */ #appMenu-quit-button2 { list-style-image: url("chrome://global/skin/icons/close.svg"); } }1. Die eckigen Tabs und Elemente (Felder) sollten nach Möglichkeit doch ein wenig abgerundet sein. Eine Änderung der Werte in den Zeilen 11-16 der css führte nicht zum Erfolg. Was muss ich tun?
Du musst in den Zeilen 11 bis 16 die Werte von "0" auf z.B. "10px" ändern, nicht nur auf "10". Grüße Lionsson
Merkst du selber, oder? Nicht jeder nutzt ein Script dafür, ich zB nicht, will ich nicht, ist mir total schnuppe. Aber ja, auch ich habe meine Mittel, um meinen Anspüchen gerecht zu werden.
Teil doch bitte Deine Mittel mit uns, anstatt Deinen Kleinkrieg mit Sören immer weiter zu forcieren. Für esteres ist dieses Forum.
Vielleicht hat ja der eine oder andere (sorry die Damen
ähnliche Ansprüche wie Du.
Grüße Lionsson
Wow. Grazie Sören. GL
Oha: das ist ja mal kompakt
L
Moinsen.
Wo finde ich ein knackiges Kompendium / ein Tutorial / eine Einführung,… über die Funktionen der Dateien userChrome.css und userContent.css? Quasi CSS für Dummies.
Grüße Lionsson
...die Hauptfarbe "Viloet"...
Heißt das wirklich Viloet? GL
Bingo! Vielen Dank für den Hinweis. GL
Moin Ralf.
Was ist der Effekt? Bzw. was, wenn man es nicht tut?
Grüße Lionsson
Jepp. Vielen Dank. Grüße Lionsson
Jau: bei mir ja auch soweit. Lediglich der fokussierte Tab hat die Hintergrundfarbe weiß anstatt rot. Heute Nachmittag bei 156.0.1 war die Hintergrundfarbe noch rot.
L
Salve.
Nach dem heutigen Update auf 157.0 möchte ich nochmal auf dieses Thema aus dem Mai letzten Jahres zurückkommen.
Das damals von Andreas empfohlene Skript hat mitterweile die Versionsnummer 1.2.7 (s.u.)
Vielleicht kann mal jemand drüber gucken, ob das so noch valid ist.
Was mir sofort aufgefallen ist, dass der aktuell selektierte Tab weiß ist, und nicht rot. Ich hätte ihn gerne wieder rot
Grüße Lionsson
// ==UserScript==
// @name Unread Tab Mods
// @version 1.2.7
// @author aminomancer
// @homepageURL https://github.com/aminomancer/uc.css.js
// @long-description
// @description
/*
Modifies some javascript methods so that unread tabs can be styled in CSS, and (optionally) adds new items to the tab context menu so you can manually mark tabs as read or unread.
Normally when you open a new tab without it being selected, it gains the attribute `notselectedsinceload` which could be used to style it. But this attribute doesn't go away when you select the tab, so it doesn't actually mean "unread." It doesn't go away until you navigate to a new page in the tab. But we can change this so it will go away immediately as soon as you click it or otherwise select it.
Also, normally the attribute isn't added until web progress has finished, so unread tab styling won't be applied until after it's finished loading a bit. This doesn't look as good so we're also changing it to add the attribute as soon as the tab is created.
So now all you need to do to style unread tabs is add something like this to your userchrome.css file:
```css
.tabbrowser-tab[notselectedsinceload]:not([pending]),
.tabbrowser-tab[notselectedsinceload][pending][busy] {
font-style: italic !important;
}
```
If you use [duskFox][] (the theme on my repo) you will already have this CSS so there's no need to add it.
[duskFox]: https://github.com/aminomancer/uc.css.js
*/
// @downloadURL https://cdn.jsdelivr.net/gh/aminomancer/uc.css.js@master/JS/unreadTabMods.uc.js
// @updateURL https://cdn.jsdelivr.net/gh/aminomancer/uc.css.js@master/JS/unreadTabMods.uc.js
// @license This Source Code Form is subject to the terms of the Creative Commons Attribution-NonCommercial-ShareAlike International License, v. 4.0. If a copy of the CC BY-NC-SA 4.0 was not distributed with this file, You can obtain one at http://creativecommons.org/licenses/by-nc-sa/4.0/ or send a letter to Creative Commons, PO Box 1866, Mountain View, CA 94042, USA.
// ==/UserScript==
(function () {
/**
* set the "notselectedsinceload" attribute and the _notselectedsinceload property on a tab.
* @param {object} tab (a tab whose attribute to change)
* @param {boolean} on (whether to set the attribute to true or remove it)
*/
function modulateAttr(tab, on = false) {
tab._notselectedsinceload = on;
on
? tab.setAttribute("notselectedsinceload", on)
: tab.removeAttribute("notselectedsinceload");
gBrowser._tabAttrModified(tab, ["notselectedsinceload"]);
}
class UnreadTabsBase {
// user preferences and localization. change the strings to match your
// lanugage. write #1 where the number of tabs should go in the sentence.
static config = {
// if set to true, add "Mark Tab as Read" and "Mark Tab as Unread"
// to the tab context menu when appropriate.
"Add Context Menu Items": true,
// the "Mark Tab as Read" context menu label when only one tab is invoked.
"Mark Tab as Read Label": "Mark Tab as Read",
// the "Mark Tab as Unread" context menu label when only one tab is invoked.
"Mark Tab as Unread Label": "Mark Tab as Unread",
// when tabs are multiselected and the tab you right-clicked is one of the
// selected tabs, the context menu will mark multiple tabs instead of just
// one. make sure it still has "#1", that gets replaced dynamically with
// the number of tabs that will be marked. so if you're gonna change the
// label for your language, be sure to put #1 where the number should go.
// for example 見られるようにマーク#1タブ or Marquer #1 onglets comme lu.
"Mark Multiple Tabs as Read Label": "Mark #1 Tabs as Read",
// just like the one above but for marking tabs as unread.
"Mark Multiple Tabs as Unread Label": "Mark #1 Tabs as Unread",
};
constructor() {
if (
gBrowser.tabContainer._handleTabSelect.name !== "uc_handleTabSelect"
) {
gBrowser.tabContainer._ensureTabIsVisible = function ensureTabIsVisible(
tab,
shouldScrollInstantly = false
) {
let arrowScrollbox = tab.closest("arrowscrollbox");
if (arrowScrollbox.overflowing) {
arrowScrollbox.ensureElementIsVisible(tab, shouldScrollInstantly);
}
};
eval(
`gBrowser.tabContainer._handleTabSelect = function ${gBrowser.tabContainer._handleTabSelect
.toSource()
.replace(/^\(/, "")
.replace(/\)$/, "")
.replace(/^_handleTabSelect\s*/, "")
.replace(/^function\s*/, "")
.replace(/^(.)/, `uc_handleTabSelect $1`)
.replace(/#ensureTabIsVisible/, "_ensureTabIsVisible")
.replace(
/selectedTab\._notselectedsinceload = false;/,
"modulateAttr(selectedTab);"
)}`
);
}
if (gBrowser.tabContainer._handleNewTab.name !== "uc_handleNewTab") {
eval(
`gBrowser.tabContainer._handleNewTab = function ${gBrowser.tabContainer._handleNewTab
.toSource()
.replace(/^\(/, "")
.replace(/\)$/, "")
.replace(/^_handleNewTab\s*/, "")
.replace(/^function\s*/, "")
.replace(/^(.)/, `uc_handleNewTab $1`)
.replace(
/\n(\s*)(this\._notifyBackgroundTab\(tab\);)/,
"\n$1modulateAttr(tab, true);\n$1$2"
)}`
);
}
if (UnreadTabsBase.config["Add Context Menu Items"]) {
this.makeMenuItems(this.tabContext);
}
}
get tabContext() {
return (
this._tabContext ||
(this._tabContext = document.getElementById("tabContextMenu"))
);
}
handleEvent(e) {
let tab = TabContextMenu.contextTab;
let tabs = tab.multiselected ? gBrowser.selectedTabs : [tab];
let unreadTabs = this.unreadTabs(tabs);
let readTabs = this.readTabs(tabs);
if (unreadTabs.length) this.markAsReadMenuitem.hidden = false;
else this.markAsReadMenuitem.hidden = true;
if (readTabs.length) this.markAsUnreadMenuitem.hidden = false;
else this.markAsUnreadMenuitem.hidden = true;
this.markAsReadMenuitem.setAttribute(
"label",
unreadTabs.length > 1
? UnreadTabsBase.config["Mark Multiple Tabs as Read Label"].replace(
"#1",
unreadTabs.length.toLocaleString()
)
: UnreadTabsBase.config["Mark Tab as Read Label"]
);
this.markAsUnreadMenuitem.setAttribute(
"label",
readTabs.length > 1
? UnreadTabsBase.config["Mark Multiple Tabs as Unread Label"].replace(
"#1",
readTabs.length.toLocaleString()
)
: UnreadTabsBase.config["Mark Tab as Unread Label"]
);
}
unreadTabs(tabs) {
return tabs.filter(aTab => {
return !(
aTab.getAttribute("pending") ||
!aTab.getAttribute("notselectedsinceload") ||
aTab.selected
);
});
}
readTabs(tabs) {
return tabs.filter(aTab => {
return !(
aTab.getAttribute("pending") ||
aTab.getAttribute("notselectedsinceload") ||
aTab.selected
);
});
}
_onCommand(mode = false) {
let tab = TabContextMenu.contextTab;
if (tab.multiselected) {
gBrowser.selectedTabs.forEach(aTab => {
if (aTab.getAttribute("pending") || aTab.selected) return;
modulateAttr(aTab, mode);
});
} else {
if (tab.getAttribute("pending") || tab.selected) return;
modulateAttr(tab, mode);
}
}
makeMenuItems(context) {
this.markAsReadMenuitem = document.createXULElement("menuitem");
this.markAsReadMenuitem.setAttribute(
"label",
UnreadTabsBase.config["Mark Tab as Read Label"]
);
this.markAsReadMenuitem.setAttribute("id", "context-markAsRead");
this.markAsReadMenuitem.addEventListener("command", () =>
this._onCommand()
);
context
.querySelector("#context_duplicateTabs")
.after(this.markAsReadMenuitem);
this.markAsUnreadMenuitem = document.createXULElement("menuitem");
this.markAsUnreadMenuitem.setAttribute(
"label",
UnreadTabsBase.config["Mark Tab as Unread Label"]
);
this.markAsUnreadMenuitem.setAttribute("id", "context-markAsUnread");
this.markAsUnreadMenuitem.addEventListener("command", () =>
this._onCommand(true)
);
this.markAsReadMenuitem.after(this.markAsUnreadMenuitem);
context.addEventListener("popupshowing", this);
}
}
function init() {
window.unreadTabMods = new UnreadTabsBase();
}
document.documentElement.setAttribute("italic-unread-tabs", true);
if (gBrowserInit.delayedStartupFinished) {
init();
} else {
let delayedListener = (subject, topic) => {
if (topic == "browser-delayed-startup-finished" && subject == window) {
Services.obs.removeObserver(delayedListener, topic);
init();
}
};
Services.obs.addObserver(
delayedListener,
"browser-delayed-startup-finished"
);
}
})();
Alles anzeigen
Moinsen.
Könnte bitte grad mal jemand zeigen, wie jene großen Radien aussehen, und wo sie eingesetzt werden sollen?
Grüße Lionsson
Moinsen.
Ich habe mich soeben via FF auf mehreren meiner GMX-Accounts eingeloggt und festgestellt: alles fein, ich kann das von Dir in Deinem ersten Abschnitt beschriebene Verhalten nicht nachvollziehen.
Ümbrings: wir sind bei 156.0.1.
Grüße Lionsson
Hallo Sören.
Nicht "immer", sondern "...immer wieder..."
Vielen Dank zur Erklärung bzgl. meiner CPU. Dann brauche ich nicht weiter zu suchen.
GL
Hallo Sören.
Warum antwortest Du immer wieder mit Gegenfragen?
Im Übrigen, mir ist ja kaum was zu peinlich: AMD Phenom II X4 945
GL
Was muss ich wo einstellen, damit die FF-Übersetzung funktioniert?
Suche in den Einstellungen nach Übersetzungen und kontrolliere die passenden Einstellungen.
Hallo Ralf. Bevor ich mich an die Suche mache: gGilt Dein Tipp nach Sörens Einlassungen unverändert? GL
Für eine freie Textübersetzung kannst du about:translations aufrufen.
Per about:translations wird mir dies angezeigt:
Was muss ich wo einstellen, damit die FF-Übersetzung funktioniert?
Grüße Lionsson