109 lines
3.5 KiB
Bash
Executable File
109 lines
3.5 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
BRAVE_DIR="$HOME/.config/BraveSoftware/Brave-Browser/Default"
|
|
MAX_ATTEMPTS=30 # Maximum number of seconds to wait
|
|
|
|
# Function to check if database is locked
|
|
is_db_locked() {
|
|
local db_file="$1"
|
|
if lsof "$db_file" >/dev/null 2>&1; then
|
|
return 0 # true, db is locked
|
|
else
|
|
return 1 # false, db is not locked
|
|
fi
|
|
}
|
|
|
|
# Check if profile exists
|
|
if [ ! -d "$BRAVE_DIR" ]; then
|
|
echo "Brave profile directory doesn't exist. Please run Brave at least once."
|
|
exit 1
|
|
fi
|
|
|
|
# Check if Web Data exists
|
|
if [ ! -f "$BRAVE_DIR/Web Data" ]; then
|
|
echo "Web Data file doesn't exist. Please run Brave at least once."
|
|
exit 1
|
|
fi
|
|
|
|
# Wait for database to be unlocked
|
|
attempts=0
|
|
while is_db_locked "$BRAVE_DIR/Web Data" && [ $attempts -lt $MAX_ATTEMPTS ]; do
|
|
echo "Database is locked. Waiting... ($attempts/$MAX_ATTEMPTS)"
|
|
sleep 1
|
|
attempts=$((attempts + 1))
|
|
done
|
|
|
|
if is_db_locked "$BRAVE_DIR/Web Data"; then
|
|
echo "Database is still locked after $MAX_ATTEMPTS seconds. Please ensure Brave is completely closed and try again."
|
|
exit 1
|
|
fi
|
|
|
|
echo "Setting up search engines..."
|
|
|
|
# Create temporary file for SQL commands
|
|
SQLCOMMANDS=$(mktemp)
|
|
|
|
cat > $SQLCOMMANDS << 'ENDSQL'
|
|
DELETE FROM keywords WHERE keyword NOT IN ('@bookmarks', '@history');
|
|
|
|
INSERT INTO keywords (
|
|
short_name, keyword, favicon_url, url, safe_for_autoreplace,
|
|
date_created, usage_count, input_encodings, suggest_url, prepopulate_id,
|
|
sync_guid, alternate_urls, last_visited, is_active
|
|
) VALUES
|
|
(
|
|
'Brave', ':br',
|
|
'https://cdn.search.brave.com/serp/v2/_app/immutable/assets/favicon.acxxetWH.ico',
|
|
'https://search.brave.com/search?q={searchTerms}&source=desktop',
|
|
1, 0, 0, 'UTF-8',
|
|
'https://search.brave.com/api/suggest?q={searchTerms}&rich=true&source=desktop',
|
|
550, '485bf7d3-0215-45af-87dc-538868000550', '[]', 0, 0
|
|
),
|
|
(
|
|
'Google', ':gg',
|
|
'https://www.google.com/images/branding/product/ico/googleg_alldp.ico',
|
|
'{google:baseURL}search?q={searchTerms}&{google:RLZ}{google:originalQueryForSuggestion}{google:assistedQueryStats}{google:searchFieldtrialParameter}{google:language}{google:prefetchSource}{google:searchClient}{google:sourceId}{google:contextualSearchVersion}ie={inputEncoding}',
|
|
1, 0, 0, 'UTF-8',
|
|
'{google:baseSuggestURL}search?{google:searchFieldtrialParameter}client={google:suggestClient}&gs_ri={google:suggestRid}&xssi=t&q={searchTerms}&{google:inputType}{google:omniboxFocusType}{google:cursorPosition}{google:currentPageUrl}{google:pageClassification}{google:clientCacheTimeToLive}{google:searchVersion}{google:sessionToken}{google:prefetchQuery}sugkey={google:suggestAPIKeyParameter}',
|
|
1, '485bf7d3-0215-45af-87dc-538868000001', '[]', 0, 0
|
|
),
|
|
(
|
|
'DuckDuckGo', ':dd',
|
|
'https://duckduckgo.com/favicon.ico',
|
|
'https://duckduckgo.com/?q={searchTerms}&t=brave',
|
|
1, 0, 0, 'UTF-8',
|
|
'https://ac.duckduckgo.com/ac/?q={searchTerms}&type=list',
|
|
501, '485bf7d3-0215-45af-87dc-538868000501', '[]', 0, 0
|
|
),
|
|
(
|
|
'NixOS', ':nix',
|
|
'https://search.nixos.org/favicon.png',
|
|
'https://search.nixos.org/packages?query={searchTerms}',
|
|
1, 0, 0, '',
|
|
'',
|
|
0, '485bf7d3-0215-45af-87dc-538868000552', '[]', 0, 1
|
|
),
|
|
(
|
|
'GoLink', ':go',
|
|
'http://go/favicon.ico',
|
|
'http://go/{searchTerms}',
|
|
1, 0, 0, '',
|
|
'',
|
|
0, '485bf7d3-0215-45af-87dc-538868000551', '[]', 0, 1
|
|
);
|
|
ENDSQL
|
|
|
|
# Execute SQL commands
|
|
sqlite3 "$BRAVE_DIR/Web Data" < $SQLCOMMANDS
|
|
|
|
# Cleanup
|
|
rm $SQLCOMMANDS
|
|
|
|
echo "Search engines setup completed successfully!"
|
|
|
|
# Restart Brave if it was running before
|
|
if [ "$BRAVE_WAS_RUNNING" = "1" ]; then
|
|
echo "Restarting Brave..."
|
|
brave &> /dev/null &
|
|
fi
|