Czy można zregenerować profile profile.ini firefox z istniejących profili?

4

Niedawno przypadkowo zapełniłem partycję domową w Ubuntu. Zanim zdałem sobie sprawę z tego, co się stało, uruchomiłem ponownie Firefoksa, ponieważ działał dziwnie (co zrozumiałe).

Teraz, kiedy uruchamiam Firefoksa z Menedżerem profili (używając -p), nie wyświetla on żadnego z moich istniejących profili. Sprawdziłem i wszystkie foldery profili nadal tam są, ale mój plik profile.ini jest w zasadzie pusty. Zakładam, że został przypadkowo wygaszony, gdy partycja była pełna.

Próbowałem usunąć profile.ini, ale po prostu został zregenerowany pusty. Czy można zregenerować moje profile.ini w oparciu o istniejące foldery profilów, czy będę musiał po prostu ręcznie je odbudować (dokumenty mozilla pokazują format, więc nie wygląda to zbyt trudne, szukam tylko leniwa opcja).

Rob Van Dam
źródło

Odpowiedzi:

4

Trochę bashowej miłości; nazwij to jak chcesz. Użyłem thescript.sh

#!/bin/bash

echo '[General]'
echo 'StartWithLastProfile=1'
echo ''

n=0

for file in * ; do
  if [ -d $file ] ; then
     if [[ "$file" =~ .+\.(.+) ]] ; then
        echo "[Profile${n}]"
        echo "Name=${BASH_REMATCH[1]}"
    echo "IsRelative=1"
    echo "Path=${file}"
    if [[ ${BASH_REMATCH[1]} == default ]] ; then
       echo "Default=1"
    fi
    echo ""
    let n++
     fi
  fi
done

Stosowanie

Najpierw umieść go w katalogu profili Mozilli (np. ~ / .Mozilla / firefox dla mnie).

chmod +x thescript.sh
./thescript.sh
./thescript.sh > profiles.ini

Wynik

nex@Computer:~/.mozilla/firefox
> ./thescript.sh 
[General]
StartWithLastProfile=1

[Profile0]
Name=default
IsRelative=1
Path=03k202kd.default
Default=1

[Profile1]
Name=test
IsRelative=1
Path=a023lkdl.test


nex@Computer:~/.mozilla/firefox
> ./thescript.sh > profiles.ini
Sam
źródło
1
Fajnie, powinienem też wspomnieć o tym, jak używać mojego.
Rob Van Dam
2

Nie mogę znaleźć niczego google, więc napisałem skrypt perla:

#!/usr/bin/perl

use strict;
use warnings;

my $dir = glob($ARGV[0] || '~/.mozilla/firefox/');

chdir $dir or die "Unable to change to dir $dir: $!";
opendir my $dh, $dir or die "Unable to open dir $dir: $!";
my @dirs = grep { /^[^.]/ && -d $_ } readdir $dh;

# print some boilerplate
print <<'START';
[General]
StartWithLastProfile=0

START

# try to sort by oldest first (uses a schwartzian transform)
# the 'chrome' folder in each profile folder seems to be the oldest file per profile generally
@dirs = reverse
        map { $_->[0] }
        sort { $a->[1] <=> $b->[1] || $a->[0] cmp $b->[0] }
        map { [ $_, -C "$_/chrome" ] }
        grep { -e "$_/chrome" } @dirs;

my $i = 0;
foreach my $profile_dir (@dirs) {
    # folder names are usually of the form zyxwabc.My Profile Name
    my ($name) = $profile_dir =~ /^[^.]+\.(.*)/;
    next if ! $name;

    print <<"PROFILE";
[Profile$i]
Name=$name
IsRelative=1
Path=$profile_dir

PROFILE

    $i++;
}
Rob Van Dam
źródło