Beiträge von Platos
-
-
Ja aber es geht mir um die angepinnten Webseiten. Und es geht mir nicht um die Webseiten an sich, es geht mir um das Bild von den angepinnten Webseiten. Wenn man eine Webseite anpinnt, gibt es noch kein Bild. Es kommt erst das Webseitenlogo, wenn man die Webseite besucht hat. Das Logo geht aber wieder weg, wenn ich den Browser schliesse.
-
-
Danke für die Antwort.
Ja, genau das habe ich nun gemacht (graphisch etwas anders). Das ding ist, ich wollte ja 3x 3 reihen (mit Abstand dazwischen), aber das geht rechnerisch einfach nicht auf, deshalb habe ich nun 5x 2-er reihen mit je 12 Kacheln gemacht. Für Interessierte hier der code:CSS
Alles anzeigen@-moz-document url(about:home), url(about:newtab) { /*Wichtige Seiten Abstand zwischen Zeile 3 und 4 (Abstand einer Zeile bei 9, 17, 25 usw)*/ /*Damit das alles funktioniert muss die Bookmark-Bar weg sein (rechtsklick auf irgendeine Firefoxleiste)*/ /*Textbeschreibung mehrzeilig*/ .top-site-outer .title span { white-space: unset !important; height: 40px !important; } .top-site-outer .title { padding-top: 6px !important; } .top-site-outer .top-site-inner > a { padding: 0px 0px 0px !important; margin-block-end: 0px !important; } .top-site-outer { margin-block-end: 0px !important; width: 95px !important; } li.top-site-outer:nth-child(25) > div:nth-child(1) { margin-top: 35px !important; } li.top-site-outer:nth-child(49) > div:nth-child(1) { margin-top: 35px !important; } li.top-site-outer:nth-child(75) > div:nth-child(1) { margin-top: 35px !important; } li.top-site-outer:nth-child(99) > div:nth-child(1) { margin-top: 35px !important; } /*Das verbreitert den Platz für die Kacheln in der Breite, so dass z.B 9 anstatt 8 Kacheln pro Zeile platz haben*/ .ds-outer-wrapper-breakpoint-override main { width: 1182px !important; } /*Das minimiert die Abstände oben/unten zwischen den Kacheln (obwohl da was von Schriftgrösse steht)*/ body { font-size: 1px !important; } /*Rückt die Kacheln näher zusammen*/ .top-site-outer { padding: 0 !important; } /*Folgende Zeilen löschen oder verkleinern abstände unten und oben*/ .outer-wrapper { padding: 0px 0px 0px !important; } .outer-wrapper a { color: var(--newtab-primary-action-background); } main { margin: auto; width: 274px; padding: 0; } main section { margin-bottom: 0px !important; position: relative; } .collapsible-section { padding: 0px 30px !important; } /*Folgende Zeilen vergrössern die Kachlen (für 120Prozent Webseitenzoom)*/ .top-site-outer .tile { height: 90px !important; width: 90px !important; } .top-site-outer .tile .icon-wrapper { width: 66px !important; height: 66px !important; } }
Das sieht dann so aus:
-
Hallo, ich ziehe gerade alles um auf meine neue Firefox-Installation und ich weiss, wie man die angepinnten Webseiten Backuped, aber ich weiss nicht, wie man die kleinen logos sichert, die sich Bilden, wenn man die Webseite besucht.
Ebenfalls habe ich gemerkt, dass sich alle diese Logos wieder löschen, wenn ich den Browser schliesse (löscht automatisch alles). Wie mache ich denn da jetzt ne Ausnahme? Gehts hier um die Cookies oder um den Browserverlauf? Gebe ich da als ausnahme-webseite nun einfach "about:home" ein? -
Ich weiss, dass man in about:config die Anzahl Reihen bestimmen kann, aber das Ding ist, dass so eine "Reihe" eigentlich 8 Kacheln sind, es sind gar keine Reihen. Ich habe about:home so verändert (mittels usercontent.css), so dass ich 10 Kacheln pro Zeile habe. Wenn ich nun in about:config 9 Reihen eingestellt habe, habe ich aber gar keine 9 Reihen mehr, sondern nämlich nur noch 8 reihen, bei denen die 8. nur aus 2 Kacheln besteht (Firefox geht davon aus, dass eine Reihe immer 8 Kacheln hat und erzeugt deswegen bei 9 Reihen 9*8=72 Kacheln. Das ergibt mir dann bei 10 Kacheln pro Zeile aber 7 ganze und eine Zeile mit nur 2 Kacheln).
Meine Frage ist also, ob man irgendwie eine bestimmte Anzahl kacheln einstellen kann, so dass ich das rund hinkriege.Wichtig ist mir, dass es 9 Zeilen ergibt. Es spielt nicht so eine Rolle, ob es nun 10 oder 11 Kacheln pro Zeile sind (es sollten aber mindestens 10 sein). Aber damit es 9 Zeilen gibt, braucht es eine bestimmte Anzahl an Kacheln. Wenn ich gezwungen bin, das in 8-er Schritten einzustellen, gibt es nur entweder 72 oder 144 Kacheln (nach 72 ist das nächste, gemeinsame vielfache 144). 144 Kacheln bei 9 Reihen ergeben aber 16 Kacheln pro Reihe. Das ist mir dann doch "etwas" zu viel.
Daher die Frage, ob ich irgendwie die Anzahl kacheln genau bestimmen kann. -
Wenn man bei Android unten rechts auf das Feld klickt, wo die Tab-Ansicht ist, werde ich oftmals zu den ältesten Tabs geworfen.
Das kann doch nicht normal sein? Manchmal klappt es, und wenn ich da drauf klicke, gelange ich ans Ende der Liste (also zu den neuesten Tabs). Aber oftmals gelange ich an den Anfang der Liste und muss alle Tabs hochscrollen. Hat jemand eine Ahnung, wie man das fixen kann ?
Das ist schon ziemlich nervig.
Ps. ja ich weiss, dass man auch auf andere Weise zwischen Tabs wechseln kann.
-
Sollte es dir damit reichen, dann kannst/musst du dir die Tooltips anpassen bzw. eigene Icons verwenden.
Ja danke, das ist gut! Ich werde dann das nutzen (ausser jemand hat eine andere Idee).
Wenn ich aber folgendes tue, komme ich nicht mehr aus dem Vollbildmodus raus (das liegt aber nicht am Skript, so weit ich das beurteilen kann):
Ich drücke den Button, so dass der Vollbildmodus nur im Fenster funktioniert, dann drücke ich F11, um den Vollbildmodus nur im Fenster zu aktivieren, fahre dann mit der Maus nach oben, so dass die Leiste runter kommt und drücke dann wieder den Button, um den Vollbildmodus wieder auf "normal" zu stellen. Wenn ich jetzt wieder F11 drücke, dann bleibt das Fenster da irgendwie hängen.
Man sieht das, wenn man den Vollbildmodus beim 2. Mal mit einem Youtubevideo aktiviert (in dem man im Video auf den Fullscreen-Button drückt). Der Inhalt des Videos wird dann in den "normalen" Vollbildmodus versetzt (das sollte ja jetzt so sein, weil ich habe ja den Button gedrückt, um den normalen Vollbildmodus zu erlauben). Aber es wechselt eben nur der Inhalt in den Vollbildmodus, das Fenster wird nicht maximiert, es bleibt in der Grösse und das bedeutet, dass das Video (inkl. Player-Symbolen) nur noch zur Hälfte sichtbar ist. Weil der Inhalt streckt sich auf die Grösse meines Monitors, während dem das Fenster in der Grösse "hängen" bleibt. Dann sehe ich nur noch ein Teil des Players inkl. den Symbolen.
Das alleine ginge ja noch, aber das Problem ist, dass die Tableiste nicht mehr runter kommen will, wenn ich mit der Maus nach oben fahre. D.h ich kann dann nichts mehr machen und muss das Fenster schliessen (den Tab schliessen geht ja nicht, da ich die Tabs nicht mehr sichtbar machen kann). Mit ESC geht es auch nicht.
Ich muss also den Vollbildmodus immer beenden, bevor ich den Button drücke.
Das liegt aber glaube ich wie gesagt nicht am Skript, denn das gleiche passiert auch, wenn ich in einem Fenster die about:config Einstellungen Manuell umschalte und das selbe tue. Dann bleibt ebenfalls alles hängen.
Da weiss nicht zufällig jemand, an was das liegt ?
Edit: Was ähnliches passiert auch umgekehrt. Wenn ich zuerst in den normalen Fullscreen gehe und dann den Button drücke und dann nochmals F11 drücke, bleibt es ebenfalls hängen. Da aber zum Glück so, dass die Leiste oben nicht mehr verschwindet und ich die Tabs noch schliessen kann.
-
Da ich nicht weiss, welche Möglichkeiten es gibt, habe ich diese Frage in "Firefox Allgemein" gepostet. Aber vlt. ist sie ja besser in "individuelle Anpassung" aufgehoben? Möglicherweise kann ich ja mit userChrome da was basteln?
Auf jeden Fall möchte ich die Frage nochmals erklären für mögliche Missverständnisse:
Also wenn ich die about:config Einstellung "full-screen-api.ignore-widgets" auf "true" setze, kann ich jede Webseite (die ich bisher getestet habe), in einen funktionierenden Fulllscreenmodus versetzen, ohne aber die Fenstergrösse zu ändern, also ohne, dass das Fenster maximiert wird.
Dabei verschwindet die Taskleiste nicht (das ist auch gut so) und die scrollbar auch nicht (Das könnte besser sein). Aber wie eben im Vollbildmodus üblich, verschwinden alle Leisten und dennoch kann ich sie (wie im Vollbildmodus üblich) wieder hervorrufen, wenn ich mit der Maus da hoch fahre.
Soweit so gut. Das will ich. Aber ich habe dann festgestellt, dass auch Videos nur noch in diesem Fenster in den Fullscreenmodus gehen. Ist ja auch logisch, aber ich habe nicht daran gedacht. Auf jeden Fall hätte ich gerne, dass ich auswählen kann, wann/ob ich den "echten" Fullscreenmodus verwende (für Videos) und wann ich den "windowed" Fullscreenmodus verwende.
Es gäbe jetzt natürlich mehrere Möglichkeiten in der Theorie. Was vermutlich sicher nicht geht, ist, irgendwie zu "erkennen", ob die Webseite ein Video enthällt. Das erwarte ich auch nicht. Deshalb wie gesagt die Idee, dass ich eben für diesen "speziellen" Fullscreenmodus (der das Fenster nicht maximiert) eine zusätzliche Taste drücken muss.
Also dass z.B mit ctrl + F11 der "windowed" Fullscreen aktiviert wird und mit F11 den "normalen". Das ist nur eine Idee, andere Ideen sind auch willkommen.
Edit: Im Notfall wäre ich aber auch bereit, das so mit about:config zu lösen, wenn ich dann für bestimmte Webseiten eine Ausnahmeregelung hinzufügen könnte. Denn diese Ausnahme brauche ich eig. nur für Videos und da ich nicht sooo viele Videoplattformen (im Fullscreen) nutze, wäre es theoretisch für mich akzeptabel, solche Webseiten als Ausnahme hinzuzufügen. Aber ich weiss ja nicht, wie hoch der Aufwand dafür ist, bevor ich überhaupt weiss, was für Möglichkeiten es gibt. Aber auch dafür wäre ich theoretisch offen (allerdings lieber als letzte Lösung).
Der Kaffee-Spruch (auf etwas anderes als diese Zeile kannst du die vermeintliche „Unverschämtheit“ nicht beziehen) war sicher nicht böse gemeint
Ja, das war nicht böse gemeint. Mehr eine bitte, doch nochmals genau meine Frage zu lesen. Gehört die Frage vlt in ein anderes Unterforum als "Firefox Allgemein"?
Also wird eine ganz spezielle Lösung für eine ganz bestimmte Seite gesucht
Das stimmt doch nicht. Lies doch nochmals meine Frage durch. in about:config lässt sich doch genau das erzielen. Ein Vollbildmodus, der nur aufs Fenster angewendet wird und ohne eine Webseiten-spezifische Lösung zu benötigen.
Das geht und ich habe es schon ausprobiert. Unabhängig von mehreren Webseiten. Es braucht also keine spezielle Lösung für diesen Aspekt. Es spielt ja auch keine Rolle, ob ich nun F11 oder im Player den Fullscreen-Button drücken muss. Es geht doch nur um die Funktionalität. Meine Frage bezieht sich aber darauf, dass ich mit dem Aktivieren dieser about:config Einstellung eben nur noch im Fenster in den Vollbildmodus wechseln kann. Und ich kann schlecht immer, wenn ich mal ein Video schauen will, jedes mal die about:config Einstellung ändern. Daher die Frage, ob man das, was ich da in about:config machen kann, irgendwie nur wahlweise ein und ausschalten kann oder was ähnliches.
Mir kommt es so vor, als würdest du dich auf irgendwelche Begriffe versteifen, die eig. überhaupt nichts mit meiner Frage zu tun haben, denn du antwortest an der Frage vorbei.
Übrigens habe ich gar nicht nach Firefox-internen Möglichkeiten gefragt. Ich bin auch offen für Scripts, userchrome, addons usw. Deswegen habe ich ja "irgend eine Möglichkeit" gesagt.
-
Ich denke, du hast meine Frage falsch verstanden. Es geht hier nicht um Bildseitenverhältnisse. Es geht um den Vollbildmodus. Das hat nichts damit zu tun, ob ein Video schwarze Balken hat.
Der Vollbildmodus ist ein Modus, den ein Programm/Webseite eingehen kann (F11 drücken, dann siehst du es). Das hat mit der Darstellung eines Videos ohne/mit schwarzen Balken überhaupt gar nichts zu tun.
Mein Teil mit about:config und was ich schon probiert habe, hast du irgendwie übersehen oder? Sonst wüsstest du doch, von was ich rede. PiP hat auch nichts mit meiner Frage/Suche zu tun. Und generell geht es nicht nur um Videos.
Glaube du musst zuerst ein Kaffe trinken
-
Ich suche nach einer Möglichkeit, wie ich den Fullscreenmodus nutzen kann, ohne dass das Fenster dabei maximiert wird. Aber ich suche nach einer Möglichkeit, so dass es nur dann nicht maximiert, wenn ich vor Drücken der F11 Taste z.B ctrl halte oder ctrl+shift oder sowas.
Ich kenne folgendes: about:config und dann "full-screen-api.ignore-widgets" auf true stellen. Das Problem: Wenn ich dann mal Videos schauen will, kriege ich den Fullscreenmode auch nur im Fenster. Bei Videos will ich ihn aber halt doch "richtig" Fullscreen haben, also den kompletten Bildschirm bedeckt.
Daher die Idee mit ctrl+F11.
Aber kennt jemand irgend eine Möglichkeit dazu?
-
-
Ich suche nach einem add-on (oder einer sonstigen Möglichkeit), Browser-tabs automatisch zu deaktiveren (nicht schliessen!), wenn sie 2 Bedinungen erfüllen:
a) sie müssen zuerst einmal für (z.B) 10 minuten inaktiv sein
b) wenn die CPU Auslastung des Tabs (z.B) höher wie 10% ist, aber nach diesen 10 minuten. Also wenn die 10 minuten inaktivität eingetretten sind, soll ab dann der Durchschnittswert (für z.B 1 minute) gebildet werden. Ist dieser höher wie 10%, soll er deaktiviert (entladen) werden.
Ich suche daher explizit nicht ein Add-on wie AutoTabDiscard.
Ich kenne auch about:processes. Und genau auf Basis der dortigen Werte sollen die Tabs deaktivert werden. Aber eben automatisch und nicht von mir manuell.
Gibt es sowas?
-
Ich weiß genau, was du meinst. Aber der Grund, warum es hier anders gelöst wurde, ist folgender: Bei der einzeiligen (eindimensionalen) Anzeige der Tableiste müssen nur die sichtbaren Tabs auf einer Linie verschoben werden. Je nachdem, von wo ich den Tab nehme, entweder nach rechts oder nach links, um diese Lücke zu erzeugen. Bei der mehrzeiligen (2-dimensionalen) Anzeige muss ich auch die sichtbaren Tabs berücksichtigen, die oberhalb und unterhalb des 'Drop-Ziels' liegen. Auch mit dem ständigen Refresh und dem Scrollen könnte es dann Probleme geben. So hab ich nur einen Indikator und einen Thumb mit dem Screenshot für den selektierten Tab und muss mich darum nicht kümmern.
Das heißt natürlich absolut nicht, dass es nicht so funktionieren kann, wie es dir vorschwebt, aber ich werde mir sicherlich nicht die Mühe machen, so etwas in das Skript einzubauen oder Hilfestellungen dazu geben. Einmal, weil ich den Code für das Drag&Drop von 'alice0775' übernommen habe und bis auf ein paar Anpassungen, bisher noch nichts daran geändert habe, weil er ja auch bis jetzt wunderbar funktioniert hat. Außerdem hatte ich ja schon öfters gesagt, dass ich an diesem Skript nur noch Fehlerbehebung betreiben möchte und keine neuen Features mehr einbaue. Und dein Anliegen hat ja offensichtlich - wenn überhaupt - nur einen rein optischen Nutzen. Ich frage mich sowieso, was dich an der jetzigen Lösung stört...?
Ansonsten musst du ab Zeile ~1157 selber tätig werden. Aber du solltest dich dafür nicht nur gut mit JavaScript auskennen, sondern dich auch mit den Interna des Firefox beschäftigt haben...
Sorry für die Später Antwort, war viel Los:
Also ich habe natürlich nicht erwartet, dass du das jetzt für mich machst, ich dachte nur, da du dieses Skript gemacht hast, würdest du das grad so spontan wissen. Wollte nur mal nachfragen.
Dass du öfters gesagt hast, dass du keine neuen Features einabust, war mir nicht klar, von mir aber wie gesagt auch nicht erwartet. (aber schreib doch das in den 1. Post).
Aber nein, mein Anliegen hat keinen optischen Nutzen. Das ist rein der Produktivität halber. Beispiel: Wenn ich mit diesem Skript einen Tab nach unten ziehe (senkrecht), dann zieht es mit den Tab nicht an die Position direkt darunter, sondern rechts/links von dem Tab, direkt darunter. Das ist unlogisch und stört mich im Fluss.
2. Es ist grafisch einfach deutlich ein überlegenes Design, wenn ich den Tab direkt sehe, wo er sich jetzt befindet, anstatt nur diesen Strich. Das ist einfach deutlich produktiver. Es gibt ja auch Gründe, warum das jeder Browser so macht. Ist einfach besser so...
Es mag ja sein, dass das für dich so passt, aber für mich eben nicht. Deswegen habe ich ja gefragt. Aber wenn du keine Antwort darauf weisst, ist das ja nicht weiter schlimm. Ich habe nur gefragt... Im übrigen habe ich nur so in die Runde gefragt und nicht spezifisch dich.
Trotzdem danke für die Antwort.
Falls hier jemand weiss, wie man das machen könnte, wäre ich aber immer noch froh, wenn mir jemand sagen könnte, was man am Skript ändern muss. Ich fordere hier niemanden dazu auf, ist natürlich freiwillig. Wer nicht will, muss nicht antworten ;).
-
Ich hätte eine Frage bezüglich der Animation des Tab Drag-and-Drop.
Es ist ja so: Mit diesem Skript funktioniert das Drag-n-Drop nicht so, wie in aktuellen FF Versionen. Bei Aktuellen FF Versionen wird ja beim "Dragen" des Tabs der Tab sichtbar mit verschoben. Bei diesem Skript bleibt beim "Dragen" der Tab an Ort und Stelle und nur ein Strich wird angezeigt, wohin der Tab verschoben wird.Meine Frage wäre jetzt, ob bzw. wie ich das Skript (für mich) irgendwie abändern kann, so dass ich das aktuelle Drag-n-Drop verhalten kriege.
Ich hätte hier ein Bild (weiss leider nicht, wie man diese kurz-videos/Gifs machen kann hier):
Man sieht hier, wie der Tab während des "dragen" mitgezogen wird. Dabei werden alle anderen Tabs vom angewählten Tab "weggedrückt". Und "gedroppt" wird der Tab dann dort, wo ich den Tab hinziehe. Also nicht das mit dem Strich.
Ist das irgendwie möglich ?
-
Edit: also soweit gehts jetzt. Das einzige Problem, dass ich jetzt noch habe, ist das mit dem Tab "draghover".
Ich frage mal im anderen Thread nach, ob das geht im Skritp.
Siehe die Screenshots in Beitrag 35.
Bei mir sind die auch mit dem Eintrag vorhanden.
Der hat ja auch mit den X nichts zu tun.
Ja, aber bei mir sind sie nicht vorhanden. Ich habe es gerade ausprobiert. Bei mir verschwinden die X sofort, wenn ich das aktiviere (das war schon von Anfang an so ohne eigene Änderung am Skript) . Ich weiss nicht wieso es bei mir nicht geht, aber mit dem zusätzlichen Code von # 36 geht es.
-
Ja eben, weil ich ja den Teil den du vorher gesagt hast, entfernt habe. Nur taucht dann auch dieser Pfeil ganz rechts in der Tableiste auf.
Aber ich konnte das Problem jetzt lösen und zwar lösche ich den Teil den du gesagt hast nicht raus und zusätzlich mit diesem code funktioniert es dann (habe ich ergooglet):
-
Ahh, ja ich habe den entfernt, weil er dafür sorgt, dass der Tab-schliessen Button nur noch auf dem aktiven Tab angezeigt wird.
Wie kann ich denn die Tab-schliessen Button auf allen anzeigen ?
-
ok, ich werde es mir ansehen und mal schauen, ob ich da was basteln kann
Noch eine Frage: Ich sehe gerade, dass diese Version in der Tableiste ganz recht so ein Pfeil hat. Wenn ich da drauf klicke, popt ein Menu mit meinen Tabs auf. Kann ich das entfernen? Oder weisst du, an welcher Stelle im Skript das ist?
-
Ok, also der blaue Strich ist mir ja egal. Ich meinte einfach, dass ich beim Tab Umherschieben auch sehe, wie der Tab umhergeschoben wird. Wenn da noch ein blauer Strich ist, ist mir das eig. egal. Ich würde nur gerne sehen, wie der Tab auch umhergeschoben wird, so wie in aktuellen Firefoxversionen.
Wenn du mir sagst, wie du das mit diesen Videos machst, kann ich auch eins machen.
Ich habe jetzt versucht, die Tabs mit diesem Skript wieder so zu machen, wie es ohne Script ist. Hat soweit funktioneirt, denke ich:
CSS
Alles anzeigen// ==UserScript== // @name zzzz-MultiRowTab_LiteforFx48.uc.js // @namespace http://space.geocities.yahoo.co.jp/gl/alice0775 // @description Experimentelle CSS Version für Mehrzeilige Tableiste // @include main // @compatibility Firefox 113 // @author Alice0775 // @version 2016/08/05 00:00 Firefox 48 // @version 2016/05/01 00:01 hide favicon if busy // @version 2016/03/09 00:01 Bug 1222490 - Actually remove panorama for Fx45+ // @version 2016/02/09 00:01 workaround css for lwt // @version 2016/02/09 00:00 // ==/UserScript== "use strict"; MultiRowTabLiteforFx(); function MultiRowTabLiteforFx() { var css =` /* USER_SHEET */ @-moz-document url-prefix("chrome://browser/content/browser.xhtml") { /* Anpassung der Symbolleisten */ #titlebar,#tabbrowser-tabs { appearance: none !important; } /* Anpassen der Titelleistenschaltfläche [- x] der Tableiste */ #TabsToolbar > .titlebar-buttonbox-container { margin: 0 !important; } #TabsToolbar > .titlebar-buttonbox-container .titlebar-button { height: calc(8px + var(--tab-min-height)); padding: 0 !important; width: 46px; } #toolbar-menubar:not([inactive]) ~ #TabsToolbar:not([inFullscreen]) > .titlebar-buttonbox-container { display: none !important; } /* Mehrzeilige Tableiste */ box.scrollbox-clip[orient="horizontal"] > scrollbox { flex-wrap: wrap !important; max-height: calc(calc(8px + var(--tab-min-height)) * 3); /* Anzahl der Tabzeilen(Standard = 3 Zeilen)*/ overflow-x: hidden !important; overflow-y: auto !important; } /* --- Ziehbereich der Tab-Leiste --- */ /* Anpassung */ hbox.titlebar-spacer[type="pre-tabs"] { width: 0px !important; } /* Linker Ziehbereich: Standard 40px */ hbox.titlebar-spacer[type="post-tabs"] { width: 0px !important; } /* Rechter Ziehbereich: Standard 40px */ /* ↓ Wenn Sie die linke und rechte Seite des CSS-Codes auskommentieren und den CSS-Code aktivieren, können Sie den Ziehbereich links einblenden, der beim Maximieren des Fensters ausgeblendet wird. */ /* :root:not([sizemode="normal"]) hbox.titlebar-spacer[type="pre-tabs"] { display: block !important; } */ /* ↓Wenn Sie die Auskommentierung links und rechts von unten stehenden CSS-Code entfernen und den CSS-Code aktivieren, können Sie den linken und rechten Ziehbereich einblenden, der im Vollbildmodus ausgeblendet wird. */ /* :root[inFullscreen] hbox.titlebar-spacer { display: block !important; } */ } `; var sss = Cc['@mozilla.org/content/style-sheet-service;1'].getService(Ci.nsIStyleSheetService); var uri = makeURI('data:text/css;charset=UTF=8,' + encodeURIComponent(css)); sss.loadAndRegisterSheet(uri, sss.USER_SHEET); var css =` /* AGENT_SHEET */ @-moz-document url-prefix("chrome://browser/content/browser.xhtml") { /* Bei Überschreitung der angegebenen Zeilenanzahl, mit der Maus, über die dann eingeblendetet Scrolleiste zur gewünschten Zeile wechselnる */ box.scrollbox-clip > scrollbox[orient="horizontal"] > scrollbar { -moz-window-dragging: no-drag !important; } } `; var sss = Cc['@mozilla.org/content/style-sheet-service;1'].getService(Ci.nsIStyleSheetService); var uri = makeURI('data:text/css;charset=UTF=8,' + encodeURIComponent(css)); sss.loadAndRegisterSheet(uri, sss.AGENT_SHEET); var css =` /* AUTHOR_SHEET */ /* #tabbrowser-arrowscrollbox::part(scrollbox) { flex-wrap: wrap !important; max-height: calc(calc(8px + var(--tab-min-height)) * 3); overflow-x: hidden !important; overflow-y: auto !important; } */ /* Bildlaufschaltfläche und Abstandshalter in der Schattenwurzel der Tab-Leiste ausblenden */ #tabbrowser-arrowscrollbox[scrolledtostart]::part(overflow-start-indicator), #tabbrowser-arrowscrollbox[scrolledtoend]::part(overflow-end-indicator), #tabbrowser-arrowscrollbox::part(scrollbutton-up), #tabbrowser-arrowscrollbox::part(scrollbutton-down) { display: none !important; } .tabbrowser-tab:not([pinned]) { flex-grow: 0 !important; min-width: 180px !important; /*Feste Breite für die Tabs, kann geändert werden*/ } *|*:root { --tab-toolbar-navbar-overlap: 0 !important; --tab-min-height: 21px !important; } /*Keine Abstände um den Tab rum, die durch neuere Firefoxversionen enstanden sind*/ .tab-background { margin-block: 0px !important; } #urlbar { margin-top: -2px !important; --urlbar-toolbar-height: 25px !imporant; --urlbar-height: 22px !important; } .tabbrowser-tab { min-height: 21px !important; max-height: 21px !important; padding: 0 0px !important; } #nav-bar { min-height: 22px !important; max-height: 22px !important; margin-top: -0px !important; } .tabbrowser-tab[visuallyselected="true"] > .tab-stack > .tab-background { border-top: 2px solid #429CE3 !important; } `; var sss = Components.classes['@mozilla.org/content/style-sheet-service;1'].getService(Components.interfaces.nsIStyleSheetService); var uri = makeURI('data:text/css;charset=UTF=8,' + encodeURIComponent(css)); sss.loadAndRegisterSheet(uri, sss.AUTHOR_SHEET); if(location.href !== 'chrome://browser/content/browser.xhtml') return; // Tabbar scrollIntoView gBrowser.tabContainer.addEventListener("SSTabRestoring", function(event) {event.target.scrollIntoView({behavior: "instant", block: "nearest", inline: "nearest"})}, true); gBrowser.tabContainer.addEventListener("TabAttrModified", function(event) {event.target.scrollIntoView({behavior: "instant", block: "nearest", inline: "nearest"})}, true); gBrowser.tabContainer.addEventListener("TabMove", function(event) {event.target.scrollIntoView({behavior: "instant", block: "nearest", inline: "nearest"})}, true); // drag & drop & DropIndicator gBrowser.tabContainer.on_dragover = function(event) { var effects = this.getDropEffectForTabDrag(event); var ind = this._tabDropIndicator; if (effects == "" || effects == "none") { ind.hidden = true; return; } event.preventDefault(); event.stopPropagation(); var arrowScrollbox = this.arrowScrollbox; if (effects == "link") { let tab = this._getDragTargetTab(event, { ignoreTabSides: true }); if (tab) { if (!this._dragTime) { this._dragTime = Date.now(); } if (Date.now() >= this._dragTime + this._dragOverDelay) { this.selectedItem = tab; } ind.hidden = true; return; } } var rect = arrowScrollbox.getBoundingClientRect(); var newMarginX, newMarginY; let newIndex = this._getDropIndex(event); let children = this.allTabs; if (newIndex == children.length) { let tabRect = this._getVisibleTabs().at(-1).getBoundingClientRect(); if (RTL_UI) { newMarginX = rect.right - tabRect.left; } else { newMarginX = tabRect.right - rect.left; } newMarginY = tabRect.top - rect.top + tabRect.height / 2 - rect.height / 2; } else { let tabRect = children[newIndex].getBoundingClientRect(); if (RTL_UI) { newMarginX = rect.right - tabRect.right; } else { newMarginX = tabRect.left - rect.left; } newMarginY = tabRect.top - rect.top + tabRect.height / 2 - rect.height / 2; } ind.hidden = false; newMarginX += ind.clientWidth / 2; if (RTL_UI) { newMarginX *= -1; } ind.style.transform = "translate(" + Math.round(newMarginX) + "px," + Math.round(newMarginY) + "px)"; } gBrowser.tabContainer.on_drop = function(event) { var dt = event.dataTransfer; var dropEffect = dt.dropEffect; var draggedTab; let movingTabs; if (dt.mozTypesAt(0)[0] == TAB_DROP_TYPE) { // tab copy or move draggedTab = dt.mozGetDataAt(TAB_DROP_TYPE, 0); // not our drop then if (!draggedTab) { return; } movingTabs = draggedTab._dragData.movingTabs; draggedTab.container._finishGroupSelectedTabs(draggedTab); } this._tabDropIndicator.hidden = true; event.stopPropagation(); if (draggedTab && dropEffect == "copy") { // copy the dropped tab (wherever it's from) let newIndex = this._getDropIndex(event); let draggedTabCopy; for (let tab of movingTabs) { let newTab = gBrowser.duplicateTab(tab); gBrowser.moveTabTo(newTab, newIndex++); if (tab == draggedTab) { draggedTabCopy = newTab; } } if (draggedTab.container != this || event.shiftKey) { this.selectedItem = draggedTabCopy; } } else if (draggedTab && draggedTab.container == this) { let oldTranslateX = Math.round(draggedTab._dragData.translateX); let tabWidth = Math.round(draggedTab._dragData.tabWidth); let translateOffset = oldTranslateX % tabWidth; let newTranslateX = oldTranslateX - translateOffset; if (oldTranslateX > 0 && translateOffset > tabWidth / 2) { newTranslateX += tabWidth; } else if (oldTranslateX < 0 && -translateOffset > tabWidth / 2) { newTranslateX -= tabWidth; } let dropIndex; if (draggedTab._dragData.fromTabList) { dropIndex = this._getDropIndex(event); } else { dropIndex = this._getDropIndex(event); // "animDropIndex" in draggedTab._dragData && // draggedTab._dragData.animDropIndex; } let incrementDropIndex = true; if (dropIndex && dropIndex > movingTabs[0]._tPos) { dropIndex--; incrementDropIndex = false; } if (oldTranslateX && oldTranslateX != newTranslateX && !gReduceMotion) { for (let tab of movingTabs) { tab.setAttribute("tabdrop-samewindow", "true"); tab.style.transform = "translateX(" + newTranslateX + "px)"; let postTransitionCleanup = () => { tab.removeAttribute("tabdrop-samewindow"); this._finishAnimateTabMove(); if (dropIndex !== false) { gBrowser.moveTabTo(tab, dropIndex); if (incrementDropIndex) { dropIndex++; } } gBrowser.syncThrobberAnimations(tab); }; if (gReduceMotion) { postTransitionCleanup(); } else { let onTransitionEnd = transitionendEvent => { if ( transitionendEvent.propertyName != "transform" || transitionendEvent.originalTarget != tab ) { return; } tab.removeEventListener("transitionend", onTransitionEnd); postTransitionCleanup(); }; tab.addEventListener("transitionend", onTransitionEnd); } } } else { this._finishAnimateTabMove(); if (dropIndex !== false) { for (let tab of movingTabs) { gBrowser.moveTabTo(tab, dropIndex); if (incrementDropIndex) { dropIndex++; } } } } } else if (draggedTab) { // Move the tabs. To avoid multiple tab-switches in the original window, // the selected tab should be adopted last. const dropIndex = this._getDropIndex(event); let newIndex = dropIndex; let selectedTab; let indexForSelectedTab; for (let i = 0; i < movingTabs.length; ++i) { const tab = movingTabs[i]; if (tab.selected) { selectedTab = tab; indexForSelectedTab = newIndex; } else { const newTab = gBrowser.adoptTab(tab, newIndex, tab == draggedTab); if (newTab) { ++newIndex; } } } if (selectedTab) { const newTab = gBrowser.adoptTab( selectedTab, indexForSelectedTab, selectedTab == draggedTab ); if (newTab) { ++newIndex; } } // Restore tab selection gBrowser.addRangeToMultiSelectedTabs( gBrowser.tabs[dropIndex], gBrowser.tabs[newIndex - 1] ); } else { // Pass true to disallow dropping javascript: or data: urls let links; try { links = browserDragAndDrop.dropLinks(event, true); } catch (ex) {} if (!links || links.length === 0) { return; } let inBackground = Services.prefs.getBoolPref( "browser.tabs.loadInBackground" ); if (event.shiftKey) { inBackground = !inBackground; } let targetTab = this._getDragTargetTab(event, { ignoreTabSides: true }); let userContextId = this.selectedItem.getAttribute("usercontextid"); let replace = !!targetTab; let newIndex = this._getDropIndex(event); let urls = links.map(link => link.url); let csp = browserDragAndDrop.getCsp(event); let triggeringPrincipal = browserDragAndDrop.getTriggeringPrincipal(event); (async () => { if ( urls.length >= Services.prefs.getIntPref("browser.tabs.maxOpenBeforeWarn") ) { // Sync dialog cannot be used inside drop event handler. let answer = await OpenInTabsUtils.promiseConfirmOpenInTabs( urls.length, window ); if (!answer) { return; } } gBrowser.loadTabs(urls, { inBackground, replace, allowThirdPartyFixup: true, targetTab, newIndex, userContextId, triggeringPrincipal, csp, }); })(); } if (draggedTab) { delete draggedTab._dragData; } } }