pax_global_header00006660000000000000000000000064144133126030014507gustar00rootroot0000000000000052 comment=1eee28c31fa14c2c6f1f398814e3f1d85809b75c profile-cleaner-2.45/000077500000000000000000000000001441331260300145105ustar00rootroot00000000000000profile-cleaner-2.45/.gitignore000066400000000000000000000000301441331260300164710ustar00rootroot00000000000000/common/profile-cleaner profile-cleaner-2.45/INSTALL000066400000000000000000000017201441331260300155410ustar00rootroot00000000000000DEPENDENCIES bash>4 bc findutils parallel sqlite BUILDING Setup the via a make. $ make Running a `make install` as root will distribute the files to the filesystem. # make install USE A DISTRO PROVIDED PACKAGE ARCH LINUX Arch users may build the package directly with the provided PKGBUILD: https://aur.archlinux.org/packages/profile-cleaner CHAKRA Chakra users may build the package directly with the provided PKGBUILD: http://chakra-linux.org/ccr/packages.php?ID=4501 DEBIAN/MINT/UBUNTU Debian/Mint/Ubuntu users may use the PPA graysky maintains at this url: https://launchpad.net/~graysky/+archive/utils FEDORA Fedora users may use the rpms provided by graysky at this url: http://repo-ck.com/bench.htm#Fedora_RPMs GENTOO Gentoo users may use the ebuild provided by the laurentb overlay: http://gpo.zugaina.org/Overlays/laurentb/app-admin/profile-cleaner VOID LINUX Void users can download the package directly from the official repos. profile-cleaner-2.45/LICENSE000066400000000000000000000020401441331260300155110ustar00rootroot00000000000000Copyright (c) 2013-2023 graysky Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. profile-cleaner-2.45/Makefile000066400000000000000000000016301441331260300161500ustar00rootroot00000000000000VERSION = 2.45 PN = profile-cleaner PREFIX ?= /usr BINDIR = $(PREFIX)/bin MANDIR = $(PREFIX)/share/man/man1 ZSHDIR = $(PREFIX)/share/zsh/site-functions RM = rm SED = sed all: @echo -e '\033[1;32mSetting version\033[0m' @sed 's/@VERSION@/'$(VERSION)'/' common/$(PN).in > common/$(PN) install-bin: @echo -e '\033[1;32mInstalling main script, initd and config...\033[0m' install -Dm755 common/$(PN) "$(DESTDIR)$(BINDIR)/$(PN)" ln -s $(PN) "$(DESTDIR)$(BINDIR)/pc" install -d "$(DESTDIR)$(ZSHDIR)" install -m644 common/zsh-completion "$(DESTDIR)/$(ZSHDIR)/_pc" install-man: @echo -e '\033[1;32mInstalling manpage...\033[0m' install -Dm644 doc/pc.1 "$(DESTDIR)$(MANDIR)/pc.1" uninstall: $(RM) "$(DESTDIR)$(BINDIR)/$(PN)" $(RM) "$(DESTDIR)$(BINDIR)/pc" $(RM) "$(DESTDIR)/$(ZSHDIR)/_pc" install: install-bin install-man clean: $(RM) -f common/$(PN) .PHONY: install-bin install-man uninstall install clean profile-cleaner-2.45/README.md000066400000000000000000000071371441331260300157770ustar00rootroot00000000000000# Profile-cleaner Use profile-cleaner to reduce the size of browser profiles by organizing their sqlite databases using sqlite3's vacuum and reindex functions. The term "browser" is used loosely since profile-cleaner happily works on some email clients and newsreaders too. ## Supported Browsers * Brave (stable, beta, dev and nightly) (https://aur.archlinux.org/packages/brave-bin) * Chromium (stable, beta, and dev) * Conkeror * Edge * Falkon * Firefox (stable, beta, and aurora) * Google-chrome (stable, beta, and dev) * Heftig's version of Aurora (https://bbs.archlinux.org/viewtopic.php?id=117157) * Icecat * Icedove * Inox (https://bbs.archlinux.org/viewtopic.php?id=198763) * Librewolf * Midori * Newsboat * Palemoon * Qupzilla * Seamonkey * Thunderbird * Tor-browser * Vivaldi (stable and snapshot) ## Documentation Consult the man page. ## Installation from Source To build from source, see the included INSTALL text document. ## Installation from Distro Packages * ![logo](http://www.monitorix.org/imgs/archlinux.png "arch logo")Arch via the official package in [community] * ![logo](http://i.imgur.com/ooVjgFG.png "gentoo logo")Gentoo: See instructions below * ![logo](https://i.postimg.cc/13Jzxh5C/nix.png "nixos logo")NixOS: in the official repos * ![logo](http://wiki.codeblocks.org/images/8/8b/Slackware-logo_32.png "slack logo")Slackware: on [slackbuilds](http://slackbuilds.org/apps/profile-cleaner/) ### Gentoo Users Profile cleaner is in the main repo: emerge -av app-admin/profile-cleaner ### Other Distros If you are interested in packaging profile-cleaner for your favorite distro, please contact me. ## Dependencies * bash * bc * findutils * sqlite * parallel ## Sample Output and Results Using an "Uncleaned" Firefox Profile: Size before: 154.17 Mbytes Size after: 99.11 Mbytes $ profile-cleaner f /home/facade/.mozilla/firefox/zee52krz.default/cookies.sqlite reduced by .87 Mbytes /home/facade/.mozilla/firefox/zee52krz.default/signons.sqlite reduced by .41 Mbytes /home/facade/.mozilla/firefox/zee52krz.default/downloads.sqlite reduced by .56 Mbytes /home/facade/.mozilla/firefox/zee52krz.default/chromeappsstore.sqlite reduced by .03 Mbytes /home/facade/.mozilla/firefox/zee52krz.default/urlclassifier3.sqlite reduced by 43.10 Mbytes /home/facade/.mozilla/firefox/zee52krz.default/formhistory.sqlite reduced by .11 Mbytes /home/facade/.mozilla/firefox/zee52krz.default/addons.sqlite reduced by 0 Mbytes /home/facade/.mozilla/firefox/zee52krz.default/permissions.sqlite reduced by 0 Mbytes /home/facade/.mozilla/firefox/zee52krz.default/content-prefs.sqlite reduced by 0 Mbytes /home/facade/.mozilla/firefox/zee52krz.default/extensions.sqlite reduced by 0 Mbytes /home/facade/.mozilla/firefox/zee52krz.default/webappsstore.sqlite reduced by 0 Mbytes /home/facade/.mozilla/firefox/zee52krz.default/OfflineCache/index.sqlite reduced by 0 Mbytes /home/facade/.mozilla/firefox/zee52krz.default/search.sqlite reduced by 0 Mbytes /home/facade/.mozilla/firefox/zee52krz.default/places.sqlite reduced by 9.98 Mbytes firefox profile reduced by 55.06 Mbytes ## Speed Comparison 28-Nov-2012 Profile-cleaner has been rewritten to use GNU Parallel for processing. Here is a contrived example cleaning 6 firefox profiles comparing the classical version of Profile-cleaner which used for loops to process profiles to the new version: * There are a total of 312 M in the 6 "dirty" profiles. * Test machine is an Intel 3770K @ 4.50 GHz. * After cleaning there is a total of 213 M in the 6 "clean" profiles. new 4.07s user 0.42s system 318% cpu 1.411 total old 8.15s user 0.43s system 95% cpu 8.942 total Your mileage may vary. profile-cleaner-2.45/common/000077500000000000000000000000001441331260300160005ustar00rootroot00000000000000profile-cleaner-2.45/common/debian/000077500000000000000000000000001441331260300172225ustar00rootroot00000000000000profile-cleaner-2.45/common/debian/postinst000066400000000000000000000010361441331260300210300ustar00rootroot00000000000000#!/bin/sh set -e echo '--------------------------------------------------------------------------' echo ' Make sure that target browsers or email clients are not running when' echo ' invoking profile-cleaner. Failure to do so will result in the open files' echo ' NOT getting cleaned and reindexed.' echo echo ' $HOME/.config/profile-cleaner.conf will be created when the script is' echo ' called to run the first time. Edit it to select a color scheme.' echo '--------------------------------------------------------------------------' profile-cleaner-2.45/common/profile-cleaner.in000066400000000000000000000263321441331260300214050ustar00rootroot00000000000000#!/bin/bash # # shellcheck disable=1090,2034 # # $XDG_CONFIG_HOME should be mapped to $HOME/.config # $XDG_DATA_HOME should be mapped to $HOME/.local/share # some users may have modified it to a custom location so honor that XDG_CONFIG_HOME="${XDG_CONFIG_HOME:-$HOME/.config}" XDG_DATA_HOME="${XDG_DATA_HOME:-$HOME/.local/share}" VERS="@VERSION@" # # read in config file # config="$XDG_CONFIG_HOME/profile-cleaner.conf" if [[ -f "$config" ]]; then . "$config" else cat <> "$config" # # $HOME/.config/profile-cleaner.conf # # Define the background of your terminal theme here. # A setting of dark will produce colors that nicely contrast a dark background. # setting of light will produce colors that nicely contrast a light background. COLORS=dark #COLORS=light END fi [[ -z "$COLORS" ]] && COLORS="dark" if [[ "$COLORS" = "dark" ]]; then export BLD="\e[01m" RED="\e[01;31m" GRN="\e[01;32m" YLW="\e[01;33m" NRM="\e[00m" elif [[ "$COLORS" = "light" ]]; then export BLD="\e[01m" RED="\e[00;31m" GRN="\e[00;32m" YLW="\e[00;34m" NRM="\e[00m" fi echo -e "${BLD}profile-cleaner v$VERS${NRM}" echo dep_check() { for dep in bc find parallel sqlite3 xargs; do if ! command -v "$dep" > /dev/null 2>&1; then echo "I require $dep but it's not installed. Aborting." >&2 exit 1 fi done } do_clean() { echo -en "${GRN} Cleaning${NRM} ${1##*/}" bsize=$(du -b "$1" | cut -f 1) sqlite3 "$1" vacuum sqlite3 "$1" reindex asize=$(du -b "$1" | cut -f 1) dsize=$(echo "scale=2; ($bsize-$asize)/1048576" | bc) echo -e "$(tput cr)$(tput cuf 46) ${GRN}done${NRM} -${YLW}${dsize}${NRM} Mbytes" } do_clean_parallel () { [[ ${#toclean[@]} -eq 0 ]] && cleanedsize=0 && return 1 bsize=$(du -b -c "${toclean[@]}" | tail -n 1 | cut -f 1) SHELL=/bin/bash parallel --gnu -k do_clean ::: "${toclean[@]}" 2>/dev/null asize=$(du -b -c "${toclean[@]}" | tail -n 1 | cut -f 1) cleanedsize=$(echo "scale=2; ($bsize-$asize)/1048576" | bc) } find_dbs() { toclean=() while read -r i; do toclean+=("${i}") done < <( find -L "$@" -maxdepth 2 -type f -not -name '*.sqlite-wal' -print0 2>/dev/null | xargs -0 file -e ascii | sed -n -e "s/:.*SQLite.*//p" ) } do_error_for_chromebased() { if [[ ! -d "$profilepath" ]]; then echo -e "${RED}Error: no profile directory found for:${NRM}${BLD}" "${missingArr[@]}" "${NRM}" exit 1 fi } do_chromebased() { if [[ -h "$prepath" ]]; then profilepath=$(readlink "$prepath") else profilepath="$prepath" fi echo -e " ${YLW}Cleaning profile for $name${NRM}" find_dbs "$profilepath" do_clean_parallel echo echo -e " ${BLD}Profile(s) for $name reduced by ${YLW}${cleanedsize}${NRM} ${BLD}Mbytes.${NRM}" echo } do_xulbased() { if [[ -h "$prepath" ]]; then profilepath=$(readlink "$prepath") else profilepath="$prepath" fi if [[ ! -d "$profilepath" ]]; then echo -e "${RED}Error: cannot locate $profilepath${NRM}" echo -e "${BLD}This is the default path for $name and where $0 expects to find it.${NRM}" exit 1 fi [[ ! -f $profilepath/profiles.ini ]] && echo -e "${RED}Error: cannot locate $profilepath/profiles.ini to determine names of profiles for $name.${NRM}" && exit 1 # build an array correcting for rel and abs paths therein # while read -r will read line-by-line and will tolerate spaces # whereas a for loop will not index=0 while read -r line; do if [[ ! -d "$profilepath/$line" ]]; then finalArr[index]="$line" else finalArr[index]="$profilepath/$line" fi index=$index+1 done < <(grep '[Pp]'ath= "$profilepath/profiles.ini" | sed -e 's/[Pp]ath=//' -e 's/\r//' ) echo -e " ${YLW}Cleaning profile for $name${NRM}" find_dbs "${finalArr[@]}" do_clean_parallel echo echo -e " ${BLD}Profile(s) for $name reduced by ${YLW}${cleanedsize}${NRM} ${BLD}Mbytes.${NRM}" } do_dbbased() { if [[ -h "$prepath" ]]; then profilepath=$(readlink "$prepath") else profilepath="$prepath" fi if [[ ! -d "$profilepath" ]]; then echo -e "${RED}Error: no profile directory for $name found.${NRM}" && exit 1 fi echo -e " ${YLW}Cleaning profile for $name${NRM}" find_dbs "${profilepath}" do_clean_parallel echo echo -e " ${BLD}Profile(s) for $name reduced by ${YLW}${cleanedsize}${NRM} ${BLD}Mbytes.${NRM}" } do_paths() { profilepaths=() for profilepath in "$@"; do [[ -d "$profilepath" ]] && profilepaths+=("$profilepath") done find_dbs "${profilepaths[@]}" do_clean_parallel echo echo -e " ${BLD}Profile(s) for $name reduced by ${YLW}${cleanedsize}${NRM} ${BLD}Mbytes.${NRM}" } export -f do_clean dep_check GREP_OPTIONS= case "$1" in B|b) for name in Brave-Browser Brave-Browser-Dev Brave-Browser-Beta Brave-Browser-Nightly; do if [[ -d "$XDG_CONFIG_HOME"/BraveSoftware/$name ]]; then tocleanArr+=("$name") else missingArr+=("$name") fi done if [[ "${#tocleanArr[@]}" -eq 0 ]]; then do_error_for_chromebased else for name in "${tocleanArr[@]}"; do export name prepath="$XDG_CONFIG_HOME"/BraveSoftware/$name do_chromebased done fi exit 0 ;; C|c|CB|cb|CD|cd) for name in chromium chromium-beta chromium-dev; do if [[ -d "$XDG_CONFIG_HOME"/$name ]]; then tocleanArr+=("$name") else missingArr+=("$name") fi done if [[ "${#tocleanArr[@]}" -eq 0 ]]; then do_error_for_chromebased else for name in "${tocleanArr[@]}"; do export name prepath="$XDG_CONFIG_HOME"/$name do_chromebased done fi exit 0 ;; E|e) name=microsoft-edge if [[ -d "$XDG_CONFIG_HOME"/$name ]]; then tocleanArr+=("$name") else missingArr+=("$name") fi if [[ "${#tocleanArr[@]}" -eq 0 ]]; then do_error_for_chromebased else for name in "${tocleanArr[@]}"; do export name prepath="$XDG_CONFIG_HOME"/$name do_chromebased done fi exit 0 ;; GC|gc|GCB|gcb|GCD|gcd|GCU|gcu) for name in google-chrome google-chrome-beta google-chrome-unstable; do if [[ -d "$XDG_CONFIG_HOME"/$name ]]; then tocleanArr+=("$name") else missingArr+=("$name") fi done if [[ "${#tocleanArr[@]}" -eq 0 ]]; then do_error_for_chromebased else for name in "${tocleanArr[@]}"; do export name prepath="$XDG_CONFIG_HOME"/$name do_chromebased done fi exit 0 ;; ix|IX) name="inox"; export name prepath="$XDG_CONFIG_HOME"/$name if [[ -d "$XDG_CONFIG_HOME"/$name ]]; then do_chromebased else do_error_for_chromebased fi exit 0 ;; n|N) name="newsboat"; export name if [[ -d "$XDG_DATA_HOME"/$name ]]; then prepath="$XDG_DATA_HOME"/$name elif [[ -d "$HOME/.$name" ]]; then prepath="$HOME/.$name" fi do_dbbased exit 0 ;; o|O|on|ON|od|OD|ob|OB) for name in opera opera-next opera-developer opera-beta; do if [[ -d "$XDG_CONFIG_HOME"/$name ]]; then tocleanArr+=("$name") else missingArr+=("$name") fi done if [[ "${#tocleanArr[@]}" -eq 0 ]]; then do_error_for_chromebased else for name in "${tocleanArr[@]}"; do export name prepath="$XDG_CONFIG_HOME"/$name do_chromebased done fi exit 0 ;; V|v) for name in vivaldi vivaldi-snapshot; do if [[ -d "$XDG_CONFIG_HOME"/$name ]]; then tocleanArr+=("$name") else missingArr+=("$name") fi done if [[ "${#tocleanArr[@]}" -eq 0 ]]; then do_error_for_chromebased else for name in "${tocleanArr[@]}"; do export name prepath="$XDG_CONFIG_HOME"/$name do_chromebased done fi exit 0 ;; H|h) name="aurora"; export name prepath=$HOME/.mozilla/aurora do_xulbased exit 0 ;; CK|ck) name="conkeror"; export name prepath=$HOME/.conkeror.mozdev.org/$name do_xulbased exit 0 ;; F|f) name="firefox"; export name prepath=$HOME/.mozilla/$name do_xulbased exit 0 ;; FA|fa|Fa) name="falkon"; export name prepath=$HOME/.config/$name/profiles do_dbbased exit 0 ;; I|i) name="icecat"; export name prepath=$HOME/.mozilla/$name do_xulbased exit 0 ;; ID|id) name="icedove"; export name prepath=$HOME/.$name do_xulbased exit 0 ;; L|l) name="librewolf"; export name prepath=$HOME/.$name do_xulbased exit 0 ;; M|m) name="midori"; export name prepath="$XDG_CONFIG_HOME"/$name do_dbbased exit 0 ;; PM|pm) name="palemoon"; export name prepath=$HOME/.moonchild\ productions/pale\ moon do_xulbased exit 0 ;; P|p) name="paths"; export name shift do_paths "$@" exit 0 ;; S|s) name="seamonkey"; export name prepath=$HOME/.mozilla/$name do_xulbased exit 0 ;; Q|q) name="qupzilla"; export name prepath=$HOME/.config/$name/profiles do_dbbased exit 0 ;; T|t) name="thunderbird"; export name prepath=$HOME/.$name do_xulbased exit 0 ;; TO|to) name="torbrowser"; export name prepath=$HOME/.$name/profile # AUR packages for tor-browser customize this for some reason so check for # all in a silly for loop this is a shitty solution if users have more than # 1 language of tor-browser installed for lang in de en es fr it ru; do [[ ! -d "$prepath" ]] && prepath="$HOME/.tor-browser-$lang/INSTALL/Data/profile" done do_dbbased exit 0 ;; *) echo -e " ${BLD}$0 ${NRM}${GRN}{browser abbreviation}${NRM}" echo echo -e " ${BLD}b) ${GRN}b${NRM}${BLD}rave (stable, beta, dev and nightly)${NRM}" echo -e " ${BLD}c) ${GRN}c${NRM}${BLD}hromium (stable, beta, and dev)${NRM}" echo -e " ${BLD}e) ${GRN}e${NRM}${BLD}dge${NRM}" echo -e " ${BLD}f) ${GRN}f${NRM}${BLD}irefox (stable and beta)${NRM}" echo -e " ${BLD}fa) ${GRN}fa${NRM}${BLD}lkon${NRM}" echo -e " ${BLD}gc) ${GRN}g${NRM}${BLD}oogle-${GRN}c${NRM}${BLD}hrome (stable, beta, and dev)${NRM}" echo -e " ${BLD}o) ${GRN}o${NRM}${BLD}pera (stable, next, and developer)${NRM}" echo echo -e " ${BLD}ck) ${GRN}c${NRM}${BLD}on${GRN}k${NRM}${BLD}eror${NRM}" echo -e " ${BLD}h) ${GRN}h${NRM}${BLD}eftig's aurora${NRM}" echo -e " ${BLD}i) ${GRN}i${NRM}${BLD}cecat${NRM}" echo -e " ${BLD}id) ${GRN}i${NRM}${BLD}ce${GRN}d${NRM}${BLD}ove${NRM}" echo -e " ${BLD}ix) ${GRN}i${NRM}${BLD}no${GRN}x${NRM}" echo -e " ${BLD}l) ${GRN}l${NRM}${BLD}ibrewolf${NRM}" echo -e " ${BLD}m) ${GRN}m${NRM}${BLD}idori${NRM}" echo -e " ${BLD}n) ${GRN}n${NRM}${BLD}ewsboat${NRM}" echo -e " ${BLD}pm) ${GRN}p${NRM}${BLD}ale${GRN}m${NRM}${BLD}oon${NRM}" echo -e " ${BLD}q) ${GRN}q${NRM}${BLD}upZilla${NRM}" echo -e " ${BLD}s) ${GRN}s${NRM}${BLD}eamonkey${NRM}" echo -e " ${BLD}t) ${GRN}t${NRM}${BLD}hunderbird${NRM}" echo -e " ${BLD}to) ${GRN}to${NRM}${BLD}rbrowser${NRM}" echo -e " ${BLD}v) ${GRN}v${NRM}${BLD}ivaldi (stable and snapshot)${NRM}" echo echo -e " ${BLD}p) ${GRN}p${NRM}${BLD}aths${NRM}" exit 0 ;; esac # vim:set ts=2 sw=2 et: profile-cleaner-2.45/common/zsh-completion000066400000000000000000000010571441331260300207010ustar00rootroot00000000000000#compdef pc profile-cleaner _pc() { local -a options options=( 'b:Brave (stable, beta, dev and nightly)' 'c:Chromium (stable, beta, and dev)' 'ck:ConKeror' 'f:Firefox (stable and beta)' 'fa:Falkon' 'gc:Google-Chrome (stable, beta, and dev)' 'h:Heftigs aurora' 'i:Icecat' 'id:IceDove' 'ix:InoX' 'm:Midori' 'n:Newsboat' 'o:Opera (stable, next, and developer)' 'pm:PaleMoon' 'q:QupZilla' 's:Seamonkey' 't:Thunderbird' 'to:TOrbrowser' 'p:Paths' 'v:Vivaldi (stable and snapshot)' ) _describe 'options' options } _pc profile-cleaner-2.45/doc/000077500000000000000000000000001441331260300152555ustar00rootroot00000000000000profile-cleaner-2.45/doc/pc.1000066400000000000000000000107721441331260300157500ustar00rootroot00000000000000.\" Text automatically generated by txt2man .TH profile-cleaner 1 "05 April 2023" "" "" .SH NAME \fBprofile-cleaner \fP- Reduce the size of browser and some email program's profiles by organizing their sqlite databases using sqlite3's vacuum and reindex functions. The term "browser" is used loosely since profile-cleaner happily works on some email clients too. \fB .SH SYNOPSIS .nf .fam C \fBprofile-cleaner\fP [\fIoption\fP] .fam T .fi .fam T .fi .SH DESCRIPTION Profile-cleaner is a very simple shell script that will invoke sqlite3 to vacuum and reindex databases belonging to supported browsers and email clients. It is compatible with profile-sync-daemon so users need not stop psd before calling \fBprofile-cleaner\fP. In fact, profiles will clean much faster when they are synced to tmpfs via psd. .SH OPTIONS .TP .B b Clean brave's profile .TP .B c Clean chromium's profile .TP .B ck Clean conkeror's \fBprofile\fP(s)* .TP .B e Clean edge's profile .TP .B f Clean firefox's \fBprofile\fP(s)* .TP .B fa Clean falkon's profile .TP .B gc Clean google-chrome's profile .TP .B h Clean heftig aurora's \fBprofile\fP(s)* .TP .B i Clean icecat's \fBprofile\fP(s)* .TP .B id Clean icedove's profile .TP .B ix Clean Inox's profile .TP .B l Clean Librewolf's profile .TP .B m Clean midori's profile .TP .B o Clean opera's profile .TP .B t Clean thunderbird's \fBprofile\fP(s)* .TP .B to Clean tor-browser's profile .TP .B s Clean seamonkey's \fBprofile\fP(s)* .TP .B pm Clean palemoon's \fBprofile\fP(s)* .TP .B p Clean the defined paths .TP .B v Clean vivaldi's profile .RE .PP .RS *Profile-cleaner will parse the respective profiles.ini file and clean all profiles defined therein. .SH CONFIG FILE Profile-cleaner will create $HOME/.config/profile-cleaner.conf the first time it is invoked. Users may define a color scheme therein based on their terminal background color. The default is a dark scheme for dark colored terminals. The file is commented and self-explanatory. .SH EXAMPLES Clean all firefox profiles: .RE .PP .nf .fam C $ profile-cleaner f .fam T .fi .RS Clean chromium profile: .RE .PP .nf .fam C $ profile-cleaner c .fam T .fi .RS Clean the user defined profile: .RE .PP .nf .fam C $ profile-cleaner p /path/to/profile .fam T .fi .SH SUPPORTED BROWSERS AND EMAIL CLIENTS Currently, the following are supported: .IP \(bu 3 Brave (stable, beta, dev and nightly) .IP \(bu 3 Chromium (stable,beta,dev) .IP \(bu 3 Conkeror .IP \(bu 3 Edge .IP \(bu 3 Firefox (stable,beta,aurora) .IP \(bu 3 Google-chrome (stable,beta,dev) .IP \(bu 3 Heftig's version of Aurora (https://bbs.archlinux.org/viewtopic.php?id=117157) .IP \(bu 3 Inox (https://bbs.archlinux.org/viewtopic.php?id=198763) .IP \(bu 3 Midori .IP \(bu 3 Newsbeuter .IP \(bu 3 Opera (stable, next, and developer) .IP \(bu 3 Seamonkey .IP \(bu 3 Thunderbird .IP \(bu 3 Tor-browser .IP \(bu 3 Vivaldi (stable and snapshot) .SH SAMPLE OUTPUT Sample output invoking the firefox \fIoption\fP (your mileage will vary). .RE .PP .nf .fam C $ profile-cleaner f /home/facade/.mozilla/firefox/zee52krz.default/cookies.sqlite reduced by .87 Mbytes /home/facade/.mozilla/firefox/zee52krz.default/signons.sqlite reduced by .41 Mbytes /home/facade/.mozilla/firefox/zee52krz.default/downloads.sqlite reduced by .56 Mbytes /home/facade/.mozilla/firefox/zee52krz.default/chromeappsstore.sqlite reduced by .03 Mbytes /home/facade/.mozilla/firefox/zee52krz.default/urlclassifier3.sqlite reduced by 43.10 Mbytes /home/facade/.mozilla/firefox/zee52krz.default/formhistory.sqlite reduced by .11 Mbytes /home/facade/.mozilla/firefox/zee52krz.default/addons.sqlite reduced by 0 Mbytes /home/facade/.mozilla/firefox/zee52krz.default/permissions.sqlite reduced by 0 Mbytes /home/facade/.mozilla/firefox/zee52krz.default/content-prefs.sqlite reduced by 0 Mbytes /home/facade/.mozilla/firefox/zee52krz.default/extensions.sqlite reduced by 0 Mbytes /home/facade/.mozilla/firefox/zee52krz.default/webappsstore.sqlite reduced by 0 Mbytes /home/facade/.mozilla/firefox/zee52krz.default/OfflineCache/index.sqlite reduced by 0 Mbytes /home/facade/.mozilla/firefox/zee52krz.default/search.sqlite reduced by 0 Mbytes /home/facade/.mozilla/firefox/zee52krz.default/places.sqlite reduced by 9.98 Mbytes firefox profile reduced by 55.06 Mbytes .fam T .fi .SH CONTRIBUTE Should you wish to contribute to this code, please fork and send a pull request. Source is freely available on github: https://github.com/graysky2/\fBprofile-cleaner\fP .SH BUGS None known. .SH AUTHOR graysky (graysky AT archlinux DOT us) .SH SEE ALSO profile-sync-deamon (1)