Aber welche Dateien soll ich wieder im aktuellen Profil-Ordner kopieren, damit alles wieder beim Alten ist?
Von wo bitte hast Du was in Deinen Profilordner reinkopiert?
Was hast Du vorher am, oder im Profilordner gemacht?
Aber welche Dateien soll ich wieder im aktuellen Profil-Ordner kopieren, damit alles wieder beim Alten ist?
Von wo bitte hast Du was in Deinen Profilordner reinkopiert?
Was hast Du vorher am, oder im Profilordner gemacht?
Wenn Du weitere Details dazu benötigst, dann sag bitte an
Vielen Dank auch,
und das RestoreScript?
Was sind das denn für interessante PowerShell - Skripts?
Würdest Du die zur Verfügung stellen?
Das war ja nun aber zu erwarten. Ein Programm zu öffnen ist etwas völlig anderes als eine URL in Firefox zu öffnen. Dass eine Funktion, die das eine macht, nicht gleichzeitig auch das andere macht, ist naheliegend. In der von Horstmann verlinkten Datei dürfte eh schon die relevante Logik stehen, um Firefox mit einem bestimmten Profil zu öffnen. Da kann man sich bestimmt bedienen.
Jep, bin ich nach einigen Überlegungen auch drauf gekommen.
Gehe gerade der von Horstmann gelegten Spur nach!
Der Code, auf den verwiesen wird, lautet so:
Die Sache ist nur, es ist völlig egal von welchem Profil ich diesen Button "verfolge",
if (!profileData.isInUse) {
let runButton = document.createElement("button");
document.l10n.setAttributes(runButton, "profiles-launch-profile");
runButton.onclick = function () {
openProfile(profileData.profile);
};
div.appendChild(runButton);
}
Es wird immer auf diese Zeilen verwiesen.
Wie merkt die Anweisung, welche Profilinstanz geöffnet werden muss? ![]()
Ich glaube, es hängt mit diesem div zusammen.
Mh, ich glaube, ich bin auf der richtigen Spur.
Hier mal der ganze Code.
function display(profileData) {
let parent = document.getElementById("profiles");
let div = document.createElement("div");
parent.appendChild(div);
let name = document.createElement("h2");
div.appendChild(name);
document.l10n.setAttributes(name, "profiles-name", {
name: profileData.profile.name,
});
if (profileData.isCurrentProfile) {
let currentProfile = document.createElement("h3");
document.l10n.setAttributes(currentProfile, "profiles-current-profile");
div.appendChild(currentProfile);
} else if (profileData.isInUse) {
let currentProfile = document.createElement("h3");
document.l10n.setAttributes(currentProfile, "profiles-in-use-profile");
div.appendChild(currentProfile);
}
let table = document.createElement("table");
div.appendChild(table);
let tbody = document.createElement("tbody");
table.appendChild(tbody);
function createItem(title, value, dir = false) {
let tr = document.createElement("tr");
tbody.appendChild(tr);
let th = document.createElement("th");
th.setAttribute("class", "column");
document.l10n.setAttributes(th, title);
tr.appendChild(th);
let td = document.createElement("td");
tr.appendChild(td);
if (dir) {
td.appendChild(document.createTextNode(value.path));
if (value.exists()) {
let button = document.createElement("button");
button.setAttribute("class", "opendir");
document.l10n.setAttributes(button, "profiles-opendir");
td.appendChild(button);
button.addEventListener("click", function (e) {
value.reveal();
});
}
} else {
document.l10n.setAttributes(td, value);
}
}
createItem(
"profiles-is-default",
profileData.isDefault ? "profiles-yes" : "profiles-no"
);
createItem("profiles-rootdir", profileData.profile.rootDir, true);
if (profileData.profile.localDir.path != profileData.profile.rootDir.path) {
createItem("profiles-localdir", profileData.profile.localDir, true);
}
let renameButton = document.createElement("button");
document.l10n.setAttributes(renameButton, "profiles-rename");
renameButton.onclick = function () {
renameProfile(profileData.profile);
};
div.appendChild(renameButton);
if (!profileData.isInUse) {
let removeButton = document.createElement("button");
document.l10n.setAttributes(removeButton, "profiles-remove");
removeButton.onclick = function () {
removeProfile(profileData.profile);
};
div.appendChild(removeButton);
}
if (!profileData.isDefault) {
let defaultButton = document.createElement("button");
document.l10n.setAttributes(defaultButton, "profiles-set-as-default");
defaultButton.onclick = function () {
defaultProfile(profileData.profile);
};
div.appendChild(defaultButton);
}
if (!profileData.isInUse) {
let runButton = document.createElement("button");
document.l10n.setAttributes(runButton, "profiles-launch-profile");
runButton.onclick = function () {
openProfile(profileData.profile);
};
div.appendChild(runButton);
}
let sep = document.createElement("hr");
div.appendChild(sep);
}
Alles anzeigen
Die Zeilen 1 bis 12 scheinen mir wichtig zu sein.
Ah, profileData ist die Variable, die den Profilnamen "speichert".
Oh, nee, stop
Ist gar keine Variable!
Oh menno,
Zeile 25 so
onclick: 'if (event.button == 0) { \ openTrustedLinkIn("C:\Program Files (x86)\Mozilla Firefox\firefox.exe" -no-remote -P "nfl82a72.Standard-Benutzer", "tab");\ }; '
abgeändert funktioniert nicht.
"nfl82a72.Standard-Benutzer" wäre der Profilordnername gewesen!
Der Name des Profils lautet "Standard-Benutzer", aber auch so abgeändert, also ohne die Zahlenkolonne davor,
funktioniert auch nicht.
Ich bin DIE Heldin des Tages!
Ich habe so ein Skript, um die Page about:profiles aufzurufen, schon die ganze Zeit auf der Halde.
Habe es nur nicht genutzt.
Oh Herr ...
Hier:
// JavaScript Document
// QuickLinkButton-cf.uc.js
// Source file https://www.camp-firefox.de/forum/thema/135613-quicklink-button/?postID=1213791#post1213791
(function() {
if (location.href !== AppConstants.BROWSER_CHROME_URL) return;
try {
CustomizableUI.createWidget({
id: 'aboutprofiles-button',
type: 'custom',
defaultArea: CustomizableUI.AREA_NAVBAR,
onBuild: function(aDocument) {
let toolbaritem = aDocument.createElementNS('http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul', 'toolbarbutton');
let currentProfileDirectory = Services.dirsvc.get("ProfD", Ci.nsIFile).path.replace(/\\/g, "/"); // Pfadangabe zum Profilordner
let buttonicon = "users-rays.svg" // Name & Dateiendung des anzuzeigenden Symbols
let props = {
id: 'aboutprofiles-button',
class: 'toolbarbutton-1 chromeclass-toolbar-additional',
removable: 'true',
label: 'Quicklink: about:profile',
accesskey: '',
tooltiptext: 'Quicklink:\nabout:profiles',
style: 'list-style-image: url(chrome://browser/skin/fxa/avatar-empty.svg);',
// style: 'list-style-image: url("' + ("file:" + currentProfileDirectory + "/chrome/icons/" + buttonicon) +'");',
// onclick: "openTrustedLinkIn('about:about', 'tab')"
onclick: 'if (event.button == 0) { \ openTrustedLinkIn("about:profiles", "tab");\ }; '
};
for (var p in props)
toolbaritem.setAttribute(p, props[p]);
return toolbaritem;
}
});
} catch(e) { };
}) ();
Alles anzeigen
Ich würde es gerne so abgeändert haben, dass ich direkt damit mein Testprofil gestartet wird.
Mein Assistenzsystem ruft mir gerade zu "Gute Nacht" und ich denke ans schlafen. Funktioniert bestens.
Glückwunsch. ![]()
Alles anzeigenAm Skript selber, bzw. dessen Code musst Du doch gar nichts ändern!
Du bist also gezwungen es für Deine Verhältnisse anzupassen, das betrifft die Ordner selbst, die einzelnen Scripte, die CSS-Dateien, usw.
Z.B.:
Ab Zeile 37 - > die eigenen Bezeichnungen eintragen.
Ab Zeile 63 - > die eigenen Skripte eintragen.
Und dann noch die div. CSS Dateien, usw.
Oh, ich, ich, sorry.
Da habe ich mich aber total verwechselt, natürlich habe ich das so gemeint. ![]()
Probiere das mal, das ist das abgewandelte about:config-Skript:
JavaScript Alles anzeigen// about:profiles // Unicode変換前 → tooltiptext: 'About:Profiles anzeigen', CustomizableUI.createWidget({ id: 'aboutprofiles-button', type: 'custom', onBuild: function(aDocument) { let toolbaritem = aDocument.createXULElement('toolbarbutton'); let props = { id: 'aboutprofiles-button', class: 'toolbarbutton-1 chromeclass-toolbar-additional', label: 'About:Profiles', tooltiptext: 'About:Profiles öffnen', style: 'list-style-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAABOVJREFUeNrElm1MW1UYx597b2/pgMh4aSkMeakNMBacU7MYcLwkZnMB3fiwGL/MRaPGxLghTmY3dUzajJh9UKNBWTAxIQMW4Is6/TA2YRCziXFKKbFlvPYNyltb+jJ6e33O3W0sCzCBu3iTJ5yW0/P7P+c8z/8eiud5oCgKJHzos+f0NTRNn+A4Ll2pVILT6QSCCHNcpz8Q+ODCpw1mnMeTyZTEAth6Q8NEujpNXVq+D5QpKRBZPxgMgtk8Ale7r4HVOpnf+NWXfxMRMgkzJ/DJvNzc1JKSZ+H2n4PQ1/cr4E4IoUpVQeGuAsjISIemi83DOF+BEZRKAP3+Kd2r6Wo1wouh+3oPcKEQsCwLbrebZAxDpiG41t1NNh0Yhia/iZVSQExcXHxdaXkJZm4U4DTNIIiBxcVFOHf244M4Zzlq/nxkIJUABZ51qipFKWw7AdM0BTKZDMTyGo2GimKWpBTAkmJzezxAiKToiAi5nI3OeHrVs5OqAokAGYMZ4/geXCbUAMD6HSaZAC501z46egdU2PcsK0MRGDIG+HB43d9JdQTc0pLPAhSdlp2dBWaLRTh/GRZiZlYm1JysdZJWFIwHj4eMzxvqY/DjXSkEMPW6U988V/HivrxcLfyB/U+OQ6FQCCI0Gg0U7NwpfGZZBuw2B3R0dd0R23BLAlhV3ZUpmudUIS0FTz1eADdvG8Hv92H4QRETA0nbtwtihAJFPzAND4PJZEI/uFoTWWSzVszmGH4e11eVpfVOeeHmuB0eXbbDu9owTDhd0NvXb01ISEhCs98WFxsLHtId+Ljdi/1NXzfW4nAcw0l2YDMC2CzDT2P1h0rTf3cGwOYNwHKYhoGRUahgLBA2Xp9pbLr4MqkLUuSpanW80+EgPR/CWBTBcwROmmcjAqiUtxs1yuw8i+75Z2DA6QebJwChMA/LPAUBFGEy/QZTH1UW49wpDL/YZZT45iOCguL3oY12AZX01heP5eQXmvUvFMEPlvl/4bgsh8sveOYgSMmJ4Vgx7FHWGxGwaR+gkt78PEdT8KT5k8oi+N5M4P4oOAUu9xxYJ8yumQ/3HxC3Odr3+a34AJ1c23p0b37ut++U74EfMXO7l8BhJXzS4rLVHT4kbv3SRgpqvRqgk0+2vFK+Z3fzifJd0DY4Bw4suBC/Em5zTIL1zMFi8YXjui/7Bz5r7QCd+F7L0bIndjcfR3irCOdWgc+3NxwR22rD8LUEyBJPd7W/UfJ0VUVhBmY+i/Dg6vC28y/5/vrl1mbhqwlgEnWd7dX7i6pKtCpoM86Ccy34Jf0Rn/HGrYihbNZOZSsy13Verj5QfJjALxP40urw4FC/HuEDIjz4oEr/LwIYpa6j6bWyvWvA8Ubhdd+DG28YXJf030kBj/aBbTFx8ccqC3fcB+eFv95AEOHjEBzs1YtwYjSBrcKjd0ChVSaC04cr45mjxwhGQ7adwMemzBCac/S4Wg0tONcm9npYiotERADt8HjxBgOCyRABK+Cz9h77hWPHcZ5DSnj0EfCzswtjI9MzoJDLcXUG3D4fjAuZ23sRXi26nEdKeLQTJuBYqz7d0UkpYjPxRi24Izc9ecX+2etn8H8T4s2WA4mfiAByfU3G2IHxiLgzyyKUFNxC9Cv0YQgQLhriPU0uvkLDYqX7H0bmK+7z/+fzjwADAKjckmpp+9qUAAAAAElFTkSuQmCC)', onclick: 'if (event.button == 0) { \ openTrustedLinkIn("about:profiles", "tab"); \ }; ' }; for (let p in props) toolbaritem.setAttribute(p, props[p]); return toolbaritem; } });Hinter dem Base64-Code verbirgt sich noch das about:config-Symbol, ein Schraubenschlüssel oder was das ist. Kannst du ja durch ein anderes Symbol ersetzen. Ich musste das Symbol erst einmal aus dem Anpassen-Fenster holen.
Vielen lieben Dank.
Mal schauen, ob ich daraus noch etwas anderes machen kann.
Denn ich würde ja gerne direkt das Testprofil parallel starten können.
Der Gipfel der Faulheit würde erreicht werden, wenn jetzt noch der Klick auf den Button "Profil zusätzlich ausführen" durch das Skript ausgeführt würde.
Nein, erst wenn ein Assistenzsystem auf Zuruf Aktionen ausführt, besser noch, wenn man nur daran denkt!
Wenn ich das gewusst hätte, dass Du so ängstlich reagierst, dann wäre es eine Kleinigkeit gewesen, 800 Zeilen raus zu nehmen.
Aber Du bist doch sonst nicht so ängstlich eingestellt, wenn es um Anpassungen geht.
Du brauchst es ja nicht nehmen, Dich zwingt doch niemand dazu.
Das Problem ist, ich habe null Ahnung von JavaScript und CSS. Ich weiss nicht, ob man in deinem Script auch grosse Änderungen machen muss oder nicht.
Am Skript selber, bzw. dessen Code musst Du doch gar nichts ändern!
Wo nach Du nur schauen musst ist der CSS-Teil, den musst Du Dir anschauen
und vergleichen, ob Du eben jene Datei auch hast, und ob Du sie aufrufen möchtest.
Und dann musst Du nur den Pfad abgleichen und gegebenenfalls Deinem angleichen.
Ja, das ist der Weg!
Aber das möchte ich einfacher!
Ein Klick auf einen Button.
Eben ein Skript, mit dem ich anstellen kann, was halt meine Möglichkeiten so hergeben.
Sicher?
Der von ihm gepostete Code funktioniert nämlich anscheinend ungefähr wie in der Darstellung - du hast ihn doch bestimmt probiert?
Schäm, nein, hab ich nicht.
Dann ging es ihm doch wohl nur noch darum, das Systememoji "🗁" durch eine richtige Grafik zu ersetzen.
Aber auch da bin ich raus, zumal ich jetzt eine neue Baustelle habe.
Mitleser hat ja seine Lösung schon einmal hinbekommen, vielleicht hat er selber eine Idee.
Ne ne, hat er nicht, das ist nur eine erstellte Grafik zur Veranschaulichung, wie er es sich vorstellt.
Ich habe mal wieder eine etwas spezielle Idee.
Hin und wieder teste ich in einem anderen Profil, welches ich extra dafür angelegt habe, Skripte und/oder CSS-Code.
Jedoch musste ich dafür jedes Mal meinen Firefox beenden und mit diesem Testprofil neu starten.
Durch einen anderen Thread bin ich darauf gestoßen, dass man ja auch zwei Instanzen mit unterschiedlichem Profil starten, bzw. laufen lassen kann.
Nun habe ich getestet, ob ich in den verschiedenen Profilen auch ein Restart inkl. Speicherlöschung machen kann. Es geht.
So, nun meine Frage, hat jemand schon so ein Skript in Benutzung?
Oder muss es von Grund auf erst erstellt werden?
aber nicht um damit normal und produktiv zu arbeiten.
Kommt drauf an.
Du könntest in dem neuen Profil z.B. andere Lesezeichen haben.
Oder andere Erweiterungen..Skripte..Codes.
Ok, ist jetzt nur mein Empfinden, aber normal ist das nicht. ![]()
Aber soll ja nicht heißen, dass das andere User nicht so handhaben.
Und beruflich?
Wäre es da nicht sinnvoller, an ganz anderer Stelle die Systeme zu trennen?
Benutzerkonten des BS, oder eben halt eine zweite Installation mit entsprechendem anderem Profil?
Aber gut, jeder so wie er/sie mag.
Für kurze Tests finde ich das auf jeden Fall gut und werde es mal ausprobieren.
Alles anzeigenDass die gleichzeitige Nutzung von zwei
Unter about:profiles ein neues Profil erstellen.
Und dann einfach unten auf: Profil zusätzlich ausführen klicken.
Schon hast du 2 Profile gleichzeitig geöffnet.
Danke für die Erklärung.
Aber dieses Späßchen ist ja nicht das normale Vorgehen eines normalen Nutzers!
Das ist für Tests gut geeignet, aber nicht um damit normal und produktiv zu arbeiten.
Aber gut, dass ich das jetzt weiß, denn manchmal, wenn ich ein neues Skript oder neuen CSS-Code testen möchte,
habe ich bisher immer den Firefox beendet und mit dem Testprofil neu gestartet, um dann nach den Tests,
wieder zu meinem Standardprofil zu wechseln, um dann z.B. hier das Ergebnis zu verkünden.
...
Den Text zu verstecken bei diesen Vorgaben geht mit seinem Code if (menuCount == 0) {menuCount ='\xa0';}; und if (menuitemCount == 0) {menuitemCount ='\xa0';};, zugefügt zu meinem.
Dann müsste müsste er "nur" noch das Icon wegbekommen.
Oh, cool. ![]()
Wenn es das ' 🗁 ' aus seinem Code ist, sollte das auch so einfach gehen.
Ich weiß nur gerade nicht, an welcher Stelle es eingefügt werden muss.
Entferne doch mal die Symbole, bzw, den Code für diese und dann füge in der Zeile für das Anzeigen den "Buchstaben" 🗁 ein.
Wenn es aber durch eine Grafik ersetzt werden soll, geht es nur über das Script, und da bin ich definitiv überfordert.
Mach das aber nur, wenn Du auch wirklich Lust darauf hast.
Alles anzeigenÄh, ich habe BrokenHard zitiert.
Und mein Kommentar bezieht sich auch nur auf seinen Kommentar.
Achtung! =>
![]()
...
Hab halt 'nen empfindlichen Magen
Nein im Ernst, du hast schon viele gute Ideen gehabt und die auch so umgesetzt, dass wirklich sehr brauchbarer Code dabei herausgekommen ist
. Aber die Zeile in #34 ist wirklich in jeder Beziehung Mist. Du musst dann bei jeder zusätzlichen Verschachtelungsebene neuen Code anfügen, oder zur Sicherheit gleich 50x menu > menupopup >... schreiben. Vor allem wenn man bedenkt, dass es auch viel einfacher geht.
Also nichts für ungut, mir ist ja nur schlecht geworden und ich habe nicht k....n müssen, sonst hätte ich auch ein anderes Smiley benutzt.
Hey, war doch nur Spaß,
ich bin halt leider einfach nicht auf die einfache Lösung gekommen.
Aber dafür haben wir doch Dich. ![]()