commit ee455870f5d67837bde30cc9280891940054a17c Author: Tetardtek Date: Sat Feb 21 20:27:14 2026 +0100 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. diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..41c3d2d --- /dev/null +++ b/.gitignore @@ -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/ diff --git a/INSTALL/assets/violet-chaton-logo.png b/INSTALL/assets/violet-chaton-logo.png new file mode 100644 index 0000000..148daa9 Binary files /dev/null and b/INSTALL/assets/violet-chaton-logo.png differ diff --git a/INSTALL/configs/atuin.toml b/INSTALL/configs/atuin.toml new file mode 100644 index 0000000..f06ad88 --- /dev/null +++ b/INSTALL/configs/atuin.toml @@ -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 }] diff --git a/INSTALL/configs/bashrc b/INSTALL/configs/bashrc new file mode 100644 index 0000000..068a0fb --- /dev/null +++ b/INSTALL/configs/bashrc @@ -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 diff --git a/INSTALL/configs/bat.conf b/INSTALL/configs/bat.conf new file mode 100644 index 0000000..511c616 --- /dev/null +++ b/INSTALL/configs/bat.conf @@ -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 diff --git a/INSTALL/configs/btop.conf b/INSTALL/configs/btop.conf new file mode 100644 index 0000000..c271184 --- /dev/null +++ b/INSTALL/configs/btop.conf @@ -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 = "" \ No newline at end of file diff --git a/INSTALL/configs/fastfetch.jsonc b/INSTALL/configs/fastfetch.jsonc new file mode 100644 index 0000000..a7350c0 --- /dev/null +++ b/INSTALL/configs/fastfetch.jsonc @@ -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" + ] +} diff --git a/INSTALL/configs/gitconfig b/INSTALL/configs/gitconfig new file mode 100644 index 0000000..0e0b990 --- /dev/null +++ b/INSTALL/configs/gitconfig @@ -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 diff --git a/INSTALL/configs/glow.yml b/INSTALL/configs/glow.yml new file mode 100644 index 0000000..ac1d4c3 --- /dev/null +++ b/INSTALL/configs/glow.yml @@ -0,0 +1,3 @@ +# Style : dark, notty, dracula, tokyo-night, pink +style: "dark" +pager: true diff --git a/INSTALL/configs/lazygit.yml b/INSTALL/configs/lazygit.yml new file mode 100644 index 0000000..5940f75 --- /dev/null +++ b/INSTALL/configs/lazygit.yml @@ -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 diff --git a/INSTALL/configs/starship.toml b/INSTALL/configs/starship.toml new file mode 100644 index 0000000..077b4c0 --- /dev/null +++ b/INSTALL/configs/starship.toml @@ -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)" diff --git a/INSTALL/configs/yazi.toml b/INSTALL/configs/yazi.toml new file mode 100644 index 0000000..b7cf9b9 --- /dev/null +++ b/INSTALL/configs/yazi.toml @@ -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" }, +] diff --git a/INSTALL/configs/zshrc b/INSTALL/configs/zshrc new file mode 100644 index 0000000..78c55c3 --- /dev/null +++ b/INSTALL/configs/zshrc @@ -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)" diff --git a/INSTALL/install.sh b/INSTALL/install.sh new file mode 100755 index 0000000..5ccbb7c --- /dev/null +++ b/INSTALL/install.sh @@ -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 diff --git a/INSTALL/scripts/01-packages-apt.sh b/INSTALL/scripts/01-packages-apt.sh new file mode 100755 index 0000000..d7cd107 --- /dev/null +++ b/INSTALL/scripts/01-packages-apt.sh @@ -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 diff --git a/INSTALL/scripts/02-packages-manual.sh b/INSTALL/scripts/02-packages-manual.sh new file mode 100755 index 0000000..7802b06 --- /dev/null +++ b/INSTALL/scripts/02-packages-manual.sh @@ -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 diff --git a/INSTALL/scripts/03-deploy-configs.sh b/INSTALL/scripts/03-deploy-configs.sh new file mode 100755 index 0000000..da160ca --- /dev/null +++ b/INSTALL/scripts/03-deploy-configs.sh @@ -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 diff --git a/INSTALL/scripts/lib.sh b/INSTALL/scripts/lib.sh new file mode 100755 index 0000000..ccb1c24 --- /dev/null +++ b/INSTALL/scripts/lib.sh @@ -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 "" +} diff --git a/INSTALL/themes/cosmic/com.system76.CosmicTerm/v1/app_theme b/INSTALL/themes/cosmic/com.system76.CosmicTerm/v1/app_theme new file mode 100644 index 0000000..c706507 --- /dev/null +++ b/INSTALL/themes/cosmic/com.system76.CosmicTerm/v1/app_theme @@ -0,0 +1 @@ +Dark \ No newline at end of file diff --git a/INSTALL/themes/cosmic/com.system76.CosmicTerm/v1/color_schemes_dark b/INSTALL/themes/cosmic/com.system76.CosmicTerm/v1/color_schemes_dark new file mode 100644 index 0000000..eebc0e6 --- /dev/null +++ b/INSTALL/themes/cosmic/com.system76.CosmicTerm/v1/color_schemes_dark @@ -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", + ), + ), +} \ No newline at end of file diff --git a/INSTALL/themes/cosmic/com.system76.CosmicTerm/v1/color_schemes_light b/INSTALL/themes/cosmic/com.system76.CosmicTerm/v1/color_schemes_light new file mode 100644 index 0000000..eebc0e6 --- /dev/null +++ b/INSTALL/themes/cosmic/com.system76.CosmicTerm/v1/color_schemes_light @@ -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", + ), + ), +} \ No newline at end of file diff --git a/INSTALL/themes/cosmic/com.system76.CosmicTerm/v1/dim_font_weight b/INSTALL/themes/cosmic/com.system76.CosmicTerm/v1/dim_font_weight new file mode 100644 index 0000000..f1efb20 --- /dev/null +++ b/INSTALL/themes/cosmic/com.system76.CosmicTerm/v1/dim_font_weight @@ -0,0 +1 @@ +300 \ No newline at end of file diff --git a/INSTALL/themes/cosmic/com.system76.CosmicTerm/v1/focus_follow_mouse b/INSTALL/themes/cosmic/com.system76.CosmicTerm/v1/focus_follow_mouse new file mode 100644 index 0000000..f32a580 --- /dev/null +++ b/INSTALL/themes/cosmic/com.system76.CosmicTerm/v1/focus_follow_mouse @@ -0,0 +1 @@ +true \ No newline at end of file diff --git a/INSTALL/themes/cosmic/com.system76.CosmicTerm/v1/font_name b/INSTALL/themes/cosmic/com.system76.CosmicTerm/v1/font_name new file mode 100644 index 0000000..4087a4d --- /dev/null +++ b/INSTALL/themes/cosmic/com.system76.CosmicTerm/v1/font_name @@ -0,0 +1 @@ +"JetBrains Mono NL" \ No newline at end of file diff --git a/INSTALL/themes/cosmic/com.system76.CosmicTerm/v1/font_size b/INSTALL/themes/cosmic/com.system76.CosmicTerm/v1/font_size new file mode 100644 index 0000000..da2d398 --- /dev/null +++ b/INSTALL/themes/cosmic/com.system76.CosmicTerm/v1/font_size @@ -0,0 +1 @@ +14 \ No newline at end of file diff --git a/INSTALL/themes/cosmic/com.system76.CosmicTerm/v1/font_size_zoom_step_mul_100 b/INSTALL/themes/cosmic/com.system76.CosmicTerm/v1/font_size_zoom_step_mul_100 new file mode 100644 index 0000000..105d7d9 --- /dev/null +++ b/INSTALL/themes/cosmic/com.system76.CosmicTerm/v1/font_size_zoom_step_mul_100 @@ -0,0 +1 @@ +100 \ No newline at end of file diff --git a/INSTALL/themes/cosmic/com.system76.CosmicTerm/v1/opacity b/INSTALL/themes/cosmic/com.system76.CosmicTerm/v1/opacity new file mode 100644 index 0000000..615be70 --- /dev/null +++ b/INSTALL/themes/cosmic/com.system76.CosmicTerm/v1/opacity @@ -0,0 +1 @@ +85 \ No newline at end of file diff --git a/INSTALL/themes/cosmic/com.system76.CosmicTerm/v1/profiles b/INSTALL/themes/cosmic/com.system76.CosmicTerm/v1/profiles new file mode 100644 index 0000000..8336051 --- /dev/null +++ b/INSTALL/themes/cosmic/com.system76.CosmicTerm/v1/profiles @@ -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, + ), +} \ No newline at end of file diff --git a/INSTALL/themes/cosmic/com.system76.CosmicTerm/v1/syntax_theme_dark b/INSTALL/themes/cosmic/com.system76.CosmicTerm/v1/syntax_theme_dark new file mode 100644 index 0000000..047dd5e --- /dev/null +++ b/INSTALL/themes/cosmic/com.system76.CosmicTerm/v1/syntax_theme_dark @@ -0,0 +1 @@ +"violet-chaton" \ No newline at end of file diff --git a/INSTALL/themes/cosmic/com.system76.CosmicTerm/v1/syntax_theme_light b/INSTALL/themes/cosmic/com.system76.CosmicTerm/v1/syntax_theme_light new file mode 100644 index 0000000..047dd5e --- /dev/null +++ b/INSTALL/themes/cosmic/com.system76.CosmicTerm/v1/syntax_theme_light @@ -0,0 +1 @@ +"violet-chaton" \ No newline at end of file diff --git a/INSTALL/themes/cosmic/com.system76.CosmicTerm/v1/use_bright_bold b/INSTALL/themes/cosmic/com.system76.CosmicTerm/v1/use_bright_bold new file mode 100644 index 0000000..f32a580 --- /dev/null +++ b/INSTALL/themes/cosmic/com.system76.CosmicTerm/v1/use_bright_bold @@ -0,0 +1 @@ +true \ No newline at end of file diff --git a/INSTALL/themes/cosmic/com.system76.CosmicTheme.Dark/v1/accent b/INSTALL/themes/cosmic/com.system76.CosmicTheme.Dark/v1/accent new file mode 100644 index 0000000..fb59ad7 --- /dev/null +++ b/INSTALL/themes/cosmic/com.system76.CosmicTheme.Dark/v1/accent @@ -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, + ), +) \ No newline at end of file diff --git a/INSTALL/themes/cosmic/com.system76.CosmicTheme.Dark/v1/accent_button b/INSTALL/themes/cosmic/com.system76.CosmicTheme.Dark/v1/accent_button new file mode 100644 index 0000000..b05382c --- /dev/null +++ b/INSTALL/themes/cosmic/com.system76.CosmicTheme.Dark/v1/accent_button @@ -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, + ), +) \ No newline at end of file diff --git a/INSTALL/themes/cosmic/com.system76.CosmicTheme.Dark/v1/accent_text b/INSTALL/themes/cosmic/com.system76.CosmicTheme.Dark/v1/accent_text new file mode 100644 index 0000000..4af1832 --- /dev/null +++ b/INSTALL/themes/cosmic/com.system76.CosmicTheme.Dark/v1/accent_text @@ -0,0 +1 @@ +None \ No newline at end of file diff --git a/INSTALL/themes/cosmic/com.system76.CosmicTheme.Dark/v1/active_hint b/INSTALL/themes/cosmic/com.system76.CosmicTheme.Dark/v1/active_hint new file mode 100644 index 0000000..e440e5c --- /dev/null +++ b/INSTALL/themes/cosmic/com.system76.CosmicTheme.Dark/v1/active_hint @@ -0,0 +1 @@ +3 \ No newline at end of file diff --git a/INSTALL/themes/cosmic/com.system76.CosmicTheme.Dark/v1/background b/INSTALL/themes/cosmic/com.system76.CosmicTheme.Dark/v1/background new file mode 100644 index 0000000..0d2f38d --- /dev/null +++ b/INSTALL/themes/cosmic/com.system76.CosmicTheme.Dark/v1/background @@ -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, + ), +) \ No newline at end of file diff --git a/INSTALL/themes/cosmic/com.system76.CosmicTheme.Dark/v1/button b/INSTALL/themes/cosmic/com.system76.CosmicTheme.Dark/v1/button new file mode 100644 index 0000000..a17739f --- /dev/null +++ b/INSTALL/themes/cosmic/com.system76.CosmicTheme.Dark/v1/button @@ -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, + ), +) \ No newline at end of file diff --git a/INSTALL/themes/cosmic/com.system76.CosmicTheme.Dark/v1/control_tint b/INSTALL/themes/cosmic/com.system76.CosmicTheme.Dark/v1/control_tint new file mode 100644 index 0000000..65b03ff --- /dev/null +++ b/INSTALL/themes/cosmic/com.system76.CosmicTheme.Dark/v1/control_tint @@ -0,0 +1,5 @@ +Some(( + red: 0.2901961, + green: 0.21176471, + blue: 0.37254903, +)) \ No newline at end of file diff --git a/INSTALL/themes/cosmic/com.system76.CosmicTheme.Dark/v1/corner_radii b/INSTALL/themes/cosmic/com.system76.CosmicTheme.Dark/v1/corner_radii new file mode 100644 index 0000000..7d52139 --- /dev/null +++ b/INSTALL/themes/cosmic/com.system76.CosmicTheme.Dark/v1/corner_radii @@ -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), +) \ No newline at end of file diff --git a/INSTALL/themes/cosmic/com.system76.CosmicTheme.Dark/v1/destructive b/INSTALL/themes/cosmic/com.system76.CosmicTheme.Dark/v1/destructive new file mode 100644 index 0000000..c7ef8dc --- /dev/null +++ b/INSTALL/themes/cosmic/com.system76.CosmicTheme.Dark/v1/destructive @@ -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, + ), +) \ No newline at end of file diff --git a/INSTALL/themes/cosmic/com.system76.CosmicTheme.Dark/v1/destructive_button b/INSTALL/themes/cosmic/com.system76.CosmicTheme.Dark/v1/destructive_button new file mode 100644 index 0000000..bfab1ad --- /dev/null +++ b/INSTALL/themes/cosmic/com.system76.CosmicTheme.Dark/v1/destructive_button @@ -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, + ), +) \ No newline at end of file diff --git a/INSTALL/themes/cosmic/com.system76.CosmicTheme.Dark/v1/gaps b/INSTALL/themes/cosmic/com.system76.CosmicTheme.Dark/v1/gaps new file mode 100644 index 0000000..6fe974b --- /dev/null +++ b/INSTALL/themes/cosmic/com.system76.CosmicTheme.Dark/v1/gaps @@ -0,0 +1 @@ +(0, 8) \ No newline at end of file diff --git a/INSTALL/themes/cosmic/com.system76.CosmicTheme.Dark/v1/icon_button b/INSTALL/themes/cosmic/com.system76.CosmicTheme.Dark/v1/icon_button new file mode 100644 index 0000000..55f0272 --- /dev/null +++ b/INSTALL/themes/cosmic/com.system76.CosmicTheme.Dark/v1/icon_button @@ -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, + ), +) \ No newline at end of file diff --git a/INSTALL/themes/cosmic/com.system76.CosmicTheme.Dark/v1/is_dark b/INSTALL/themes/cosmic/com.system76.CosmicTheme.Dark/v1/is_dark new file mode 100644 index 0000000..f32a580 --- /dev/null +++ b/INSTALL/themes/cosmic/com.system76.CosmicTheme.Dark/v1/is_dark @@ -0,0 +1 @@ +true \ No newline at end of file diff --git a/INSTALL/themes/cosmic/com.system76.CosmicTheme.Dark/v1/is_frosted b/INSTALL/themes/cosmic/com.system76.CosmicTheme.Dark/v1/is_frosted new file mode 100644 index 0000000..02e4a84 --- /dev/null +++ b/INSTALL/themes/cosmic/com.system76.CosmicTheme.Dark/v1/is_frosted @@ -0,0 +1 @@ +false \ No newline at end of file diff --git a/INSTALL/themes/cosmic/com.system76.CosmicTheme.Dark/v1/is_high_contrast b/INSTALL/themes/cosmic/com.system76.CosmicTheme.Dark/v1/is_high_contrast new file mode 100644 index 0000000..02e4a84 --- /dev/null +++ b/INSTALL/themes/cosmic/com.system76.CosmicTheme.Dark/v1/is_high_contrast @@ -0,0 +1 @@ +false \ No newline at end of file diff --git a/INSTALL/themes/cosmic/com.system76.CosmicTheme.Dark/v1/link_button b/INSTALL/themes/cosmic/com.system76.CosmicTheme.Dark/v1/link_button new file mode 100644 index 0000000..a0d1118 --- /dev/null +++ b/INSTALL/themes/cosmic/com.system76.CosmicTheme.Dark/v1/link_button @@ -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, + ), +) \ No newline at end of file diff --git a/INSTALL/themes/cosmic/com.system76.CosmicTheme.Dark/v1/name b/INSTALL/themes/cosmic/com.system76.CosmicTheme.Dark/v1/name new file mode 100644 index 0000000..6a3a7b4 --- /dev/null +++ b/INSTALL/themes/cosmic/com.system76.CosmicTheme.Dark/v1/name @@ -0,0 +1 @@ +"Violet-chaton" \ No newline at end of file diff --git a/INSTALL/themes/cosmic/com.system76.CosmicTheme.Dark/v1/palette b/INSTALL/themes/cosmic/com.system76.CosmicTheme.Dark/v1/palette new file mode 100644 index 0000000..d29c8ba --- /dev/null +++ b/INSTALL/themes/cosmic/com.system76.CosmicTheme.Dark/v1/palette @@ -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, + ), +) \ No newline at end of file diff --git a/INSTALL/themes/cosmic/com.system76.CosmicTheme.Dark/v1/primary b/INSTALL/themes/cosmic/com.system76.CosmicTheme.Dark/v1/primary new file mode 100644 index 0000000..da070be --- /dev/null +++ b/INSTALL/themes/cosmic/com.system76.CosmicTheme.Dark/v1/primary @@ -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, + ), +) \ No newline at end of file diff --git a/INSTALL/themes/cosmic/com.system76.CosmicTheme.Dark/v1/secondary b/INSTALL/themes/cosmic/com.system76.CosmicTheme.Dark/v1/secondary new file mode 100644 index 0000000..b99d944 --- /dev/null +++ b/INSTALL/themes/cosmic/com.system76.CosmicTheme.Dark/v1/secondary @@ -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, + ), +) \ No newline at end of file diff --git a/INSTALL/themes/cosmic/com.system76.CosmicTheme.Dark/v1/shade b/INSTALL/themes/cosmic/com.system76.CosmicTheme.Dark/v1/shade new file mode 100644 index 0000000..a265d30 --- /dev/null +++ b/INSTALL/themes/cosmic/com.system76.CosmicTheme.Dark/v1/shade @@ -0,0 +1,6 @@ +( + red: 0.0, + green: 0.0, + blue: 0.0, + alpha: 0.32, +) \ No newline at end of file diff --git a/INSTALL/themes/cosmic/com.system76.CosmicTheme.Dark/v1/spacing b/INSTALL/themes/cosmic/com.system76.CosmicTheme.Dark/v1/spacing new file mode 100644 index 0000000..464b264 --- /dev/null +++ b/INSTALL/themes/cosmic/com.system76.CosmicTheme.Dark/v1/spacing @@ -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, +) \ No newline at end of file diff --git a/INSTALL/themes/cosmic/com.system76.CosmicTheme.Dark/v1/success b/INSTALL/themes/cosmic/com.system76.CosmicTheme.Dark/v1/success new file mode 100644 index 0000000..8099b98 --- /dev/null +++ b/INSTALL/themes/cosmic/com.system76.CosmicTheme.Dark/v1/success @@ -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, + ), +) \ No newline at end of file diff --git a/INSTALL/themes/cosmic/com.system76.CosmicTheme.Dark/v1/success_button b/INSTALL/themes/cosmic/com.system76.CosmicTheme.Dark/v1/success_button new file mode 100644 index 0000000..3020182 --- /dev/null +++ b/INSTALL/themes/cosmic/com.system76.CosmicTheme.Dark/v1/success_button @@ -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, + ), +) \ No newline at end of file diff --git a/INSTALL/themes/cosmic/com.system76.CosmicTheme.Dark/v1/text_button b/INSTALL/themes/cosmic/com.system76.CosmicTheme.Dark/v1/text_button new file mode 100644 index 0000000..f9a0cba --- /dev/null +++ b/INSTALL/themes/cosmic/com.system76.CosmicTheme.Dark/v1/text_button @@ -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, + ), +) \ No newline at end of file diff --git a/INSTALL/themes/cosmic/com.system76.CosmicTheme.Dark/v1/text_tint b/INSTALL/themes/cosmic/com.system76.CosmicTheme.Dark/v1/text_tint new file mode 100644 index 0000000..b13fa4e --- /dev/null +++ b/INSTALL/themes/cosmic/com.system76.CosmicTheme.Dark/v1/text_tint @@ -0,0 +1,5 @@ +Some(( + red: 0.972549, + green: 0.972549, + blue: 0.9490196, +)) \ No newline at end of file diff --git a/INSTALL/themes/cosmic/com.system76.CosmicTheme.Dark/v1/warning b/INSTALL/themes/cosmic/com.system76.CosmicTheme.Dark/v1/warning new file mode 100644 index 0000000..d296b6d --- /dev/null +++ b/INSTALL/themes/cosmic/com.system76.CosmicTheme.Dark/v1/warning @@ -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, + ), +) \ No newline at end of file diff --git a/INSTALL/themes/cosmic/com.system76.CosmicTheme.Dark/v1/warning_button b/INSTALL/themes/cosmic/com.system76.CosmicTheme.Dark/v1/warning_button new file mode 100644 index 0000000..a200d94 --- /dev/null +++ b/INSTALL/themes/cosmic/com.system76.CosmicTheme.Dark/v1/warning_button @@ -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, + ), +) \ No newline at end of file diff --git a/INSTALL/themes/cosmic/com.system76.CosmicTheme.Dark/v1/window_hint b/INSTALL/themes/cosmic/com.system76.CosmicTheme.Dark/v1/window_hint new file mode 100644 index 0000000..350e4cf --- /dev/null +++ b/INSTALL/themes/cosmic/com.system76.CosmicTheme.Dark/v1/window_hint @@ -0,0 +1,5 @@ +Some(( + red: 1.0, + green: 0.47450984, + blue: 0.7764704, +)) \ No newline at end of file diff --git a/INSTALL/themes/cosmic/com.system76.CosmicTheme.Mode/v1/is_dark b/INSTALL/themes/cosmic/com.system76.CosmicTheme.Mode/v1/is_dark new file mode 100644 index 0000000..f32a580 --- /dev/null +++ b/INSTALL/themes/cosmic/com.system76.CosmicTheme.Mode/v1/is_dark @@ -0,0 +1 @@ +true \ No newline at end of file diff --git a/INSTALL/themes/cosmic/com.system76.CosmicTk/v1/apply_theme_global b/INSTALL/themes/cosmic/com.system76.CosmicTk/v1/apply_theme_global new file mode 100644 index 0000000..f32a580 --- /dev/null +++ b/INSTALL/themes/cosmic/com.system76.CosmicTk/v1/apply_theme_global @@ -0,0 +1 @@ +true \ No newline at end of file diff --git a/INSTALL/themes/cosmic/com.system76.CosmicTk/v1/header_size b/INSTALL/themes/cosmic/com.system76.CosmicTk/v1/header_size new file mode 100644 index 0000000..919dd7b --- /dev/null +++ b/INSTALL/themes/cosmic/com.system76.CosmicTk/v1/header_size @@ -0,0 +1 @@ +Compact \ No newline at end of file diff --git a/INSTALL/themes/cosmic/com.system76.CosmicTk/v1/icon_theme b/INSTALL/themes/cosmic/com.system76.CosmicTk/v1/icon_theme new file mode 100644 index 0000000..3328175 --- /dev/null +++ b/INSTALL/themes/cosmic/com.system76.CosmicTk/v1/icon_theme @@ -0,0 +1 @@ +"candy-icons-master" \ No newline at end of file diff --git a/INSTALL/themes/cosmic/com.system76.CosmicTk/v1/interface_density b/INSTALL/themes/cosmic/com.system76.CosmicTk/v1/interface_density new file mode 100644 index 0000000..919dd7b --- /dev/null +++ b/INSTALL/themes/cosmic/com.system76.CosmicTk/v1/interface_density @@ -0,0 +1 @@ +Compact \ No newline at end of file diff --git a/INSTALL/themes/cosmic/com.system76.CosmicTk/v1/interface_font b/INSTALL/themes/cosmic/com.system76.CosmicTk/v1/interface_font new file mode 100644 index 0000000..82383a9 --- /dev/null +++ b/INSTALL/themes/cosmic/com.system76.CosmicTk/v1/interface_font @@ -0,0 +1,6 @@ +( + family: "0xProto Nerd Font Propo", + weight: Normal, + stretch: Normal, + style: Normal, +) \ No newline at end of file diff --git a/INSTALL/themes/cosmic/com.system76.CosmicTk/v1/monospace_font b/INSTALL/themes/cosmic/com.system76.CosmicTk/v1/monospace_font new file mode 100644 index 0000000..41d0660 --- /dev/null +++ b/INSTALL/themes/cosmic/com.system76.CosmicTk/v1/monospace_font @@ -0,0 +1,6 @@ +( + family: "JetBrainsMonoNL Nerd Font Mono", + weight: Normal, + stretch: Normal, + style: Normal, +) \ No newline at end of file diff --git a/INSTALL/themes/cosmic/com.system76.CosmicTk/v1/show_maximize b/INSTALL/themes/cosmic/com.system76.CosmicTk/v1/show_maximize new file mode 100644 index 0000000..f32a580 --- /dev/null +++ b/INSTALL/themes/cosmic/com.system76.CosmicTk/v1/show_maximize @@ -0,0 +1 @@ +true \ No newline at end of file diff --git a/INSTALL/themes/cosmic/com.system76.CosmicTk/v1/show_minimize b/INSTALL/themes/cosmic/com.system76.CosmicTk/v1/show_minimize new file mode 100644 index 0000000..f32a580 --- /dev/null +++ b/INSTALL/themes/cosmic/com.system76.CosmicTk/v1/show_minimize @@ -0,0 +1 @@ +true \ No newline at end of file diff --git a/INSTALL/themes/violet-chaton-atuin.toml b/INSTALL/themes/violet-chaton-atuin.toml new file mode 100644 index 0000000..6919711 --- /dev/null +++ b/INSTALL/themes/violet-chaton-atuin.toml @@ -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 diff --git a/INSTALL/themes/violet-chaton-bat.tmTheme b/INSTALL/themes/violet-chaton-bat.tmTheme new file mode 100644 index 0000000..b99b748 --- /dev/null +++ b/INSTALL/themes/violet-chaton-bat.tmTheme @@ -0,0 +1,161 @@ + + + + + name + violet-chaton + settings + + + + + settings + + background #341c4a + foreground #f8f8f2 + caret #ff79c6 + lineHighlight#3d2454 + selection #3d245480 + invisibles #6c7086 + + + + + + nameComment + scopecomment, punctuation.definition.comment + settings + + foreground#7f849c + fontStyleitalic + + + + + + nameString + scopestring, string.quoted, string.template + settings + foreground#e79cfe + + + + + nameNumber + scopeconstant.numeric + settings + foreground#a6e3a1 + + + + + nameKeyword + scopekeyword, keyword.control, storage, storage.type, storage.modifier + settings + foreground#ff79c6 + + + + + nameOperator + scopekeyword.operator + settings + foreground#ff79c6 + + + + + nameFunction + scopeentity.name.function, meta.function-call, support.function + settings + foreground#8be9fd + + + + + nameType + scopeentity.name.class, entity.name.type, support.class, support.type + settings + foreground#e79cfe + + + + + nameConstant + scopeconstant, constant.language, variable.language + settings + foreground#8be9fd + + + + + nameVariable + scopevariable, variable.other + settings + foreground#f8f8f2 + + + + + nameTag + scopeentity.name.tag + settings + foreground#ff79c6 + + + + + nameAttribute + scopeentity.other.attribute-name + settings + foreground#8be9fd + + + + + namePunctuation + scopepunctuation + settings + foreground#9399b2 + + + + + nameCSS Property + scopesupport.type.property-name.css, support.type.property-name.scss + settings + foreground#8be9fd + + + + + nameCSS Value + scopesupport.constant.property-value.css + settings + foreground#e79cfe + + + + + nameSCSS Variable + scopevariable.scss, variable.sass + settings + foreground#8be9fd + + + + + nameInvalid + scopeinvalid + settings + + foreground#f38ba8 + fontStylebold + + + + + uuid + vc-9f3a2b1c-4d5e-6f7a-8b9c-0d1e2f3a4b5c + + diff --git a/INSTALL/themes/violet-chaton-btop.theme b/INSTALL/themes/violet-chaton-btop.theme new file mode 100644 index 0000000..bddc27f --- /dev/null +++ b/INSTALL/themes/violet-chaton-btop.theme @@ -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" diff --git a/INSTALL/themes/violet-chaton-cava.conf b/INSTALL/themes/violet-chaton-cava.conf new file mode 100644 index 0000000..53eddf5 --- /dev/null +++ b/INSTALL/themes/violet-chaton-cava.conf @@ -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 diff --git a/INSTALL/themes/violet-chaton-gtk.css b/INSTALL/themes/violet-chaton-gtk.css new file mode 100644 index 0000000..5c460ab --- /dev/null +++ b/INSTALL/themes/violet-chaton-gtk.css @@ -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; +} diff --git a/INSTALL/themes/violet-chaton-ls-colors.sh b/INSTALL/themes/violet-chaton-ls-colors.sh new file mode 100644 index 0000000..932e5db --- /dev/null +++ b/INSTALL/themes/violet-chaton-ls-colors.sh @@ -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' diff --git a/INSTALL/themes/violet-chaton-vivaldi.json b/INSTALL/themes/violet-chaton-vivaldi.json new file mode 100644 index 0000000..48974a7 --- /dev/null +++ b/INSTALL/themes/violet-chaton-vivaldi.json @@ -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 + } +] diff --git a/INSTALL/themes/violet-chaton-yazi.toml b/INSTALL/themes/violet-chaton-yazi.toml new file mode 100644 index 0000000..7fa54dc --- /dev/null +++ b/INSTALL/themes/violet-chaton-yazi.toml @@ -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" } }, +] diff --git a/INSTALL/themes/violet-chaton.theme.css b/INSTALL/themes/violet-chaton.theme.css new file mode 100644 index 0000000..bbea28a --- /dev/null +++ b/INSTALL/themes/violet-chaton.theme.css @@ -0,0 +1,2391 @@ +@charset "UTF-8"; +/** + * @name Violet Chaton + * @description Thème Discord cohérent avec le ricing Violet Chaton (COSMIC DE) de tetardtek. + * Palette extraite de violet-chaton.ron. Transparence optionnelle par zone. + * @author tetardtek + * @version 1.0.0 + * @source https://github.com/tetardtek/violet-chaton-discord-theme + * @invite + */ +:root, +.theme-dark { + --background-primary: #38234b; + --background-secondary: #341c4a; + --background-secondary-alt: #341c4a; + --background-tertiary: #2d1a3e; + --background-floating: #2d1a3e; + --background-accent: #3d2454; + --channeltextarea-background: #341c4a; + --background-nested-floating: #2d1a3e; + --modal-background: #341c4a; + --input-background: #341c4a; + --deprecated-card-bg: #3d2454; + --deprecated-panel-overlay: rgba(27, 13, 40, 0.5); + --deprecated-store-bg: #341c4a; + --background-surface-high: #3d2454; + --background-surface-higher: #38234b; + --background-surface-overlay: rgba(45, 26, 62, 0.9); + --background-modifier-hover: rgba(255, 121, 198, 0.08); + --background-modifier-active: rgba(255, 121, 198, 0.12); + --background-modifier-selected: rgba(255, 121, 198, 0.15); + --background-modifier-accent: rgba(255, 121, 198, 0.05); + --background-mentioned: rgba(255, 121, 198, 0.05); + --background-mentioned-hover: rgba(255, 121, 198, 0.08); + --background-message-hover: rgba(255, 121, 198, 0.03); + --background-message-automod-highlight: rgba(249, 226, 175, 0.06); + --text-normal: #f8f8f2; + --text-default: #f8f8f2; + --text-strong: #f8f8f2; + --text-subtle: #9399b2; + --text-muted: #7f849c; + --text-link: #8be9fd; + --text-link-low-saturation: #8be9fd; + --text-positive: #a6e3a1; + --text-warning: #f9e2af; + --text-danger: #f38ba8; + --text-brand: #e79cfe; + --header-primary: #f8f8f2; + --header-secondary: #a6adc8; + --channels-default: #a6adc8; + --channel-icon: #7f849c; + --interactive-normal: #a6adc8; + --interactive-hover: #ff79c6; + --interactive-active: #ff79c6; + --interactive-muted: #6c7086; + --interactive-text-active: #f8f8f2; + --interactive-icon-default: #a6adc8; + --icon-strong: #f8f8f2; + --icon-default: #a6adc8; + --icon-muted: #7f849c; + --scrollbar-auto-thumb: #7f849c; + --scrollbar-auto-track: #2d1a3e; + --scrollbar-thin-thumb: #7f849c; + --scrollbar-thin-track: transparent; + --brand-experiment: #e79cfe; + --brand-experiment-560: #e79cfe; + --button-danger-background: #f38ba8; + --button-danger-background-hover: #f7b0c4; + --button-danger-background-active: #f17497; + --button-secondary-background: #3d2454; + --button-secondary-background-hover: rgba(255, 121, 198, 0.1); + --button-secondary-background-active: rgba(255, 121, 198, 0.15); + --button-outline-danger-background-hover: rgba(243, 139, 168, 0.1); + --button-outline-danger-border: #f38ba8; + --button-outline-danger-text: #f38ba8; + --button-outline-brand-background-hover: rgba(231, 156, 254, 0.1); + --button-outline-brand-border: #e79cfe; + --button-outline-brand-text: #e79cfe; + --control-brand-foreground: #e79cfe; + --control-brand-foreground-new: #e79cfe; + --status-positive-background: rgba(166, 227, 161, 0.15); + --status-warning-background: rgba(249, 226, 175, 0.15); + --status-danger-background: rgba(243, 139, 168, 0.15); + --status-positive-text: #a6e3a1; + --status-warning-text: #f9e2af; + --status-danger-text: #f38ba8; + --info-help-background: rgba(139, 233, 253, 0.08); + --info-help-foreground: #8be9fd; + --info-warning-background: rgba(249, 226, 175, 0.08); + --info-warning-foreground: #f9e2af; + --info-danger-background: rgba(243, 139, 168, 0.08); + --info-danger-foreground: #f38ba8; + --info-positive-background: rgba(166, 227, 161, 0.08); + --info-positive-foreground: #a6e3a1; + --mention-background: rgba(255, 121, 198, 0.1); + --mention-foreground: #ff79c6; + --profile-gradient-primary-color: #341c4a; + --profile-gradient-secondary-color: #2d1a3e; + --profile-gradient-overlay-color: rgba(27, 13, 40, 0.6); + --separator-color: rgba(255, 121, 198, 0.12); + --focus-primary: rgba(255, 121, 198, 0.5); +} + +[class*=guilds], +nav[class*=guilds], +[class*=guildsList], +[class*=listItem] { + background-color: #261537; +} + +[class*=wrapper-] [class*=listItem], +[class*=blobContainer], +[class*=scroller-][class*=guilds] { + background-color: #261537; +} + +[class*=guilds] [class*=wrapper-]:not([class*=selected]) [class*=icon] { + background-color: #341c4a; + color: #a6adc8; + transition: background-color 0.15s ease, color 0.15s ease; +} +[class*=guilds] [class*=wrapper-]:not([class*=selected]) [class*=icon]:hover { + background-color: rgba(255, 121, 198, 0.15); + color: #ff79c6; +} + +[class*=guilds] [class*=selected] [class*=icon] { + background-color: #e79cfe; + color: #1b0d28; +} + +[class*=wrapper_cc5dd2], +[class*=listItemWrapper__91816] { + background-color: transparent !important; +} + +[class*=wrapper__6e9f8]:not([class*=selected__]) { + background-color: #341c4a !important; + transition: background-color 0.15s ease; +} +[class*=wrapper__6e9f8]:not([class*=selected__]):hover { + background-color: rgba(255, 121, 198, 0.15) !important; +} + +[class*=wrapper__6e9f8][class*=selected__] { + background-color: #e79cfe !important; +} + +[class*=childWrapper__6e9f8] svg { + color: #a6adc8; + transition: color 0.15s ease; +} + +[class*=wrapper__6e9f8]:hover [class*=childWrapper__6e9f8] svg { + color: #ff79c6 !important; +} + +[class*=wrapper__6e9f8][class*=selected__] [class*=childWrapper__6e9f8] svg { + color: #1b0d28 !important; +} + +[class*=guildName__], +[class*=guildTooltip__], +[class*=nameTooltip__], +[class*=layerContainer] [class*=layer-] [class*=content_] > span { + background-color: #261537 !important; + border: 1px solid rgba(255, 121, 198, 0.15) !important; + border-radius: 6px !important; + box-shadow: 0 4px 16px rgba(27, 13, 40, 0.5) !important; + color: #f8f8f2 !important; + font-size: 13px !important; + font-weight: 600 !important; + padding: 6px 10px !important; +} + +[class*=pill] [class*=item] { + background-color: #ff79c6; +} + +[class*=listItemWrapper] [class*=separator] { + background-color: rgba(255, 121, 198, 0.2); +} + +[class*=sidebar], +nav[class*=sidebar], +[class*=privateChannels], +[class*=container-] > [class*=sidebar] { + background-color: #341c4a; +} + +[class*=header-][class*=sidebar], +[class*=header-][class*=container] { + background-color: #2d1a3e; + border-bottom: 1px solid rgba(255, 121, 198, 0.12); +} +[class*=header-][class*=sidebar] [class*=headerText], +[class*=header-][class*=sidebar] [class*=name-], +[class*=header-][class*=container] [class*=headerText], +[class*=header-][class*=container] [class*=name-] { + color: #f8f8f2; + font-weight: 600; +} + +[class*=containerDefault] [class*=name-], +[class*=categoryContainer] [class*=name-] { + color: #9399b2; + font-size: 11px; + font-weight: 700; + letter-spacing: 0.06em; + text-transform: uppercase; +} +[class*=containerDefault] [class*=name-]:hover, +[class*=categoryContainer] [class*=name-]:hover { + color: #f8f8f2; +} + +[class*=channel-], +[class*=containerDefault][class*=channel] { + border-radius: 4px; + color: #a6adc8; + transition: background-color 0.1s ease, color 0.1s ease; +} +[class*=channel-]:hover, +[class*=containerDefault][class*=channel]:hover { + background-color: rgba(255, 121, 198, 0.08); + color: #f8f8f2; +} +[class*=channel-][class*=modeSelected], [class*=channel-][aria-selected=true], +[class*=containerDefault][class*=channel][class*=modeSelected], +[class*=containerDefault][class*=channel][aria-selected=true] { + background-color: rgba(255, 121, 198, 0.15); + color: #ff79c6; +} +[class*=channel-][class*=modeSelected] [class*=name-], [class*=channel-][aria-selected=true] [class*=name-], +[class*=containerDefault][class*=channel][class*=modeSelected] [class*=name-], +[class*=containerDefault][class*=channel][aria-selected=true] [class*=name-] { + color: #ff79c6; +} +[class*=channel-] [class*=numberBadge], +[class*=channel-] [class*=unread], +[class*=containerDefault][class*=channel] [class*=numberBadge], +[class*=containerDefault][class*=channel] [class*=unread] { + background-color: #ff79c6; + color: #1b0d28; + font-weight: 700; +} + +[class*=channel-] [class*=icon], +[class*=channel-] svg { + color: #7f849c; +} + +[class*=channel-]:hover [class*=icon], +[class*=channel-]:hover svg, +[class*=channel-][aria-selected=true] [class*=icon], +[class*=channel-][aria-selected=true] svg { + color: #ff79c6; +} + +[class*=unread] > [class*=containerDefault] { + color: #f8f8f2; + font-weight: 600; +} + +[class*=chat-], +[class*=chatContent], +[class*=content-][class*=chat] { + background-color: #38234b; +} + +[class*=header-][class*=chat], +[class*=toolbar], +[class*=chatHeaderTitle] { + background-color: #38234b; + border-bottom: 1px solid rgba(255, 121, 198, 0.12); +} +[class*=header-][class*=chat] [class*=title-], +[class*=header-][class*=chat] [class*=headerText], +[class*=header-][class*=chat] h2, +[class*=toolbar] [class*=title-], +[class*=toolbar] [class*=headerText], +[class*=toolbar] h2, +[class*=chatHeaderTitle] [class*=title-], +[class*=chatHeaderTitle] [class*=headerText], +[class*=chatHeaderTitle] h2 { + color: #f8f8f2; + font-weight: 700; +} +[class*=header-][class*=chat] [class*=topic-], +[class*=toolbar] [class*=topic-], +[class*=chatHeaderTitle] [class*=topic-] { + color: #9399b2; + font-size: 13px; +} + +[class*=message-], +[class*=messageListItem] { + background-color: transparent; + transition: background-color 0.1s ease; +} +[class*=message-]:hover, +[class*=messageListItem]:hover { + background-color: rgba(255, 121, 198, 0.03); +} +[class*=message-][class*=mentioned], +[class*=messageListItem][class*=mentioned] { + background-color: rgba(255, 121, 198, 0.06); + border-left: 2px solid #ff79c6; +} + +[class*=messageContent], +[class*=markup-] { + color: #f8f8f2; + font-size: 15px; + line-height: 1.55; +} +[class*=messageContent] a, +[class*=markup-] a { + color: #8be9fd; + text-decoration: none; +} +[class*=messageContent] a:hover, +[class*=markup-] a:hover { + text-decoration: underline; + color: #bdf3fe; +} +[class*=messageContent] code, +[class*=markup-] code { + background-color: #2d1a3e; + border-radius: 3px; + color: #ff79c6; + font-size: 13.5px; + padding: 0.1em 0.4em; +} +[class*=messageContent] pre, +[class*=markup-] pre { + background-color: #261537 !important; + border: 1px solid rgba(231, 156, 254, 0.2); + border-radius: 6px; +} +[class*=messageContent] pre code, +[class*=markup-] pre code { + background-color: transparent; + color: #f8f8f2; + padding: 0; +} +[class*=messageContent] blockquote, +[class*=markup-] blockquote { + border-left: 4px solid #e79cfe; + color: #a6adc8; +} + +[class*=username-], +[class*=usernameInner] { + font-weight: 600; + transition: color 0.1s ease; +} +[class*=username-]:hover, +[class*=usernameInner]:hover { + text-decoration: underline; +} + +[class*=timestamp-] { + color: #6c7086; + font-size: 11px; +} + +[class*=reaction-] { + background-color: #2d1a3e; + border: 1px solid rgba(255, 121, 198, 0.15); + border-radius: 8px; + color: #a6adc8; + transition: background-color 0.1s ease, border-color 0.1s ease; +} +[class*=reaction-]:hover { + background-color: rgba(255, 121, 198, 0.08); + border-color: rgba(255, 121, 198, 0.4); + color: #f8f8f2; +} +[class*=reaction-][class*=selected], [class*=reaction-][class*=reacted] { + background-color: rgba(255, 121, 198, 0.12); + border-color: rgba(255, 121, 198, 0.5); + color: #ff79c6; +} + +[class*=embed-], +[class*=embedWrapper] { + background-color: #341c4a; + border-left: 4px solid #e79cfe; + border-radius: 0 4px 4px 0; +} +[class*=embed-] [class*=embedTitle], +[class*=embedWrapper] [class*=embedTitle] { + color: #f8f8f2; + font-weight: 600; +} +[class*=embed-] [class*=embedDescription], +[class*=embedWrapper] [class*=embedDescription] { + color: #a6adc8; +} +[class*=embed-] [class*=embedFooter], +[class*=embedWrapper] [class*=embedFooter] { + color: #7f849c; +} + +[class*=channelTextArea], +[class*=textAreaSlate], +[class*=slateContainer] { + background-color: #341c4a; + border-radius: 8px; + border: 1px solid rgba(255, 121, 198, 0.12); + transition: border-color 0.15s ease; +} +[class*=channelTextArea]:focus-within, +[class*=textAreaSlate]:focus-within, +[class*=slateContainer]:focus-within { + border-color: rgba(255, 121, 198, 0.35); +} + +[class*=textArea-] { + color: #f8f8f2; +} +[class*=textArea-]::placeholder, +[class*=textArea-] [data-slate-placeholder] { + color: #7f849c; +} + +[class*=buttons-][class*=channelTextArea] [class*=buttonContainer], +[class*=buttons-][class*=channelTextArea] button { + color: #7f849c; + transition: color 0.1s ease; +} +[class*=buttons-][class*=channelTextArea] [class*=buttonContainer]:hover, +[class*=buttons-][class*=channelTextArea] button:hover { + color: #ff79c6; +} + +[class*=toolbar-] { + background-color: #2d1a3e; + border: 1px solid rgba(255, 121, 198, 0.12); + border-radius: 6px; +} +[class*=toolbar-] button { + color: #a6adc8; +} +[class*=toolbar-] button:hover { + background-color: rgba(255, 121, 198, 0.08); + color: #ff79c6; +} +[class*=toolbar-] button[class*=active], [class*=toolbar-] button[aria-pressed=true] { + background-color: rgba(255, 121, 198, 0.15); + color: #ff79c6; +} + +[class*=systemMessage-], +[class*=cozy][class*=systemMessage], +[class*=compact][class*=systemMessage] { + color: #7f849c; +} +[class*=systemMessage-] [class*=systemMessageContent], +[class*=systemMessage-] [class*=markup-], +[class*=cozy][class*=systemMessage] [class*=systemMessageContent], +[class*=cozy][class*=systemMessage] [class*=markup-], +[class*=compact][class*=systemMessage] [class*=systemMessageContent], +[class*=compact][class*=systemMessage] [class*=markup-] { + color: #9399b2; +} +[class*=systemMessage-] [class*=iconContainer], +[class*=systemMessage-] [class*=icon-][class*=system], +[class*=systemMessage-] svg, +[class*=cozy][class*=systemMessage] [class*=iconContainer], +[class*=cozy][class*=systemMessage] [class*=icon-][class*=system], +[class*=cozy][class*=systemMessage] svg, +[class*=compact][class*=systemMessage] [class*=iconContainer], +[class*=compact][class*=systemMessage] [class*=icon-][class*=system], +[class*=compact][class*=systemMessage] svg { + color: #e79cfe; +} +[class*=systemMessage-] a, +[class*=cozy][class*=systemMessage] a, +[class*=compact][class*=systemMessage] a { + color: #8be9fd; +} + +[class*=newMessagesBar], +[class*=newMessageBar-] { + background-color: rgba(231, 156, 254, 0.12); + border: 1px solid rgba(231, 156, 254, 0.3); + border-radius: 6px; + color: #e79cfe; +} + +[class*=divider__][class*=hasContent__] { + background-color: transparent !important; +} +[class*=divider__][class*=hasContent__] [class*=content__] { + background-color: #2d1a3e !important; + color: #7f849c !important; + border: 1px solid rgba(255, 121, 198, 0.15) !important; + border-radius: 12px !important; + padding: 2px 8px !important; + font-size: 12px !important; +} + +[class*=membersGroup] > [class*=members-] { + background-color: #341c4a; +} + +[class*=member-], +[class*=memberInner] { + border-radius: 4px; + color: #a6adc8; + transition: background-color 0.1s ease, color 0.1s ease; +} +[class*=member-]:hover, +[class*=memberInner]:hover { + background-color: rgba(255, 121, 198, 0.08); + color: #f8f8f2; +} + +[class*=roleHeader] { + color: #7f849c; + font-size: 11px; + font-weight: 700; + letter-spacing: 0.06em; + text-transform: uppercase; +} + +[class*=titleBar], +[class*=titlebar], +.titleBar, +#titlebar { + background-color: #2d1a3e; + border-bottom: 1px solid rgba(255, 121, 198, 0.1); + color: #f8f8f2; +} + +[class*=winButton], +[class*=windowButton] { + color: #a6adc8; + border-radius: 4px; + transition: background-color 0.1s ease, color 0.1s ease; +} +[class*=winButton]:hover, +[class*=windowButton]:hover { + background-color: rgba(255, 121, 198, 0.12); + color: #ff79c6; +} +[class*=winButton][class*=close]:hover, [class*=winButton][aria-label*=Close]:hover, [class*=winButton][aria-label*=Fermer]:hover, +[class*=windowButton][class*=close]:hover, +[class*=windowButton][aria-label*=Close]:hover, +[class*=windowButton][aria-label*=Fermer]:hover { + background-color: rgba(243, 139, 168, 0.2); + color: #f38ba8; +} + +[class*=search-], +[class*=searchBar] { + background-color: #261537; + border: 1px solid rgba(255, 121, 198, 0.12); + border-radius: 6px; + color: #a6adc8; + transition: border-color 0.15s ease, background-color 0.15s ease; +} +[class*=search-]:hover, [class*=search-]:focus-within, +[class*=searchBar]:hover, +[class*=searchBar]:focus-within { + background-color: #2d1a3e; + border-color: rgba(255, 121, 198, 0.3); + color: #f8f8f2; +} +[class*=search-] input, +[class*=search-] [class*=searchInput], +[class*=searchBar] input, +[class*=searchBar] [class*=searchInput] { + color: #f8f8f2; +} +[class*=search-] input::placeholder, +[class*=search-] [class*=searchInput]::placeholder, +[class*=searchBar] input::placeholder, +[class*=searchBar] [class*=searchInput]::placeholder { + color: #7f849c; +} + +[class*=toolbar] button, +[class*=iconWrapper], +[class*=icon-]:not([class*=channel]) { + color: #a6adc8; + transition: color 0.1s ease; +} +[class*=toolbar] button:hover, +[class*=iconWrapper]:hover, +[class*=icon-]:not([class*=channel]):hover { + color: #ff79c6; +} +[class*=toolbar] button[class*=selected], [class*=toolbar] button[aria-selected=true], [class*=toolbar] button[class*=active], +[class*=iconWrapper][class*=selected], +[class*=iconWrapper][aria-selected=true], +[class*=iconWrapper][class*=active], +[class*=icon-]:not([class*=channel])[class*=selected], +[class*=icon-]:not([class*=channel])[aria-selected=true], +[class*=icon-]:not([class*=channel])[class*=active] { + color: #ff79c6; +} + +[class*=backdrop-], +[class*=layerContainer] > [class*=layer-]:not([class*=chat]) { + background-color: rgba(27, 13, 40, 0.75); + backdrop-filter: blur(4px); +} + +[class*=modal-], +[class*=root-][class*=modal], +[class*=container-][class*=modal] { + background-color: #341c4a; + border: 1px solid rgba(255, 121, 198, 0.15); + border-radius: 10px; + box-shadow: 0 8px 32px rgba(27, 13, 40, 0.6); + color: #f8f8f2; +} + +[class*=header-][class*=modal], +[class*=modalHeader] { + background-color: #2d1a3e; + border-bottom: 1px solid rgba(255, 121, 198, 0.12); + border-radius: 10px 10px 0 0; +} +[class*=header-][class*=modal] [class*=title-], +[class*=header-][class*=modal] h1, [class*=header-][class*=modal] h2, [class*=header-][class*=modal] h3, +[class*=modalHeader] [class*=title-], +[class*=modalHeader] h1, +[class*=modalHeader] h2, +[class*=modalHeader] h3 { + color: #f8f8f2; + font-weight: 700; +} +[class*=header-][class*=modal] [class*=close-], +[class*=header-][class*=modal] [aria-label*=Close], +[class*=header-][class*=modal] [aria-label*=Fermer], +[class*=modalHeader] [class*=close-], +[class*=modalHeader] [aria-label*=Close], +[class*=modalHeader] [aria-label*=Fermer] { + color: #7f849c; +} +[class*=header-][class*=modal] [class*=close-]:hover, +[class*=header-][class*=modal] [aria-label*=Close]:hover, +[class*=header-][class*=modal] [aria-label*=Fermer]:hover, +[class*=modalHeader] [class*=close-]:hover, +[class*=modalHeader] [aria-label*=Close]:hover, +[class*=modalHeader] [aria-label*=Fermer]:hover { + background-color: rgba(243, 139, 168, 0.15); + color: #f38ba8; +} + +[class*=content-][class*=modal], +[class*=scrollerBase-][class*=modal] { + color: #a6adc8; +} + +[class*=footer-][class*=modal] { + background-color: #2d1a3e; + border-top: 1px solid rgba(255, 121, 198, 0.12); + border-radius: 0 0 10px 10px; +} + +button[class*=lookFilled][class*=colorBrand], +[class*=button-][class*=colorBrand] { + background-color: #e79cfe; + color: #1b0d28; + font-weight: 600; + transition: background-color 0.15s ease, transform 0.1s ease; +} +button[class*=lookFilled][class*=colorBrand]:hover, +[class*=button-][class*=colorBrand]:hover { + background-color: #f1c4fe; +} +button[class*=lookFilled][class*=colorBrand]:active, +[class*=button-][class*=colorBrand]:active { + transform: scale(0.97); +} + +button[class*=colorRed], +[class*=button-][class*=colorRed] { + background-color: #f38ba8; + color: #1b0d28; +} +button[class*=colorRed]:hover, +[class*=button-][class*=colorRed]:hover { + background-color: #f7b0c4; +} + +button[class*=lookOutlined], +[class*=button-][class*=lookOutlined] { + border-color: rgba(255, 121, 198, 0.4); + color: #a6adc8; +} +button[class*=lookOutlined]:hover, +[class*=button-][class*=lookOutlined]:hover { + background-color: rgba(255, 121, 198, 0.08); + border-color: #ff79c6; + color: #ff79c6; +} + +button[class*=lookLink], +[class*=button-][class*=lookLink] { + color: #8be9fd; +} +button[class*=lookLink]:hover, +[class*=button-][class*=lookLink]:hover { + color: #bdf3fe; +} + +[class*=tooltip-], +[class*=tooltipContainer] { + background-color: #261537; + border: 1px solid rgba(255, 121, 198, 0.15); + border-radius: 6px; + box-shadow: 0 4px 16px rgba(27, 13, 40, 0.5); + color: #f8f8f2; + font-size: 13px; + font-weight: 500; + padding: 6px 10px; +} + +[class*=tooltipPointer] { + border-top-color: #261537 !important; + border-bottom-color: #261537 !important; +} + +[class*=menu-], +[class*=menu_], +[class*=contextMenu], +[class*=layerContainer] [class*=layer-] > [class*=container-] { + background-color: #2d1a3e; + border: 1px solid rgba(255, 121, 198, 0.15); + border-radius: 8px; + box-shadow: 0 8px 24px rgba(27, 13, 40, 0.5); + padding: 4px; +} + +[class*=menuItem-], +[class*=item-][class*=menu], +[class*=labelContainer_] { + border-radius: 4px; + color: #a6adc8; + transition: background-color 0.08s ease, color 0.08s ease; +} +[class*=menuItem-]:hover, [class*=menuItem-][class*=focused], +[class*=item-][class*=menu]:hover, +[class*=item-][class*=menu][class*=focused], +[class*=labelContainer_]:hover, +[class*=labelContainer_][class*=focused] { + background-color: rgba(255, 121, 198, 0.12); + color: #f8f8f2; +} +[class*=menuItem-][class*=danger], [class*=menuItem-][class*=colorDanger_], +[class*=item-][class*=menu][class*=danger], +[class*=item-][class*=menu][class*=colorDanger_], +[class*=labelContainer_][class*=danger], +[class*=labelContainer_][class*=colorDanger_] { + color: #f38ba8; +} +[class*=menuItem-][class*=danger]:hover, [class*=menuItem-][class*=colorDanger_]:hover, +[class*=item-][class*=menu][class*=danger]:hover, +[class*=item-][class*=menu][class*=colorDanger_]:hover, +[class*=labelContainer_][class*=danger]:hover, +[class*=labelContainer_][class*=colorDanger_]:hover { + background-color: rgba(243, 139, 168, 0.12); + color: #f38ba8; +} + +[class*=separator-][class*=menu], +[class*=separator_] { + background-color: rgba(255, 121, 198, 0.12); + height: 1px; + margin: 4px 8px; +} + +[class*=userPopout], +[class*=userProfile] { + background-color: #341c4a; + border: 1px solid rgba(255, 121, 198, 0.15); + border-radius: 10px; + box-shadow: 0 8px 32px rgba(27, 13, 40, 0.6); +} + +[class*=userPopout] [class*=banner], +[class*=userProfile] [class*=banner] { + background-color: #2d1a3e; +} + +[class*=headerSimple__] { + background-color: #341c4a !important; + border-bottom: 1px solid rgba(255, 121, 198, 0.08) !important; +} + +[class*=body__][class*=inset_] { + background-color: #341c4a !important; + border-radius: 0 0 8px 8px !important; +} + +[class*=voiceSection__] { + background-color: #3d2454 !important; + border: 1px solid rgba(255, 121, 198, 0.1) !important; + border-radius: 8px !important; + transition: background-color 0.1s ease, border-color 0.1s ease; +} +[class*=voiceSection__]:hover { + background-color: rgba(255, 121, 198, 0.08) !important; + border-color: rgba(255, 121, 198, 0.25) !important; +} + +[class*=standardSidebarView] { + background-color: #341c4a; +} + +[class*=sidebar-][class*=settings], +[class*=side-][class*=settings], +[class*=sidebarRegion] { + background-color: #341c4a; +} +[class*=sidebar-][class*=settings] [class*=item-], +[class*=sidebar-][class*=settings] [class*=side-]:not([class*=settings]):not([class*=Region]), +[class*=side-][class*=settings] [class*=item-], +[class*=side-][class*=settings] [class*=side-]:not([class*=settings]):not([class*=Region]), +[class*=sidebarRegion] [class*=item-], +[class*=sidebarRegion] [class*=side-]:not([class*=settings]):not([class*=Region]) { + border-radius: 4px; + color: #a6adc8; + transition: background-color 0.1s ease, color 0.1s ease; +} +[class*=sidebar-][class*=settings] [class*=item-]:hover, +[class*=sidebar-][class*=settings] [class*=side-]:not([class*=settings]):not([class*=Region]):hover, +[class*=side-][class*=settings] [class*=item-]:hover, +[class*=side-][class*=settings] [class*=side-]:not([class*=settings]):not([class*=Region]):hover, +[class*=sidebarRegion] [class*=item-]:hover, +[class*=sidebarRegion] [class*=side-]:not([class*=settings]):not([class*=Region]):hover { + background-color: rgba(255, 121, 198, 0.08); + color: #f8f8f2; +} +[class*=sidebar-][class*=settings] [class*=item-][class*=selected], [class*=sidebar-][class*=settings] [class*=item-][aria-selected=true], +[class*=sidebar-][class*=settings] [class*=side-]:not([class*=settings]):not([class*=Region])[class*=selected], +[class*=sidebar-][class*=settings] [class*=side-]:not([class*=settings]):not([class*=Region])[aria-selected=true], +[class*=side-][class*=settings] [class*=item-][class*=selected], +[class*=side-][class*=settings] [class*=item-][aria-selected=true], +[class*=side-][class*=settings] [class*=side-]:not([class*=settings]):not([class*=Region])[class*=selected], +[class*=side-][class*=settings] [class*=side-]:not([class*=settings]):not([class*=Region])[aria-selected=true], +[class*=sidebarRegion] [class*=item-][class*=selected], +[class*=sidebarRegion] [class*=item-][aria-selected=true], +[class*=sidebarRegion] [class*=side-]:not([class*=settings]):not([class*=Region])[class*=selected], +[class*=sidebarRegion] [class*=side-]:not([class*=settings]):not([class*=Region])[aria-selected=true] { + background-color: rgba(255, 121, 198, 0.15); + color: #ff79c6; +} +[class*=sidebar-][class*=settings] [class*=header-], +[class*=side-][class*=settings] [class*=header-], +[class*=sidebarRegion] [class*=header-] { + color: #7f849c; + font-size: 11px; + font-weight: 700; + letter-spacing: 0.06em; + text-transform: uppercase; +} +[class*=sidebar-][class*=settings] [class*=separator-], +[class*=side-][class*=settings] [class*=separator-], +[class*=sidebarRegion] [class*=separator-] { + background-color: rgba(255, 121, 198, 0.12); +} + +[class*=contentRegion], +[class*=contentColumn-], +[class*=children-][class*=settings] { + background-color: #38234b; + color: #f8f8f2; +} + +[class*=contentRegionScroller], +[class*=customScroller-][class*=settings] { + background-color: #38234b; +} + +[class*=userInfoSection], +[class*=section-][class*=settings], +[class*=card-][class*=settings], +[class*=tableRow-], +[class*=fieldList-] { + background-color: #341c4a; + border: 1px solid rgba(255, 121, 198, 0.08); + border-radius: 8px; + color: #f8f8f2; +} + +[class*=fieldTitle-], +[class*=title-][class*=field] { + color: #f8f8f2; + font-weight: 600; +} + +[class*=details-][class*=field], +[class*=value-][class*=field] { + color: #a6adc8; +} + +[class*=editActionButton], +[class*=button-][class*=edit] { + color: #8be9fd; +} +[class*=editActionButton]:hover, +[class*=button-][class*=edit]:hover { + color: #bdf3fe; +} + +[class*=sectionTitle-], +[class*=h5-][class*=eyebrow] { + color: #7f849c; + font-size: 11px; + font-weight: 700; + letter-spacing: 0.06em; + text-transform: uppercase; +} + +[class*=divider-][class*=settings], +[class*=divider-][class*=Divider] { + background-color: rgba(255, 121, 198, 0.1); +} + +:has(> [data-settings-panel-scroller]) { + background-color: #38234b !important; +} + +[data-settings-panel-scroller], +[data-settings-panel-scroller] [class*=panel__], +[data-settings-panel-scroller] [class*=settingsPage_], +[data-settings-panel-scroller] [class*=tabbedSettingsContainer_], +[data-settings-panel-scroller] [class*=tabBarPanel_], +[data-settings-panel-scroller] [class*=tabPanel__] { + background-color: #38234b !important; + color: #f8f8f2; +} + +[class*=contentHeader_e9e3ed] { + background-color: #341c4a !important; + border-bottom: 1px solid rgba(255, 121, 198, 0.12) !important; +} +[class*=contentHeader_e9e3ed] [class*=breadcrumbText__] { + color: #f8f8f2 !important; + font-weight: 600; +} + +[class*=tabBar_f8303a] { + border-bottom: 1px solid rgba(255, 121, 198, 0.12) !important; + background-color: transparent !important; +} + +[class*=tabBar_f8303a] [class*=tab_] { + color: #a6adc8 !important; + border-bottom: 2px solid transparent !important; + transition: color 0.1s ease, border-color 0.1s ease; +} +[class*=tabBar_f8303a] [class*=tab_]:hover { + color: #f8f8f2 !important; +} +[class*=tabBar_f8303a] [class*=tab_][class*=selected_] { + color: #ff79c6 !important; + border-bottom-color: #ff79c6 !important; +} + +[class*=accountProfileCard__] { + background-color: #341c4a !important; + border: 1px solid rgba(255, 121, 198, 0.1) !important; + border-radius: 8px !important; +} + +[class*=card__73069], +[class*=cardPrimary__73069], +[class*=headingCard__] { + background-color: #341c4a !important; + border: 1px solid rgba(255, 121, 198, 0.1) !important; + border-radius: 8px !important; + color: #f8f8f2 !important; +} + +[class*=faq__] { + background-color: transparent !important; +} + +[class*=faq__] [class*=heading__] { + background-color: transparent !important; + color: #f8f8f2 !important; + margin-bottom: 12px; +} + +[class*=faq__] [class*=list__] { + background-color: #341c4a !important; + border: 1px solid rgba(255, 121, 198, 0.1) !important; + border-radius: 8px !important; + overflow: hidden !important; + list-style: none !important; + padding: 0 !important; +} + +[class*=faq__] [class*=listItem__] { + background-color: transparent !important; + border-bottom: 1px solid rgba(255, 121, 198, 0.08) !important; +} +[class*=faq__] [class*=listItem__]:last-child { + border-bottom: none !important; +} + +[class*=faq__] [class*=questionWrapper__] { + display: flex !important; + align-items: center !important; + justify-content: space-between !important; + padding: 14px 16px !important; + background-color: transparent !important; + cursor: pointer; + transition: background-color 0.1s ease; + list-style: none !important; +} +[class*=faq__] [class*=questionWrapper__]:hover { + background-color: rgba(255, 121, 198, 0.06) !important; +} + +[class*=faq__] [class*=question__] { + color: #f8f8f2 !important; + background-color: transparent !important; +} + +[class*=faq__] [class*=questionIcon__] { + flex-shrink: 0; + color: #7f849c !important; + transition: color 0.1s ease, transform 0.2s ease; +} +[class*=faq__] [class*=questionIcon__] path { + fill: #7f849c !important; +} + +[class*=faq__] [class*=questionWrapper__]:hover [class*=questionIcon__] { + color: #ff79c6 !important; +} +[class*=faq__] [class*=questionWrapper__]:hover [class*=questionIcon__] path { + fill: #ff79c6 !important; +} + +[class*=perkCardContainer_] { + background-color: transparent !important; +} + +[class*=perkCard_] { + background-color: #341c4a !important; + border: 1px solid rgba(255, 121, 198, 0.1) !important; + border-radius: 8px !important; +} + +[class*=perkCardHeading_] { + background-color: transparent !important; + color: #f8f8f2 !important; +} + +[class*=perkCardDescription_] { + color: #a6adc8 !important; +} + +[class*=background__1fed1] { + background-color: #38234b !important; +} + +[class*=fieldList__] { + background-color: #341c4a !important; + border: 1px solid rgba(255, 121, 198, 0.1) !important; + border-radius: 8px !important; + overflow: hidden !important; +} + +[class*=field__1fed1] { + background-color: transparent !important; + border-bottom: 1px solid rgba(255, 121, 198, 0.08) !important; + padding: 12px 16px !important; +} +[class*=field__1fed1][class*=fieldSpacer__], [class*=field__1fed1]:last-child { + border-bottom: none !important; +} + +[class*=constrainedRow__1fed1], +[class*=usernameRow__1fed1], +[class*=usernameInnerRow__1fed1], +[class*=fieldButton__1fed1], +[class*=fieldButtonList__1fed1], +[class*=textRevealer__1fed1] { + background-color: transparent !important; +} + +[class*=fieldTitle__] { + color: #f8f8f2 !important; + font-weight: 600; +} + +[class*=fieldset__] { + background-color: #341c4a !important; + border: 1px solid rgba(255, 121, 198, 0.1) !important; + border-radius: 8px !important; + padding: 16px !important; +} + +[class*=legend__] { + color: #f8f8f2 !important; + font-weight: 600; + padding: 0 6px; +} + +[class*=container__5a838], +[class*=labelContainer__5a838], +[class*=control__5a838] { + background-color: transparent !important; +} + +[class*=label__5a838] { + color: #f8f8f2 !important; + font-weight: 500; +} + +[class*=description__5a838] { + color: #9399b2 !important; + font-size: 13px; +} + +[class*=container__5b321], +[class*=box_f8c98c], +[class*=featureCards__] { + background-color: transparent !important; +} + +[class*=container__8cc9a] { + background-color: #341c4a !important; + border: 1px solid rgba(255, 121, 198, 0.1) !important; + border-radius: 8px !important; +} + +[class*=header__8cc9a] { + background-color: transparent !important; +} + +[class*=circle__8cc9a] { + background-color: rgba(231, 156, 254, 0.15) !important; + border: 1px solid rgba(231, 156, 254, 0.3) !important; + border-radius: 50% !important; + color: #e79cfe !important; +} + +[class*=row__0624f] { + background-color: #341c4a !important; + border: 1px solid rgba(255, 121, 198, 0.12) !important; + border-radius: 8px !important; + padding: 12px !important; +} + +[class*=iconContainer__0624f] { + background-color: transparent !important; +} + +[class*=groupHeader__0624f] { + color: #7f849c !important; + font-size: 11px; + font-weight: 700; + letter-spacing: 0.06em; + text-transform: uppercase; +} + +[class*=divider__1de9c] { + background-color: rgba(255, 121, 198, 0.1) !important; + border: none !important; + height: 1px !important; +} + +[class*=textButton__][class*=primary__] { + color: #8be9fd !important; +} +[class*=textButton__][class*=primary__]:hover { + color: #bdf3fe !important; +} + +[class*=textButton__][class*=secondary__] { + color: #f38ba8 !important; +} +[class*=textButton__][class*=secondary__]:hover { + color: #f7b0c4 !important; +} + +[data-mana-component=button] { + border-radius: 4px; + font-weight: 500; + transition: background-color 0.15s ease, transform 0.1s ease; +} +[data-mana-component=button]:active { + transform: scale(0.97); +} + +[data-mana-component=button][class*=primary_] { + background-color: #e79cfe !important; + color: #1b0d28 !important; +} +[data-mana-component=button][class*=primary_]:hover { + background-color: #f1c4fe !important; +} + +[data-mana-component=button][class*=secondary_] { + background-color: #3d2454 !important; + color: #a6adc8 !important; + border: 1px solid rgba(255, 121, 198, 0.2) !important; +} +[data-mana-component=button][class*=secondary_]:hover { + background-color: rgba(255, 121, 198, 0.1) !important; + color: #f8f8f2 !important; + border-color: rgba(255, 121, 198, 0.4) !important; +} + +[data-mana-component=button][class*=critical-primary_] { + background-color: #f38ba8 !important; + color: #1b0d28 !important; +} +[data-mana-component=button][class*=critical-primary_]:hover { + background-color: #f7b0c4 !important; +} + +[data-mana-component=button][class*=critical-secondary_] { + background-color: transparent !important; + color: #f38ba8 !important; + border: 1px solid rgba(243, 139, 168, 0.4) !important; +} +[data-mana-component=button][class*=critical-secondary_]:hover { + background-color: rgba(243, 139, 168, 0.1) !important; + border-color: #f38ba8 !important; +} + +[data-mana-component=button][class*=icon-only_] { + background-color: transparent !important; + color: #7f849c !important; +} +[data-mana-component=button][class*=icon-only_]:hover { + background-color: rgba(255, 121, 198, 0.08) !important; + color: #f8f8f2 !important; +} + +[class*=overlay_c0bea0], +[class*=overlay_b32ca4] { + background-color: transparent !important; +} + +[class*=section_bf424d] { + background-color: transparent !important; +} + +[class*=headings_bf424d], +[class*=header_bf424d] { + background-color: transparent !important; +} + +[class*=popout_] { + background-color: #2d1a3e !important; + border: 1px solid rgba(255, 121, 198, 0.15) !important; + border-radius: 8px !important; + box-shadow: 0 8px 24px rgba(27, 13, 40, 0.5) !important; +} + +[class*=popout_] [class*=option_] { + border-radius: 4px !important; + color: #a6adc8 !important; + transition: background-color 0.08s ease, color 0.08s ease; +} +[class*=popout_] [class*=option_]:hover { + background-color: rgba(255, 121, 198, 0.1) !important; + color: #f8f8f2 !important; +} +[class*=popout_] [class*=option_][aria-selected=true] { + background-color: rgba(255, 121, 198, 0.15) !important; + color: #ff79c6 !important; +} + +[class*=popout_] [class*=rowContainer_] { + background-color: transparent !important; +} + +[class*=selectedIcon_] { + color: #e79cfe !important; +} +[class*=selectedIcon_] circle { + fill: rgba(231, 156, 254, 0.15) !important; +} +[class*=selectedIcon_] path { + fill: #e79cfe !important; +} + +[class*=container__6b700] { + background-color: transparent !important; +} + +[class*=card__5cea9] { + background-color: #341c4a !important; + border: 1px solid rgba(255, 121, 198, 0.1) !important; + border-radius: 8px !important; + overflow: hidden !important; +} + +[class*=header__5cea9] { + background-color: #2d1a3e !important; + border-bottom: 1px solid rgba(255, 121, 198, 0.12) !important; +} + +[class*=iconContainer__5cea9] { + background-color: transparent !important; + color: #7f849c !important; +} +[class*=iconContainer__5cea9] svg path { + fill: #7f849c !important; +} + +[class*=text__5cea9] { + background-color: transparent !important; +} + +[class*=usersList__5cea9] { + background-color: transparent !important; +} + +[class*=row__5cea9] { + background-color: transparent !important; + border-bottom: 1px solid rgba(255, 121, 198, 0.08) !important; + transition: background-color 0.1s ease; +} +[class*=row__5cea9]:last-child { + border-bottom: none !important; +} +[class*=row__5cea9]:hover { + background-color: rgba(255, 121, 198, 0.04) !important; +} + +[class*=userInfo__5cea9] { + background-color: transparent !important; +} + +[class*=loadMoreContainer__5cea9] { + background-color: transparent !important; + border-top: 1px solid rgba(255, 121, 198, 0.08) !important; +} + +[class*=loadMoreButton__5cea9] { + background-color: transparent !important; + color: #8be9fd !important; + cursor: pointer; + text-align: center; + transition: color 0.1s ease; +} +[class*=loadMoreButton__5cea9]:hover { + color: #bdf3fe !important; +} + +* { + scrollbar-color: #7f849c #2d1a3e; + scrollbar-width: thin; +} + +::-webkit-scrollbar { + width: 6px; + height: 6px; +} + +::-webkit-scrollbar-track { + background: #2d1a3e; + border-radius: 3px; +} + +::-webkit-scrollbar-thumb { + background: #7f849c; + border-radius: 3px; +} +::-webkit-scrollbar-thumb:hover { + background: #a6adc8; +} + +::-webkit-scrollbar-corner { + background: #2d1a3e; +} + +[class*=checkbox], +[class*=checkboxWrapper] { + background-color: #341c4a; + border: 2px solid rgba(255, 121, 198, 0.4); + border-radius: 4px; + transition: border-color 0.12s ease, background-color 0.12s ease; +} +[class*=checkbox]:hover, +[class*=checkboxWrapper]:hover { + border-color: #ff79c6; +} +[class*=checkbox][aria-checked=true], [class*=checkbox][class*=checked], +[class*=checkboxWrapper][aria-checked=true], +[class*=checkboxWrapper][class*=checked] { + background-color: #e79cfe; + border-color: #e79cfe; +} +[class*=checkbox][aria-checked=true] svg, [class*=checkbox][aria-checked=true] path, +[class*=checkbox][aria-checked=true] [class*=checkboxIcon], [class*=checkbox][class*=checked] svg, [class*=checkbox][class*=checked] path, +[class*=checkbox][class*=checked] [class*=checkboxIcon], +[class*=checkboxWrapper][aria-checked=true] svg, +[class*=checkboxWrapper][aria-checked=true] path, +[class*=checkboxWrapper][aria-checked=true] [class*=checkboxIcon], +[class*=checkboxWrapper][class*=checked] svg, +[class*=checkboxWrapper][class*=checked] path, +[class*=checkboxWrapper][class*=checked] [class*=checkboxIcon] { + color: #1b0d28; + fill: #1b0d28; +} + +[data-mana-component=checkbox] { + background-color: #341c4a !important; + border: 2px solid rgba(255, 121, 198, 0.4) !important; + border-radius: 4px !important; + transition: background-color 0.15s ease, border-color 0.15s ease; +} +[data-mana-component=checkbox] svg, [data-mana-component=checkbox] path { + fill: transparent !important; +} +[data-mana-component=checkbox]:hover { + border-color: #ff79c6 !important; +} + +[aria-checked=true] [data-mana-component=checkbox], +[data-checked=true] [data-mana-component=checkbox], +[class*=checked_] [data-mana-component=checkbox], +[class*=enabled_] [data-mana-component=checkbox], +:has(> input:checked) [data-mana-component=checkbox], +label:has(input:checked) [data-mana-component=checkbox], +input:checked ~ [data-mana-component=checkbox] { + background-color: #e79cfe !important; + border-color: #e79cfe !important; +} +[aria-checked=true] [data-mana-component=checkbox] svg, [aria-checked=true] [data-mana-component=checkbox] path, +[data-checked=true] [data-mana-component=checkbox] svg, +[data-checked=true] [data-mana-component=checkbox] path, +[class*=checked_] [data-mana-component=checkbox] svg, +[class*=checked_] [data-mana-component=checkbox] path, +[class*=enabled_] [data-mana-component=checkbox] svg, +[class*=enabled_] [data-mana-component=checkbox] path, +:has(> input:checked) [data-mana-component=checkbox] svg, +:has(> input:checked) [data-mana-component=checkbox] path, +label:has(input:checked) [data-mana-component=checkbox] svg, +label:has(input:checked) [data-mana-component=checkbox] path, +input:checked ~ [data-mana-component=checkbox] svg, +input:checked ~ [data-mana-component=checkbox] path { + fill: #1b0d28 !important; + color: #1b0d28 !important; +} + +[class*=outerRadioBase__] { + fill: #341c4a !important; + stroke: rgba(255, 121, 198, 0.4) !important; + stroke-width: 2 !important; +} + +[aria-checked=true] [class*=outerRadioFill__], +[data-checked=true] [class*=outerRadioFill__], +[class*=checked_] [class*=outerRadioFill__], +[class*=enabled_] [class*=outerRadioFill__], +:has(> input:checked) [class*=outerRadioFill__], +label:has(input:checked) [class*=outerRadioFill__], +input:checked ~ [class*=outerRadioFill__] { + fill: #e79cfe !important; +} + +[aria-checked=true] [class*=innerDotRadio__], +[data-checked=true] [class*=innerDotRadio__], +[class*=checked_] [class*=innerDotRadio__], +[class*=enabled_] [class*=innerDotRadio__], +:has(> input:checked) [class*=innerDotRadio__], +label:has(input:checked) [class*=innerDotRadio__], +input:checked ~ [class*=innerDotRadio__] { + fill: #1b0d28 !important; +} + +[data-mana-component=switch] { + border: 1px solid rgba(255, 121, 198, 0.3) !important; + transition: background-color 0.2s ease, border-color 0.2s ease; +} + +[data-mana-component=switch] [class*=thumb_] rect { + fill: #f8f8f2 !important; +} + +[aria-checked=true] [data-mana-component=switch], +[data-checked=true] [data-mana-component=switch], +[class*=checked_] [data-mana-component=switch], +[class*=enabled_] [data-mana-component=switch], +:has(> input:checked) [data-mana-component=switch], +label:has(input:checked) [data-mana-component=switch], +input:checked ~ [data-mana-component=switch] { + background-color: #e79cfe !important; + border-color: #e79cfe !important; +} +[aria-checked=true] [data-mana-component=switch] [class*=thumb_] rect, +[data-checked=true] [data-mana-component=switch] [class*=thumb_] rect, +[class*=checked_] [data-mana-component=switch] [class*=thumb_] rect, +[class*=enabled_] [data-mana-component=switch] [class*=thumb_] rect, +:has(> input:checked) [data-mana-component=switch] [class*=thumb_] rect, +label:has(input:checked) [data-mana-component=switch] [class*=thumb_] rect, +input:checked ~ [data-mana-component=switch] [class*=thumb_] rect { + fill: #1b0d28 !important; +} + +[class*=slider-]::-webkit-slider-thumb, +[class*=control-] [class*=slider]::-webkit-slider-thumb { + background-color: #e79cfe; +} +[class*=slider-]::-moz-range-thumb, +[class*=control-] [class*=slider]::-moz-range-thumb { + background-color: #e79cfe; +} + +[class*=lookFilled][class*=colorGreen], +[class*=enabled-][class*=toggle] { + background-color: #a6e3a1; +} + +[class*=disabled-][class*=toggle] { + background-color: #6c7086; +} + +[class*=handle-][class*=toggle] { + background-color: #1b0d28; +} + +[class*=track_a562c8] { + background-color: transparent !important; + border: none !important; +} + +[class*=bar_a562c8] { + background-color: #2d1a3e !important; + border-radius: 4px !important; +} + +[class*=barFill_a562c8] { + background-color: #e79cfe !important; + border-radius: 4px !important; +} + +[class*=grabber_a562c8] { + background-color: #e79cfe !important; + border: 2px solid #1b0d28 !important; + border-radius: 50% !important; + box-shadow: 0 0 0 3px rgba(231, 156, 254, 0.35) !important; + transition: box-shadow 0.15s ease !important; +} +[class*=grabber_a562c8]:hover { + box-shadow: 0 0 0 5px rgba(231, 156, 254, 0.4) !important; +} + +[class*=markValue_a562c8] { + color: #7f849c !important; + font-size: 11px !important; +} + +[class*=markDash_a562c8] { + background-color: rgba(255, 121, 198, 0.25) !important; +} + +[class*=fixedContent__]::after, +[class*=searchBarContainer__]::after { + display: none !important; + background: none !important; +} + +[class*=wrapper__72c38], +[class*=container__0f084] { + background-color: #341c4a !important; + border: 1px solid rgba(255, 121, 198, 0.15) !important; + border-radius: 4px !important; + color: #f8f8f2 !important; + transition: border-color 0.15s ease !important; +} +[class*=wrapper__72c38]::after, +[class*=container__0f084]::after { + display: none !important; +} +[class*=wrapper__72c38]:focus-within, +[class*=container__0f084]:focus-within { + border-color: rgba(255, 121, 198, 0.4) !important; +} + +[class*=input__0f084] { + background-color: transparent !important; + color: #f8f8f2 !important; + border: none !important; +} +[class*=input__0f084]::placeholder { + color: #7f849c !important; +} + +[class*=icon__0f084] { + color: #7f849c !important; +} +[class*=icon__0f084] svg path { + fill: #7f849c !important; +} + +input[class*=input-], +textarea[class*=input-], +[class*=input-]:not([class*=disabled]) { + background-color: #341c4a; + border: 1px solid rgba(255, 121, 198, 0.15); + border-radius: 4px; + color: #f8f8f2; + transition: border-color 0.15s ease; +} +input[class*=input-]::placeholder, +textarea[class*=input-]::placeholder, +[class*=input-]:not([class*=disabled])::placeholder { + color: #7f849c; +} +input[class*=input-]:focus, +textarea[class*=input-]:focus, +[class*=input-]:not([class*=disabled]):focus { + border-color: rgba(255, 121, 198, 0.4); + outline: none; +} +input[class*=input-][class*=error], input[class*=input-][aria-invalid=true], +textarea[class*=input-][class*=error], +textarea[class*=input-][aria-invalid=true], +[class*=input-]:not([class*=disabled])[class*=error], +[class*=input-]:not([class*=disabled])[aria-invalid=true] { + border-color: rgba(243, 139, 168, 0.5); +} + +[class*=numberBadge], +[class*=badge-] { + background-color: #ff79c6; + border-radius: 10px; + color: #1b0d28; + font-size: 11px; + font-weight: 800; + padding: 2px 5px; +} + +[class*=upperBadge], +[class*=lowerBadge] { + background-color: #f38ba8; +} + +[class*=divider-] [class*=content-], +[class*=hasContent] [class*=content-] { + color: #6c7086; + font-size: 12px; + font-weight: 600; + letter-spacing: 0.04em; +} +[class*=divider-]::before, [class*=divider-]::after, +[class*=hasContent]::before, +[class*=hasContent]::after { + background-color: rgba(255, 121, 198, 0.12); +} + +[class*=spinner-], +[class*=wanderingCubes], +circle[class*=spinner] { + color: #e79cfe; + stroke: #e79cfe; +} + +::selection { + background-color: rgba(231, 156, 254, 0.3); + color: #f8f8f2; +} + +:focus-visible { + outline: 2px solid rgba(255, 121, 198, 0.5); + outline-offset: 2px; +} + +[class*=mention] { + background-color: rgba(255, 121, 198, 0.12); + border-radius: 3px; + color: #ff79c6; + font-weight: 500; + padding: 0 2px; + transition: background-color 0.1s ease; +} +[class*=mention]:hover { + background-color: rgba(255, 121, 198, 0.25); + color: #ff79c6; +} + +[class*=statusOnline], +[class*=status-online] { + background-color: #a6e3a1; +} + +[class*=statusIdle], +[class*=status-idle] { + background-color: #f9e2af; +} + +[class*=statusDnd], +[class*=status-dnd] { + background-color: #f38ba8; +} + +[class*=statusOffline], +[class*=status-offline] { + background-color: #6c7086; +} + +[class*=panels-], +[class*=privateChannels] [class*=panelContainer] { + background-color: #2d1a3e; + border-top: 1px solid rgba(255, 121, 198, 0.1); +} +[class*=panels-] [class*=username-], +[class*=panels-] [class*=usernameContainer], +[class*=privateChannels] [class*=panelContainer] [class*=username-], +[class*=privateChannels] [class*=panelContainer] [class*=usernameContainer] { + color: #f8f8f2; + font-weight: 600; +} +[class*=panels-] button, +[class*=privateChannels] [class*=panelContainer] button { + color: #7f849c; + border-radius: 4px; + transition: background-color 0.1s ease, color 0.1s ease; +} +[class*=panels-] button:hover, +[class*=privateChannels] [class*=panelContainer] button:hover { + background-color: rgba(255, 121, 198, 0.1); + color: #ff79c6; +} +[class*=panels-] button[class*=active], [class*=panels-] button[aria-pressed=true], +[class*=privateChannels] [class*=panelContainer] button[class*=active], +[class*=privateChannels] [class*=panelContainer] button[aria-pressed=true] { + color: #f8f8f2; +} +[class*=panels-] button[class*=muted], [class*=panels-] button[class*=deafened], +[class*=privateChannels] [class*=panelContainer] button[class*=muted], +[class*=privateChannels] [class*=panelContainer] button[class*=deafened] { + color: #f38ba8; +} + +html, +body, +#app-mount { + background-color: #1b0d28 !important; +} + +[class*=bg__] { + background-color: #38234b !important; +} + +#app-mount > [class*=bar_] { + background-color: #2d1a3e !important; + border-bottom: 1px solid rgba(255, 121, 198, 0.1) !important; +} + +[class*=base__] { + background-color: #38234b !important; +} + +nav[class*=container__] { + background-color: #341c4a !important; +} + +nav[class*=container__] > [class*=header_], +[class*=primaryInfo_], +[class*=guildDropdown_] { + background-color: #341c4a !important; +} + +[class*=headerEllipse], +[class*=headerGlass_] { + background-color: transparent !important; + opacity: 0 !important; +} + +[class*=containerWithMargin__] { + background-color: #3d2454 !important; + border: 1px solid rgba(255, 121, 198, 0.12) !important; + border-radius: 8px !important; +} + +[class*=progressContainer__] { + background-color: rgba(255, 121, 198, 0.1) !important; + border-radius: 4px !important; +} + +[class*=progress__] { + background-color: #ff79c6 !important; + border-radius: 4px !important; +} + +[class*=sidebar__], +[class*=sidebarList__] { + background-color: #341c4a !important; +} +[class*=sidebar__]::after, +[class*=sidebarList__]::after { + background-color: #2d1a3e !important; +} + +[class*=guilds__] { + background-color: #261537 !important; +} + +[class*=scrollerBase_]:not([class*=popout_]) { + background-color: transparent !important; +} + +[class*=containerDefault_] { + background-color: transparent !important; + border-radius: 4px !important; +} +[class*=containerDefault_]:hover { + background-color: rgba(255, 121, 198, 0.08) !important; +} +[class*=containerDefault_][class*=selected_], [class*=containerDefault_][class*=modeSelected__] { + background-color: rgba(255, 121, 198, 0.15) !important; +} + +[class*=containerDefault_] [class*=name__] { + color: #a6adc8 !important; +} + +[class*=containerDefault_]:hover [class*=name__], +[class*=containerDefault_][class*=selected_] [class*=name__] { + color: #ff79c6 !important; +} + +[class*=containerDefault_] [class*=icon__] { + color: #7f849c !important; +} + +[class*=containerDefault_]:hover [class*=icon__], +[class*=containerDefault_][class*=selected_] [class*=icon__] { + color: #ff79c6 !important; +} + +[class*=themed__] { + background-color: #38234b !important; + border-bottom: 1px solid rgba(255, 121, 198, 0.1) !important; +} + +[class*=titleWrapper_]::after, +[class*=children__]::after { + background: #38234b !important; + background-color: #38234b !important; + border: none !important; + box-shadow: none !important; +} + +[class*=panels__] { + background-color: #2d1a3e !important; + border-top: 1px solid rgba(255, 121, 198, 0.1) !important; +} + +[class*=friends__], +[class*=peopleList__], +[class*=peopleColumn__], +[class*=tabBody__] { + background-color: #38234b !important; +} + +[class*=nowPlayingColumn__], +[class*=friendsActivity__] { + background-color: #341c4a !important; + border-left: 1px solid rgba(255, 121, 198, 0.1) !important; +} + +[class*=header__7d20c] { + color: #7f849c !important; + font-size: 11px !important; + font-weight: 700 !important; + letter-spacing: 0.06em !important; + text-transform: uppercase !important; +} + +[class*=itemCard__7e549] { + background-color: transparent !important; +} + +[class*=outer_bf1984] { + background-color: transparent !important; + border-radius: 8px !important; +} + +[class*=interactive_bf1984] { + border-radius: 8px !important; + transition: background-color 0.1s ease; +} +[class*=interactive_bf1984]:hover { + background-color: rgba(255, 121, 198, 0.08) !important; +} + +[class*=headerSimple__00943], +[class*=headerFull__00943], +[class*=header__00943] { + background-color: transparent !important; + border-bottom: none !important; +} + +[class*=body__00943], +[class*=inset_bf1984], +[class*=section__00943] { + background-color: transparent !important; + border-radius: 0 !important; +} + +[class*=textContent__00943] { + background-color: transparent !important; +} + +[class*=clickable__00943] { + border-radius: 4px !important; + transition: color 0.1s ease; +} +[class*=clickable__00943]:hover [class*=textContent__00943] { + color: #ff79c6 !important; +} + +[class*=headerIcon__00943] { + border-radius: 4px !important; +} + +[class*=activitySection__00943], +[class*=spotifySection__00943] { + background-color: #3d2454 !important; + border: 1px solid rgba(255, 121, 198, 0.1) !important; + border-radius: 8px !important; +} + +[class*=activitySectionAssets__00943], +[class*=activitySectionDetails__00943] { + background-color: transparent !important; +} + +[class*=largeImage__00943] { + border-radius: 6px !important; +} + +[class*=voiceSectionAssets__00943], +[class*=voiceSectionDetails__00943] { + background-color: transparent !important; +} + +[class*=voiceSectionIconWrapper__00943] { + background-color: rgba(231, 156, 254, 0.15) !important; + border-radius: 50% !important; +} + +[class*=voiceSectionIcon__00943] { + color: #e79cfe !important; +} + +[class*=wrapper_e45a82], +[class*=partyMembers_e45a82] { + background-color: transparent !important; +} + +[class*=privateChannels__] { + background-color: #341c4a !important; +} + +[class*=chat__] { + background-color: #38234b !important; +} + +[class*=customTheme_], +[class*=content_f75fb0] { + background-color: #38234b !important; +} + +[class*=content_f75fb0]:has([class*=emptyStateContainer__]) { + background: linear-gradient(to bottom, #1b0d28 0%, #38234b 100%) !important; +} + +[class*=wrapper__33d12], +[class*=emptyStateContainer__65428] { + background-color: transparent !important; +} + +[class*=text__33d12] { + color: #a6adc8 !important; +} + +[class*=image__33d12] { + background-color: transparent !important; +} + +[class*=chatGradient__], +[class*=chatGradientBase__] { + background: transparent !important; + background-image: none !important; +} + +[class*=channelBottomBarArea] { + background-color: #38234b !important; +} + +[class*=themedBackground] { + background-color: #341c4a !important; +} + +[class*=scrollableContainer] { + background-color: #341c4a !important; + border-radius: 8px !important; + border: 1px solid rgba(255, 121, 198, 0.12) !important; +} + +[class*=channelTextArea_], +[class*=channelTextArea__] { + background-color: transparent !important; +} + +[class*=nowPlayingWidget], +[class*=activityPanel], +[class*=spotifyModal], +[class*=spotifyControls], +[class*=activity_] { + background-color: #2d1a3e !important; + border: 1px solid rgba(255, 121, 198, 0.12) !important; + border-radius: 8px !important; +} + +[class*=standardSidebarView__] { + background-color: #341c4a !important; +} + +[class*=sidebarRegion__] { + background-color: #341c4a !important; +} + +[class*=contentRegion__] { + background-color: #38234b !important; +} + +[class*=contentRegionScroller__] { + background-color: #38234b !important; +} + +[class*=addonCard], +[class*=pluginCard], +[class*=themeCard] { + background-color: #341c4a !important; + border: 1px solid rgba(255, 121, 198, 0.12) !important; + border-radius: 8px !important; + color: #f8f8f2 !important; +} +[class*=addonCard]:hover, +[class*=pluginCard]:hover, +[class*=themeCard]:hover { + border-color: rgba(255, 121, 198, 0.3) !important; + background-color: #3d2454 !important; +} + +[class*=userInfoSection__], +[class*=tableRow__], +[class*=fieldList__] { + background-color: #341c4a !important; + border: 1px solid rgba(255, 121, 198, 0.08) !important; + border-radius: 8px !important; +} + +[class*=membersWrap_] { + background-color: #341c4a !important; +} + +[class*=membersWrap_] [class*=content_] { + background-color: transparent !important; +} + +[class*=openOnHover__] { + background-color: #3d2454 !important; + border: 1px solid rgba(255, 121, 198, 0.12) !important; + border-radius: 8px !important; + color: #f8f8f2 !important; +} + +[class*=member__], +[class*=member_][class*=clickable__], +[class*=childContainer__], +[class*=memberInner__], +[class*=layout__] { + background-color: transparent !important; + border-radius: 4px !important; + transition: background-color 0.1s ease; +} + +[class*=member__]:hover, +[class*=member_][class*=clickable__]:hover { + background-color: rgba(255, 121, 198, 0.08) !important; +} + +[class*=member__][aria-selected=true], +[class*=member_][class*=clickable__][aria-selected=true] { + background-color: rgba(255, 121, 198, 0.15) !important; +} + +[class*=membersGroup_] { + color: #7f849c !important; + background-color: transparent !important; +} + +.vc-shc-container { + background-color: #38234b !important; + color: #f8f8f2 !important; +} + +.vc-shc-allowed-users-and-roles-container { + background-color: #341c4a !important; + border: 1px solid rgba(255, 121, 198, 0.12) !important; + border-radius: 8px !important; + padding: 8px !important; + color: #f8f8f2 !important; +} + +.vc-shc-container [class*=members__] { + background-color: transparent !important; +} + +.vc-shc-container [class*=role__] { + background-color: rgba(255, 121, 198, 0.08) !important; + border: 1px solid rgba(255, 121, 198, 0.12) !important; + border-radius: 4px !important; + color: #a6adc8 !important; +} + +[class*=interactive__] { + border-radius: 4px !important; + transition: background-color 0.1s ease; +} +[class*=interactive__]:hover { + background-color: rgba(255, 121, 198, 0.08) !important; +} +[class*=interactive__][class*=interactiveSelected__] { + background-color: rgba(255, 121, 198, 0.15) !important; + color: #ff79c6 !important; +} + +[class*=listItemContents_] { + background-color: transparent !important; +} + +[class*=peopleListItem_], +[class*=friendRow_] { + border-radius: 8px !important; + transition: background-color 0.1s ease; +} +[class*=peopleListItem_]:hover, +[class*=friendRow_]:hover { + background-color: rgba(255, 121, 198, 0.08) !important; +} +[class*=peopleListItem_]:hover [class*=listItemContents_], +[class*=friendRow_]:hover [class*=listItemContents_] { + background-color: transparent !important; +} + +[class*=actionButton_] { + color: #7f849c !important; + background-color: #3d2454 !important; + border-radius: 50% !important; + transition: background-color 0.15s ease, color 0.15s ease; +} +[class*=actionButton_]:hover { + color: #ff79c6 !important; + background-color: rgba(255, 121, 198, 0.12) !important; +} +[class*=actionButton_]:focus, [class*=actionButton_]:focus-visible { + outline: 2px solid rgba(255, 121, 198, 0.5) !important; + outline-offset: 2px !important; + box-shadow: none !important; +} +[class*=actionButton_] [class*=icon_] { + color: inherit !important; +} + +*:focus-visible { + outline: 2px solid rgba(255, 121, 198, 0.5) !important; + outline-offset: 2px !important; + box-shadow: none !important; +} + +[class*=tutorial__] { + background-color: #341c4a !important; + border: 1px solid rgba(255, 121, 198, 0.12) !important; + border-radius: 8px !important; + color: #f8f8f2 !important; +} + +[class*=list_][class*=scrollerBase_], +[class*=list_][class*=scrollerBase_] > [class*=content_] { + background-color: #38234b !important; +} + +li[class*=card_], +[class*=headerRow_], +[class*=columnsSpan_], +[class*=emptyMainCard_], +[class*=tagsContainer_] { + background-color: transparent !important; +} + +[class*=mainCard_] { + background-color: #341c4a !important; + border: 1px solid rgba(255, 121, 198, 0.1) !important; + border-radius: 8px !important; + color: #f8f8f2 !important; +} +[class*=mainCard_]:hover { + background-color: #3d2454 !important; + border-color: rgba(255, 121, 198, 0.25) !important; +} + +[class*=sortDropdown_] { + background-color: #3d2454 !important; + color: #a6adc8 !important; + border: 1px solid rgba(255, 121, 198, 0.15) !important; + border-radius: 6px !important; +} +[class*=sortDropdown_]:hover { + background-color: rgba(255, 121, 198, 0.1) !important; + color: #f8f8f2 !important; +} + +[class*=container_d9be46], +[class*=collapsed_] { + background-color: #341c4a !important; + border-radius: 8px !important; +} + +[class*=inline__56dee], +[class*=container__56dee] { + background-color: #3d2454 !important; + border-radius: 8px !important; +} + +[class*=archivedDivider_] { + color: #7f849c !important; +} + +[class*=button_][class*=primary_] { + background-color: #e79cfe !important; + color: #1b0d28 !important; + font-weight: 600 !important; +} +[class*=button_][class*=primary_]:hover { + background-color: #f1c4fe !important; +} + +[class*=button_][class*=secondary_] { + background-color: #3d2454 !important; + color: #a6adc8 !important; + border: 1px solid rgba(255, 121, 198, 0.2) !important; +} +[class*=button_][class*=secondary_]:hover { + background-color: rgba(255, 121, 198, 0.1) !important; + color: #f8f8f2 !important; + border-color: rgba(255, 121, 198, 0.4) !important; +} + +[class*=reactionBtn_], +[class*=addReactButton_] { + background-color: #3d2454 !important; + color: #a6adc8 !important; + border: 1px solid rgba(255, 121, 198, 0.15) !important; + border-radius: 16px !important; +} +[class*=reactionBtn_]:hover, +[class*=addReactButton_]:hover { + background-color: rgba(255, 121, 198, 0.1) !important; + color: #ff79c6 !important; + border-color: rgba(255, 121, 198, 0.35) !important; +} + +div:has(> [class*=reactButtons__]), +[class*=reactButtons__], +[class*=buttons__] { + background-color: transparent !important; +} + +[class*=iconWrapper__] { + background-color: transparent !important; +} + +[class*=resizeHandle__] { + background-color: #2d1a3e !important; +} +[class*=resizeHandle__]:hover { + background-color: rgba(255, 121, 198, 0.25) !important; +} + +div:has(> [class*=searchBarContainer_]) { + background-color: #38234b !important; +} + +[class*=searchBarContainer_] { + background-color: transparent !important; +} + +[class*=searchBarContainer_] [class*=wrapper__] { + background-color: #341c4a !important; + border: 1px solid rgba(255, 121, 198, 0.2) !important; + border-radius: 8px !important; +} + +[class*=header__32c75] { + color: #f8f8f2 !important; +} + +[class*=viewMore_] { + color: #e79cfe !important; +} +[class*=viewMore_]:hover { + color: #f3ceff !important; +} + +[class*=container_cb32c7]:not([class*=rowContainer_]) { + background-color: #341c4a !important; + border: 1px solid rgba(255, 121, 198, 0.1) !important; + border-radius: 8px !important; +} +[class*=container_cb32c7]:not([class*=rowContainer_]):hover { + background-color: #3d2454 !important; + border-color: rgba(255, 121, 198, 0.3) !important; +} + +[class*=rowContainer_cb32c7] { + background-color: transparent !important; +} +[class*=rowContainer_cb32c7]:hover { + background-color: rgba(255, 121, 198, 0.06) !important; + border-radius: 4px !important; +} + +[class*=rowDivider_cb32c7] { + background-color: rgba(255, 121, 198, 0.1) !important; + height: 1px !important; +} + +[class*=container__19cf2] { + background-color: #3d2454 !important; + border: 1px solid rgba(255, 121, 198, 0.12) !important; + border-radius: 8px !important; + color: #f8f8f2 !important; +} + +section:has([class*=backButton_]) { + background-color: #38234b !important; +} + +section:has([class*=backButton_]) [class*=header_] { + background-color: transparent !important; + border-bottom: 1px solid rgba(255, 121, 198, 0.1) !important; +} + +[class*=backButton_], +[class*=clickable__][class*=backButton_] { + background-color: transparent !important; + color: #a6adc8 !important; + border-radius: 4px !important; +} +[class*=backButton_] svg, [class*=backButton_] svg path, +[class*=clickable__][class*=backButton_] svg, +[class*=clickable__][class*=backButton_] svg path { + fill: #a6adc8 !important; + transition: fill 0.1s ease; +} +[class*=backButton_]:hover, +[class*=clickable__][class*=backButton_]:hover { + background-color: rgba(255, 121, 198, 0.1) !important; + color: #ff79c6 !important; +} +[class*=backButton_]:hover svg, [class*=backButton_]:hover svg path, +[class*=clickable__][class*=backButton_]:hover svg, +[class*=clickable__][class*=backButton_]:hover svg path { + fill: #ff79c6 !important; +} + +[class*=rows_] { + background-color: transparent !important; +} + +[class*=applicationStore__], +[class*=premiumPromo__], +[class*=nitroUpsell__], +[class*=storePage__] { + background-color: #38234b !important; +} diff --git a/README.md b/README.md new file mode 100644 index 0000000..f43071f --- /dev/null +++ b/README.md @@ -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` | diff --git a/help.md b/help.md new file mode 100644 index 0000000..a8501fc --- /dev/null +++ b/help.md @@ -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 ` | zoxide | Navigation intelligente (mémorise les dossiers visités) | +| `cd ` | zoxide | Saute vers le dossier le plus probable — ex: `cd doc` → `~/Documents` | +| `` | AUTO_CD | Entrer dans un dossier sans taper `cd` | +| `yazi` | — | Explorateur de fichiers TUI (clavier) | +| `nemo` | — | Explorateur de fichiers GUI | +| `fd ` | 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 ` | batcat | Affichage avec coloration syntaxique, sans pager | +| `bat ` | batcat | Comme cat avec numéros de lignes et pager | +| `glow ` | — | Rendu Markdown dans le terminal | +| `man ` | tldr | Pages de manuel simplifiées (remplace man) | +| `tldr ` | — | Exemples pratiques d'une commande | +| `fetch` | — | Affiche les infos système avec le logo violet-chaton | + +--- + +## Recherche + +| Commande | Description | +|---|---| +| `grep ` | Recherche dans un fichier (--color=auto actif par défaut) | +| `rg ` | Recherche dans les fichiers (ripgrep, remplace grep) | +| `fd ` | 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 ` | 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 ` | 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 ` | Affiche du texte en gros ASCII art coloré | +| `jp2a ` | Convertit une image en ASCII art dans le terminal | +| `w3m ` | 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 ` | Traite et formate du JSON en ligne de commande | +| `uv` | Gestionnaire de paquets Python ultra-rapide (remplace pip/venv) | +| `uvx ` | 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 ` | 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 |