Initial commit — violet-chaton ricing setup

Environnement terminal complet aux couleurs violet-chaton pour Pop!_OS / Ubuntu avec COSMIC Desktop.
Inclut scripts d'installation, configs shell, thèmes et support COSMIC/Vivaldi/Vesktop.
This commit is contained in:
Tetardtek
2026-02-21 20:27:14 +01:00
commit ee455870f5
80 changed files with 7096 additions and 0 deletions

6
.gitignore vendored Normal file
View File

@@ -0,0 +1,6 @@
# Archive de test local
config.tar.gz
# Dépôt git du thème Discord (sources SCSS)
# Le CSS compilé est dans INSTALL/themes/violet-chaton.theme.css
INSTALL/themes/violet-chaton-discord-theme/

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 MiB

376
INSTALL/configs/atuin.toml Normal file
View File

@@ -0,0 +1,376 @@
## ── violet-chaton config ──────────────────────────────────────────────────────
dialect = "uk" # format de date européen
timezone = "local"
search_mode = "fuzzy" # recherche floue comme fzf
filter_mode = "global" # cherche dans tout l'historique
style = "full" # interface complète
inline_height = 40 # occupe 40% du terminal
invert = true # barre de recherche en haut
show_preview = true # aperçu de la commande sélectionnée
enter_accept = true # Entrée accepte directement
[theme]
name = "violet-chaton"
## ── fin config violet-chaton ──────────────────────────────────────────────────
## Base directory for Atuin data files (databases, keys, session, etc.)
## All data file paths default to being relative to this directory.
## linux/mac: ~/.local/share/atuin (or XDG_DATA_HOME/atuin)
## windows: %USERPROFILE%/.local/share/atuin
# data_dir = "~/.local/share/atuin"
## where to store your database, default is your system data directory
## linux/mac: ~/.local/share/atuin/history.db
## windows: %USERPROFILE%/.local/share/atuin/history.db
# db_path = "~/.history.db"
## where to store your encryption key, default is your system data directory
## linux/mac: ~/.local/share/atuin/key
## windows: %USERPROFILE%/.local/share/atuin/key
# key_path = "~/.key"
## where to store your auth session token, default is your system data directory
## linux/mac: ~/.local/share/atuin/session
## windows: %USERPROFILE%/.local/share/atuin/session
# session_path = "~/.session"
## date format used, either "us" or "uk"
# dialect = "us"
## default timezone to use when displaying time
## either "l", "local" to use the system's current local timezone, or an offset
## from UTC in the format of "<+|->H[H][:M[M][:S[S]]]"
## for example: "+9", "-05", "+03:30", "-01:23:45", etc.
# timezone = "local"
## enable or disable automatic sync
# auto_sync = true
## enable or disable automatic update checks
# update_check = true
## address of the sync server
# sync_address = "https://api.atuin.sh"
## how often to sync history. note that this is only triggered when a command
## is ran, so sync intervals may well be longer
## set it to 0 to sync after every command
# sync_frequency = "10m"
## which search mode to use
## possible values: prefix, fulltext, fuzzy, skim
# search_mode = "fuzzy"
## which filter mode to use by default
## possible values: "global", "host", "session", "session-preload", "directory", "workspace"
## consider using search.filters to customize the enablement and order of filter modes
# filter_mode = "global"
## With workspace filtering enabled, Atuin will filter for commands executed
## in any directory within a git repository tree (default: false).
##
## To use workspace mode by default when available, set this to true and
## set filter_mode to "workspace" or leave it unspecified and
## set search.filters to include "workspace" before other filter modes.
# workspaces = false
## which filter mode to use when atuin is invoked from a shell up-key binding
## the accepted values are identical to those of "filter_mode"
## leave unspecified to use same mode set in "filter_mode"
# filter_mode_shell_up_key_binding = "global"
## which search mode to use when atuin is invoked from a shell up-key binding
## the accepted values are identical to those of "search_mode"
## leave unspecified to use same mode set in "search_mode"
# search_mode_shell_up_key_binding = "fuzzy"
## which style to use
## possible values: auto, full, compact
# style = "auto"
## the maximum number of lines the interface should take up
## set it to 0 to always go full screen
# inline_height = 0
## the maximum number of lines the interface should take up
## when atuin is invoked from a shell up-key binding
## the accepted values are identical to those of "inline_height"
# inline_height_shell_up_key_binding = 0
## Invert the UI - put the search bar at the top , Default to `false`
# invert = false
## enable or disable showing a preview of the selected command
## useful when the command is longer than the terminal width and is cut off
# show_preview = true
## what to do when the escape key is pressed when searching
## possible values: return-original, return-query
# exit_mode = "return-original"
## possible values: emacs, subl
# word_jump_mode = "emacs"
## characters that count as a part of a word
# word_chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
## number of context lines to show when scrolling by pages
# scroll_context_lines = 1
## use ctrl instead of alt as the shortcut modifier key for numerical UI shortcuts
## alt-0 .. alt-9
# ctrl_n_shortcuts = false
## Show numeric shortcuts (1..9) beside list items in the TUI
## set to false to hide the moving numbers if you find them distracting
# show_numeric_shortcuts = true
## default history list format - can also be specified with the --format arg
# history_format = "{time}\t{command}\t{duration}"
## prevent commands matching any of these regexes from being written to history.
## Note that these regular expressions are unanchored, i.e. if they don't start
## with ^ or end with $, they'll match anywhere in the command.
## For details on the supported regular expression syntax, see
## https://docs.rs/regex/latest/regex/#syntax
# history_filter = [
# "^secret-cmd",
# "^innocuous-cmd .*--secret=.+",
# ]
## prevent commands run with cwd matching any of these regexes from being written
## to history. Note that these regular expressions are unanchored, i.e. if they don't
## start with ^ or end with $, they'll match anywhere in CWD.
## For details on the supported regular expression syntax, see
## https://docs.rs/regex/latest/regex/#syntax
# cwd_filter = [
# "^/very/secret/area",
# ]
## Configure the maximum height of the preview to show.
## Useful when you have long scripts in your history that you want to distinguish
## by more than the first few lines.
# max_preview_height = 4
## Configure whether or not to show the help row, which includes the current Atuin
## version (and whether an update is available), a keymap hint, and the total
## amount of commands in your history.
# show_help = true
## Configure whether or not to show tabs for search and inspect
# show_tabs = true
## Configure whether or not the tabs row may be auto-hidden, which includes the current Atuin
## tab, such as Search or Inspector, and other tabs you may wish to see. This will
## only be hidden if there are fewer than this count of lines available, and does not affect the use
## of keyboard shortcuts to switch tab. 0 to never auto-hide, default is 8 (lines).
## This is ignored except in `compact` mode.
# auto_hide_height = 8
## Defaults to true. This matches history against a set of default regex, and will not save it if we get a match. Defaults include
## 1. AWS key id
## 2. Github pat (old and new)
## 3. Slack oauth tokens (bot, user)
## 4. Slack webhooks
## 5. Stripe live/test keys
# secrets_filter = true
## Defaults to true. If enabled, upon hitting enter Atuin will immediately execute the command,
## whereas tab will put the command in the prompt for editing.
## If set to false, both enter and tab will place the command in the prompt for editing.
## This applies for new installs. Old installs will keep the old behaviour unless configured otherwise.
enter_accept = true
## Defaults to false. If enabled, when triggered after &&, || or |, Atuin will complete commands to chain rather than replace the current line.
# command_chaining = false
## Defaults to "emacs". This specifies the keymap on the startup of `atuin
## search`. If this is set to "auto", the startup keymap mode in the Atuin
## search is automatically selected based on the shell's keymap where the
## keybinding is defined. If this is set to "emacs", "vim-insert", or
## "vim-normal", the startup keymap mode in the Atuin search is forced to be
## the specified one.
# keymap_mode = "auto"
## Cursor style in each keymap mode. If specified, the cursor style is changed
## in entering the cursor shape. Available values are "default" and
## "{blink,steady}-{block,underline,bar}".
# keymap_cursor = { emacs = "blink-block", vim_insert = "blink-block", vim_normal = "steady-block" }
# network_connect_timeout = 5
# network_timeout = 5
## Timeout (in seconds) for acquiring a local database connection (sqlite)
# local_timeout = 5
## Set this to true and Atuin will minimize motion in the UI - timers will not update live, etc.
## Alternatively, set env NO_MOTION=true
# prefers_reduced_motion = false
[stats]
## Set commands where we should consider the subcommand for statistics. Eg, kubectl get vs just kubectl
# common_subcommands = [
# "apt",
# "cargo",
# "composer",
# "dnf",
# "docker",
# "dotnet",
# "git",
# "go",
# "ip",
# "jj",
# "kubectl",
# "nix",
# "nmcli",
# "npm",
# "pecl",
# "pnpm",
# "podman",
# "port",
# "systemctl",
# "tmux",
# "yarn",
# ]
## Set commands that should be totally stripped and ignored from stats
# common_prefix = ["sudo"]
## Set commands that will be completely ignored from stats
# ignored_commands = [
# "cd",
# "ls",
# "vi"
# ]
[keys]
# Defaults to true. If disabled, using the up/down key won't exit the TUI when scrolled past the first/last entry.
# scroll_exits = true
# Defaults to true. The left arrow key will exit the TUI when scrolling before the first character
# exit_past_line_start = true
# Defaults to true. The right arrow key performs the same functionality as Tab and copies the selected line to the command line to be modified.
# accept_past_line_end = true
# Defaults to false. The left arrow key performs the same functionality as Tab and copies the selected line to the command line to be modified.
# accept_past_line_start = false
# Defaults to false. The backspace key performs the same functionality as Tab and copies the selected line to the command line to be modified when at the start of the line.
# accept_with_backspace = false
[sync]
# Enable sync v2 by default
# This ensures that sync v2 is enabled for new installs only
# In a later release it will become the default across the board
records = true
[preview]
## which preview strategy to use to calculate the preview height (respects max_preview_height).
## possible values: auto, static
## auto: length of the selected command.
## static: length of the longest command stored in the history.
## fixed: use max_preview_height as fixed height.
# strategy = "auto"
[daemon]
## Enables using the daemon to sync. Requires the daemon to be running in the background. Start it with `atuin daemon`
# enabled = false
## How often the daemon should sync in seconds
# sync_frequency = 300
## The path to the unix socket used by the daemon (on unix systems)
## linux/mac: ~/.local/share/atuin/atuin.sock
## windows: Not Supported
# socket_path = "~/.local/share/atuin/atuin.sock"
## Use systemd socket activation rather than opening the given path (the path must still be correct for the client)
## linux: false
## mac/windows: Not Supported
# systemd_socket = false
## The port that should be used for TCP on non unix systems
# tcp_port = 8889
# [theme]
## Color theme to use for rendering in the terminal.
## There are some built-in themes, including the base theme ("default"),
## "autumn" and "marine". You can add your own themes to the "./themes" subdirectory of your
## Atuin config (or ATUIN_THEME_DIR, if provided) as TOML files whose keys should be one or
## more of AlertInfo, AlertWarn, AlertError, Annotation, Base, Guidance, Important, and
## the string values as lowercase entries from this list:
## https://ogeon.github.io/docs/palette/master/palette/named/index.html
## If you provide a custom theme file, it should be called "NAME.toml" and the theme below
## should be the stem, i.e. `theme = "NAME"` for your chosen NAME.
# name = "autumn"
## Whether the theme manager should output normal or extra information to help fix themes.
## Boolean, true or false. If unset, left up to the theme manager.
# debug = true
[search]
## The list of enabled filter modes, in order of priority.
## The "workspace" mode is skipped when not in a workspace or workspaces = false.
## Default filter mode can be overridden with the filter_mode setting.
# filters = [ "global", "host", "session", "session-preload", "workspace", "directory" ]
[tmux]
## Enable using atuin with tmux popup (requires tmux >= 3.2)
## When enabled and running inside tmux, Atuin will use a popup window for interactive search.
## Set to false to disable the popup.
## This can also be controlled with the ATUIN_TMUX_POPUP environment variable.
## Note: The tmux popup is currently supported in zsh, bash, and fish shells. This currently doesn't work with iTerm native tmux integration.
# enabled = false
## Width of the tmux popup window
## Can be a percentage, or integer (e.g. "100" means 100 characters wide)
# width = "80%"
## Height of the tmux popup window
## Can be a percentage, or integer (e.g. "100" means 100 lines tall)
# height = "60%"
[ui]
columns = ["exit", "duration", "time", "command"]
## Columns to display in the interactive search, from left to right.
## The selection indicator (" > ") is always shown first implicitly.
##
## Each column can be specified as a simple string (uses default width)
## or as an object with type, width, and expand:
## { type = "directory", width = 30, expand = true }
##
## Available column types (with default widths):
## duration (5) - Command execution duration (e.g., "123ms")
## time (8) - Relative time since execution (e.g., "59m ago")
## datetime (16) - Absolute timestamp (e.g., "2025-01-22 14:35")
## directory (20) - Working directory (truncated if too long)
## host (15) - Hostname where command was run
## user (10) - Username
## exit (3) - Exit code (colored by success/failure)
## command (*) - The command itself (expands by default)
##
## The "expand" option (default: true for command, false for others) makes a
## column fill remaining space. Only one column should have expand = true.
##
## Default:
# columns = ["duration", "time", "command"]
##
## Examples:
##
## Minimal - more space for commands:
# columns = ["duration", "command"]
##
## With wider directory column:
# columns = ["duration", { type = "directory", width = 30 }, "command"]
##
## Show host for multi-machine sync users:
# columns = ["duration", "time", "host", "command"]
##
## Show exit codes prominently:
# columns = ["exit", "duration", "command"]
##
## Make directory expand instead of command:
# columns = ["duration", "time", { type = "directory", expand = true }, { type = "command", expand = false }]

13
INSTALL/configs/bashrc Normal file
View File

@@ -0,0 +1,13 @@
# --- ensure VS Code flatpak / COSMIC Terminal sees host binaries ---------------
# Some tools live in /usr/local/bin on the host; prepend real locations before
# any commands that rely on them (starship, fastfetch, chafa, eza, ...).
export PATH="/usr/local/bin:/usr/bin:$PATH"
# If not running interactively, don't do anything
case $- in
*i*) ;;
*) return;;
esac
# Lance zsh automatiquement (COSMIC Terminal ignore /etc/passwd)
exec zsh

8
INSTALL/configs/bat.conf Normal file
View File

@@ -0,0 +1,8 @@
# Thème
--theme="violet-chaton"
# Style : numéros de ligne + en-tête de fichier, sans la grille
--style="numbers,header"
# Toujours afficher les couleurs même en pipe
--color=always

245
INSTALL/configs/btop.conf Normal file
View File

@@ -0,0 +1,245 @@
#? Config file for btop v. 1.3.0
#* Name of a btop++/bpytop/bashtop formatted ".theme" file, "Default" and "TTY" for builtin themes.
#* Themes should be placed in "../share/btop/themes" relative to binary or "$HOME/.config/btop/themes"
color_theme = "violet-chaton"
#* If the theme set background should be shown, set to False if you want terminal background transparency.
theme_background = True
#* Sets if 24-bit truecolor should be used, will convert 24-bit colors to 256 color (6x6x6 color cube) if false.
truecolor = True
#* Set to true to force tty mode regardless if a real tty has been detected or not.
#* Will force 16-color mode and TTY theme, set all graph symbols to "tty" and swap out other non tty friendly symbols.
force_tty = False
#* Define presets for the layout of the boxes. Preset 0 is always all boxes shown with default settings. Max 9 presets.
#* Format: "box_name:P:G,box_name:P:G" P=(0 or 1) for alternate positions, G=graph symbol to use for box.
#* Use whitespace " " as separator between different presets.
#* Example: "cpu:0:default,mem:0:tty,proc:1:default cpu:0:braille,proc:0:tty"
presets = "cpu:1:default,proc:0:default cpu:0:default,mem:0:default,net:0:default cpu:0:block,net:0:tty"
#* Set to True to enable "h,j,k,l,g,G" keys for directional control in lists.
#* Conflicting keys for h:"help" and k:"kill" is accessible while holding shift.
vim_keys = False
#* Rounded corners on boxes, is ignored if TTY mode is ON.
rounded_corners = True
#* Default symbols to use for graph creation, "braille", "block" or "tty".
#* "braille" offers the highest resolution but might not be included in all fonts.
#* "block" has half the resolution of braille but uses more common characters.
#* "tty" uses only 3 different symbols but will work with most fonts and should work in a real TTY.
#* Note that "tty" only has half the horizontal resolution of the other two, so will show a shorter historical view.
graph_symbol = "braille"
# Graph symbol to use for graphs in cpu box, "default", "braille", "block" or "tty".
graph_symbol_cpu = "default"
# Graph symbol to use for graphs in gpu box, "default", "braille", "block" or "tty".
graph_symbol_gpu = "default"
# Graph symbol to use for graphs in cpu box, "default", "braille", "block" or "tty".
graph_symbol_mem = "default"
# Graph symbol to use for graphs in cpu box, "default", "braille", "block" or "tty".
graph_symbol_net = "default"
# Graph symbol to use for graphs in cpu box, "default", "braille", "block" or "tty".
graph_symbol_proc = "default"
#* Manually set which boxes to show. Available values are "cpu mem net proc" and "gpu0" through "gpu5", separate values with whitespace.
shown_boxes = "cpu mem net proc"
#* Update time in milliseconds, recommended 2000 ms or above for better sample times for graphs.
update_ms = 2000
#* Processes sorting, "pid" "program" "arguments" "threads" "user" "memory" "cpu lazy" "cpu direct",
#* "cpu lazy" sorts top process over time (easier to follow), "cpu direct" updates top process directly.
proc_sorting = "name"
#* Reverse sorting order, True or False.
proc_reversed = False
#* Show processes as a tree.
proc_tree = False
#* Use the cpu graph colors in the process list.
proc_colors = True
#* Use a darkening gradient in the process list.
proc_gradient = True
#* If process cpu usage should be of the core it's running on or usage of the total available cpu power.
proc_per_core = False
#* Show process memory as bytes instead of percent.
proc_mem_bytes = True
#* Show cpu graph for each process.
proc_cpu_graphs = True
#* Use /proc/[pid]/smaps for memory information in the process info box (very slow but more accurate)
proc_info_smaps = False
#* Show proc box on left side of screen instead of right.
proc_left = False
#* (Linux) Filter processes tied to the Linux kernel(similar behavior to htop).
proc_filter_kernel = False
#* In tree-view, always accumulate child process resources in the parent process.
proc_aggregate = False
#* Sets the CPU stat shown in upper half of the CPU graph, "total" is always available.
#* Select from a list of detected attributes from the options menu.
cpu_graph_upper = "Auto"
#* Sets the CPU stat shown in lower half of the CPU graph, "total" is always available.
#* Select from a list of detected attributes from the options menu.
cpu_graph_lower = "Auto"
#* If gpu info should be shown in the cpu box. Available values = "Auto", "On" and "Off".
show_gpu_info = "Auto"
#* Toggles if the lower CPU graph should be inverted.
cpu_invert_lower = True
#* Set to True to completely disable the lower CPU graph.
cpu_single_graph = False
#* Show cpu box at bottom of screen instead of top.
cpu_bottom = False
#* Shows the system uptime in the CPU box.
show_uptime = True
#* Show cpu temperature.
check_temp = True
#* Which sensor to use for cpu temperature, use options menu to select from list of available sensors.
cpu_sensor = "Auto"
#* Show temperatures for cpu cores also if check_temp is True and sensors has been found.
show_coretemp = True
#* Set a custom mapping between core and coretemp, can be needed on certain cpus to get correct temperature for correct core.
#* Use lm-sensors or similar to see which cores are reporting temperatures on your machine.
#* Format "x:y" x=core with wrong temp, y=core with correct temp, use space as separator between multiple entries.
#* Example: "4:0 5:1 6:3"
cpu_core_map = ""
#* Which temperature scale to use, available values: "celsius", "fahrenheit", "kelvin" and "rankine".
temp_scale = "celsius"
#* Use base 10 for bits/bytes sizes, KB = 1000 instead of KiB = 1024.
base_10_sizes = False
#* Show CPU frequency.
show_cpu_freq = True
#* Draw a clock at top of screen, formatting according to strftime, empty string to disable.
#* Special formatting: /host = hostname | /user = username | /uptime = system uptime
clock_format = "%X"
#* Update main ui in background when menus are showing, set this to false if the menus is flickering too much for comfort.
background_update = True
#* Custom cpu model name, empty string to disable.
custom_cpu_name = ""
#* Optional filter for shown disks, should be full path of a mountpoint, separate multiple values with whitespace " ".
#* Begin line with "exclude=" to change to exclude filter, otherwise defaults to "most include" filter. Example: disks_filter="exclude=/boot /home/user".
disks_filter = ""
#* Show graphs instead of meters for memory values.
mem_graphs = True
#* Show mem box below net box instead of above.
mem_below_net = False
#* Count ZFS ARC in cached and available memory.
zfs_arc_cached = True
#* If swap memory should be shown in memory box.
show_swap = True
#* Show swap as a disk, ignores show_swap value above, inserts itself after first disk.
swap_disk = True
#* If mem box should be split to also show disks info.
show_disks = True
#* Filter out non physical disks. Set this to False to include network disks, RAM disks and similar.
only_physical = True
#* Read disks list from /etc/fstab. This also disables only_physical.
use_fstab = True
#* Setting this to True will hide all datasets, and only show ZFS pools. (IO stats will be calculated per-pool)
zfs_hide_datasets = False
#* Set to true to show available disk space for privileged users.
disk_free_priv = False
#* Toggles if io activity % (disk busy time) should be shown in regular disk usage view.
show_io_stat = True
#* Toggles io mode for disks, showing big graphs for disk read/write speeds.
io_mode = False
#* Set to True to show combined read/write io graphs in io mode.
io_graph_combined = False
#* Set the top speed for the io graphs in MiB/s (100 by default), use format "mountpoint:speed" separate disks with whitespace " ".
#* Example: "/mnt/media:100 /:20 /boot:1".
io_graph_speeds = ""
#* Set fixed values for network graphs in Mebibits. Is only used if net_auto is also set to False.
net_download = 100
net_upload = 100
#* Use network graphs auto rescaling mode, ignores any values set above and rescales down to 10 Kibibytes at the lowest.
net_auto = True
#* Sync the auto scaling for download and upload to whichever currently has the highest scale.
net_sync = True
#* Starts with the Network Interface specified here.
net_iface = ""
#* Show battery stats in top right if battery is present.
show_battery = True
#* Which battery to use if multiple are present. "Auto" for auto detection.
selected_battery = "Auto"
#* Set loglevel for "~/.config/btop/btop.log" levels are: "ERROR" "WARNING" "INFO" "DEBUG".
#* The level set includes all lower levels, i.e. "DEBUG" will show all logging info.
log_level = "WARNING"
#* Measure PCIe throughput on NVIDIA cards, may impact performance on certain cards.
nvml_measure_pcie_speeds = True
#* Horizontally mirror the GPU graph.
gpu_mirror_graph = True
#* Custom gpu0 model name, empty string to disable.
custom_gpu_name0 = ""
#* Custom gpu1 model name, empty string to disable.
custom_gpu_name1 = ""
#* Custom gpu2 model name, empty string to disable.
custom_gpu_name2 = ""
#* Custom gpu3 model name, empty string to disable.
custom_gpu_name3 = ""
#* Custom gpu4 model name, empty string to disable.
custom_gpu_name4 = ""
#* Custom gpu5 model name, empty string to disable.
custom_gpu_name5 = ""

View File

@@ -0,0 +1,61 @@
{
"$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json",
"logo": {
"type": "none"
},
"display": {
"separator": " ➜ ",
"color": {
"keys": "magenta",
"title": "cyan"
}
},
"modules": [
"title",
"separator",
{"type": "os", "key": "󰣚 Système ", "keyColor": "magenta"},
{"type": "kernel", "key": " Kernel ", "keyColor": "magenta"},
{"type": "shell", "key": " Shell ", "keyColor": "magenta"},
{"type": "terminal", "key": " Terminal ", "keyColor": "magenta"},
{"type": "wm", "key": " Bureau ", "keyColor": "magenta"},
{"type": "packages", "key": "󰏖 Paquets ", "keyColor": "magenta"},
"break",
{"type": "cpu", "key": "󰻠 CPU ", "keyColor": "magenta"},
{
"type": "gpu",
"key": "󰍛 GPU ",
"keyColor": "magenta",
"hideTypes": ["Integrated"]
},
{
"type": "display",
"key": "󰹆 Écran ",
"keyColor": "magenta",
"format": "{width}x{height} @ {refresh-rate}Hz"
},
{"type": "memory", "key": "󰑭 Mémoire ", "keyColor": "magenta"},
{
"type": "disk",
"key": "󰋊 Disque ",
"keyColor": "magenta",
"folders": "/"
},
{"type": "processes", "key": "󰙲 Processus", "keyColor": "magenta"},
{"type": "uptime", "key": "󰅐 Uptime ", "keyColor": "magenta"},
"break",
{
"type": "media",
"key": " Musique ",
"keyColor": "magenta",
"format": "{artist} — {title}"
},
"break",
"colors"
]
}

58
INSTALL/configs/gitconfig Normal file
View File

@@ -0,0 +1,58 @@
[credential "https://github.com"]
helper =
helper = !/usr/bin/gh auth git-credential
[credential "https://gist.github.com"]
helper =
helper = !/usr/bin/gh auth git-credential
[core]
pager = delta
[interactive]
diffFilter = delta --color-only
[delta]
syntax-theme = violet-chaton
side-by-side = true
line-numbers = true
navigate = true
hyperlinks = true
# Lignes supprimées : fond rose sombre
minus-style = syntax "#3d1a2e"
minus-emph-style = syntax "#5a1a38"
# Lignes ajoutées : fond cyan sombre
plus-style = syntax "#0d2a35"
plus-emph-style = syntax "#0d3a48"
# Numéros de ligne
line-numbers-minus-style = "#ff79c6"
line-numbers-plus-style = "#8be9fd"
line-numbers-zero-style = "#6c7086"
line-numbers-left-format = " {nm} │"
line-numbers-right-format = " {np} │"
# En-tête de fichier
file-style = "bold #e79cfe"
file-decoration-style = "#3d2454 box"
file-added-label = "[+]"
file-removed-label = "[-]"
file-modified-label = "[~]"
file-renamed-label = "[»]"
# En-tête de hunk
hunk-header-style = "syntax #261537"
hunk-header-decoration-style = "#6c7086 box"
hunk-header-file-style = "bold #e79cfe"
hunk-header-line-number-style = "#7f849c"
# Commit
commit-decoration-style = "bold #ff79c6 box"
commit-style = "bold #f8f8f2"
[merge]
conflictstyle = diff3
[diff]
colorMoved = default

3
INSTALL/configs/glow.yml Normal file
View File

@@ -0,0 +1,3 @@
# Style : dark, notty, dracula, tokyo-night, pink
style: "dark"
pager: true

View File

@@ -0,0 +1,18 @@
gui:
theme:
activeBorderColor: ['#ff79c6', 'bold'] # pink — fenêtre active
inactiveBorderColor: ['#6c7086'] # muted — fenêtre inactive
optionsTextColor: ['#e79cfe'] # purple
selectedLineBgColor: ['#3d2454'] # bg-high
selectedRangeBgColor: ['#3d2454']
cherryPickedCommitBgColor: ['#3d2454']
cherryPickedCommitFgColor: ['#8be9fd'] # cyan
unstagedChangesColor: ['#f38ba8'] # danger
defaultFgColor: ['#f8f8f2'] # text
searchingActiveBorderColor: ['#8be9fd', 'bold'] # cyan
nerdFontsVersion: '3'
border: rounded
git:
pagers:
- colorArg: always
pager: delta

View File

@@ -0,0 +1,172 @@
"$schema" = 'https://starship.rs/config-schema.json'
command_timeout = 1000
add_newline = true
# ── Format ────────────────────────────────────────────────────────────────────
# Ligne 1 : infos → durée | mémoire | heure
# Ligne 2 :
format = """
$os $username$hostname$directory$git_branch$git_status$git_state$git_commit\
$python$nodejs$rust$golang$java$docker_context$package\
$fill\
$cmd_duration$memory_usage$time
$status$character"""
# ── Système ───────────────────────────────────────────────────────────────────
[os]
disabled = false
style = "bold #ff79c6"
format = "[$symbol]($style)"
[os.symbols]
Pop = " "
Ubuntu = " "
Debian = " "
Arch = " "
Fedora = " "
Kali = " "
Manjaro = " "
Mint = " "
NixOS = " "
openSUSE = " "
Raspbian = " "
Redhat = " "
RedHatEnterprise = " "
RockyLinux = " "
AlmaLinux = " "
CentOS = " "
Alpine = " "
Android = " "
FreeBSD = " "
Macos = " "
Windows = "󰍲 "
Unknown = " "
[username]
style_user = "#9399b2"
style_root = "bold #f38ba8"
format = "[$user]($style)"
show_always = true
[hostname]
style = "#7f849c"
format = "[@$hostname]($style) "
ssh_only = false
ssh_symbol = "󰣀 "
# ── Navigation ────────────────────────────────────────────────────────────────
[directory]
style = "bold #e79cfe"
read_only = " 󰌾"
read_only_style = "#f38ba8"
truncate_to_repo = false
truncation_length = 4
truncation_symbol = "…/"
format = "[ $path]($style)[$read_only]($read_only_style) "
# ── Git ───────────────────────────────────────────────────────────────────────
[git_branch]
symbol = " "
style = "bold #ff79c6"
format = "[$symbol$branch]($style) "
[git_status]
style = "#8be9fd"
format = "([$all_status$ahead_behind]($style) )"
ahead = "⇡$count"
behind = "⇣$count"
diverged = "⇕⇡$ahead_count⇣$behind_count"
untracked = "?$count"
stashed = "󰏗 $count"
modified = "!$count"
staged = "+$count"
renamed = "»$count"
deleted = "✘$count"
conflicted = "=$count"
[git_state]
style = "#f9e2af"
format = '\([$state( $progress_current/$progress_total)]($style)\) '
[git_commit]
style = "#6c7086"
format = '[\($hash$tag\)]($style) '
tag_symbol = " 󰓼 "
only_detached = true
# ── Langages ──────────────────────────────────────────────────────────────────
[python]
symbol = " "
style = "#f9e2af"
format = "[$symbol$version]($style) "
[nodejs]
symbol = " "
style = "#a6e3a1"
format = "[$symbol$version]($style) "
[rust]
symbol = " "
style = "#ff79c6"
format = "[$symbol$version]($style) "
[golang]
symbol = " "
style = "#8be9fd"
format = "[$symbol$version]($style) "
[java]
symbol = " "
style = "#f38ba8"
format = "[$symbol$version]($style) "
[docker_context]
symbol = " "
style = "#8be9fd"
format = "[$symbol$context]($style) "
only_with_files = true
[package]
symbol = "󰏗 "
style = "#e79cfe"
format = "[$symbol$version]($style) "
display_private = false
# ── Droite (après $fill) ─────────────────────────────────────────────────────
[fill]
symbol = " "
[cmd_duration]
format = "[󱎫 $duration]($style) "
style = "#7f849c"
min_time = 2000
[memory_usage]
disabled = false
threshold = 0
symbol = "󰑭 "
style = "#9399b2"
format = "[$symbol$ram]($style) "
[time]
disabled = false
style = "bold #6c7086"
format = "[ $time]($style)"
time_format = "%H:%M"
# ── Ligne 2 ───────────────────────────────────────────────────────────────────
[status]
disabled = false
style = "#ff79c6"
format = "[$symbol$status ]($style)"
symbol = "✘ "
[character]
success_symbol = "[](bold #8be9fd)"
error_symbol = "[](bold #ff79c6)"

21
INSTALL/configs/yazi.toml Normal file
View File

@@ -0,0 +1,21 @@
[manager]
ratio = [1, 3, 4] # proportions : parents | dossier | preview
sort_by = "natural"
sort_sensitive = false
sort_hidden = false
show_hidden = false
show_symlink = true
[preview]
tab_size = 2
max_width = 600
max_height = 900
[opener]
edit = [{ run = 'nano "$@"', block = true }]
[open]
rules = [
{ mime = "text/*", use = "edit" },
{ mime = "image/*", use = "open" },
]

120
INSTALL/configs/zshrc Normal file
View File

@@ -0,0 +1,120 @@
# ── zinit ─────────────────────────────────────────────────────────────────────
if [[ ! -f $HOME/.local/share/zinit/zinit.git/zinit.zsh ]]; then
print -P "%F{33} %F{220}Installing zinit…%f"
command mkdir -p "$HOME/.local/share/zinit" && command chmod g-rwX "$HOME/.local/share/zinit"
command git clone https://github.com/zdharma-continuum/zinit "$HOME/.local/share/zinit/zinit.git"
fi
source "$HOME/.local/share/zinit/zinit.git/zinit.zsh"
autoload -Uz _zinit
(( ${+_comps} )) && _comps[zinit]=_zinit
# ── Plugins ───────────────────────────────────────────────────────────────────
zinit light zsh-users/zsh-autosuggestions
zinit light zsh-users/zsh-syntax-highlighting
zinit light zsh-users/zsh-completions
# ── PATH ──────────────────────────────────────────────────────────────────────
export PATH="/usr/local/bin:$HOME/.local/bin:/usr/bin:$HOME/.atuin/bin:$PATH"
# ── Historique ────────────────────────────────────────────────────────────────
HISTSIZE=10000
HISTFILESIZE=20000
HISTFILE=~/.zsh_history
setopt HIST_IGNORE_DUPS
setopt HIST_IGNORE_SPACE
setopt SHARE_HISTORY
setopt APPEND_HISTORY
# ── Options zsh ───────────────────────────────────────────────────────────────
setopt AUTO_CD # cd en tapant juste le nom du dossier
setopt CORRECT # correction de typos
setopt GLOB_DOTS # inclure fichiers cachés dans les globs
setopt NO_BEEP # silence
# ── Completion ────────────────────────────────────────────────────────────────
autoload -Uz compinit && compinit
zstyle ':completion:*' menu select
zstyle ':completion:*' list-colors "${(s.:.)LS_COLORS}"
zstyle ':completion:*' matcher-list 'm:{a-z}={A-Za-z}'
zstyle ':completion:*' group-name ''
zstyle ':completion:*:descriptions' format '%F{#e79cfe}── %d ──%f'
# ── Couleurs grep ─────────────────────────────────────────────────────────────
alias grep='grep --color=auto'
alias fgrep='fgrep --color=auto'
alias egrep='egrep --color=auto'
# ── eza (remplace ls) ─────────────────────────────────────────────────────────
alias ls='eza --icons --color=always --group-directories-first'
alias ll='eza -l --icons --git --group-directories-first'
alias lt='eza --tree --icons'
export LS_COLORS="$(bash ~/.local/share/violet-chaton/violet-chaton-ls-colors.sh)"
# ── bat (remplace cat) ────────────────────────────────────────────────────────
alias bat='batcat'
alias cat='batcat --paging=never'
export MANPAGER="sh -c 'col -bx | batcat -l man -p'"
# ── fd (remplace find) ────────────────────────────────────────────────────────
alias fd='fdfind'
# ── Nouveaux outils ───────────────────────────────────────────────────────────
alias lg='lazygit' # git TUI
alias rg='rg --color=always' # ripgrep avec couleurs
alias disk='ncdu' # analyse disque
alias man='tldr' # man pages simplifiées
alias pipes='pipes.sh' # animation pipes
fuck() { eval "$(thefuck --alias 2>/dev/null)"; fuck "$@"; } # init paresseux
# ── fzf ───────────────────────────────────────────────────────────────────────
[ -f /usr/share/doc/fzf/examples/key-bindings.zsh ] && source /usr/share/doc/fzf/examples/key-bindings.zsh
[ -f /usr/share/doc/fzf/examples/completion.zsh ] && source /usr/share/doc/fzf/examples/completion.zsh
# Raccourcis fzf personnalisés
bindkey -r '^T' # libère Ctrl+T
bindkey -r '\ec' # libère Alt+C
bindkey '^G' fzf-file-widget # Ctrl+G → chercher un fichier
bindkey '^F' fzf-cd-widget # Ctrl+F → chercher un dossier
export FZF_DEFAULT_COMMAND='fdfind --type f --hidden --follow --exclude .git --exclude .cache --search-path $HOME'
export FZF_CTRL_T_COMMAND="$FZF_DEFAULT_COMMAND"
export FZF_ALT_C_COMMAND='fdfind --type d --hidden --follow --exclude .git --exclude .cache --search-path $HOME'
export FZF_DEFAULT_OPTS="
--height 40% --layout=reverse --border rounded --info=hidden
--preview 'batcat --color=always --style=plain --line-range=:80 {}'
--preview-window 'right:50%:wrap'
--color=bg+:#3d2454,bg:#341c4a,spinner:#ff79c6,hl:#8be9fd
--color=fg:#f8f8f2,header:#ff79c6,info:#e79cfe,pointer:#ff79c6
--color=marker:#a6e3a1,fg+:#f8f8f2,prompt:#e79cfe,hl+:#8be9fd"
# ── zoxide (remplace cd) ──────────────────────────────────────────────────────
eval "$(zoxide init zsh --cmd cd)"
# ── Fastfetch ─────────────────────────────────────────────────────────────────
alias fetch='fastfetch --config ~/.config/fastfetch/config.jsonc --raw <(chafa --size 44x22 --symbols vhalf --color-space rgb "$HOME/.config/fastfetch/violet-chaton-logo.png") --logo-width 52'
fetch
# ── zsh-autosuggestions ───────────────────────────────────────────────────────
ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE="fg=#6c7086"
ZSH_AUTOSUGGEST_STRATEGY=(history completion)
ZSH_AUTOSUGGEST_BUFFER_MAX_SIZE=20
bindkey '^ ' autosuggest-accept # Ctrl+Space pour accepter la suggestion
# ── zsh-syntax-highlighting (couleurs violet-chaton) ─────────────────────────
ZSH_HIGHLIGHT_STYLES[command]='fg=#8be9fd'
ZSH_HIGHLIGHT_STYLES[builtin]='fg=#ff79c6'
ZSH_HIGHLIGHT_STYLES[alias]='fg=#e79cfe'
ZSH_HIGHLIGHT_STYLES[function]='fg=#8be9fd'
ZSH_HIGHLIGHT_STYLES[string]='fg=#e79cfe'
ZSH_HIGHLIGHT_STYLES[path]='fg=#f8f8f2,underline'
ZSH_HIGHLIGHT_STYLES[unknown-token]='fg=#f38ba8,bold'
ZSH_HIGHLIGHT_STYLES[reserved-word]='fg=#ff79c6'
ZSH_HIGHLIGHT_STYLES[comment]='fg=#6c7086,italic'
ZSH_HIGHLIGHT_STYLES[globbing]='fg=#f9e2af'
ZSH_HIGHLIGHT_STYLES[history-expansion]='fg=#f9e2af'
# ── atuin (remplace Ctrl+R) ───────────────────────────────────────────────────
[[ -f ~/.atuin/bin/env ]] && source ~/.atuin/bin/env
command -v atuin &>/dev/null && eval "$(atuin init zsh --disable-up-arrow)"
# ── starship ──────────────────────────────────────────────────────────────────
command -v starship &>/dev/null && eval "$(starship init zsh)"

80
INSTALL/install.sh Executable file
View File

@@ -0,0 +1,80 @@
#!/bin/bash
# ══════════════════════════════════════════════════════════════════════════════
# violet-chaton — script d'installation automatique
# Usage : bash install.sh
# ══════════════════════════════════════════════════════════════════════════════
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
# Initialiser le log avant de sourcer lib.sh pour que tous les sous-scripts
# partagent exactement le même fichier (INSTALL_LOG exporté = hérité par bash)
export INSTALL_LOG="$HOME/violet-chaton-install-$(date +%Y%m%d-%H%M%S).log"
source "$SCRIPT_DIR/scripts/lib.sh"
# ── Vérifications préalables ──────────────────────────────────────────────────
check_requirements() {
local ok=true
for cmd in curl git sudo unzip; do
has_cmd "$cmd" || { warn "$cmd manquant — installer avec : sudo apt install $cmd"; ok=false; }
done
[ "$ok" = false ] && exit 1
}
# ── Menu principal ─────────────────────────────────────────────────────────────
show_menu() {
echo -e "${PURPLE} Que veux-tu faire ?${RESET}"
echo ""
echo -e " ${CYAN}1)${RESET} Installation complète ${MUTED}(outils + configs + thèmes)${RESET}"
echo -e " ${CYAN}2)${RESET} Paquets apt seulement"
echo -e " ${CYAN}3)${RESET} Binaires manuels seulement ${MUTED}(lazygit, yazi, glow…)${RESET}"
echo -e " ${CYAN}4)${RESET} Déployer configs et thèmes seulement"
echo -e " ${RED}q)${RESET} Quitter"
echo ""
echo -ne "${PINK} Choix : ${RESET}"
read -r choice
}
run_step() {
local script="$SCRIPT_DIR/scripts/$1"
if [ -f "$script" ]; then
bash "$script"
else
fail "Script introuvable : $1"
fi
}
# ── Lancement ─────────────────────────────────────────────────────────────────
clear
banner
check_requirements
show_menu
case "$choice" in
1)
_log "Choix : Installation complète (1/2/3)"
echo ""
echo -e "${MUTED} [1/3] Paquets apt${RESET}"
run_step "01-packages-apt.sh"
echo ""
echo -e "${MUTED} [2/3] Binaires manuels${RESET}"
run_step "02-packages-manual.sh"
echo ""
echo -e "${MUTED} [3/3] Configs et thèmes${RESET}"
run_step "03-deploy-configs.sh"
;;
2) _log "Choix : Paquets apt seulement" ; run_step "01-packages-apt.sh" ;;
3) _log "Choix : Binaires manuels seulement" ; run_step "02-packages-manual.sh" ;;
4) _log "Choix : Configs et thèmes seulement" ; run_step "03-deploy-configs.sh" ;;
q|Q) echo -e "\n${MUTED} Au revoir q:D${RESET}\n"; exit 0 ;;
*) fail "Choix invalide"; exit 1 ;;
esac
banner_done
show_summary
echo -ne "${MUTED} Appuie sur Entrée pour lancer zsh...${RESET}"
read -r _
echo ""
exec zsh

View File

@@ -0,0 +1,95 @@
#!/bin/bash
# ── violet-chaton : paquets apt ───────────────────────────────────────────────
source "$(dirname "$0")/lib.sh"
PACKAGES=(
zsh
eza
bat
fd-find
fzf
zoxide
git-delta
vivid
ripgrep
ncdu
thefuck
lolcat
cbonsai
chafa
jq
libgtk-3-bin
nemo
nemo-fileroller
# fastfetch → installé via .deb GitHub (voir 02-packages-manual.sh)
cava
btop
# atuin → installé via son propre script (voir 02-packages-manual.sh)
# starship → installé via son propre script (voir 02-packages-manual.sh)
# ── Fun & utils ──────────────────────────────────────────────────────────
cmatrix
toilet
w3m
jp2a
qalc
)
section "Installation des paquets apt"
step "Mise à jour des dépôts..."
sudo apt update -qq 2>/dev/null && ok "Dépôts mis à jour" || { fail "Échec apt update" ; exit 1; }
for pkg in "${PACKAGES[@]}"; do
if dpkg -s "$pkg" &>/dev/null; then
ok "$pkg (déjà installé)"
else
step "Installation de $pkg..."
if sudo apt install -y "$pkg" -qq 2>/dev/null; then
ok "$pkg"
else
fail "$pkg — vérifier le nom du paquet"
fi
fi
done
section "Vivaldi (navigateur)"
if dpkg -s vivaldi-stable &>/dev/null; then
ok "vivaldi-stable (déjà installé)"
else
step "Ajout du dépôt Vivaldi..."
curl -fsSL https://repo.vivaldi.com/archive/linux_signing_key.pub \
| sudo gpg --dearmor -o /usr/share/keyrings/vivaldi-browser.gpg 2>/dev/null && \
echo "deb [signed-by=/usr/share/keyrings/vivaldi-browser.gpg arch=$(dpkg --print-architecture)] \
https://repo.vivaldi.com/archive/deb/ stable main" \
| sudo tee /etc/apt/sources.list.d/vivaldi.list &>/dev/null && \
sudo apt update -qq 2>/dev/null && ok "Dépôt ajouté" || { fail "Dépôt Vivaldi — échec" ; }
step "Installation de vivaldi-stable..."
sudo apt install -y vivaldi-stable -qq 2>/dev/null && \
ok "vivaldi-stable" || fail "vivaldi-stable"
fi
section "GitHub CLI (gh)"
if dpkg -s gh &>/dev/null; then
ok "gh (déjà installé)"
else
step "Ajout du dépôt GitHub CLI..."
curl -fsSL https://cli.github.com/packages/githubcli-archive-keyring.gpg \
| sudo dd of=/usr/share/keyrings/githubcli-archive-keyring.gpg 2>/dev/null && \
sudo chmod go+r /usr/share/keyrings/githubcli-archive-keyring.gpg && \
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/githubcli-archive-keyring.gpg] https://cli.github.com/packages stable main" \
| sudo tee /etc/apt/sources.list.d/github-cli.list &>/dev/null && \
sudo apt update -qq 2>/dev/null && ok "Dépôt ajouté" || { fail "Dépôt gh — échec" ; }
step "Installation de gh..."
sudo apt install -y gh -qq 2>/dev/null && \
ok "gh" || fail "gh"
fi
section "Configuration du shell par défaut"
if [ "$SHELL" != "/usr/bin/zsh" ]; then
step "Passage à zsh..."
chsh -s /usr/bin/zsh && ok "zsh défini comme shell par défaut" || warn "Échec chsh — à faire manuellement"
else
ok "zsh déjà défini comme shell par défaut"
fi

View File

@@ -0,0 +1,261 @@
#!/bin/bash
# ── violet-chaton : binaires GitHub ───────────────────────────────────────────
source "$(dirname "$0")/lib.sh"
BIN="$HOME/.local/bin"
ensure_dir "$BIN"
# Récupère le dernier tag d'un dépôt GitHub via la redirection web (sans API → pas de rate limit)
github_latest_tag() {
curl -sL -o /dev/null -w "%{url_effective}" \
"https://github.com/$1/releases/latest" 2>/dev/null \
| sed 's|.*/tag/||' | tr -d '\r\n'
}
install_binary() {
local name="$1"
local url="$2"
local extract="$3" # "tar:fichier", "zip:fichier", "direct", "tar-dir:dir/fichier"
step "Téléchargement de $name..."
local tmp=$(mktemp -d)
local archive="$tmp/archive"
if ! curl -sL "$url" -o "$archive"; then
fail "$name — échec du téléchargement"
rm -rf "$tmp"
return 1
fi
case "$extract" in
tar:*)
local file="${extract#tar:}"
tar xf "$archive" -C "$tmp" 2>/dev/null
local found; found=$(find "$tmp" -maxdepth 3 -name "$file" -type f | head -1)
[ -n "$found" ] && mv "$found" "$BIN/$name" && chmod +x "$BIN/$name"
;;
tar-dir:*)
local path="${extract#tar-dir:}"
tar xf "$archive" -C "$tmp" 2>/dev/null && \
cp "$tmp/$path" "$BIN/$name" && chmod +x "$BIN/$name"
;;
zip:*)
local file="${extract#zip:}"
unzip -o "$archive" -d "$tmp" 2>/dev/null && \
find "$tmp" -name "$file" -exec cp {} "$BIN/$name" \; && chmod +x "$BIN/$name"
;;
direct)
cp "$archive" "$BIN/$name" && chmod +x "$BIN/$name"
;;
esac
rm -rf "$tmp"
if [ -x "$BIN/$name" ]; then
ok "$name"
else
fail "$name — installation échouée"
fi
}
section "Installation des binaires manuels"
# lazygit
if has_cmd lazygit; then
ok "lazygit (déjà installé)"
else
LG_VER=$(github_latest_tag "jesseduffield/lazygit")
if [ -z "$LG_VER" ]; then
fail "lazygit — version introuvable"
else
install_binary "lazygit" \
"https://github.com/jesseduffield/lazygit/releases/download/${LG_VER}/lazygit_${LG_VER#v}_linux_x86_64.tar.gz" \
"tar:lazygit"
fi
fi
# yazi
if has_cmd yazi; then
ok "yazi (déjà installé)"
else
install_binary "yazi" \
"https://github.com/sxyazi/yazi/releases/latest/download/yazi-x86_64-unknown-linux-musl.zip" \
"zip:yazi"
fi
# glow
if has_cmd glow; then
ok "glow (déjà installé)"
else
GLOW_VER=$(github_latest_tag "charmbracelet/glow")
if [ -z "$GLOW_VER" ]; then
fail "glow — version introuvable"
else
install_binary "glow" \
"https://github.com/charmbracelet/glow/releases/download/${GLOW_VER}/glow_${GLOW_VER#v}_Linux_x86_64.tar.gz" \
"tar-dir:glow_${GLOW_VER#v}_Linux_x86_64/glow"
fi
fi
# tealdeer (tldr)
# La version n'est pas dans le nom du fichier → latest/download suffit, pas besoin de github_latest_tag
if [ -x "$BIN/tldr" ] && "$BIN/tldr" --version &>/dev/null; then
ok "tldr (déjà installé)"
else
install_binary "tldr" \
"https://github.com/tealdeer-rs/tealdeer/releases/latest/download/tealdeer-linux-x86_64-musl" \
"direct"
fi
# navi
if has_cmd navi; then
ok "navi (déjà installé)"
else
NAVI_VER=$(github_latest_tag "denisidoro/navi")
if [ -z "$NAVI_VER" ]; then
fail "navi — version introuvable"
else
install_binary "navi" \
"https://github.com/denisidoro/navi/releases/download/${NAVI_VER}/navi-${NAVI_VER}-x86_64-unknown-linux-musl.tar.gz" \
"tar:navi"
fi
fi
# pipes.sh
if [ -x "$BIN/pipes.sh" ]; then
ok "pipes.sh (déjà installé)"
else
step "Téléchargement de pipes.sh..."
curl -sL "https://raw.githubusercontent.com/pipeseroni/pipes.sh/master/pipes.sh" -o "$BIN/pipes.sh" && \
chmod +x "$BIN/pipes.sh" && ok "pipes.sh" || fail "pipes.sh"
fi
section "starship (prompt)"
if has_cmd starship; then
ok "starship (déjà installé)"
else
step "Installation de starship..."
_ts=$(mktemp)
curl -sS https://starship.rs/install.sh -o "$_ts" 2>/dev/null && \
sh "$_ts" --yes &>/dev/null && ok "starship" || fail "starship"
rm -f "$_ts"
fi
section "atuin (historique shell)"
if has_cmd atuin; then
ok "atuin (déjà installé)"
else
step "Installation de atuin..."
_ts=$(mktemp)
curl --proto '=https' --tlsv1.2 -LsSf https://setup.atuin.sh -o "$_ts" 2>/dev/null && \
sh "$_ts" &>/dev/null && ok "atuin" || fail "atuin"
rm -f "$_ts"
fi
section "fastfetch (system info)"
if has_cmd fastfetch; then
ok "fastfetch (déjà installé)"
else
step "Téléchargement de fastfetch (.deb)..."
tmp=$(mktemp -d)
if curl -sL "https://github.com/fastfetch-cli/fastfetch/releases/latest/download/fastfetch-linux-amd64.deb" \
-o "$tmp/fastfetch.deb"; then
sudo dpkg -i "$tmp/fastfetch.deb" &>/dev/null && \
ok "fastfetch" || fail "fastfetch — échec dpkg -i"
else
fail "fastfetch — échec du téléchargement"
fi
rm -rf "$tmp"
fi
section "zinit (gestionnaire de plugins zsh)"
if [ ! -d "$HOME/.local/share/zinit/zinit.git" ]; then
step "Installation de zinit..."
mkdir -p "$HOME/.local/share/zinit"
git clone https://github.com/zdharma-continuum/zinit "$HOME/.local/share/zinit/zinit.git" -q && \
ok "zinit" || fail "zinit"
else
ok "zinit (déjà installé)"
fi
section "Mise à jour du cache tldr"
step "Téléchargement des pages..."
if "$BIN/tldr" --update 2>/dev/null || { sleep 3 && "$BIN/tldr" --update 2>/dev/null; }; then
ok "Cache tldr mis à jour"
else
warn "Échec mise à jour tldr — relancer manuellement : tldr --update"
fi
# ── Nerd Fonts ─────────────────────────────────────────────────────────────────
section "Nerd Fonts (JetBrainsMono NL + 0xProto)"
FONTS_DIR="$HOME/.local/share/fonts/NerdFonts"
ensure_dir "$FONTS_DIR"
install_font() {
local name="$1"
local url="$2"
local marker="$3" # nom d'un fichier font attendu après install
if [ -f "$FONTS_DIR/$marker" ]; then
ok "$name (déjà installée)"
return
fi
step "Téléchargement de $name..."
local tmp=$(mktemp -d)
if curl -sL "$url" -o "$tmp/font.zip"; then
unzip -o "$tmp/font.zip" -d "$tmp/extracted" '*.ttf' '*.otf' &>/dev/null
find "$tmp/extracted" -type f \( -name "*.ttf" -o -name "*.otf" \) \
-exec cp {} "$FONTS_DIR/" \;
ok "$name"
else
fail "$name — échec du téléchargement"
fi
rm -rf "$tmp"
}
install_font "JetBrainsMono NL" \
"https://github.com/ryanoasis/nerd-fonts/releases/latest/download/JetBrainsMono.zip" \
"JetBrainsMonoNLNerdFont-Regular.ttf"
install_font "0xProto" \
"https://github.com/ryanoasis/nerd-fonts/releases/latest/download/0xProto.zip" \
"0xProtoNerdFont-Regular.ttf"
step "Mise à jour du cache de polices (fc-cache)..."
fc-cache -f "$FONTS_DIR" &>/dev/null && ok "Cache polices" || warn "fc-cache échoué"
# ── candy-icons ────────────────────────────────────────────────────────────────
section "candy-icons (thème d'icônes)"
ICONS_DIR="$HOME/.local/share/icons"
ensure_dir "$ICONS_DIR"
if [ -d "$ICONS_DIR/candy-icons-master" ]; then
ok "candy-icons (déjà installé)"
else
step "Téléchargement de candy-icons..."
tmp=$(mktemp -d)
if curl -sL "https://github.com/EliverLara/candy-icons/archive/refs/heads/master.zip" \
-o "$tmp/candy.zip"; then
unzip -o "$tmp/candy.zip" -d "$tmp/extracted" &>/dev/null
mv "$tmp/extracted/candy-icons-master" "$ICONS_DIR/candy-icons-master"
ok "candy-icons"
else
fail "candy-icons — échec du téléchargement"
fi
rm -rf "$tmp"
fi
step "Mise à jour du cache icônes (gtk-update-icon-cache)..."
gtk-update-icon-cache -f "$ICONS_DIR/candy-icons-master" &>/dev/null && \
ok "Cache icônes mis à jour" || warn "gtk-update-icon-cache échoué"
# ── uv ─────────────────────────────────────────────────────────────────────────
section "uv (gestionnaire Python + uvx)"
if has_cmd uv; then
ok "uv (déjà installé)"
else
step "Installation de uv..."
_ts=$(mktemp)
curl -LsSf https://astral.sh/uv/install.sh -o "$_ts" 2>/dev/null && \
sh "$_ts" &>/dev/null && ok "uv (uvx inclus)" || fail "uv"
rm -f "$_ts"
fi

View File

@@ -0,0 +1,241 @@
#!/bin/bash
# ── violet-chaton : déploiement des configs et thèmes ─────────────────────────
source "$(dirname "$0")/lib.sh"
SCRIPT_DIR="$(cd "$(dirname "$0")/.." && pwd)"
THEMES="$SCRIPT_DIR/themes"
CONFIGS="$SCRIPT_DIR/configs"
BACKUP_DIR="$HOME/.config/violet-chaton-backups/$(date +%Y%m%d-%H%M%S)"
deploy_file() {
local src="$1"
local dst="$2"
ensure_dir "$(dirname "$dst")"
if [ -f "$dst" ]; then
local rel="${dst#"$HOME/"}"
ensure_dir "$BACKUP_DIR/$(dirname "$rel")"
cp "$dst" "$BACKUP_DIR/$rel" 2>/dev/null
fi
if cp "$src" "$dst" 2>/dev/null; then
ok "$(basename "$dst")"
else
fail "$(basename "$dst")"
fi
}
# ── Configs shell ──────────────────────────────────────────────────────────────
section "Configs shell"
deploy_file "$CONFIGS/zshrc" "$HOME/.zshrc"
deploy_file "$CONFIGS/bashrc" "$HOME/.bashrc"
# Préserver user.name et user.email avant d'écraser le gitconfig
_GIT_NAME=$(git config --global user.name 2>/dev/null)
_GIT_EMAIL=$(git config --global user.email 2>/dev/null)
deploy_file "$CONFIGS/gitconfig" "$HOME/.gitconfig"
if [ -n "$_GIT_NAME" ]; then
git config --global user.name "$_GIT_NAME"
ok "user.name restauré : $_GIT_NAME"
fi
if [ -n "$_GIT_EMAIL" ]; then
git config --global user.email "$_GIT_EMAIL"
ok "user.email restauré : $_GIT_EMAIL"
fi
# ── Configs outils ─────────────────────────────────────────────────────────────
section "Configs outils"
deploy_file "$CONFIGS/starship.toml" "$HOME/.config/starship.toml"
deploy_file "$CONFIGS/bat.conf" "$HOME/.config/bat/config"
deploy_file "$CONFIGS/btop.conf" "$HOME/.config/btop/btop.conf"
deploy_file "$CONFIGS/fastfetch.jsonc" "$HOME/.config/fastfetch/config.jsonc"
deploy_file "$CONFIGS/atuin.toml" "$HOME/.config/atuin/config.toml"
deploy_file "$CONFIGS/lazygit.yml" "$HOME/.config/lazygit/config.yml"
deploy_file "$CONFIGS/yazi.toml" "$HOME/.config/yazi/yazi.toml"
deploy_file "$CONFIGS/glow.yml" "$HOME/.config/glow/glow.yml"
# ── Thèmes CLI ─────────────────────────────────────────────────────────────────
section "Thèmes violet-chaton (CLI)"
deploy_file "$THEMES/violet-chaton.theme.css" \
"$HOME/.config/vesktop/themes/violet-chaton.theme.css"
# Flatpak — uniquement si Vesktop flatpak est déjà installé
if [ -d "$HOME/.var/app/dev.vencord.Vesktop" ]; then
deploy_file "$THEMES/violet-chaton.theme.css" \
"$HOME/.var/app/dev.vencord.Vesktop/config/vesktop/themes/violet-chaton.theme.css"
fi
deploy_file "$THEMES/violet-chaton-bat.tmTheme" "$HOME/.config/bat/themes/violet-chaton.tmTheme"
deploy_file "$THEMES/violet-chaton-btop.theme" "$HOME/.config/btop/themes/violet-chaton.theme"
deploy_file "$THEMES/violet-chaton-atuin.toml" "$HOME/.config/atuin/themes/violet-chaton.toml"
deploy_file "$THEMES/violet-chaton-cava.conf" "$HOME/.config/cava/config"
deploy_file "$THEMES/violet-chaton-yazi.toml" "$HOME/.config/yazi/theme.toml"
deploy_file "$THEMES/violet-chaton-ls-colors.sh" "$HOME/.local/share/violet-chaton/violet-chaton-ls-colors.sh"
# ── COSMIC Desktop ─────────────────────────────────────────────────────────────
section "COSMIC — thème, terminal et toolkit"
COSMIC_SRC="$THEMES/cosmic"
COSMIC_DST="$HOME/.config/cosmic"
step "COSMIC Theme Dark..."
backup_dir "$COSMIC_DST/com.system76.CosmicTheme.Dark/v1"
ensure_dir "$COSMIC_DST/com.system76.CosmicTheme.Dark/v1"
if cp "$COSMIC_SRC/com.system76.CosmicTheme.Dark/v1/"* "$COSMIC_DST/com.system76.CosmicTheme.Dark/v1/" 2>/dev/null; then
ok "CosmicTheme.Dark"
else
fail "CosmicTheme.Dark"
fi
step "COSMIC Theme Mode (dark)..."
backup_dir "$COSMIC_DST/com.system76.CosmicTheme.Mode/v1"
ensure_dir "$COSMIC_DST/com.system76.CosmicTheme.Mode/v1"
if cp "$COSMIC_SRC/com.system76.CosmicTheme.Mode/v1/is_dark" "$COSMIC_DST/com.system76.CosmicTheme.Mode/v1/" 2>/dev/null; then
ok "CosmicTheme.Mode"
else
fail "CosmicTheme.Mode"
fi
step "COSMIC Terminal..."
backup_dir "$COSMIC_DST/com.system76.CosmicTerm/v1"
ensure_dir "$COSMIC_DST/com.system76.CosmicTerm/v1"
if cp "$COSMIC_SRC/com.system76.CosmicTerm/v1/"* "$COSMIC_DST/com.system76.CosmicTerm/v1/" 2>/dev/null; then
ok "CosmicTerm"
else
fail "CosmicTerm"
fi
# ── GTK3 — thème violet-chaton ─────────────────────────────────────────────
section "GTK3 — thème violet-chaton"
ensure_dir "$HOME/.config/gtk-3.0"
deploy_file "$THEMES/violet-chaton-gtk.css" "$HOME/.config/gtk-3.0/gtk.css"
# ── Nemo — gestionnaire de fichiers ────────────────────────────────────────
section "Nemo — configuration et thème"
step "Nemo comme gestionnaire de fichiers par défaut..."
if has_cmd xdg-mime; then
xdg-mime default nemo.desktop inode/directory 2>/dev/null && \
xdg-mime default nemo.desktop application/x-gnome-saved-search 2>/dev/null && \
ok "Nemo défini par défaut" || warn "xdg-mime Nemo échoué"
else
warn "xdg-mime non disponible — à faire manuellement"
fi
step "Préférences Nemo (gsettings)..."
if has_cmd gsettings; then
gsettings set org.nemo.preferences default-folder-viewer 'icon-view' 2>/dev/null
gsettings set org.nemo.preferences show-hidden-files false 2>/dev/null
gsettings set org.nemo.preferences show-image-thumbnails 'always' 2>/dev/null
gsettings set org.nemo.icon-view default-zoom-level 'standard' 2>/dev/null
gsettings set org.nemo.list-view default-zoom-level 'small' 2>/dev/null
ok "Préférences Nemo appliquées"
else
warn "gsettings non disponible — préférences Nemo à configurer manuellement"
fi
step "Application du thème d'icônes candy-icons (GTK)..."
if has_cmd gsettings; then
gsettings set org.gnome.desktop.interface icon-theme 'candy-icons-master' 2>/dev/null && \
ok "icon-theme candy-icons-master (gsettings)" || warn "gsettings icon-theme échoué"
else
warn "gsettings non disponible — thème d'icônes GTK à appliquer manuellement"
fi
step "COSMIC Toolkit (polices, icônes)..."
backup_dir "$COSMIC_DST/com.system76.CosmicTk/v1"
ensure_dir "$COSMIC_DST/com.system76.CosmicTk/v1"
if cp "$COSMIC_SRC/com.system76.CosmicTk/v1/"* "$COSMIC_DST/com.system76.CosmicTk/v1/" 2>/dev/null; then
ok "CosmicTk"
else
fail "CosmicTk"
fi
# ── Vivaldi ─────────────────────────────────────────────────────────────────────
section "Vivaldi — thème Rice Violet-Chaton"
VIVALDI_PREFS="$HOME/.config/vivaldi/Default/Preferences"
if [ ! -f "$VIVALDI_PREFS" ]; then
echo ""
echo -e "${PINK}${BOLD} ┌──────────────────────────────────────────────────────────┐${RESET}"
echo -e "${PINK}${BOLD} │ Vivaldi n'a pas encore été lancé. │${RESET}"
echo -e "${PINK}${TEXT}Lance Vivaldi maintenant, attends qu'il démarre,${PINK}${RESET}"
echo -e "${PINK}${TEXT}puis ferme-le et appuie sur Entrée pour continuer.${PINK}${RESET}"
echo -e "${PINK}${BOLD} └──────────────────────────────────────────────────────────┘${RESET}"
echo ""
read -rp " → Appuie sur Entrée une fois Vivaldi fermé..." _
echo ""
fi
if [ ! -f "$VIVALDI_PREFS" ]; then
warn "Preferences Vivaldi toujours introuvable — thème non injecté"
else
step "Injection du thème Rice Violet-Chaton..."
python3 - "$VIVALDI_PREFS" "$THEMES/violet-chaton-vivaldi.json" <<'PYEOF'
import json, sys
prefs_path = sys.argv[1]
theme_path = sys.argv[2]
with open(prefs_path, 'r') as f:
prefs = json.load(f)
with open(theme_path, 'r') as f:
new_themes = json.load(f)
theme = new_themes[0]
theme_id = theme['id']
# Injecter dans vivaldi.themes.user (dédoublonner par id)
user_themes = prefs.setdefault('vivaldi', {}).setdefault('themes', {}).setdefault('user', [])
user_themes = [t for t in user_themes if t.get('id') != theme_id]
user_themes.append(theme)
prefs['vivaldi']['themes']['user'] = user_themes
# Activer le thème (dark et light schedule)
prefs.setdefault('vivaldi', {}).setdefault('theme', {}).setdefault('schedule', {}).setdefault('o_s', {})
prefs['vivaldi']['theme']['schedule']['o_s']['light'] = theme_id
prefs['vivaldi']['theme']['schedule']['o_s']['dark'] = theme_id
with open(prefs_path, 'w') as f:
json.dump(prefs, f, separators=(',', ':'))
print("ok")
PYEOF
if [ $? -eq 0 ]; then
ok "Vivaldi thème injecté"
info "→ Redémarre Vivaldi pour appliquer le thème"
else
fail "Vivaldi injection échouée"
fi
fi
# ── Logo fastfetch ─────────────────────────────────────────────────────────────
section "Logo fastfetch"
if [ -f "$SCRIPT_DIR/assets/violet-chaton-logo.png" ]; then
deploy_file "$SCRIPT_DIR/assets/violet-chaton-logo.png" "$HOME/.config/fastfetch/violet-chaton-logo.png"
else
warn "Logo non trouvé dans assets/ — fastfetch démarrera sans logo"
fi
# ── Rebuild caches ─────────────────────────────────────────────────────────────
section "Rebuild des caches"
step "Cache bat (thème violet-chaton)..."
if has_cmd batcat; then
batcat cache --build &>/dev/null && ok "bat cache" || fail "bat cache"
fi
step "PATH ~/.local/bin..."
export PATH="$HOME/.local/bin:$PATH"
# ── Étapes manuelles ───────────────────────────────────────────────────────────
echo ""
echo -e "${YELLOW}${BOLD} ╔══════════════════════════════════════════════════════════╗${RESET}"
echo -e "${YELLOW}${BOLD} ║ Étapes manuelles requises après install ║${RESET}"
echo -e "${YELLOW}${BOLD} ╠══════════════════════════════════════════════════════════╣${RESET}"
echo -e "${YELLOW}${TEXT}1. Vivaldi : lance le navigateur une fois avant install${YELLOW}${RESET}"
echo -e "${YELLOW}${MUTED} puis relance ce script si le thème n'est pas injecté${YELLOW}${RESET}"
echo -e "${YELLOW}${BOLD} ╚══════════════════════════════════════════════════════════╝${RESET}"
echo ""
if [ -d "$BACKUP_DIR" ]; then
echo -e " ${MUTED}Configs précédentes sauvegardées dans :${RESET}"
echo -e " ${TEXT}$BACKUP_DIR${RESET}"
echo ""
fi

136
INSTALL/scripts/lib.sh Executable file
View File

@@ -0,0 +1,136 @@
#!/bin/bash
# ── violet-chaton : fonctions partagées ───────────────────────────────────────
PINK='\033[38;2;255;121;198m'
PURPLE='\033[38;2;231;156;254m'
CYAN='\033[38;2;139;233;253m'
GREEN='\033[38;2;166;227;161m'
YELLOW='\033[38;2;249;226;175m'
RED='\033[38;2;243;139;168m'
MUTED='\033[38;2;108;112;134m'
TEXT='\033[38;2;248;248;242m'
BOLD='\033[1m'
RESET='\033[0m'
# ── Log ────────────────────────────────────────────────────────────────────────
# INSTALL_LOG peut être pré-exporté par install.sh pour que tous les sous-scripts
# partagent le même fichier. Sinon, chaque script crée le sien.
: "${INSTALL_LOG:=$HOME/violet-chaton-install-$(date +%Y%m%d-%H%M%S).log}"
export INSTALL_LOG
_log() {
printf '[%s] %s\n' "$(date '+%H:%M:%S')" "$1" >> "$INSTALL_LOG"
}
# ── Bannières ─────────────────────────────────────────────────────────────────
banner() {
echo ""
echo -e "${PINK}${BOLD} ╔══════════════════════════════════════════════════════════╗${RESET}"
echo -e "${PINK}${BOLD} ║ ║${RESET}"
echo -e "${PINK}${BOLD}${PURPLE}░░ violet-chaton — setup automatique ░░${PINK} q:D ║${RESET}"
echo -e "${PINK}${BOLD} ║ ║${RESET}"
echo -e "${PINK}${BOLD} ╚══════════════════════════════════════════════════════════╝${RESET}"
echo ""
_log "════════════════════════════════════════"
_log " violet-chaton — installation démarrée"
_log "════════════════════════════════════════"
}
banner_done() {
_log ""
_log "════════════════════════════════════════"
_log " Installation terminée"
_log "════════════════════════════════════════"
echo ""
echo -e "${CYAN}${BOLD} ╔══════════════════════════════════════════════════════════╗${RESET}"
echo -e "${CYAN}${BOLD} ║ ║${RESET}"
echo -e "${CYAN}${BOLD}${GREEN}✓ Installation terminée avec succès !${CYAN}${RESET}"
echo -e "${CYAN}${BOLD}${MUTED}Ouvre un nouveau terminal pour voir le résultat.${CYAN}${RESET}"
echo -e "${CYAN}${BOLD} ║ ║${RESET}"
echo -e "${CYAN}${BOLD} ╚══════════════════════════════════════════════════════════╝${RESET}"
echo ""
echo -e " ${MUTED}Log complet :${RESET} ${TEXT}$INSTALL_LOG${RESET}"
echo ""
}
# ── Fonctions de sortie (terminal + log) ───────────────────────────────────────
section() {
echo ""
echo -e "${PURPLE}${BOLD} ┌─ $1 ${RESET}"
_log ""
_log "── $1"
}
step() {
echo -e "${MUTED}${CYAN}${RESET} $1"
_log "$1"
}
ok() {
echo -e "${MUTED}${GREEN}${RESET} $1"
_log "$1"
}
fail() {
echo -e "${MUTED}${RED}${RESET} $1"
_log " ✗ ERREUR : $1"
}
warn() {
echo -e "${MUTED}${YELLOW}!${RESET} $1"
_log " ! AVERT : $1"
}
info() {
echo -e "${MUTED}${MUTED}$1${RESET}"
_log " $1"
}
# ── Utilitaires ───────────────────────────────────────────────────────────────
has_cmd() {
command -v "$1" &>/dev/null
}
ensure_dir() {
mkdir -p "$1"
}
backup_dir() {
local dir="$1"
[ -d "$dir" ] || return 0
# BACKUP_DIR est défini par 03-deploy-configs.sh
[ -z "$BACKUP_DIR" ] && return 0
local rel="${dir#"$HOME/"}"
ensure_dir "$BACKUP_DIR/$rel"
cp -r "$dir/." "$BACKUP_DIR/$rel/" 2>/dev/null
}
show_summary() {
local log="$INSTALL_LOG"
[ -f "$log" ] || return
local successes errors warnings
successes=$(grep -c " ✓ " "$log" 2>/dev/null) || true; successes=${successes:-0}
errors=$(grep -c " ✗ ERREUR" "$log" 2>/dev/null) || true; errors=${errors:-0}
warnings=$(grep -c " ! AVERT" "$log" 2>/dev/null) || true; warnings=${warnings:-0}
echo -e "${PURPLE}${BOLD} ┌─ Résumé ────────────────────────────────────────────────────${RESET}"
echo -e "${GREEN}${successes} réussis${RESET} ${YELLOW}! ${warnings} avertissements${RESET} ${RED}${errors} erreurs${RESET}"
if [ "${errors:-0}" -gt 0 ] 2>/dev/null; then
echo -e " │"
echo -e "${RED}Erreurs :${RESET}"
grep " ✗ ERREUR" "$log" | sed 's/.*✗ ERREUR : //' | while IFS= read -r line; do
echo -e "${RED}${RESET} $line"
done
fi
if [ "${warnings:-0}" -gt 0 ] 2>/dev/null; then
echo -e " │"
echo -e "${YELLOW}Avertissements :${RESET}"
grep " ! AVERT" "$log" | sed 's/.*! AVERT : //' | while IFS= read -r line; do
echo -e "${YELLOW}!${RESET} $line"
done
fi
echo ""
}

View File

@@ -0,0 +1 @@
Dark

View File

@@ -0,0 +1,40 @@
{
0: (
name: "violet-chaton",
foreground: "#F8F8F2",
background: "#261537",
cursor: "#FF79C6",
bright_foreground: "#F8F8F2",
dim_foreground: "#6C7086",
normal: (
black: "#261537",
red: "#F38BA8",
green: "#A6E3A1",
yellow: "#F9E2AF",
blue: "#3D2454",
magenta: "#FF79C6",
cyan: "#8BE9FD",
white: "#F8F8F2",
),
bright: (
black: "#6C7086",
red: "#FF79C6",
green: "#8BE9FD",
yellow: "#E79CFE",
blue: "#E79CFE",
magenta: "#E79CFE",
cyan: "#8BE9FD",
white: "#F8F8F2",
),
dim: (
black: "#261537",
red: "#F38BA8",
green: "#A6E3A1",
yellow: "#F9E2AF",
blue: "#3D2454",
magenta: "#FF79C6",
cyan: "#8BE9FD",
white: "#6C7086",
),
),
}

View File

@@ -0,0 +1,40 @@
{
0: (
name: "violet-chaton",
foreground: "#F8F8F2",
background: "#261537",
cursor: "#FF79C6",
bright_foreground: "#F8F8F2",
dim_foreground: "#6C7086",
normal: (
black: "#261537",
red: "#F38BA8",
green: "#A6E3A1",
yellow: "#F9E2AF",
blue: "#3D2454",
magenta: "#FF79C6",
cyan: "#8BE9FD",
white: "#F8F8F2",
),
bright: (
black: "#6C7086",
red: "#FF79C6",
green: "#8BE9FD",
yellow: "#E79CFE",
blue: "#E79CFE",
magenta: "#E79CFE",
cyan: "#8BE9FD",
white: "#F8F8F2",
),
dim: (
black: "#261537",
red: "#F38BA8",
green: "#A6E3A1",
yellow: "#F9E2AF",
blue: "#3D2454",
magenta: "#FF79C6",
cyan: "#8BE9FD",
white: "#6C7086",
),
),
}

View File

@@ -0,0 +1 @@
300

View File

@@ -0,0 +1 @@
true

View File

@@ -0,0 +1 @@
"JetBrains Mono NL"

View File

@@ -0,0 +1 @@
14

View File

@@ -0,0 +1 @@
85

View File

@@ -0,0 +1,11 @@
{
0: (
name: "Nouveau profil",
command: "",
syntax_theme_dark: "COSMIC Dark",
syntax_theme_light: "COSMIC Light",
tab_title: "",
working_directory: "",
drain_on_exit: false,
),
}

View File

@@ -0,0 +1 @@
"violet-chaton"

View File

@@ -0,0 +1 @@
"violet-chaton"

View File

@@ -0,0 +1 @@
true

View File

@@ -0,0 +1,74 @@
(
base: (
red: 0.90588236,
green: 0.6117647,
blue: 0.99607843,
alpha: 1.0,
),
hover: (
red: 0.8103273,
green: 0.558776,
blue: 0.90052974,
alpha: 1.0,
),
pressed: (
red: 0.51201665,
green: 0.32542938,
blue: 0.59074855,
alpha: 1.0,
),
selected: (
red: 0.8103273,
green: 0.558776,
blue: 0.90052974,
alpha: 1.0,
),
selected_text: (
red: 0.90588236,
green: 0.6117647,
blue: 0.99607843,
alpha: 1.0,
),
focus: (
red: 0.90588236,
green: 0.6117647,
blue: 0.99607843,
alpha: 1.0,
),
divider: (
red: 0.0,
green: 0.0,
blue: 0.000000000000000000000000000000000000000000055,
alpha: 1.0,
),
on: (
red: 0.0,
green: 0.0,
blue: 0.000000000000000000000000000000000000000000055,
alpha: 1.0,
),
disabled: (
red: 0.90588236,
green: 0.6117647,
blue: 0.99607843,
alpha: 1.0,
),
on_disabled: (
red: 0.45294118,
green: 0.30588236,
blue: 0.49803922,
alpha: 1.0,
),
border: (
red: 0.90588236,
green: 0.6117647,
blue: 0.99607843,
alpha: 1.0,
),
disabled_border: (
red: 0.90588236,
green: 0.6117647,
blue: 0.99607843,
alpha: 0.5,
),
)

View File

@@ -0,0 +1,74 @@
(
base: (
red: 0.90588236,
green: 0.6117647,
blue: 0.99607843,
alpha: 1.0,
),
hover: (
red: 0.8103273,
green: 0.558776,
blue: 0.90052974,
alpha: 1.0,
),
pressed: (
red: 0.51201665,
green: 0.32542938,
blue: 0.59074855,
alpha: 1.0,
),
selected: (
red: 0.8103273,
green: 0.558776,
blue: 0.90052974,
alpha: 1.0,
),
selected_text: (
red: 0.90588236,
green: 0.6117647,
blue: 0.99607843,
alpha: 1.0,
),
focus: (
red: 0.90588236,
green: 0.6117647,
blue: 0.99607843,
alpha: 1.0,
),
divider: (
red: 0.025652902,
green: 0.0,
blue: 0.06343978,
alpha: 1.0,
),
on: (
red: 0.0,
green: 0.0,
blue: 0.000000000000000000000000000000000000000000055,
alpha: 1.0,
),
disabled: (
red: 0.90588236,
green: 0.6117647,
blue: 0.99607843,
alpha: 1.0,
),
on_disabled: (
red: 0.0,
green: 0.0,
blue: 0.000000000000000000000000000000000000000000055,
alpha: 0.5,
),
border: (
red: 0.90588236,
green: 0.6117647,
blue: 0.99607843,
alpha: 1.0,
),
disabled_border: (
red: 0.90588236,
green: 0.6117647,
blue: 0.99607843,
alpha: 0.5,
),
)

View File

@@ -0,0 +1 @@
None

View File

@@ -0,0 +1,100 @@
(
base: (
red: 0.20392156,
green: 0.109803915,
blue: 0.2901961,
alpha: 1.0,
),
component: (
base: (
red: 0.28618598,
green: 0.19189146,
blue: 0.3797182,
alpha: 1.0,
),
hover: (
red: 0.35756737,
green: 0.27269349,
blue: 0.44174638,
alpha: 1.0,
),
pressed: (
red: 0.4289488,
green: 0.35349554,
blue: 0.5037746,
alpha: 1.0,
),
selected: (
red: 0.35756737,
green: 0.27269349,
blue: 0.44174638,
alpha: 1.0,
),
selected_text: (
red: 0.90588236,
green: 0.6117647,
blue: 0.99607843,
alpha: 1.0,
),
focus: (
red: 0.90588236,
green: 0.6117647,
blue: 0.99607843,
alpha: 1.0,
),
divider: (
red: 0.8318802,
green: 0.8318715,
blue: 0.8090188,
alpha: 0.2,
),
on: (
red: 0.8318802,
green: 0.8318715,
blue: 0.8090188,
alpha: 1.0,
),
disabled: (
red: 0.28618598,
green: 0.19189146,
blue: 0.3797182,
alpha: 0.5,
),
on_disabled: (
red: 0.8318802,
green: 0.8318715,
blue: 0.8090188,
alpha: 0.65,
),
border: (
red: 0.7874787,
green: 0.6994349,
blue: 0.8914889,
alpha: 1.0,
),
disabled_border: (
red: 0.7874787,
green: 0.6994349,
blue: 0.8914889,
alpha: 0.5,
),
),
divider: (
red: 0.36091125,
green: 0.28561735,
blue: 0.42521048,
alpha: 1.0,
),
on: (
red: 0.9888701,
green: 0.98887116,
blue: 0.9652681,
alpha: 1.0,
),
small_widget: (
red: 0.21216959,
green: 0.20068932,
blue: 0.22159976,
alpha: 0.25,
),
)

View File

@@ -0,0 +1,74 @@
(
base: (
red: 0.66336143,
green: 0.57746667,
blue: 0.7633233,
alpha: 0.25,
),
hover: (
red: 0.41730216,
green: 0.35809755,
blue: 0.4853286,
alpha: 0.4,
),
pressed: (
red: 0.19174777,
green: 0.13504036,
blue: 0.24537402,
alpha: 0.625,
),
selected: (
red: 0.41730216,
green: 0.35809755,
blue: 0.4853286,
alpha: 0.4,
),
selected_text: (
red: 0.90588236,
green: 0.6117647,
blue: 0.99607843,
alpha: 1.0,
),
focus: (
red: 0.90588236,
green: 0.6117647,
blue: 0.99607843,
alpha: 1.0,
),
divider: (
red: 0.8318802,
green: 0.8318715,
blue: 0.8090188,
alpha: 0.2,
),
on: (
red: 0.8318802,
green: 0.8318715,
blue: 0.8090188,
alpha: 1.0,
),
disabled: (
red: 0.66336143,
green: 0.57746667,
blue: 0.7633233,
alpha: 0.125,
),
on_disabled: (
red: 0.8318802,
green: 0.8318715,
blue: 0.8090188,
alpha: 0.65,
),
border: (
red: 0.7874787,
green: 0.6994349,
blue: 0.8914889,
alpha: 1.0,
),
disabled_border: (
red: 0.7874787,
green: 0.6994349,
blue: 0.8914889,
alpha: 0.5,
),
)

View File

@@ -0,0 +1,5 @@
Some((
red: 0.2901961,
green: 0.21176471,
blue: 0.37254903,
))

View File

@@ -0,0 +1,8 @@
(
radius_0: (0.0, 0.0, 0.0, 0.0),
radius_xs: (4.0, 4.0, 4.0, 4.0),
radius_s: (8.0, 8.0, 8.0, 8.0),
radius_m: (16.0, 16.0, 16.0, 16.0),
radius_l: (32.0, 32.0, 32.0, 32.0),
radius_xl: (160.0, 160.0, 160.0, 160.0),
)

View File

@@ -0,0 +1,74 @@
(
base: (
red: 0.9529412,
green: 0.54509807,
blue: 0.65882355,
alpha: 1.0,
),
hover: (
red: 0.84797436,
green: 0.5054427,
blue: 0.6307258,
alpha: 1.0,
),
pressed: (
red: 0.53554606,
green: 0.29209605,
blue: 0.42212114,
alpha: 1.0,
),
selected: (
red: 0.84797436,
green: 0.5054427,
blue: 0.6307258,
alpha: 1.0,
),
selected_text: (
red: 0.90588236,
green: 0.6117647,
blue: 0.99607843,
alpha: 1.0,
),
focus: (
red: 0.90588236,
green: 0.6117647,
blue: 0.99607843,
alpha: 1.0,
),
divider: (
red: 0.0,
green: 0.0,
blue: 0.000000000000000000000000000000000000000000055,
alpha: 1.0,
),
on: (
red: 0.0,
green: 0.0,
blue: 0.000000000000000000000000000000000000000000055,
alpha: 1.0,
),
disabled: (
red: 0.9529412,
green: 0.54509807,
blue: 0.65882355,
alpha: 1.0,
),
on_disabled: (
red: 0.4764706,
green: 0.27254903,
blue: 0.32941177,
alpha: 1.0,
),
border: (
red: 0.9529412,
green: 0.54509807,
blue: 0.65882355,
alpha: 1.0,
),
disabled_border: (
red: 0.9529412,
green: 0.54509807,
blue: 0.65882355,
alpha: 0.5,
),
)

View File

@@ -0,0 +1,74 @@
(
base: (
red: 0.9529412,
green: 0.54509807,
blue: 0.65882355,
alpha: 1.0,
),
hover: (
red: 0.84797436,
green: 0.5054427,
blue: 0.6307258,
alpha: 1.0,
),
pressed: (
red: 0.53554606,
green: 0.29209605,
blue: 0.42212114,
alpha: 1.0,
),
selected: (
red: 0.84797436,
green: 0.5054427,
blue: 0.6307258,
alpha: 1.0,
),
selected_text: (
red: 0.90588236,
green: 0.6117647,
blue: 0.99607843,
alpha: 1.0,
),
focus: (
red: 0.90588236,
green: 0.6117647,
blue: 0.99607843,
alpha: 1.0,
),
divider: (
red: 0.025652902,
green: 0.0,
blue: 0.06343978,
alpha: 1.0,
),
on: (
red: 0.0,
green: 0.0,
blue: 0.000000000000000000000000000000000000000000055,
alpha: 1.0,
),
disabled: (
red: 0.9529412,
green: 0.54509807,
blue: 0.65882355,
alpha: 1.0,
),
on_disabled: (
red: 0.0,
green: 0.0,
blue: 0.000000000000000000000000000000000000000000055,
alpha: 0.5,
),
border: (
red: 0.9529412,
green: 0.54509807,
blue: 0.65882355,
alpha: 1.0,
),
disabled_border: (
red: 0.9529412,
green: 0.54509807,
blue: 0.65882355,
alpha: 0.5,
),
)

View File

@@ -0,0 +1 @@
(0, 8)

View File

@@ -0,0 +1,74 @@
(
base: (
red: 0.0,
green: 0.0,
blue: 0.0,
alpha: 0.0,
),
hover: (
red: 0.42810708,
green: 0.346821,
blue: 0.5183348,
alpha: 0.2,
),
pressed: (
red: 0.11815097,
green: 0.039094053,
blue: 0.18541873,
alpha: 0.5,
),
selected: (
red: 0.42810708,
green: 0.346821,
blue: 0.5183348,
alpha: 0.2,
),
selected_text: (
red: 0.90588236,
green: 0.6117647,
blue: 0.99607843,
alpha: 1.0,
),
focus: (
red: 0.90588236,
green: 0.6117647,
blue: 0.99607843,
alpha: 1.0,
),
divider: (
red: 0.7874787,
green: 0.6994349,
blue: 0.8914889,
alpha: 0.2,
),
on: (
red: 0.7874787,
green: 0.6994349,
blue: 0.8914889,
alpha: 1.0,
),
disabled: (
red: 0.0,
green: 0.0,
blue: 0.0,
alpha: 0.0,
),
on_disabled: (
red: 0.7874787,
green: 0.6994349,
blue: 0.8914889,
alpha: 0.65,
),
border: (
red: 0.7874787,
green: 0.6994349,
blue: 0.8914889,
alpha: 1.0,
),
disabled_border: (
red: 0.7874787,
green: 0.6994349,
blue: 0.8914889,
alpha: 0.5,
),
)

View File

@@ -0,0 +1 @@
true

View File

@@ -0,0 +1 @@
false

View File

@@ -0,0 +1,74 @@
(
base: (
red: 0.0,
green: 0.0,
blue: 0.0,
alpha: 0.0,
),
hover: (
red: 0.0,
green: 0.0,
blue: 0.0,
alpha: 0.0,
),
pressed: (
red: 0.0,
green: 0.0,
blue: 0.0,
alpha: 0.0,
),
selected: (
red: 0.0,
green: 0.0,
blue: 0.0,
alpha: 0.0,
),
selected_text: (
red: 0.90588236,
green: 0.6117647,
blue: 0.99607843,
alpha: 1.0,
),
focus: (
red: 0.90588236,
green: 0.6117647,
blue: 0.99607843,
alpha: 1.0,
),
divider: (
red: 0.90588236,
green: 0.6117647,
blue: 0.99607843,
alpha: 0.2,
),
on: (
red: 0.90588236,
green: 0.6117647,
blue: 0.99607843,
alpha: 1.0,
),
disabled: (
red: 0.0,
green: 0.0,
blue: 0.0,
alpha: 0.0,
),
on_disabled: (
red: 0.45294118,
green: 0.30588236,
blue: 0.49803922,
alpha: 0.5,
),
border: (
red: 0.7874787,
green: 0.6994349,
blue: 0.8914889,
alpha: 1.0,
),
disabled_border: (
red: 0.7874787,
green: 0.6994349,
blue: 0.8914889,
alpha: 0.5,
),
)

View File

@@ -0,0 +1 @@
"Violet-chaton"

View File

@@ -0,0 +1,195 @@
(
name: "Violet-chaton",
bright_red: (
red: 0.9529412,
green: 0.54509807,
blue: 0.65882355,
alpha: 1.0,
),
bright_green: (
red: 0.6509804,
green: 0.8901961,
blue: 0.6313726,
alpha: 1.0,
),
bright_orange: (
red: 0.98039216,
green: 0.7019608,
blue: 0.52941173,
alpha: 1.0,
),
gray_1: (
red: 0.09411765,
green: 0.09411765,
blue: 0.14509805,
alpha: 1.0,
),
gray_2: (
red: 0.11764706,
green: 0.11764706,
blue: 0.18039216,
alpha: 1.0,
),
neutral_0: (
red: 0.06666667,
green: 0.06666667,
blue: 0.10588235,
alpha: 1.0,
),
neutral_1: (
red: 0.09411765,
green: 0.09411765,
blue: 0.14509805,
alpha: 1.0,
),
neutral_2: (
red: 0.11764706,
green: 0.11764706,
blue: 0.18039216,
alpha: 1.0,
),
neutral_3: (
red: 0.19215687,
green: 0.19607843,
blue: 0.26666668,
alpha: 1.0,
),
neutral_4: (
red: 0.27058825,
green: 0.27843136,
blue: 0.3529412,
alpha: 1.0,
),
neutral_5: (
red: 0.34509805,
green: 0.35686275,
blue: 0.4392157,
alpha: 1.0,
),
neutral_6: (
red: 0.42352942,
green: 0.4392157,
blue: 0.5254902,
alpha: 1.0,
),
neutral_7: (
red: 0.49803922,
green: 0.5176471,
blue: 0.6117647,
alpha: 1.0,
),
neutral_8: (
red: 0.5764706,
green: 0.6,
blue: 0.69803923,
alpha: 1.0,
),
neutral_9: (
red: 0.6509804,
green: 0.6784314,
blue: 0.78431374,
alpha: 1.0,
),
neutral_10: (
red: 0.7294118,
green: 0.7607843,
blue: 0.87058824,
alpha: 1.0,
),
accent_blue: (
red: 0.5372549,
green: 0.7058824,
blue: 0.98039216,
alpha: 1.0,
),
accent_indigo: (
red: 0.79607844,
green: 0.6509804,
blue: 0.96862745,
alpha: 1.0,
),
accent_purple: (
red: 0.7058824,
green: 0.74509805,
blue: 0.99607843,
alpha: 1.0,
),
accent_pink: (
red: 0.9607843,
green: 0.7607843,
blue: 0.90588236,
alpha: 1.0,
),
accent_red: (
red: 0.9529412,
green: 0.54509807,
blue: 0.65882355,
alpha: 1.0,
),
accent_orange: (
red: 0.98039216,
green: 0.7019608,
blue: 0.52941173,
alpha: 1.0,
),
accent_yellow: (
red: 0.9764706,
green: 0.8862745,
blue: 0.6862745,
alpha: 1.0,
),
accent_green: (
red: 0.6509804,
green: 0.8901961,
blue: 0.6313726,
alpha: 1.0,
),
accent_warm_grey: (
red: 0.5764706,
green: 0.6,
blue: 0.69803923,
alpha: 1.0,
),
ext_warm_grey: (
red: 0.5764706,
green: 0.6,
blue: 0.69803923,
alpha: 1.0,
),
ext_orange: (
red: 0.98039216,
green: 0.7019608,
blue: 0.52941173,
alpha: 1.0,
),
ext_yellow: (
red: 0.9764706,
green: 0.8862745,
blue: 0.6862745,
alpha: 1.0,
),
ext_blue: (
red: 0.5372549,
green: 0.7058824,
blue: 0.98039216,
alpha: 1.0,
),
ext_purple: (
red: 0.7058824,
green: 0.74509805,
blue: 0.99607843,
alpha: 1.0,
),
ext_pink: (
red: 0.9607843,
green: 0.7607843,
blue: 0.90588236,
alpha: 1.0,
),
ext_indigo: (
red: 0.79607844,
green: 0.6509804,
blue: 0.96862745,
alpha: 1.0,
),
)

View File

@@ -0,0 +1,100 @@
(
base: (
red: 0.21960787,
green: 0.13725492,
blue: 0.29411766,
alpha: 1.0,
),
component: (
base: (
red: 0.28282174,
green: 0.19933021,
blue: 0.36183798,
alpha: 1.0,
),
hover: (
red: 0.35453954,
green: 0.27938837,
blue: 0.42565417,
alpha: 1.0,
),
pressed: (
red: 0.4262574,
green: 0.35944653,
blue: 0.48947042,
alpha: 1.0,
),
selected: (
red: 0.35453954,
green: 0.27938837,
blue: 0.42565417,
alpha: 1.0,
),
selected_text: (
red: 0.90588236,
green: 0.6117647,
blue: 0.99607843,
alpha: 1.0,
),
focus: (
red: 0.90588236,
green: 0.6117647,
blue: 0.99607843,
alpha: 1.0,
),
divider: (
red: 0.8318802,
green: 0.8318715,
blue: 0.8090188,
alpha: 0.2,
),
on: (
red: 0.8318802,
green: 0.8318715,
blue: 0.8090188,
alpha: 1.0,
),
disabled: (
red: 0.28282174,
green: 0.19933021,
blue: 0.36183798,
alpha: 0.5,
),
on_disabled: (
red: 0.8318802,
green: 0.8318715,
blue: 0.8090188,
alpha: 0.65,
),
border: (
red: 0.7874787,
green: 0.6994349,
blue: 0.8914889,
alpha: 1.0,
),
disabled_border: (
red: 0.7874787,
green: 0.6994349,
blue: 0.8914889,
alpha: 0.5,
),
),
divider: (
red: 0.32676017,
green: 0.2608749,
blue: 0.38187551,
alpha: 1.0,
),
on: (
red: 0.75536937,
green: 0.7553548,
blue: 0.73290694,
alpha: 1.0,
),
small_widget: (
red: 0.23257035,
green: 0.22102591,
blue: 0.24228081,
alpha: 0.25,
),
)

View File

@@ -0,0 +1,100 @@
(
base: (
red: 0.27058825,
green: 0.27843136,
blue: 0.3529412,
alpha: 1.0,
),
component: (
base: (
red: 0.3027889,
green: 0.310962,
blue: 0.38686937,
alpha: 1.0,
),
hover: (
red: 0.37251002,
green: 0.37985694,
blue: 0.4481824,
alpha: 1.0,
),
pressed: (
red: 0.44223112,
green: 0.44875193,
blue: 0.5094955,
alpha: 1.0,
),
selected: (
red: 0.37251002,
green: 0.37985694,
blue: 0.4481824,
alpha: 1.0,
),
selected_text: (
red: 0.90588236,
green: 0.6117647,
blue: 0.99607843,
alpha: 1.0,
),
focus: (
red: 0.90588236,
green: 0.6117647,
blue: 0.99607843,
alpha: 1.0,
),
divider: (
red: 0.9228378,
green: 0.922835,
blue: 0.8995358,
alpha: 0.2,
),
on: (
red: 0.9228378,
green: 0.922835,
blue: 0.8995358,
alpha: 1.0,
),
disabled: (
red: 0.3027889,
green: 0.310962,
blue: 0.38686937,
alpha: 0.5,
),
on_disabled: (
red: 0.9228378,
green: 0.922835,
blue: 0.8995358,
alpha: 0.65,
),
border: (
red: 0.7874787,
green: 0.6994349,
blue: 0.8914889,
alpha: 1.0,
),
disabled_border: (
red: 0.7874787,
green: 0.6994349,
blue: 0.8914889,
alpha: 0.5,
),
),
divider: (
red: 0.39319837,
green: 0.39947182,
blue: 0.45445746,
alpha: 1.0,
),
on: (
red: 0.88363886,
green: 0.8836336,
blue: 0.8605226,
alpha: 1.0,
),
small_widget: (
red: 0.33872032,
green: 0.3268614,
blue: 0.34963188,
alpha: 0.25,
),
)

View File

@@ -0,0 +1,6 @@
(
red: 0.0,
green: 0.0,
blue: 0.0,
alpha: 0.32,
)

View File

@@ -0,0 +1,12 @@
(
space_none: 0,
space_xxxs: 4,
space_xxs: 8,
space_xs: 12,
space_s: 16,
space_m: 24,
space_l: 32,
space_xl: 48,
space_xxl: 64,
space_xxxl: 128,
)

View File

@@ -0,0 +1,74 @@
(
base: (
red: 0.6509804,
green: 0.8901961,
blue: 0.6313726,
alpha: 1.0,
),
hover: (
red: 0.60640574,
green: 0.7815211,
blue: 0.608765,
alpha: 1.0,
),
pressed: (
red: 0.38456568,
green: 0.46464506,
blue: 0.40839565,
alpha: 1.0,
),
selected: (
red: 0.60640574,
green: 0.7815211,
blue: 0.608765,
alpha: 1.0,
),
selected_text: (
red: 0.90588236,
green: 0.6117647,
blue: 0.99607843,
alpha: 1.0,
),
focus: (
red: 0.90588236,
green: 0.6117647,
blue: 0.99607843,
alpha: 1.0,
),
divider: (
red: 0.0,
green: 0.0,
blue: 0.000000000000000000000000000000000000000000055,
alpha: 1.0,
),
on: (
red: 0.0,
green: 0.0,
blue: 0.000000000000000000000000000000000000000000055,
alpha: 1.0,
),
disabled: (
red: 0.6509804,
green: 0.8901961,
blue: 0.6313726,
alpha: 1.0,
),
on_disabled: (
red: 0.3254902,
green: 0.44509804,
blue: 0.3156863,
alpha: 1.0,
),
border: (
red: 0.6509804,
green: 0.8901961,
blue: 0.6313726,
alpha: 1.0,
),
disabled_border: (
red: 0.6509804,
green: 0.8901961,
blue: 0.6313726,
alpha: 0.5,
),
)

View File

@@ -0,0 +1,74 @@
(
base: (
red: 0.6509804,
green: 0.8901961,
blue: 0.6313726,
alpha: 1.0,
),
hover: (
red: 0.60640574,
green: 0.7815211,
blue: 0.608765,
alpha: 1.0,
),
pressed: (
red: 0.38456568,
green: 0.46464506,
blue: 0.40839565,
alpha: 1.0,
),
selected: (
red: 0.60640574,
green: 0.7815211,
blue: 0.608765,
alpha: 1.0,
),
selected_text: (
red: 0.90588236,
green: 0.6117647,
blue: 0.99607843,
alpha: 1.0,
),
focus: (
red: 0.90588236,
green: 0.6117647,
blue: 0.99607843,
alpha: 1.0,
),
divider: (
red: 0.025652902,
green: 0.0,
blue: 0.06343978,
alpha: 1.0,
),
on: (
red: 0.0,
green: 0.0,
blue: 0.000000000000000000000000000000000000000000055,
alpha: 1.0,
),
disabled: (
red: 0.6509804,
green: 0.8901961,
blue: 0.6313726,
alpha: 1.0,
),
on_disabled: (
red: 0.0,
green: 0.0,
blue: 0.000000000000000000000000000000000000000000055,
alpha: 0.5,
),
border: (
red: 0.6509804,
green: 0.8901961,
blue: 0.6313726,
alpha: 1.0,
),
disabled_border: (
red: 0.6509804,
green: 0.8901961,
blue: 0.6313726,
alpha: 0.5,
),
)

View File

@@ -0,0 +1,74 @@
(
base: (
red: 0.0,
green: 0.0,
blue: 0.0,
alpha: 0.0,
),
hover: (
red: 0.42810708,
green: 0.346821,
blue: 0.5183348,
alpha: 0.2,
),
pressed: (
red: 0.11815097,
green: 0.039094053,
blue: 0.18541873,
alpha: 0.5,
),
selected: (
red: 0.42810708,
green: 0.346821,
blue: 0.5183348,
alpha: 0.2,
),
selected_text: (
red: 0.90588236,
green: 0.6117647,
blue: 0.99607843,
alpha: 1.0,
),
focus: (
red: 0.90588236,
green: 0.6117647,
blue: 0.99607843,
alpha: 1.0,
),
divider: (
red: 0.90588236,
green: 0.6117647,
blue: 0.99607843,
alpha: 0.2,
),
on: (
red: 0.90588236,
green: 0.6117647,
blue: 0.99607843,
alpha: 1.0,
),
disabled: (
red: 0.0,
green: 0.0,
blue: 0.0,
alpha: 0.0,
),
on_disabled: (
red: 0.90588236,
green: 0.6117647,
blue: 0.99607843,
alpha: 0.65,
),
border: (
red: 0.7874787,
green: 0.6994349,
blue: 0.8914889,
alpha: 1.0,
),
disabled_border: (
red: 0.7874787,
green: 0.6994349,
blue: 0.8914889,
alpha: 0.5,
),
)

View File

@@ -0,0 +1,5 @@
Some((
red: 0.972549,
green: 0.972549,
blue: 0.9490196,
))

View File

@@ -0,0 +1,74 @@
(
base: (
red: 0.9764706,
green: 0.8862745,
blue: 0.6862745,
alpha: 1.0,
),
hover: (
red: 0.8667979,
green: 0.7783838,
blue: 0.6526866,
alpha: 1.0,
),
pressed: (
red: 0.54731077,
green: 0.46268427,
blue: 0.43584663,
alpha: 1.0,
),
selected: (
red: 0.8667979,
green: 0.7783838,
blue: 0.6526866,
alpha: 1.0,
),
selected_text: (
red: 0.90588236,
green: 0.6117647,
blue: 0.99607843,
alpha: 1.0,
),
focus: (
red: 0.90588236,
green: 0.6117647,
blue: 0.99607843,
alpha: 1.0,
),
divider: (
red: 0.0,
green: 0.0,
blue: 0.000000000000000000000000000000000000000000055,
alpha: 1.0,
),
on: (
red: 0.0,
green: 0.0,
blue: 0.000000000000000000000000000000000000000000055,
alpha: 1.0,
),
disabled: (
red: 0.9764706,
green: 0.8862745,
blue: 0.6862745,
alpha: 1.0,
),
on_disabled: (
red: 0.4882353,
green: 0.44313726,
blue: 0.34313726,
alpha: 1.0,
),
border: (
red: 0.9764706,
green: 0.8862745,
blue: 0.6862745,
alpha: 1.0,
),
disabled_border: (
red: 0.9764706,
green: 0.8862745,
blue: 0.6862745,
alpha: 0.5,
),
)

View File

@@ -0,0 +1,74 @@
(
base: (
red: 0.9764706,
green: 0.8862745,
blue: 0.6862745,
alpha: 1.0,
),
hover: (
red: 0.8667979,
green: 0.7783838,
blue: 0.6526866,
alpha: 1.0,
),
pressed: (
red: 0.54731077,
green: 0.46268427,
blue: 0.43584663,
alpha: 1.0,
),
selected: (
red: 0.8667979,
green: 0.7783838,
blue: 0.6526866,
alpha: 1.0,
),
selected_text: (
red: 0.90588236,
green: 0.6117647,
blue: 0.99607843,
alpha: 1.0,
),
focus: (
red: 0.90588236,
green: 0.6117647,
blue: 0.99607843,
alpha: 1.0,
),
divider: (
red: 1.0,
green: 0.9999117,
blue: 1.0,
alpha: 1.0,
),
on: (
red: 0.0,
green: 0.0,
blue: 0.000000000000000000000000000000000000000000055,
alpha: 1.0,
),
disabled: (
red: 0.9764706,
green: 0.8862745,
blue: 0.6862745,
alpha: 1.0,
),
on_disabled: (
red: 0.0,
green: 0.0,
blue: 0.000000000000000000000000000000000000000000055,
alpha: 0.5,
),
border: (
red: 0.9764706,
green: 0.8862745,
blue: 0.6862745,
alpha: 1.0,
),
disabled_border: (
red: 0.9764706,
green: 0.8862745,
blue: 0.6862745,
alpha: 0.5,
),
)

View File

@@ -0,0 +1,5 @@
Some((
red: 1.0,
green: 0.47450984,
blue: 0.7764704,
))

View File

@@ -0,0 +1 @@
true

View File

@@ -0,0 +1 @@
true

View File

@@ -0,0 +1 @@
Compact

View File

@@ -0,0 +1 @@
"candy-icons-master"

View File

@@ -0,0 +1 @@
Compact

View File

@@ -0,0 +1,6 @@
(
family: "0xProto Nerd Font Propo",
weight: Normal,
stretch: Normal,
style: Normal,
)

View File

@@ -0,0 +1,6 @@
(
family: "JetBrainsMonoNL Nerd Font Mono",
weight: Normal,
stretch: Normal,
style: Normal,
)

View File

@@ -0,0 +1 @@
true

View File

@@ -0,0 +1 @@
true

View File

@@ -0,0 +1,10 @@
# violet-chaton — thème atuin
# Les valeurs sont des noms de couleurs CSS (palette crate)
Base = "white" # texte principal #f8f8f2
Important = "hot_pink" # éléments importants #ff79c6
Guidance = "slate_gray" # texte d'aide/muted #7f849c
Annotation = "orchid" # labels/annotations #e79cfe
AlertInfo = "light_cyan" # info #8be9fd
AlertWarn = "pale_goldenrod" # avertissement #f9e2af
AlertError = "light_pink" # erreur #f38ba8

View File

@@ -0,0 +1,161 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>name</key>
<string>violet-chaton</string>
<key>settings</key>
<array>
<!-- Global -->
<dict>
<key>settings</key>
<dict>
<key>background</key> <string>#341c4a</string>
<key>foreground</key> <string>#f8f8f2</string>
<key>caret</key> <string>#ff79c6</string>
<key>lineHighlight</key><string>#3d2454</string>
<key>selection</key> <string>#3d245480</string>
<key>invisibles</key> <string>#6c7086</string>
</dict>
</dict>
<!-- Commentaires -->
<dict>
<key>name</key><string>Comment</string>
<key>scope</key><string>comment, punctuation.definition.comment</string>
<key>settings</key>
<dict>
<key>foreground</key><string>#7f849c</string>
<key>fontStyle</key><string>italic</string>
</dict>
</dict>
<!-- Chaînes -->
<dict>
<key>name</key><string>String</string>
<key>scope</key><string>string, string.quoted, string.template</string>
<key>settings</key>
<dict><key>foreground</key><string>#e79cfe</string></dict>
</dict>
<!-- Nombres -->
<dict>
<key>name</key><string>Number</string>
<key>scope</key><string>constant.numeric</string>
<key>settings</key>
<dict><key>foreground</key><string>#a6e3a1</string></dict>
</dict>
<!-- Mots-clés -->
<dict>
<key>name</key><string>Keyword</string>
<key>scope</key><string>keyword, keyword.control, storage, storage.type, storage.modifier</string>
<key>settings</key>
<dict><key>foreground</key><string>#ff79c6</string></dict>
</dict>
<!-- Opérateurs -->
<dict>
<key>name</key><string>Operator</string>
<key>scope</key><string>keyword.operator</string>
<key>settings</key>
<dict><key>foreground</key><string>#ff79c6</string></dict>
</dict>
<!-- Fonctions -->
<dict>
<key>name</key><string>Function</string>
<key>scope</key><string>entity.name.function, meta.function-call, support.function</string>
<key>settings</key>
<dict><key>foreground</key><string>#8be9fd</string></dict>
</dict>
<!-- Types / Classes -->
<dict>
<key>name</key><string>Type</string>
<key>scope</key><string>entity.name.class, entity.name.type, support.class, support.type</string>
<key>settings</key>
<dict><key>foreground</key><string>#e79cfe</string></dict>
</dict>
<!-- Constantes / Booléens -->
<dict>
<key>name</key><string>Constant</string>
<key>scope</key><string>constant, constant.language, variable.language</string>
<key>settings</key>
<dict><key>foreground</key><string>#8be9fd</string></dict>
</dict>
<!-- Variables -->
<dict>
<key>name</key><string>Variable</string>
<key>scope</key><string>variable, variable.other</string>
<key>settings</key>
<dict><key>foreground</key><string>#f8f8f2</string></dict>
</dict>
<!-- Tags HTML/XML -->
<dict>
<key>name</key><string>Tag</string>
<key>scope</key><string>entity.name.tag</string>
<key>settings</key>
<dict><key>foreground</key><string>#ff79c6</string></dict>
</dict>
<!-- Attributs -->
<dict>
<key>name</key><string>Attribute</string>
<key>scope</key><string>entity.other.attribute-name</string>
<key>settings</key>
<dict><key>foreground</key><string>#8be9fd</string></dict>
</dict>
<!-- Ponctuation -->
<dict>
<key>name</key><string>Punctuation</string>
<key>scope</key><string>punctuation</string>
<key>settings</key>
<dict><key>foreground</key><string>#9399b2</string></dict>
</dict>
<!-- CSS propriétés -->
<dict>
<key>name</key><string>CSS Property</string>
<key>scope</key><string>support.type.property-name.css, support.type.property-name.scss</string>
<key>settings</key>
<dict><key>foreground</key><string>#8be9fd</string></dict>
</dict>
<!-- CSS valeurs -->
<dict>
<key>name</key><string>CSS Value</string>
<key>scope</key><string>support.constant.property-value.css</string>
<key>settings</key>
<dict><key>foreground</key><string>#e79cfe</string></dict>
</dict>
<!-- SCSS variables -->
<dict>
<key>name</key><string>SCSS Variable</string>
<key>scope</key><string>variable.scss, variable.sass</string>
<key>settings</key>
<dict><key>foreground</key><string>#8be9fd</string></dict>
</dict>
<!-- Invalide -->
<dict>
<key>name</key><string>Invalid</string>
<key>scope</key><string>invalid</string>
<key>settings</key>
<dict>
<key>foreground</key><string>#f38ba8</string>
<key>fontStyle</key><string>bold</string>
</dict>
</dict>
</array>
<key>uuid</key>
<string>vc-9f3a2b1c-4d5e-6f7a-8b9c-0d1e2f3a4b5c</string>
</dict>
</plist>

View File

@@ -0,0 +1,75 @@
# violet-chaton btop theme
# Palette : ~/Documents/config/violet-chaton-discord-theme/src/modules/_variables.scss
# Main background
theme[main_bg]="#261537"
# Main text color
theme[main_fg]="#f8f8f2"
# Title color for boxes
theme[title]="#e79cfe"
# Highlight color for keyboard shortcuts
theme[hi_fg]="#ff79c6"
# Background color of selected item in processes box
theme[selected_bg]="#3d2454"
# Foreground color of selected item in processes box
theme[selected_fg]="#f8f8f2"
# Color of inactive/disabled text
theme[inactive_fg]="#6c7086"
# Misc colors for processes box (mini cpu graphs, details, status)
theme[proc_misc]="#8be9fd"
# Box outline colors
theme[cpu_box]="#38234b"
theme[mem_box]="#38234b"
theme[net_box]="#38234b"
theme[proc_box]="#38234b"
# Box divider line
theme[div_line]="#341c4a"
# Temperature graph : cyan (froid) → warning (chaud) → danger (critique)
theme[temp_start]="#8be9fd"
theme[temp_mid]="#f9e2af"
theme[temp_end]="#f38ba8"
# CPU graph : purple → pink → danger
theme[cpu_start]="#e79cfe"
theme[cpu_mid]="#ff79c6"
theme[cpu_end]="#f38ba8"
# Mem/Disk free meter : green → cyan → purple
theme[free_start]="#a6e3a1"
theme[free_mid]="#8be9fd"
theme[free_end]="#e79cfe"
# Mem/Disk cached meter : purple subtil
theme[cached_start]="#3d2454"
theme[cached_mid]="#e79cfe"
theme[cached_end]="#e79cfe"
# Mem/Disk available meter : cyan → purple
theme[available_start]="#8be9fd"
theme[available_mid]="#e79cfe"
theme[available_end]="#ff79c6"
# Mem/Disk used meter : purple → pink → danger
theme[used_start]="#e79cfe"
theme[used_mid]="#ff79c6"
theme[used_end]="#f38ba8"
# Download graph : cyan → purple
theme[download_start]="#8be9fd"
theme[download_mid]="#e79cfe"
theme[download_end]="#ff79c6"
# Upload graph : pink → danger
theme[upload_start]="#ff79c6"
theme[upload_mid]="#f38ba8"
theme[upload_end]="#f9e2af"

View File

@@ -0,0 +1,34 @@
[general]
framerate = 60
autosens = 1
sensitivity = 100
bars = 0
bar_width = 2
bar_spacing = 1
[input]
method = pipewire
source = auto
[output]
method = noncurses
channels = stereo
mono_option = average
reverse = 0
[color]
# background commenté = transparent
gradient = 1
gradient_color_1 = '#ff79c6'
gradient_color_2 = '#f079d8'
gradient_color_3 = '#e079ea'
gradient_color_4 = '#e79cfe'
gradient_color_5 = '#c0b0fe'
gradient_color_6 = '#99c4fe'
gradient_color_7 = '#8bd4fe'
gradient_color_8 = '#8be9fd'
[smoothing]
monstercat = 1
waves = 0
noise_reduction = 77

View File

@@ -0,0 +1,247 @@
/* ── violet-chaton GTK3 theme — Nemo & GTK apps ───────────────────────────────
*
* Couleurs extraites du thème COSMIC violet-chaton :
* bg #341C4A background.base
* surface #493161 background.component.base
* hover #5B4671 background.component.hover
* accent #E79CFE accent.base
* text #FCFCF6 background.on
* muted #7F849C neutral_7
* border #5C496C background.divider
* sidebar #2B1540 (bg légèrement plus sombre)
* ─────────────────────────────────────────────────────────────────────────── */
@define-color theme_bg_color #341C4A;
@define-color theme_fg_color #FCFCF6;
@define-color theme_base_color #493161;
@define-color theme_selected_bg_color #E79CFE;
@define-color theme_selected_fg_color #341C4A;
@define-color theme_text_color #FCFCF6;
@define-color borders #5C496C;
/* ── Fenêtre principale ────────────────────────────────────────────────────── */
window, .background {
background-color: #341C4A;
color: #FCFCF6;
}
/* ── Barre de titre / headerbar ───────────────────────────────────────────── */
headerbar, .titlebar {
background-color: #493161;
color: #FCFCF6;
border-bottom: 1px solid #5C496C;
}
headerbar button, .titlebar button {
background-color: transparent;
color: #FCFCF6;
border: none;
border-radius: 6px;
}
headerbar button:hover, .titlebar button:hover {
background-color: #5B4671;
}
headerbar button:active, .titlebar button:active {
background-color: #E79CFE;
color: #341C4A;
}
/* ── Sidebar Nemo (paneau des emplacements) ───────────────────────────────── */
.sidebar, placessidebar {
background-color: #2B1540;
color: #FCFCF6;
border-right: 1px solid #5C496C;
}
.sidebar row, placessidebar row {
border-radius: 6px;
padding: 2px 4px;
}
.sidebar row:hover, placessidebar row:hover {
background-color: #5B4671;
}
.sidebar row:selected, placessidebar row:selected {
background-color: #E79CFE;
color: #341C4A;
}
.sidebar .sidebar-section-header, placessidebar .sidebar-section-header {
color: #7F849C;
font-size: smaller;
}
/* ── Vue fichiers (icônes + liste) ───────────────────────────────────────── */
.view, iconview, treeview {
background-color: #341C4A;
color: #FCFCF6;
}
.view:selected, iconview:selected,
treeview:selected, .view:focus:selected {
background-color: #E79CFE;
color: #341C4A;
}
/* En-têtes de colonnes (vue liste) */
treeview header button {
background-color: #493161;
color: #FCFCF6;
border: none;
border-right: 1px solid #5C496C;
border-bottom: 1px solid #5C496C;
}
treeview header button:hover {
background-color: #5B4671;
}
/* ── Barre d'outils / pathbar ─────────────────────────────────────────────── */
toolbar, .path-bar {
background-color: #493161;
border-bottom: 1px solid #5C496C;
}
.path-bar button {
background-color: transparent;
color: #FCFCF6;
border: none;
border-radius: 6px;
}
.path-bar button:hover {
background-color: #5B4671;
}
.path-bar button:checked {
background-color: #5B4671;
color: #E79CFE;
}
/* ── Barre de recherche / entrée texte ────────────────────────────────────── */
entry {
background-color: #5B4671;
color: #FCFCF6;
border: 1px solid #5C496C;
border-radius: 6px;
padding: 4px 8px;
}
entry:focus {
border-color: #E79CFE;
box-shadow: 0 0 0 2px alpha(#E79CFE, 0.3);
}
entry placeholder {
color: #7F849C;
}
/* ── Scrollbar ────────────────────────────────────────────────────────────── */
scrollbar {
background-color: transparent;
}
scrollbar slider {
background-color: #5C496C;
border-radius: 10px;
min-width: 6px;
min-height: 6px;
}
scrollbar slider:hover {
background-color: #E79CFE;
}
/* ── Menu contextuel ──────────────────────────────────────────────────────── */
menu, .context-menu, .popup {
background-color: #493161;
color: #FCFCF6;
border: 1px solid #5C496C;
border-radius: 8px;
padding: 4px;
}
menuitem {
border-radius: 6px;
padding: 4px 8px;
}
menuitem:hover {
background-color: #E79CFE;
color: #341C4A;
}
menuitem accelerator {
color: #7F849C;
}
separator, menuitem separator {
background-color: #5C496C;
min-height: 1px;
}
/* ── Barre de statut ──────────────────────────────────────────────────────── */
.statusbar, statusbar {
background-color: #493161;
color: #7F849C;
border-top: 1px solid #5C496C;
font-size: smaller;
}
/* ── Boutons génériques ───────────────────────────────────────────────────── */
button {
background-color: #5B4671;
color: #FCFCF6;
border: 1px solid #5C496C;
border-radius: 6px;
padding: 4px 12px;
}
button:hover {
background-color: #E79CFE;
color: #341C4A;
border-color: #E79CFE;
}
button.suggested-action {
background-color: #E79CFE;
color: #341C4A;
border-color: #E79CFE;
}
button.destructive-action {
background-color: #F38BA8;
color: #341C4A;
}
/* ── Notebooks / onglets ─────────────────────────────────────────────────── */
notebook tab {
background-color: #493161;
color: #7F849C;
border-radius: 6px 6px 0 0;
padding: 4px 12px;
}
notebook tab:checked {
background-color: #5B4671;
color: #FCFCF6;
}
/* ── Popover ─────────────────────────────────────────────────────────────── */
popover {
background-color: #493161;
color: #FCFCF6;
border: 1px solid #5C496C;
border-radius: 8px;
}
/* ── Tooltip ─────────────────────────────────────────────────────────────── */
tooltip {
background-color: #5B4671;
color: #FCFCF6;
border-radius: 6px;
padding: 4px 8px;
}

View File

@@ -0,0 +1,23 @@
#!/usr/bin/env bash
# Génère les LS_COLORS violet-chaton depuis catppuccin-mocha
# Usage : export LS_COLORS="$(bash violet-chaton-ls-colors.sh)"
vivid generate catppuccin-mocha | \
sed \
-e 's/38;2;137;180;250/38;2;231;156;254/g' \
-e 's/48;2;137;180;250/48;2;231;156;254/g' \
-e 's/38;2;245;194;231/38;2;255;121;198/g' \
-e 's/48;2;245;194;231/48;2;255;121;198/g' \
-e 's/38;2;116;199;236/38;2;139;233;253/g' \
-e 's/48;2;116;199;236/48;2;139;233;253/g' \
-e 's/38;2;88;91;112/38;2;127;132;156/g' \
-e 's/48;2;88;91;112/48;2;127;132;156/g' \
-e 's/38;2;30;30;46/38;2;52;28;74/g' \
-e 's/48;2;30;30;46/48;2;52;28;74/g' \
-e 's/38;2;49;50;68/38;2;61;36;84/g' \
-e 's/48;2;49;50;68/48;2;61;36;84/g' \
-e 's/38;2;203;166;247/38;2;231;156;254/g' \
-e 's/48;2;203;166;247/48;2;231;156;254/g' \
-e 's/38;2;205;214;244/38;2;248;248;242/g' \
-e 's/38;2;180;190;254/38;2;231;156;254/g' \
-e 's/38;2;148;226;213/38;2;139;233;253/g'

View File

@@ -0,0 +1,29 @@
[
{
"accentFromPage": false,
"accentOnWindow": true,
"accentSaturationLimit": 1,
"alpha": 1,
"backgroundImage": "/resources/bg_pawel-czerwinski-Xk7ktUfyaNI-unsplash.webp",
"backgroundPosition": "stretch",
"backgroundSource": "",
"blur": 0,
"colorAccentBg": "#2c183e",
"colorBg": "#341c4a",
"colorFg": "#d3d9e3",
"colorHighlightBg": "#b68fdc",
"colorWindowBg": "#1D1E21",
"contrast": 0,
"dimBlurred": false,
"engineVersion": 1,
"id": "11455bed-3b48-4de5-9a03-a83a1b4be775",
"name": "Rice Violet-Chaton",
"preferSystemAccent": false,
"radius": 14,
"simpleScrollbar": true,
"transparencyTabBar": false,
"transparencyTabs": false,
"url": "",
"version": 1
}
]

View File

@@ -0,0 +1,96 @@
# violet-chaton — thème yazi
[mgr]
cwd = { fg = "#e79cfe" } # purple — dossier courant
find_keyword = { fg = "#f9e2af", bold = true, italic = true, underline = true }
find_position = { fg = "#ff79c6", bg = "reset", bold = true, italic = true }
marker_copied = { fg = "#8be9fd", bg = "#8be9fd" } # cyan
marker_cut = { fg = "#f38ba8", bg = "#f38ba8" } # danger
marker_marked = { fg = "#e79cfe", bg = "#e79cfe" } # purple
marker_selected = { fg = "#ff79c6", bg = "#ff79c6" } # pink
count_copied = { fg = "#261537", bg = "#8be9fd" }
count_cut = { fg = "#261537", bg = "#f38ba8" }
count_selected = { fg = "#261537", bg = "#ff79c6" }
border_symbol = "│"
border_style = { fg = "#6c7086" }
[tabs]
active = { fg = "#261537", bg = "#ff79c6", bold = true }
inactive = { fg = "#ff79c6", bg = "#3d2454" }
[mode]
normal_main = { fg = "#261537", bg = "#ff79c6", bold = true }
normal_alt = { fg = "#ff79c6", bg = "#3d2454" }
select_main = { fg = "#261537", bg = "#8be9fd", bold = true }
select_alt = { fg = "#8be9fd", bg = "#3d2454" }
unset_main = { fg = "#261537", bg = "#e79cfe", bold = true }
unset_alt = { fg = "#e79cfe", bg = "#3d2454" }
[status]
perm_sep = { fg = "#6c7086" }
perm_type = { fg = "#e79cfe" } # purple
perm_read = { fg = "#8be9fd" } # cyan
perm_write = { fg = "#ff79c6" } # pink
perm_exec = { fg = "#a6e3a1" } # green
progress_label = { fg = "#f8f8f2", bold = true }
progress_normal = { fg = "#8be9fd", bg = "#3d2454" }
progress_error = { fg = "#f38ba8", bg = "#3d2454" }
[pick]
border = { fg = "#ff79c6" }
active = { fg = "#e79cfe", bold = true }
inactive = {}
[input]
border = { fg = "#ff79c6" }
title = { fg = "#e79cfe" }
value = { fg = "#f8f8f2" }
selected = { reversed = true }
[completion]
border = { fg = "#8be9fd" }
active = { fg = "#ff79c6", bold = true }
inactive = { fg = "#6c7086" }
[tasks]
border = { fg = "#ff79c6" }
title = { fg = "#e79cfe" }
hovered = { fg = "#ff79c6", underline = true }
[which]
mask = { bg = "#261537" }
cands = { fg = "#8be9fd" }
rest = { fg = "#6c7086" }
desc = { fg = "#e79cfe" }
separator = " "
separator_style = { fg = "#6c7086" }
[help]
on = { fg = "#ff79c6" }
run = { fg = "#8be9fd" }
desc = { fg = "#f8f8f2" }
hovered = { bg = "#3d2454", bold = true }
footer = { fg = "#261537", bg = "#e79cfe" }
[notify]
title_info = { fg = "#8be9fd" }
title_warn = { fg = "#f9e2af" }
title_error = { fg = "#f38ba8" }
[filetype]
rules = [
{ mime = "image/*", style = { fg = "#ff79c6" } },
{ mime = "video/*", style = { fg = "#e79cfe" } },
{ mime = "audio/*", style = { fg = "#8be9fd" } },
{ mime = "application/zip", style = { fg = "#f9e2af" } },
{ mime = "application/x-tar", style = { fg = "#f9e2af" } },
{ mime = "application/pdf", style = { fg = "#f38ba8" } },
{ mime = "text/*", style = { fg = "#f8f8f2" } },
]

File diff suppressed because it is too large Load Diff

339
README.md Normal file
View File

@@ -0,0 +1,339 @@
# violet-chaton — setup automatique
Environnement terminal complet aux couleurs violet-chaton, pensé pour Pop!_OS / Ubuntu avec COSMIC Desktop.
(Bonus thème Vesktop / Discord)
---
## Démarrage rapide
```bash
bash install.sh
```
Un menu s'affiche. Choisis **1** pour une installation complète.
---
## Prérequis
- **Distribution :** Debian, Ubuntu, Pop!_OS (ou dérivé apt)
- **Droits :** compte avec `sudo`
- **Connexion internet** (téléchargement des binaires)
- **Outils de base :**
```bash
sudo apt install -y curl git unzip
```
> Pour COSMIC Desktop : Pop!_OS 24.04 ou supérieur.
---
## Ce que fait le script — étape par étape
### Étape 1 — Paquets apt (`01-packages-apt.sh`)
Installe les outils via le gestionnaire de paquets système :
| Outil | Rôle |
|------------------|------|
| `zsh` | Shell principal (remplace bash) |
| `eza` | Remplacement de `ls` avec icônes et couleurs |
| `bat` | Remplacement de `cat` avec coloration syntaxique |
| `fd-find` | Remplacement de `find`, plus rapide et intuitif |
| `fzf` | Fuzzy finder — recherche floue de fichiers et dossiers |
| `zoxide` | Remplacement de `cd` avec mémoire des dossiers fréquents |
| `git-delta` | Pager git avec diff coloré côte à côte |
| `vivid` | Générateur de LS_COLORS |
| `ripgrep` | Remplacement de `grep`, très rapide |
| `ncdu` | Analyse d'espace disque en TUI |
| `thefuck` | Correction automatique de la dernière commande ratée |
| `lolcat` | Arc-en-ciel sur n'importe quel output |
| `cbonsai` | Bonsaï ASCII animé |
| `chafa` | Affichage d'images dans le terminal (logo fastfetch) |
| `cava` | Visualiseur audio animé |
| `btop` | Moniteur système en TUI |
| `nemo` | Explorateur de fichiers GUI |
| `jq` | Processeur JSON en ligne de commande |
| `vivaldi-stable` | Navigateur — dépôt officiel ajouté automatiquement |
| `gh` | CLI GitHub (auth, PR, issues) — dépôt officiel ajouté automatiquement |
| `cmatrix` | Pluie de caractères style Matrix |
| `toilet` | Texte en gros ASCII art coloré (bannières dans le terminal) |
| `w3m` | Navigateur web en mode texte dans le terminal |
| `jp2a` | Conversion d'images JPEG/PNG en ASCII art |
| `qalc` | Calculatrice CLI — unités, conversions, expressions complexes |
Définit aussi **zsh comme shell par défaut** via `chsh`.
---
### Étape 2 — Binaires manuels (`02-packages-manual.sh`)
Télécharge les versions les plus récentes depuis GitHub et les installe dans `~/.local/bin/` :
| Outil | Rôle |
|--------------|------|
| `lazygit` | Interface git complète en TUI (`lg`) |
| `yazi` | Gestionnaire de fichiers en TUI |
| `glow` | Rendu Markdown dans le terminal |
| `tldr` | Man pages simplifiées avec exemples (tealdeer) |
| `navi` | Cheatsheets interactives |
| `pipes.sh` | Animation de tuyaux dans le terminal |
| `fastfetch` | Infos système au démarrage du terminal — `.deb` depuis GitHub |
| `uv` / `uvx` | Gestionnaire de paquets Python ultra-rapide — script officiel astral.sh |
Installe également :
- **starship** et **atuin** via leurs scripts officiels
- **zinit** (gestionnaire de plugins zsh) via git clone
- **Nerd Fonts** — JetBrainsMono NL et 0xProto, vers `~/.local/share/fonts/NerdFonts/`
- **candy-icons** — thème d'icônes, vers `~/.local/share/icons/candy-icons-master/`
> **nomachine** — à installer manuellement depuis [nomachine.com](https://www.nomachine.com/download) (comme VSCode et Vesktop)
Met à jour le cache des pages tldr et le cache de polices (`fc-cache`).
---
### Étape 3 — Déploiement des configs et thèmes (`03-deploy-configs.sh`)
Copie les fichiers de config et thèmes aux bons emplacements.
Avant chaque déploiement, les fichiers existants sont sauvegardés dans :
```
~/.config/violet-chaton-backups/YYYYMMDD-HHMMSS/
```
Le chemin exact est affiché à la fin du script si des fichiers ont été sauvegardés.
**Configs shell :**
- `~/.zshrc` — configuration zsh complète
- `~/.bashrc` — configuration bash minimale (PATH + `exec zsh`)
- `~/.gitconfig` — git avec delta comme pager
> `user.name` et `user.email` présents dans le gitconfig existant sont **automatiquement préservés** après le déploiement.
**Configs outils :**
- `~/.config/starship.toml` — prompt 2 lignes violet-chaton
- `~/.config/bat/config` — thème violet-chaton, style header
- `~/.config/btop/btop.conf` — moniteur avec thème violet-chaton
- `~/.config/fastfetch/config.jsonc` — modules système + logo chafa
- `~/.config/atuin/config.toml` — historique fuzzy, colonnes, thème
- `~/.config/lazygit/config.yml` — couleurs violet-chaton + delta
- `~/.config/yazi/yazi.toml` — config gestionnaire de fichiers
- `~/.config/glow/glow.yml` — style markdown dark
**Thèmes CLI :**
- `~/.config/bat/themes/violet-chaton.tmTheme`
- `~/.config/btop/themes/violet-chaton.theme`
- `~/.config/atuin/themes/violet-chaton.toml`
- `~/.config/cava/config`
- `~/.config/yazi/theme.toml`
- `~/.config/vesktop/themes/violet-chaton.theme.css` — Vesktop natif (toujours déployé)
- `~/.var/app/dev.vencord.Vesktop/config/vesktop/themes/` — Vesktop Flatpak (si installé)
**GTK3 et Nemo :**
- `~/.config/gtk-3.0/gtk.css` — thème GTK3 violet-chaton (Nemo et applications GTK)
- Nemo défini comme gestionnaire de fichiers par défaut (`xdg-mime`)
- Préférences Nemo appliquées via `gsettings` : vue icônes, miniatures, zoom standard
- Thème d'icônes **candy-icons** activé via `gsettings`
**COSMIC Desktop (entièrement automatique) :**
- `~/.config/cosmic/com.system76.CosmicTheme.Dark/v1/` — palette violet-chaton complète
- `~/.config/cosmic/com.system76.CosmicTheme.Mode/v1/is_dark` — mode sombre activé
- `~/.config/cosmic/com.system76.CosmicTerm/v1/` — police JetBrains Mono, couleurs, profil
- `~/.config/cosmic/com.system76.CosmicTk/v1/` — icônes candy-icons, polices UI 0xProto
**Vivaldi (avec pause de sécurité) :**
- Si Vivaldi n'a pas encore été lancé, le script s'arrête et demande de le démarrer une fois
- Le thème **Rice Violet-Chaton** est ensuite injecté directement dans `~/.config/vivaldi/Default/Preferences`
Reconstruit également le **cache bat** pour activer le thème de coloration syntaxique.
---
## Étapes manuelles après installation
### zinit — premier démarrage
Au premier lancement de zsh, zinit télécharge automatiquement les plugins :
- `zsh-autosuggestions` — suggestions en gris au fil de la frappe
- `zsh-syntax-highlighting` — coloration des commandes en temps réel
- `zsh-completions` — complétion étendue
Cela peut prendre quelques secondes lors du tout premier démarrage.
### Polices — vérification
Si les icônes ne s'affichent pas correctement dans le terminal, forcer la reconstruction du cache de polices :
```bash
fc-cache -f -v
```
Puis sélectionner **JetBrainsMono NL Nerd Font** dans les préférences du terminal.
### atuin — synchronisation (optionnel)
atuin peut synchroniser l'historique entre machines. Pour activer la sync :
```bash
atuin register # créer un compte
atuin sync # synchroniser
```
Sans compte, atuin fonctionne en local uniquement.
---
## Log d'installation
Chaque installation génère un fichier log horodaté :
```
~/violet-chaton-install-YYYYMMDD-HHMMSS.log
```
En cas d'erreur, consulter ce fichier pour identifier l'étape qui a échoué.
---
## Troubleshooting
### Icônes ne s'affichent pas
- Vérifier que la police **JetBrainsMono NL Nerd Font** est sélectionnée dans le terminal
- Relancer `fc-cache -f` puis rouvrir le terminal
### zinit ne se lance pas
- Vérifier que `~/.local/share/zinit/zinit.git/zinit.zsh` existe
- Relancer le script d'installation étape 3
### Injection Vivaldi échoue
- Lancer Vivaldi une première fois, le fermer complètement, puis relancer `bash install.sh` → option 4
### Thème bat ne s'applique pas
```bash
bat cache --build
```
### candy-icons ne s'affiche pas dans Nemo
```bash
gtk-update-icon-cache ~/.local/share/icons/candy-icons-master
gsettings set org.gnome.desktop.interface icon-theme 'candy-icons-master'
```
---
## Raccourcis configurés
| Raccourci | Action |
|----------------|--------|
| `Ctrl+R` | Historique atuin (fuzzy search) |
| `Ctrl+G` | Rechercher un fichier (fzf) |
| `Ctrl+F` | Naviguer vers un dossier (fzf) |
| `Ctrl+Space` | Accepter la suggestion autosuggestions |
| `→` | Accepter la suggestion mot par mot |
---
## Alias configurés
| Alias | Commande réelle |
|----------|-----------------|
| `ls` | `eza --icons --git --group-directories-first` |
| `ll` | `eza -l --icons --git` |
| `lt` | `eza --tree --icons` |
| `cat` | `batcat --paging=never` |
| `bat` | `batcat` |
| `fd` | `fdfind` |
| `man` | `tldr` |
| `lg` | `lazygit` |
| `rg` | `rg --color=always` |
| `disk` | `ncdu` |
| `fetch` | `fastfetch` avec logo chafa |
| `pipes` | `pipes.sh` |
| `cd` | `zoxide` (avec mémoire) |
| `fuck` | correction auto thefuck |
| `grep` | `grep --color=auto` |
---
## Structure du dossier INSTALL/
```
INSTALL/
├── install.sh script principal — menu interactif
├── scripts/
│ ├── lib.sh couleurs et fonctions partagées
│ ├── 01-packages-apt.sh installation apt + Vivaldi
│ ├── 02-packages-manual.sh binaires GitHub + Nerd Fonts + candy-icons
│ └── 03-deploy-configs.sh configs, thèmes, COSMIC, Vivaldi
├── configs/ copies des fichiers de configuration
│ ├── zshrc
│ ├── bashrc
│ ├── gitconfig
│ ├── starship.toml
│ ├── bat.conf
│ ├── btop.conf
│ ├── fastfetch.jsonc
│ ├── atuin.toml
│ ├── lazygit.yml
│ ├── yazi.toml
│ └── glow.yml
├── assets/
│ └── violet-chaton-logo.png logo fastfetch (1024×1024)
└── themes/ tous les fichiers de thème violet-chaton
├── violet-chaton-bat.tmTheme
├── violet-chaton-btop.theme
├── violet-chaton-atuin.toml
├── violet-chaton-cava.conf
├── violet-chaton-yazi.toml
├── violet-chaton-gtk.css thème GTK3 (Nemo + applications GTK)
├── violet-chaton-ls-colors.sh
├── violet-chaton-vivaldi.json thème Rice Violet-Chaton pour Vivaldi
├── violet-chaton.theme.css thème Discord/Vesktop compilé
├── cosmic/ configs COSMIC déployées automatiquement
│ ├── com.system76.CosmicTheme.Dark/v1/
│ ├── com.system76.CosmicTheme.Mode/v1/
│ ├── com.system76.CosmicTerm/v1/
│ └── com.system76.CosmicTk/v1/
└── violet-chaton-discord-theme/ sources SCSS du thème (gitignored)
```
---
## Mettre à jour les configs
Après avoir modifié un fichier de config sur ta machine, re-copier vers INSTALL/ :
```bash
# Exemple : mettre à jour la config starship
cp ~/.config/starship.toml ~/Documents/config-violet-chaton/INSTALL/configs/starship.toml
# Mettre à jour les configs COSMIC
cp ~/.config/cosmic/com.system76.CosmicTerm/v1/* \
~/Documents/config-violet-chaton/INSTALL/themes/cosmic/com.system76.CosmicTerm/v1/
```
---
## Palette violet-chaton
| Rôle | Hex |
|------------|-----------|
| Background | `#261537` |
| BG medium | `#341c4a` |
| BG high | `#3d2454` |
| Pink | `#ff79c6` |
| Purple | `#e79cfe` |
| Cyan | `#8be9fd` |
| Text | `#f8f8f2` |
| Muted | `#6c7086` |
| Overlay | `#9399b2` |
| Success | `#a6e3a1` |
| Warning | `#f9e2af` |
| Danger | `#f38ba8` |

226
help.md Normal file
View File

@@ -0,0 +1,226 @@
# violet-chaton — référence des commandes
---
## Navigation & fichiers
| Commande | Alias | Description |
|---|---|---|
| `ls` | `eza --icons --git` | Listing coloré avec icônes |
| `ll` | `eza -l --git` | Listing long avec infos git |
| `lt` | `eza --tree` | Arborescence en arbre |
| `cd <dossier>` | zoxide | Navigation intelligente (mémorise les dossiers visités) |
| `cd <partiel>` | zoxide | Saute vers le dossier le plus probable — ex: `cd doc``~/Documents` |
| `<nom_dossier>` | AUTO_CD | Entrer dans un dossier sans taper `cd` |
| `yazi` | — | Explorateur de fichiers TUI (clavier) |
| `nemo` | — | Explorateur de fichiers GUI |
| `fd <pattern>` | fdfind | Recherche de fichiers (remplace `find`) |
### yazi — raccourcis principaux
| Touche | Action |
|---|---|
| `h/j/k/l` ou flèches | Navigation |
| `Entrée` | Ouvrir / entrer dans le dossier |
| `Espace` | Sélectionner |
| `y` | Copier |
| `d` | Couper |
| `p` | Coller |
| `r` | Renommer |
| `D` | Supprimer |
| `q` | Quitter |
---
## Visualisation
| Commande | Alias | Description |
|---|---|---|
| `cat <fichier>` | batcat | Affichage avec coloration syntaxique, sans pager |
| `bat <fichier>` | batcat | Comme cat avec numéros de lignes et pager |
| `glow <fichier.md>` | — | Rendu Markdown dans le terminal |
| `man <commande>` | tldr | Pages de manuel simplifiées (remplace man) |
| `tldr <commande>` | — | Exemples pratiques d'une commande |
| `fetch` | — | Affiche les infos système avec le logo violet-chaton |
---
## Recherche
| Commande | Description |
|---|---|
| `grep <pattern> <fichier>` | Recherche dans un fichier (--color=auto actif par défaut) |
| `rg <pattern>` | Recherche dans les fichiers (ripgrep, remplace grep) |
| `fd <pattern>` | Recherche de fichiers (remplace find) |
| `fzf` | Fuzzy finder interactif (pipe ou seul) |
### fzf — raccourcis clavier
| Touche | Action |
|---|---|
| `Ctrl+G` | Recherche fuzzy d'un **fichier** dans `$HOME` (aperçu batcat) |
| `Ctrl+F` | Recherche fuzzy d'un **dossier** dans `$HOME` |
| `Ctrl+R` | Recherche dans l'**historique** (via atuin) |
---
## Git
| Commande | Alias | Description |
|---|---|---|
| `lg` | lazygit | Interface TUI complète pour git |
| `git diff` | — | Affichage amélioré par git-delta (couleurs, side-by-side) |
| `gh pr create` | — | Créer une pull request depuis le terminal |
| `gh issue list` | — | Lister les issues du dépôt courant |
| `gh auth login` | — | S'authentifier sur GitHub |
### lazygit — raccourcis principaux
| Touche | Action |
|---|---|
| `1/2/3/4/5` | Changer de panneau (status/branches/commits/stash/reflog) |
| `Espace` | Stage / unstage un fichier |
| `c` | Commit |
| `p` | Push |
| `P` | Pull |
| `b` | Gérer les branches |
| `z` | Undo |
| `q` | Quitter |
### git-delta — navigation dans les diffs
| Touche | Action |
|---|---|
| `n` | Hunk suivant |
| `N` | Hunk précédent |
| `q` | Quitter |
---
## Monitoring & système
| Commande | Alias | Description |
|---|---|---|
| `btop` | — | Moniteur système interactif (CPU, RAM, réseau, disque) |
| `disk` | ncdu | Analyse de l'espace disque interactif |
| `ncdu` | — | Idem (nom original) |
---
## Historique shell (atuin)
| Commande / Touche | Description |
|---|---|
| `Ctrl+R` | Recherche dans l'historique avec atuin (fuzzy, filtré par dossier/host) |
| `atuin search <terme>` | Recherche dans l'historique en ligne de commande |
| `atuin stats` | Statistiques sur les commandes les plus utilisées |
| `atuin sync` | Synchroniser l'historique entre machines (compte requis) |
| `atuin register` | Créer un compte atuin pour la synchronisation |
> L'interface atuin affiche : code de sortie | durée | timestamp | commande.
> L'historique est partagé entre sessions et machines si atuin est configuré avec un compte.
---
## Correction & suggestions
| Commande / Touche | Description |
|---|---|
| `fuck` | Corrige la dernière commande ratée (thefuck) |
| `Ctrl+Space` | Accepte la suggestion automatique complète |
| `→` (flèche droite) | Accepte partiellement la suggestion (mot par mot) |
| `Tab` | Autocomplétion avec menu interactif |
> zsh corrige aussi automatiquement les petites typos de commandes (option `CORRECT`).
---
## Visuels & fun
| Commande | Description |
|---|---|
| `cava` | Visualiseur audio dans le terminal |
| `pipes` | Animation de tuyaux colorés |
| `cbonsai` | Bonsaï animé dans le terminal |
| `chafa <image>` | Affiche une image dans le terminal |
| `lolcat` | Colorie la sortie d'une commande en arc-en-ciel (ex: `ls \| lolcat`) |
| `cmatrix` | Pluie de caractères style Matrix |
| `toilet -f big <texte>` | Affiche du texte en gros ASCII art coloré |
| `jp2a <image.jpg>` | Convertit une image en ASCII art dans le terminal |
| `w3m <url>` | Navigue sur le web en mode texte depuis le terminal |
---
## Utilitaires
| Commande | Description |
|---|---|
| `qalc` | Calculatrice interactive (unités, conversions, ex: `150 EUR to USD`) |
| `jq <filtre> <fichier.json>` | Traite et formate du JSON en ligne de commande |
| `uv` | Gestionnaire de paquets Python ultra-rapide (remplace pip/venv) |
| `uvx <outil>` | Exécute un outil Python dans un environnement isolé temporaire |
---
## Cheat sheets interactifs
| Commande | Description |
|---|---|
| `navi` | Interface interactive de cheat sheets (chercher des exemples de commandes) |
| `tldr <commande>` | Résumé rapide d'une commande avec exemples |
---
## Prompt (starship)
Le prompt affiche automatiquement sur **2 lignes** :
**Ligne 1 :** OS | User@Host | Dossier courant | Branche git + état | Langage détecté + version | Durée dernière commande (si >2s) | RAM | Heure
**Ligne 2 :** Code de retour si erreur | Caractère `` (bleu ok / rouge erreur)
**État git affiché :**
| Symbole | Signification |
|---|---|
| `⇡N` | N commits en avance sur le remote |
| `⇣N` | N commits en retard |
| `?N` | N fichiers non trackés |
| `!N` | N fichiers modifiés |
| `+N` | N fichiers stagés |
| `✘N` | Conflits |
---
## Plugins zsh actifs
| Plugin | Effet |
|---|---|
| `zsh-autosuggestions` | Suggestions grises basées sur l'historique |
| `zsh-syntax-highlighting` | Coloration de la commande en cours de frappe |
| `zsh-completions` | Complétions supplémentaires pour de nombreux outils |
| `zinit` | Gestionnaire de plugins (chargement automatique au démarrage) |
---
## Coloration syntaxique du terminal
| Type | Couleur |
|---|---|
| Commandes | Cyan |
| Alias | Violet |
| Builtins zsh | Rose |
| Chaînes | Violet |
| Chemins | Blanc souligné |
| Erreurs / inconnu | Rouge gras |
| Commentaires | Gris italique |
| Globs (`*`, `?`) | Jaune |
---
## Options zsh actives
| Option | Effet |
|---|---|
| `AUTO_CD` | Entrer dans un dossier sans taper `cd` |
| `CORRECT` | Correction automatique des typos |
| `GLOB_DOTS` | Les fichiers cachés `.xxx` inclus dans les globs |
| `SHARE_HISTORY` | Historique partagé entre toutes les sessions zsh |
| `HIST_IGNORE_DUPS` | Ne pas enregistrer les doublons dans l'historique |
| `HIST_IGNORE_SPACE` | Les commandes précédées d'un espace ne sont pas enregistrées |
| `NO_BEEP` | Silence — pas de bip |