Klicke ich jetzt auf: Downloads, dann wird die Datei geöffnet und gespeichert
Das stimmt im Nightly, "Datei speichern", und wird dann mit verknüpftem Prog geöffnet. ![]()
Klicke ich jetzt auf: Downloads, dann wird die Datei geöffnet und gespeichert
Das stimmt im Nightly, "Datei speichern", und wird dann mit verknüpftem Prog geöffnet. ![]()
Ändere ich diesen Eintrag wieder auf die alte Version, dann ist alles ok
Das stimmt.
Ich vermute mal, dass da etwas mit der Pfadangabe nicht übereinstimmt. ![]()
Nun habe ich festgestellt, da ist doch noch Sand im Getriebe, denn es wird zwar alles sauber dargestellt, aber bei der Auswahl eines bestimmten Download-Ordners (Klick darauf) passiert nichts mehr. Das betrifft dann alle Versionen von Firefox, auch mit Deinem Script.
Hier das Script, dass zur Anwendung kommt, was muss da noch angepasst werden?
// ==UserScript==
// @include chrome://mozapps/content/downloads/unknownContentType.xhtml
// @charset UTF-8
// @version Fx114+
// ==/UserScript==
(function () {
const Cu = Components.utils;
if (!window.FileUtils) ChromeUtils.importESModule('resource://gre/modules/FileUtils.sys.mjs');
if (!window.Services) Cu.import('resource://gre/modules/Services.jsm');
setTimeout(function () {
saveTo();
}, 200);
function saveTo() {
// Config
const dirArray = [
//[FileUtils.getDir('UChrm', []).path, 'chrome'],
['D:\\Download Firefox', 'Download Firefox'],
['D:\\Download Firefox\\Dokumente'],
['D:\\Download Firefox\\Bilder'],
['D:\\Download Firefox\\Software'],
['D:\\Download Firefox\\Ablage'],
['D:\\Download Firefox\\Sonstiges'],
["C:\\", "C:"],
["E:\\", "E:"],
];
const button = document.getElementById('unknownContentType').getButton('cancel');
const saveTo = button.parentNode.insertBefore(document.createXULElement('button'), button);
const saveToMenu = saveTo.appendChild(document.createXULElement('menupopup'));
saveTo.classList.toggle('dialog-button');
saveTo.label = 'Speichern nach';
saveTo.type = 'menu';
const css =`
hbox.dialog-button-box button.dialog-button menupopup {
background: gold !important;
min-width: 220px !important;
padding: 5px !important;
margin: 15px 0 0 -62px !important;
border: 3px solid dodgerblue !important;
}
hbox.dialog-button-box button.dialog-button menupopup menuitem{
appearance: none !important;
color: blue !important;
background: #fefefc !important;
border: 1px solid silver !important;
margin-top: 1px !important;
border-radius: 7px !important;
padding-left: 12px !important;
}
hbox.dialog-button-box button.dialog-button menupopup menuitem:hover {
background: greenyellow !important;
border: 1px solid red !important;
}
hbox.dialog-button-box button.dialog-button menupopup menuitem.menuitem-iconic label.menu-iconic-text {
color: blue !important;
font-size: 15px !important;
font-weight: 600 !important;
margin-left: 12px !important;
margin-top: 1px !important;
} `;
const sss = Cc['@mozilla.org/content/style-sheet-service;1'].getService(Ci.nsIStyleSheetService);
const uri = Services.io.newURI('data:text/css,' + encodeURIComponent(css));
sss.loadAndRegisterSheet(uri, sss.AGENT_SHEET);
dirArray.forEach(function (directory) {
const [name, dir] = [directory[1], directory[0]];
const mi = document.createXULElement('menuitem');
const item = saveToMenu.appendChild(mi);
item.setAttribute('label', (name || (dir.match(/[^\\/]+$/) || [dir])[0]));
item.setAttribute('image', 'moz-icon:file:///' + dir + '\\');
item.setAttribute('class', 'menuitem-iconic');
item.addEventListener('command', function () {
const locationtext = document.getElementById('locationtext');
const pathFile = dir + '\\' + (locationtext ? locationtext.value : document.getElementById('location').value);
const file = new FileUtils.File(pathFile);
dialog.mLauncher.saveDestinationAvailable(file);
dialog.onCancel = function () {};
close();
});
});
}
}());
Alles anzeigen
Auch ich schließe mich meinen Vorrednern an, du hast das mehr als gut gemacht
Danke, Andreas, nun ist aber auch genug.
Du weißt ja genau, alles habe ich hier von Euch (damit meine ich die Gemeinschaft hier) gelernt. Musste oft Lehrgeld bezahlen, aber der Ehrgeiz treibt vorwärts.
Schließe mich den Worten von BrokenHeart voll und ganz an.
Klasse Arbeit!!!
Danke, Endor, die Worte eines weiteren "Meisters" nehme ich mit Freude auf (da läuft man ja schamviolett an
).
Wow...da hast du dir ja richtig Mühe gegeben mit deinem angepassten FF.
Danke, die Worte eines "Meisters" nehme ich gerne an. ![]()
Allerdings merke ich keinen Unterschied
Zur Kontrolle brauchst du doch nur mal andere Farbwerte (RGB) eintragen, dann siehst du doch, ob der Code arbeitet.
Ändert sich nichts, dann auf zur Fehlersuche.
Hat man als Nicht-Programmierer die Möglichkeit, die Schriftart und den genauen Farbcode von gewissen Bereichen rauszufinden?
Machen kann man sehr viel, Anleitungen gibt es hier in Hülle und Fülle. Lesen, lernen, probieren, fragen!
Hier hast du mal einen Screenshot zu meinen veränderten Tabs:
Wenn du damit basteln möchtest, hier der Code dazu, gehört in die userChrome.css.
/* nur in Verbindung mit MultiRowTabs.uc.js by BrokenHeart */
#nav-bar{
appearance: none !important;
background-image: none !important;
background-color: #C2D3ED !important;
border-top: 1px solid grey !important;
border-bottom: 1px solid grey !important;
box-shadow: none !important;
}
/* Icon im Tab versetzt */
#TabsToolbar .tab-icon-image {
/* height: 15px !important;
width: 15px !important; */
margin-left: -3px !important;
margin-bottom: 0px !important;
}
.tabbrowser-tab{
margin-left:-3px !important;
box-shadow: none !important;
}
/* Tab-Hintergrund */
/*--- selektiert ---*/
.tab-background[selected=true]{
filter: none !important;
border: 1px solid blue !important;
min-height: 24px !important;
max-height: 24px !important;
margin-top: 0px !important;
background: linear-gradient(45deg, gold, white, beige, orange) !important;
}
/*--- hover: Multi selektiert ---*/
.tabbrowser-tab:hover > .tab-stack > .tab-background[multiselected=true]:not([selected=true]) {
filter: brightness(130%) contrast(100%) !important;
}
/*--- Multi selektiert ---*/
.tab-background[multiselected=true]:not([selected=true]) {
filter: brightness(130%) saturate(50%) !important;
}
/* aktiver Tab bei Hover dunkler*/
#main-window .tabbrowser-tab[selected]:hover {
opacity: .5 !important;
}
/* inaktiver Tab */
.tab-background:not([selected=true]) {
background: linear-gradient( 0.35turn, grey, lightblue, white, white, lightblue, grey) !important;
border: 1px solid grey !important;
min-height: 24px !important;
max-height: 24px !important;
}
/* Tabschliessen-Button ** nur zu sehen bei Mouseover */
.tab-close-button {
opacity: 0 !important;
}
.tabbrowser-tab:hover .tab-close-button {
opacity: 1 !important;
color: red !important;
display: block !important;
}
/*Tab schließen Button verschoben bei Tabstext mittig*/
.tabbrowser-tab > .tab-stack > .tab-content > .tab-close-button {
flex-shrink: 0 !important;
margin-right:-6px !important;
width: 20px !important;
height: 20px !important;
/* display: none !important; */ /* wird total ausgeblendet */
}
/* Tabtext zentriert */
.tab-label-container {
height: unset !important;
display: grid !important;
justify-items: safe center !important;
justify-content: safe center !important;
}
.tab-label {
justify-content: center !important;
overflow: hidden !important;
}
/* Tabtext nicht verschoben bei hover */
.tabbrowser-tab > .tab-stack > .tab-content > .tab-close-button {
padding-inline-start: 7px !important;
width: unset !important;
}
/*Tabtext beim Laden blau*/
.tabbrowser-tab[busy] .tab-label {
color: blue !important;
}
/* Schrift aktiver Tab */
.tabbrowser-tab[visuallyselected="true"] .tab-label {
font-weight: bold !important;
color: blue !important;
font-size: 1.3em !important;
font-family: "Verdana, Helvetica", serif !important;
font-style: italic !important;
/* margin-top: 1px !important; */
}
/* Hintergrund Navigations- und Lesezeichensymbolleiste ausgeblendet */
#PersonalToolbar {
background: none !important;
opacity: 1.0 !important;
border: none !important;
margin-top: 2px !important;
}
/* Abstand der Tabs zur Lesezeichen-Symbolleiste */
#TabsToolbar{
margin-top: 4px !important;
margin-bottom: -1px !important;
}
/* Abstand Menü-Bar zur Url-Bar */
#toolbar-menubar {
margin-bottom: 0px !important;
margin-top: 1px !important;
}
/* graue Linie der Tabs-Toolbar entfernt */
/* #nav-bar{
box-shadow: none !important;
} */
#TabsToolbar #tabs-newtab-button:hover > image {
background-color: grey !important;
}
Alles anzeigen
Hm, der Fehler lag natürlich an mir. Ich hatte überlesen, dass ich den Scriptcache löschen muss und nach Starten im abgesicherten Modus hat es funktioniert
![]()
Jetzt kann ich die Tabs endlich auch wieder verschieben
Alles wird gut, nicht immer gleich aufgeben.
Aktuell bin ich nur am Grübeln wie ich den Look der orig. Firefox Tableiste hinbekommen könnte. Hinsichtlich Schriftart und dem unauffälligen Tabrahmen
Das Script ist nun mal von seinem Ersteller ( BrokenHeart) so aufgebaut, dass man im Normalfall nichts weiter anpassen muss.
Wenn es dir so nicht zusagt, dann hast du mächtig viel Arbeit vor dir, denn viele Einstellungen sind im Script schon vorhanden, und würden m.M.n. bei zusätzlichen Änderungen mehr Schaden anrichten, als dass es zu besseren Ergebnissen führen würde.
Für meine Zwecke habe ich nur in einer zusätzlichen css-Datei die Farben der Tabs verändert.
Habt ihr irgendwelche Tipps und Lösungsansätze für mich?
Funktionieren denn andere Scripte?
Wenn nicht , dann sollte das nachgeholt werden:
In finalen Versionen nicht vor Firefox 117
Danke, Sören, ist registriert.
Ab Version 115 gibt es diesen Button, der bei Inaktivität den Text leicht Grau erscheinen lässt. Erst wenn eine Seite aufgerufen wird, so erhöht sich der Kontrast.
Nun möchte ich nur bei Aktivität die Farbe ändern, was mir nicht gelingen will. Mit dem Code wird die Farbe generell angesprochen:
#appMenu-translate-button { /* Seite übersetzen */
color: blue !important;
font-weight: bold !important; }
Was muss da zusätzlich eingetragen werden. Bitte helfen.
Die Nightly vom 8. (gestern) ist teilweise englisch
Gerade bereinigt, wieder Deutsch.
Bei beiden Skripten?
Ja, milupo, alles bestens. Danke! ![]()
Das ist dein Skript, ich musste Zeile 18 auskommentieren.
Ich habe sie ganz raus genommen, und siehe da, das war der Übeltäter.
Ich habe hier z. B. noch das Skript Appmenu.uc.js, das ein Menü Firefox mit verschiedenen Einträgen anlegt, wie es wohl mal bis Firefox 4? war. Dort bitte mal Folgendes ersetzen:
In zwei Profilen nutze ich das Script auch, wo ich für den Aufruf der Browser-Werkzeuge bisher den Code verwendet habe:
{
name: 'Browser-Werkzeuge',
subdir: 'Firefox Funktionen',
command: "var { require } = ChromeUtils.import('resource://devtools/shared/Loader.jsm', {});\
var { BrowserToolboxLauncher } = require('resource://devtools/client/framework/browser-toolbox/Launcher.jsm');\
BrowserToolboxLauncher.init();",
},
Button und Icon alles da, nur der Aufruf schlägt fehl. Auch mit den von Dir gezeigten Änderungen dazu.
Wie müsste der Eintrag denn genau aussehen?
Edit:
Danke, hat sich erledigt. Habe immer v114 versucht, da funktioniert es natürlich noch nicht, aber im Nightly schon.
Teste bitte mal mein Skript
Das funktioniert, was ist denn da wieder los. Muss ich mal auf Spurensuche, danke, Andreas.
Hast du das so eingetragen?
Im aktuellen Nightly:
// ==UserScript==
// @include chrome://mozapps/content/downloads/unknownContentType.xhtml
// @charset UTF-8
// @version Fx104+
// ==/UserScript==
(function () {
const Cu = Components.utils;
if (!window.FileUtils) ChromeUtils.importESModule('resource://gre/modules/FileUtils.sys.mjs');
if (!window.Services) Cu.import('resource://gre/modules/Services.jsm');
setTimeout(function () {
saveTo();
}, 200);
function saveTo() {
// Config
const dirArray = [
[FileUtils.getDir('UChrm', []).path, 'chrome'],
['D:\\Download Firefox', 'Download Firefox'],
['D:\\Download Firefox\\Dokumente'],
['D:\\Download Firefox\\Bilder'],
['D:\\Download Firefox\\Software'],
['D:\\Download Firefox\\Ablage'],
['D:\\Download Firefox\\Sonstiges'],
["C:\\", "C:"],
["E:\\", "E:"],
];
const button = document.getElementById('unknownContentType').getButton('cancel');
const saveTo = button.parentNode.insertBefore(document.createXULElement('button'), button);
const saveToMenu = saveTo.appendChild(document.createXULElement('menupopup'));
saveTo.classList.toggle('dialog-button');
saveTo.label = 'Speichern nach';
saveTo.type = 'menu';
const css =`
hbox.dialog-button-box button.dialog-button menupopup {
background: gold !important;
min-width: 220px !important;
padding: 5px !important;
margin: 15px 0 0 -62px !important;
border: 3px solid dodgerblue !important;
}
hbox.dialog-button-box button.dialog-button menupopup menuitem{
appearance: none !important;
color: blue !important;
background: #fefefc !important;
border: 1px solid silver !important;
margin-top: 1px !important;
border-radius: 7px !important;
padding-left: 12px !important;
}
hbox.dialog-button-box button.dialog-button menupopup menuitem:hover {
background: greenyellow !important;
border: 1px solid red !important;
}
hbox.dialog-button-box button.dialog-button menupopup menuitem.menuitem-iconic label.menu-iconic-text {
color: blue !important;
font-size: 15px !important;
font-weight: 600 !important;
margin-left: 12px !important;
margin-top: 1px !important;
} `;
const sss = Cc['@mozilla.org/content/style-sheet-service;1'].getService(Ci.nsIStyleSheetService);
const uri = Services.io.newURI('data:text/css,' + encodeURIComponent(css));
sss.loadAndRegisterSheet(uri, sss.AGENT_SHEET);
dirArray.forEach(function (directory) {
const [name, dir] = [directory[1], directory[0]];
const mi = document.createXULElement('menuitem');
const item = saveToMenu.appendChild(mi);
item.setAttribute('label', (name || (dir.match(/[^\\/]+$/) || [dir])[0]));
item.setAttribute('image', 'moz-icon:file:///' + dir + '\\');
item.setAttribute('class', 'menuitem-iconic');
item.addEventListener('command', function () {
const locationtext = document.getElementById('locationtext');
const pathFile = dir + '\\' + (locationtext ? locationtext.value : document.getElementById('location').value);
const file = new FileUtils.File(pathFile);
dialog.mLauncher.saveDestinationAvailable(file);
dialog.onCancel = function () {};
close();
});
});
}
}());
Alles anzeigen
Was die Zeilen in deinen beiden Skripten angeht, so gilt für saveTo104+.uc.js ab Firefox 113:
Leider funktioniert es dann nicht mehr, weil der Button nicht mehr angezeigt wird. Hat wer einen Tipp dazu?
Danke für Deine Hinweise, werde ich abends dann verarbeiten, melde mich dann wieder
Dann entschuldige ich mich noch für das Durcheinander, dass ich mit dem Script userChromeShadow.uc.js angerichtet habe.
Es ist nämlich so, dass ich zwei Scripte vereinigt habe, dort ist auch dieses enthalten, hat aber mit der Thematik nichts zu tun, dafür ist der zweite Teil zuständig.
// userChromeShadow.uc.js by aborix
// 28.07.2022 FF104+ Fix: using PathUtils.join (Sören Hentzschel)
// https://www.camp-firefox.de/forum/thema/132865-shadowroot-neue-aufruf-methode-f%C3%BCr-css-regeln-wichtiges-update-28-07-2022/?postID=1175307#post1175307
(async function() {
if (location != 'chrome://browser/content/browser.xhtml') return;
try {
let path = PathUtils.join(PathUtils.profileDir, 'chrome', 'userChromeShadow.css');
let cssIn = await IOUtils.readUTF8(path);
let sss = Cc['@mozilla.org/content/style-sheet-service;1'].getService(Ci.nsIStyleSheetService);
let uri = makeURI('data:text/css;charset=UTF=8,' + encodeURIComponent(cssIn));
sss.loadAndRegisterSheet(uri, sss.AUTHOR_SHEET);
} catch(e) {
console.log("UserChromeShadow-Error: " + e.name + ': ' + e.message );
};
})();
// legt einen Button für userShadow.css (im Ordner chrome) an, und ruft die Datei direkt auf
(function() {
if (location != AppConstants.BROWSER_CHROME_URL) return;
try {
//ChromeUtils.importESModule("resource:///modules/CustomizableUI.sys.mjs");
Components.utils.import("resource:///modules/CustomizableUI.jsm");
CustomizableUI.createWidget({
id: "OpenCSSShadowbutton",
defaultArea: CustomizableUI.AREA_NAVBAR,
removable: true,
label: "OpenCSSShadowbutton",
tooltiptext: "userChromeShadow.css",
onClick: function(event) {
if (event.button != 0){
return;
}
var dir = Services.dirsvc.get('UChrm', Ci.nsIFile);
dir.append('userChromeShadow.css');
// dir.append('Test.css');
dir.launch();
},
onCreated: function(aNode) {
aNode.style.listStyleImage = 'url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAIAAACQkWg2AAABqUlEQVQokWP89OkTAymABc76+fb99YnzXuw7xsrP67RpLiMzMz4NXx8/2+eV8OXhE05JMW45KQYGRgI2nM6r//r4qemEeuX4ELjZf7//+PX+I6eUOLIGJgYGhm9PXrzYf1wuyEslKRyu+sW+Yxs0HDdqO3958ARDw9Pn///9EzbRRZY4XdjIwMCgXZbJKSmGroFdSJCBgeHL/ccI4f//v9x/LOFgqVuZzczOxvD//49Xb/7//QvVwKMkJ6Ctdm/xurdnLqF4kImRgYHh9+cv+3yTNqg53Ji8AKqBkZnJdEI9AwPDHvfYQ+HZ13pn/f//H67r5tRFLw+dlPFxFnewhGpgYGAQMTd03r5QxNzgxb6jN6ct/v/nL1zD5zsPmNjYzGe0CRloMSBHnJChjvO2hb8/f2VkYvzz5SsDAwMTKwsDA8N/BgZGRgZGRiaEp5EBKy/3wzXbNht6MjAwSDrbMGAAFixCXJx86koKod4KYT5EaZAP9ZYP9YZzf3/6wsDIyMjMhFMDHHx79vJQaOaHKzfF7S2YOdix+wEF/P/PyMoiH+JlOacTLgYAnMqRpg2c0p8AAAAASUVORK5CYII=)';
return aNode;
}
});
} catch (e) {
Components.utils.reportError(e);
};
})();
Alles anzeigen