feat: initial commit
This commit is contained in:
@@ -0,0 +1,89 @@
|
||||
import sys
|
||||
import os
|
||||
import subprocess
|
||||
from pathlib import Path
|
||||
from config import load_config
|
||||
from gui import MainWindow
|
||||
from PyQt6.QtWidgets import QApplication
|
||||
|
||||
|
||||
def get_icon_with_fzf(breeze_path):
|
||||
try:
|
||||
preview_script = r'''
|
||||
FILE="$1"
|
||||
DIM="${FZF_PREVIEW_COLUMNS}x${FZF_PREVIEW_LINES}"
|
||||
if command -v kitten >/dev/null; then
|
||||
kitten icat --clear --transfer-mode=memory --stdin=no --scale-up --place="${DIM}@${FZF_PREVIEW_LEFT:-0}x${FZF_PREVIEW_TOP:-0}" "$FILE" > /dev/tty
|
||||
elif command -v wezterm >/dev/null; then
|
||||
wezterm imgcat "$FILE"
|
||||
elif command -v chafa >/dev/null; then
|
||||
chafa -s "$DIM" "$FILE"
|
||||
else
|
||||
cat "$FILE"
|
||||
fi
|
||||
'''
|
||||
env = os.environ.copy()
|
||||
env['FZF_PREVIEW_SCRIPT'] = preview_script
|
||||
|
||||
find_proc = subprocess.Popen(
|
||||
["find", ".", "-type", "f", "-name", "*.svg"],
|
||||
cwd=breeze_path,
|
||||
stdout=subprocess.PIPE,
|
||||
)
|
||||
fzf_proc = subprocess.Popen(
|
||||
["fzf", "--preview", "bash -c \"$FZF_PREVIEW_SCRIPT\" _ {}"],
|
||||
stdin=find_proc.stdout,
|
||||
stdout=subprocess.PIPE,
|
||||
text=True,
|
||||
cwd=breeze_path,
|
||||
env=env
|
||||
)
|
||||
find_proc.stdout.close()
|
||||
out, _ = fzf_proc.communicate()
|
||||
if fzf_proc.returncode == 0 and out.strip():
|
||||
return (Path(breeze_path) / out.strip()).resolve()
|
||||
return None
|
||||
except Exception as e:
|
||||
print(f"Error running fzf: {e}")
|
||||
return None
|
||||
|
||||
|
||||
def main():
|
||||
breeze_path = load_config()
|
||||
|
||||
icon_path = None
|
||||
if len(sys.argv) > 1:
|
||||
arg_path = Path(sys.argv[1])
|
||||
if arg_path.is_absolute():
|
||||
icon_path = arg_path
|
||||
else:
|
||||
# First try relative to current directory
|
||||
if arg_path.exists():
|
||||
icon_path = arg_path.resolve()
|
||||
else:
|
||||
# Then try relative to breeze_path
|
||||
icon_path = (Path(breeze_path) / arg_path).resolve()
|
||||
|
||||
if not icon_path.exists():
|
||||
print(f"Error: Icon not found at {icon_path}")
|
||||
sys.exit(1)
|
||||
else:
|
||||
print("Select an icon using fzf...")
|
||||
icon_path = get_icon_with_fzf(breeze_path)
|
||||
if not icon_path:
|
||||
print("No icon selected.")
|
||||
sys.exit(0)
|
||||
|
||||
app = QApplication(sys.argv)
|
||||
window = MainWindow(icon_path)
|
||||
window.show()
|
||||
exit_code = app.exec()
|
||||
|
||||
if window.parser.history:
|
||||
print(f"\nIcon colors updated: {icon_path.resolve()}")
|
||||
|
||||
sys.exit(exit_code)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
Reference in New Issue
Block a user