Luigit
repositories / dotfiles

dotfiles

bugabingas dorkfiles

owned by admin

nugu/yazi.nu

Raw
use palette.nu

# Generate a Yazi flavor.toml from the Nugu semantic palette.
export def flavor [mode: string] {
	let nugu = (palette nugu $mode)
	let p = $nugu.palette

	let theme = {
		mgr: {
			cwd: { fg: $p.content.normal }
			find_keyword: { fg: $p.content.accent, bold: true, italic: true, underline: true }
			find_position: { fg: $p.content.accent, bold: true }
			symlink_target: { fg: $p.content.minor }

			marker_copied: { fg: $p.content.focus, bg: $p.content.focus }
			marker_cut: { fg: $p.warning, bg: $p.warning }
			marker_marked: { fg: $p.content.accent, bg: $p.content.accent }
			marker_selected: { fg: $p.ui.important_local, bg: $p.ui.important_local }

			count_copied: { fg: $p.content.backdrop, bg: $p.content.focus, bold: true }
			count_cut: { fg: $p.content.backdrop, bg: $p.warning, bold: true }
			count_selected: { fg: $p.ui.backdrop, bg: $p.ui.important_local, bold: true }

			border_symbol: "│"
			border_style: { fg: $p.ui.unfocus }
		}

		status: {
			overall: { fg: $p.ui.normal, bg: $p.ui.backdrop }
			sep_left: { open: "", close: "" }
			sep_right: { open: "", close: "" }
			perm_type: { fg: $p.content.important_global }
			perm_read: { fg: $p.content.focus }
			perm_write: { fg: $p.warning }
			perm_exec: { fg: $p.error }
			perm_sep: { fg: $p.content.minor }
			progress_label: { fg: $p.content.normal, bold: true }
			progress_normal: { fg: $p.ui.accent, bg: $p.ui.backdrop }
			progress_error: { fg: $p.error, bg: $p.ui.backdrop }
		}

		mode: {
			normal_main: { fg: $p.ui.backdrop, bg: $p.ui.accent, bold: true }
			normal_alt: { fg: $p.ui.normal, bg: $p.ui.backdrop }
			select_main: { fg: $p.ui.backdrop, bg: $p.ui.important_local, bold: true }
			select_alt: { fg: $p.ui.normal, bg: $p.ui.backdrop }
			unset_main: { fg: $p.content.backdrop, bg: $p.warning, bold: true }
			unset_alt: { fg: $p.ui.normal, bg: $p.ui.backdrop }
		}

		tabs: {
			active: { fg: $p.ui.backdrop, bg: $p.ui.accent, bold: true }
			inactive: { fg: $p.ui.minor, bg: $p.ui.backdrop }
			sep_inner: { open: "", close: "" }
			sep_outer: { open: "", close: "" }
		}

		which: {
			cols: 3
			mask: { bg: $p.ui.backdrop }
			cand: { fg: $p.ui.accent, bold: true }
			rest: { fg: $p.ui.minor }
			desc: { fg: $p.ui.normal }
			separator: " → "
			separator_style: { fg: $p.ui.minor }
		}

		input: {
			border: { fg: $p.ui.unfocus }
			title: { fg: $p.ui.accent, bold: true }
			value: { fg: $p.content.normal }
			selected: { fg: $p.content.backdrop, bg: $p.content.focus }
		}

		confirm: {
			border: { fg: $p.warning }
			title: { fg: $p.warning, bold: true }
			body: { fg: $p.content.normal }
			list: { fg: $p.content.normal }
			btn_yes: { fg: $p.content.backdrop, bg: $p.error, bold: true }
			btn_no: { fg: $p.ui.backdrop, bg: $p.ui.focus, bold: true }
			btn_labels: ["yes", "no"]
		}

		spot: {
			border: { fg: $p.ui.unfocus }
			title: { fg: $p.ui.accent, bold: true }
			tbl_col: { fg: $p.content.normal }
			tbl_cell: { fg: $p.content.backdrop, bg: $p.content.focus }
		}

		pick: {
			border: { fg: $p.ui.unfocus }
			active: { fg: $p.ui.backdrop, bg: $p.ui.focus, bold: true }
			inactive: { fg: $p.ui.normal }
		}

		cmp: {
			border: { fg: $p.ui.unfocus }
			active: { fg: $p.ui.backdrop, bg: $p.ui.focus, bold: true }
			inactive: { fg: $p.ui.normal }
		}

		tasks: {
			border: { fg: $p.ui.unfocus }
			title: { fg: $p.ui.accent, bold: true }
			hovered: { fg: $p.content.focus, bold: true }
		}

		help: {
			on: { fg: $p.ui.accent, bold: true }
			run: { fg: $p.content.important_local }
			desc: { fg: $p.content.normal }
			hovered: { fg: $p.ui.backdrop, bg: $p.ui.focus, bold: true }
			footer: { fg: $p.ui.backdrop, bg: $p.ui.accent, bold: true }
		}

		notify: {
			title_info: { fg: $p.info, bold: true }
			title_warn: { fg: $p.warning, bold: true }
			title_error: { fg: $p.error, bold: true }
		}

		filetype: {
			rules: [
				{ mime: "image/*", fg: $p.content.focus }
				{ mime: "{audio,video}/*", fg: $p.content.important_local }
				{ mime: "application/{zip,rar,7z*,tar,gzip,xz,zstd,bzip*,lzma,compress,archive,cpio,arj,xar,ms-cab*}", fg: $p.content.accent }
				{ mime: "application/{pdf,doc,rtf}", fg: $p.content.important_global }
				{ mime: "*", is: "orphan", fg: $p.content.backdrop, bg: $p.error, bold: true }
				{ mime: "application/*exec*", fg: $p.error }
				{ url: "*/", fg: $p.ui.accent, bold: true }
				{ url: "*", fg: $p.content.normal }
			]
		}

		git: {
			unknown: { fg: $p.content.minor }
			modified: { fg: $p.warning, bold: true }
			added: { fg: $p.content.focus, bold: true }
			untracked: { fg: $p.content.accent, bold: true }
			ignored: { fg: $p.content.minor }
			deleted: { fg: $p.error, bold: true }
			updated: { fg: $p.warning, bold: true }
			clean: { fg: $p.content.minor }
			unknown_sign: ""
			modified_sign: "M "
			added_sign: "A "
			untracked_sign: "? "
			ignored_sign: "I "
			deleted_sign: "D "
			updated_sign: "U "
			clean_sign: ""
		}
	}

	$theme | to toml
}