graysky2 / profile-sync-daemon

Symlinks and syncs browser profile dirs to RAM thus reducing HDD/SDD calls and speeding-up browsers.
https://wiki.archlinux.org/index.php/Profile-sync-daemon
Other
898 stars 84 forks source link

Browser Support Request #369

Closed Ryonez closed 7 months ago

Ryonez commented 7 months ago

I've been looking at a new browser called Floorp.

I started looking at this when I was using Windows while looking at options, and with my recent shift to Linux, Garuda specifically, I've learned about about PSD. The hard way too, I transferred my Vivaldi configs and the copying kept erroring with an "Out of Space" error, took me a bit to track things down. I took the time to expand my tmpfs on ram rather than disable this, I just hit an edge case of that browser's folder being more than 6GB as I had subrofiles in use.

Cutting the ramble off, I am interested at looking into Floorp more, and would like to request it to be added as a supported browser in PSD.

graysky2 commented 7 months ago

You can do this via dropin. https://github.com/graysky2/profile-sync-daemon/pull/240

Ryonez commented 7 months ago

I've tried to make a config, and have been working on this for some time. Unfortunately it seems unable to detect the folders as being folders...

Config (floorp)

if [[ -d "$HOME"/.floorp ]]; then
    index=0
    PSNAME="$browser"
    while read -r profileItem; do
        if [[ $(echo "$profileItem" | cut -c1) = "/" ]]; then
            # path is not relative
            DIRArr[$index]="$profileItem"
        else
            # we need to append the default path to give a
            # fully qualified path
            DIRArr[$index]="$HOME/.floorp/$profileItem"
        fi
        (( index=index+1 ))
    done < <(grep '[Pp]'ath= "$HOME"/.floorp/profiles.ini | sed 's/[Pp]ath=//')
fi

check_suffix=1

And preview check (modified the psd script to get some debug values)

Profile-sync-daemon v6.50

systemd service: inactive
resync-timer:    inactive
sync on sleep:   disabled
use overlayfs:   disabled

Psd will manage the following per /home/ryonia/.config/psd/psd.conf:

/home/ryonia/.floorp/hjfio3go.Streaming
/home/ryonia/.floorp/9ufweg1a.Test
/home/ryonia/.floorp/v4wodteo.default
/home/ryonia/.floorp/6h6xzw1h.default-release
/home/ryonia/.firedragon/qb9j02vv.default
Have dir
Perm check.
browser/psname:  firedragon/firedragon
owner/group id:  ryonia/1000
sync target:     /home/ryonia/.firedragon/qb9j02vv.default
tmpfs dir:       /run/user/1000/psd/ryonia-firedragon-qb9j02vv.default
profile size:    4.0K
backup limit:    2
recovery dirs:   16 <- delete with the c option
dir path/size:  /home/ryonia/.firedragon/qb9j02vv.default-backup-crashrecovery-20231202_125101 (4.0K)
dir path/size:  /home/ryonia/.firedragon/qb9j02vv.default-backup-crashrecovery-20231201_003335 (4.0K)
dir path/size:  /home/ryonia/.firedragon/qb9j02vv.default-backup-crashrecovery-20231130_150734 (4.0K)
dir path/size:  /home/ryonia/.firedragon/qb9j02vv.default-backup-crashrecovery-20231130_143822 (4.0K)
dir path/size:  /home/ryonia/.firedragon/qb9j02vv.default-backup-crashrecovery-20231130_112219 (4.0K)
dir path/size:  /home/ryonia/.firedragon/qb9j02vv.default-backup-crashrecovery-20231130_103520 (4.0K)
dir path/size:  /home/ryonia/.firedragon/qb9j02vv.default-backup-crashrecovery-20231130_090030 (4.0K)
dir path/size:  /home/ryonia/.firedragon/qb9j02vv.default-backup-crashrecovery-20231130_084440 (4.0K)
dir path/size:  /home/ryonia/.firedragon/n52uw8zr.default-release-backup-crashrecovery-20231202_125101 (88M)
dir path/size:  /home/ryonia/.firedragon/n52uw8zr.default-release-backup-crashrecovery-20231201_003335 (77M)
dir path/size:  /home/ryonia/.firedragon/n52uw8zr.default-release-backup-crashrecovery-20231130_150734 (77M)
dir path/size:  /home/ryonia/.firedragon/n52uw8zr.default-release-backup-crashrecovery-20231130_143822 (77M)
dir path/size:  /home/ryonia/.firedragon/n52uw8zr.default-release-backup-crashrecovery-20231130_112219 (77M)
dir path/size:  /home/ryonia/.firedragon/n52uw8zr.default-release-backup-crashrecovery-20231130_103520 (77M)
dir path/size:  /home/ryonia/.firedragon/n52uw8zr.default-release-backup-crashrecovery-20231130_090030 (77M)
dir path/size:  /home/ryonia/.firedragon/n52uw8zr.default-release-backup-crashrecovery-20231130_084440 (77M)

/home/ryonia/.firedragon/n52uw8zr.default-release
Have dir
Perm check.
browser/psname:  firedragon/firedragon
owner/group id:  ryonia/1000
sync target:     /home/ryonia/.firedragon/n52uw8zr.default-release
tmpfs dir:       /run/user/1000/psd/ryonia-firedragon-n52uw8zr.default-release
profile size:    91M
backup limit:    2
recovery dirs:   16 <- delete with the c option
dir path/size:  /home/ryonia/.firedragon/qb9j02vv.default-backup-crashrecovery-20231202_125101 (4.0K)
dir path/size:  /home/ryonia/.firedragon/qb9j02vv.default-backup-crashrecovery-20231201_003335 (4.0K)
dir path/size:  /home/ryonia/.firedragon/qb9j02vv.default-backup-crashrecovery-20231130_150734 (4.0K)
dir path/size:  /home/ryonia/.firedragon/qb9j02vv.default-backup-crashrecovery-20231130_143822 (4.0K)
dir path/size:  /home/ryonia/.firedragon/qb9j02vv.default-backup-crashrecovery-20231130_112219 (4.0K)
dir path/size:  /home/ryonia/.firedragon/qb9j02vv.default-backup-crashrecovery-20231130_103520 (4.0K)
dir path/size:  /home/ryonia/.firedragon/qb9j02vv.default-backup-crashrecovery-20231130_090030 (4.0K)
dir path/size:  /home/ryonia/.firedragon/qb9j02vv.default-backup-crashrecovery-20231130_084440 (4.0K)
dir path/size:  /home/ryonia/.firedragon/n52uw8zr.default-release-backup-crashrecovery-20231202_125101 (88M)
dir path/size:  /home/ryonia/.firedragon/n52uw8zr.default-release-backup-crashrecovery-20231201_003335 (77M)
dir path/size:  /home/ryonia/.firedragon/n52uw8zr.default-release-backup-crashrecovery-20231130_150734 (77M)
dir path/size:  /home/ryonia/.firedragon/n52uw8zr.default-release-backup-crashrecovery-20231130_143822 (77M)
dir path/size:  /home/ryonia/.firedragon/n52uw8zr.default-release-backup-crashrecovery-20231130_112219 (77M)
dir path/size:  /home/ryonia/.firedragon/n52uw8zr.default-release-backup-crashrecovery-20231130_103520 (77M)
dir path/size:  /home/ryonia/.firedragon/n52uw8zr.default-release-backup-crashrecovery-20231130_090030 (77M)
dir path/size:  /home/ryonia/.firedragon/n52uw8zr.default-release-backup-crashrecovery-20231130_084440 (77M)

/home/ryonia/.mozilla/firefox/m2msu4f6.default
Have dir
Perm check.
browser/psname:  firefox/firefox
owner/group id:  ryonia/1000
sync target:     /home/ryonia/.mozilla/firefox/m2msu4f6.default
tmpfs dir:       /run/user/1000/psd/ryonia-firefox-m2msu4f6.default
profile size:    17M
backup limit:    2
recovery dirs:   none

/home/ryonia/.mozilla/firefox/5gq3pm5e.default
Have dir
Perm check.
browser/psname:  firefox/firefox
owner/group id:  ryonia/1000
sync target:     /home/ryonia/.mozilla/firefox/5gq3pm5e.default
Permissions are 755 on this profile.
Recommend a setting of 700 for increased privacy!
tmpfs dir:       /run/user/1000/psd/ryonia-firefox-5gq3pm5e.default
profile size:    1.2G
backup limit:    2
recovery dirs:   none

/home/ryonia/.config/chromium
/home/ryonia/.opera
/home/ryonia/.config/opera
/home/ryonia/.config/vivaldi
Have dir
Perm check.
browser/psname:  vivaldi/vivaldi-bin
owner/group id:  ryonia/1000
sync target:     /home/ryonia/.config/vivaldi
Permissions are 755 on this profile.
Recommend a setting of 700 for increased privacy!
tmpfs dir:       /run/user/1000/psd/ryonia-vivaldi
profile size:    6.3G
backup limit:    2
recovery dirs:   1 <- delete with the c option
dir path/size:  /home/ryonia/.config/vivaldi-backup-crashrecovery-20231202_125101 (6.1G)

/home/ryonia/.config/google-chrome
/home/ryonia/.config/otter

So it can see the profiles.ini, get the profile directory, but when it checks it can't find it. I've set the same perms as firedragon which it can see, but that didn't change anything.

If relevant, the section of code I added the check in:

  for browser in "${BROWSERS[@]}"; do
    load_env_for "$browser"
    for item in "${DIRArr[@]}"; do
      DIR="$item"
      echo "$DIR"
      BACKUP="$item-backup"
      suffix=
      if suffix_needed "$browser"; then
        suffix="-${item##*/}"
      fi
      UPPER="$VOLATILE/$user-$browser${suffix}-rw"
      if [[ -d "$DIR" ]]; then
        echo "Have dir"
        local CRASHArr=()
        while IFS= read -d '' -r backup; do
          CRASHArr=("${CRASHArr[@]}" "$backup")
        done < <(find "${DIR%/*}" -type d -name '*crashrecovery*' -print0 | sort -r -z)

        # get permissions on profile dir and be smart about it since symlinks are all 777
        echo "Perm check."
        [[ -f $PID_FILE ]] && TRUEP=$(stat -c %a "$BACKUP") || TRUEP=$(stat -c %a "$DIR")
Ryonez commented 7 months ago

Found the issue, as this was originally from windows, the End of Line formatting was Windows/Dos, it needed to be unix.

Must have inadvertently fixed it for my other browsers when getting them working.