diff --git a/fish/config.fish b/fish/config.fish index 5aa33a6..c946caf 100644 --- a/fish/config.fish +++ b/fish/config.fish @@ -1,3 +1,7 @@ +if test -f $HOME/.local/bin/mise + $HOME/.local/bin/mise activate fish | source +end + if status is-interactive set -g fish_key_bindings fish_vi_key_bindings @@ -8,10 +12,13 @@ if status is-interactive else if test -x /usr/local/bin/starship /usr/local/bin/starship init fish | source end -end -if test -f $HOME/.local/bin/mise - $HOME/.local/bin/mise activate fish | source + # Start or re-use a gpg-agent. + gpgconf --launch gpg-agent + + # Ensure that GPG Agent is used as the SSH agent + set -e SSH_AUTH_SOCK + set -U -x SSH_AUTH_SOCK (gpgconf --list-dirs agent-ssh-socket) end set -U fish_greeting @@ -24,3 +31,5 @@ if test -f "$HOME/.config/fish/local.fish" source "$HOME/.config/fish/local.fish" end +fish_add_path -g ~/bin +fish_add_path -g ~/.local/bin diff --git a/fish/fish_variables b/fish/fish_variables index 56cf986..df8f398 100644 --- a/fish/fish_variables +++ b/fish/fish_variables @@ -1,6 +1,10 @@ # This file contains fish universal variable definitions. # VERSION: 3.0 -SETUVAR __fish_initialized:3800 +SETUVAR --export SSH_AUTH_SOCK:/run/user/1000/gnupg/S\x2egpg\x2dagent\x2essh +SETUVAR __fish_initialized:3400 +SETUVAR _fish_abbr_hist:history\x20\x7c\x20fzf\x20\x7c\x20fish_clipboard_copy +SETUVAR _fish_abbr_lzd:lazydocker +SETUVAR _fish_abbr_lzg:lazygit SETUVAR _fisher_dracula_2F_fish_files:\x7e/\x2econfig/fish/themes/Dracula\x20Official\x2etheme\x1e\x7e/\x2econfig/fish/conf\x2ed/dracula\x2efish SETUVAR _fisher_patrickf1_2F_fzf_2E_fish_files:\x7e/\x2econfig/fish/functions/_fzf_configure_bindings_help\x2efish\x1e\x7e/\x2econfig/fish/functions/_fzf_extract_var_info\x2efish\x1e\x7e/\x2econfig/fish/functions/_fzf_preview_changed_file\x2efish\x1e\x7e/\x2econfig/fish/functions/_fzf_preview_file\x2efish\x1e\x7e/\x2econfig/fish/functions/_fzf_report_diff_type\x2efish\x1e\x7e/\x2econfig/fish/functions/_fzf_report_file_type\x2efish\x1e\x7e/\x2econfig/fish/functions/_fzf_search_directory\x2efish\x1e\x7e/\x2econfig/fish/functions/_fzf_search_git_log\x2efish\x1e\x7e/\x2econfig/fish/functions/_fzf_search_git_status\x2efish\x1e\x7e/\x2econfig/fish/functions/_fzf_search_history\x2efish\x1e\x7e/\x2econfig/fish/functions/_fzf_search_processes\x2efish\x1e\x7e/\x2econfig/fish/functions/_fzf_search_variables\x2efish\x1e\x7e/\x2econfig/fish/functions/_fzf_wrapper\x2efish\x1e\x7e/\x2econfig/fish/functions/fzf_configure_bindings\x2efish\x1e\x7e/\x2econfig/fish/conf\x2ed/fzf\x2efish\x1e\x7e/\x2econfig/fish/completions/fzf_configure_bindings\x2efish SETUVAR _fisher_plugins:patrickf1/fzf\x2efish\x1edracula/fish @@ -34,4 +38,3 @@ SETUVAR fish_pager_color_description:yellow\x1e\x2di SETUVAR fish_pager_color_prefix:normal\x1e\x2d\x2dbold\x1e\x2d\x2dunderline SETUVAR fish_pager_color_progress:brwhite\x1e\x2d\x2dbackground\x3dcyan SETUVAR fish_pager_color_selected_background:\x2dr -SETUVAR fish_user_paths:/Users/jsc/Applications/flutter/bin\x1e/opt/homebrew/bin diff --git a/gitconfig b/gitconfig new file mode 100644 index 0000000..1a5a0e5 --- /dev/null +++ b/gitconfig @@ -0,0 +1,6 @@ +[user] + signingkey = D4F80EF04E164D46393BD7C580D8850D127E6070 + email = jeffrey.clement@gmail.com + name = Jeff Clement +[commit] + gpgsign = true diff --git a/gpg/gpg.conf b/gpg/gpg.conf new file mode 100644 index 0000000..8b793b4 --- /dev/null +++ b/gpg/gpg.conf @@ -0,0 +1,20 @@ +# Use modern encryption algorithms +personal-cipher-preferences AES256,AES192,AES +personal-digest-preferences SHA512,SHA384,SHA256 + +# Set default preferences for key creation +default-preference-list SHA512 SHA384 SHA256 AES256 AES192 AES ZLIB ZIP Uncompressed + +# Use SHA512 for certifying keys +cert-digest-algo SHA512 + +# Enforce encrypted communication with keyservers +keyserver hkps://hkps.pool.sks-keyservers.net +keyserver-options no-honor-keyserver-url + +# Enable agent usage +use-agent + +# Automatically locate keys locally first +auto-key-locate local + diff --git a/install.sh b/install.sh index 65fc781..1c55050 100755 --- a/install.sh +++ b/install.sh @@ -55,6 +55,14 @@ SYMLINKS=( "fish:$HOME/.config/fish" "starship.toml:$HOME/.config/starship.toml" "mise-global.toml:$HOME/.config/mise/config.toml" + "sway/config:$HOME/.config/sway/config" + "sway/config.d:$HOME/.config/sway/config.d" + "sway/wallpaper.jpg:$HOME/.config/sway/wallpaper.jpg" + "sway/lock.jpg:$HOME/.config/sway/lock.jpg" + "waybar/config.jsonc:$HOME/.config/waybar/config.jsonc" + "waybar/style.css:$HOME/.config/waybar/style.css" + "gitconfig:$HOME/.gitconfig" + "gpg/gpg.conf:$HOME/.gnupg/gpg.conf" ) TARGET_SHELL="fish" @@ -113,19 +121,17 @@ install_packages() { done elif [ "${os}" = "linux" ]; then - if ! command -v apt-get >/dev/null 2>&1; then - echo "Error: This script currently only supports apt-based distros on Linux." - exit 1 + if command -v apt-get >/dev/null 2>&1; then + echo "Warning: This script currently only supports apt-based distros on Linux." + + # Install each Linux package if missing + for pkg in "${PACKAGES_LINUX[@]}"; do + install_package_linux "${pkg}" + done + + # No packages for lazygit on Linux :( + install_lazygit_linux fi - - # Install each Linux package if missing - for pkg in "${PACKAGES_LINUX[@]}"; do - install_package_linux "${pkg}" - done - - # No packages for lazygit on Linux :( - install_lazygit_linux - fi } diff --git a/mise-global.toml b/mise-global.toml index 5bec564..aa2ff04 100644 --- a/mise-global.toml +++ b/mise-global.toml @@ -1,6 +1,12 @@ [tools] -elixir = "1.18" -erlang = "27" -go = "1.24" +bat = "latest" +cloudflared = "latest" jq = "latest" +lazygit = "latest" python = "3.13" +starship = "latest" +age = "latest" +fzf = "latest" +fd = "latest" +age-plugin-yubikey = "latest" +rg = "latest" diff --git a/sway/config b/sway/config new file mode 100644 index 0000000..3ecda49 --- /dev/null +++ b/sway/config @@ -0,0 +1,239 @@ +# Default config for sway +# +# Copy this to ~/.config/sway/config and edit it to your liking. +# +# Read `man 5 sway` for a complete reference. + +# https://gitlab.com/rigopoui/dotfiles-and-themes/-/blob/master/laptop/.config/sway/config?ref_type=heads + +seat * hide_cursor 10000 +#font Roboto:size=11 +focus_follows_mouse no + +input * xkb_options "caps:escape" + +# turn off titles +#default_border none + +### Variables + +# Logo key. Use Mod1 for Alt. +set $mod Mod4 + +# Home row direction keys, like vim +set $left h +set $down j +set $up k +set $right l + +# Your preferred terminal emulator +# Recommends: foot +set $term foot + +# Your preferred application launcher +# Note: pass the final command to swaymsg so that the resulting window can be opened +# on the original workspace that the command was run on. +# Recommends: rofi-wayland +set $rofi_cmd rofi \ + -terminal '$term' + +# Shows a combined list of the applications with desktop files and +# executables from PATH. +# TODO: add window with the next release of rofi-wayland +set $menu $rofi_cmd -show combi -combi-modes drun#run -modes combi + +### Output configuration +output * bg ${HOME}/.config/sway/wallpaper.jpg fill + +# +# Example configuration: +# +# output HDMI-A-1 resolution 1920x1080 position 1920,0 +# +# You can get the names of your outputs by running: swaymsg -t get_outputs + +### Input configuration +# +# Example configuration: +# +# input "2:14:SynPS/2_Synaptics_TouchPad" { +# dwt enabled +# tap enabled +# natural_scroll enabled +# middle_emulation enabled +# } +# +# You can get the names of your inputs by running: swaymsg -t get_inputs +# Read `man 5 sway-input` for more information about this section. + +### Key bindings +# +# Basics: +# + # Start a terminal + bindsym $mod+Return exec $term + + # Kill focused window + bindsym $mod+Shift+q kill + + # Start your launcher + bindsym $mod+d exec $menu + + # Drag floating windows by holding down $mod and left mouse button. + # Resize them with right mouse button + $mod. + # Despite the name, also works for non-floating windows. + # Change normal to inverse to use left mouse button for resizing and right + # mouse button for dragging. + floating_modifier $mod normal + + # Reload the configuration file + bindsym $mod+Shift+c reload + + # Exit sway (logs you out of your Wayland session) + bindsym $mod+Shift+e exec swaynag -t warning -m 'You pressed the exit shortcut. Do you really want to exit sway? This will end your Wayland session.' -B 'Yes, exit sway' 'swaymsg exit' +# +# Moving around: +# + # Move your focus around + bindsym $mod+$left focus left + bindsym $mod+$down focus down + bindsym $mod+$up focus up + bindsym $mod+$right focus right + # Or use $mod+[up|down|left|right] + bindsym $mod+Left focus left + bindsym $mod+Down focus down + bindsym $mod+Up focus up + bindsym $mod+Right focus right + + # Move the focused window with the same, but add Shift + bindsym $mod+Shift+$left move left + bindsym $mod+Shift+$down move down + bindsym $mod+Shift+$up move up + bindsym $mod+Shift+$right move right + # Ditto, with arrow keys + bindsym $mod+Shift+Left move left + bindsym $mod+Shift+Down move down + bindsym $mod+Shift+Up move up + bindsym $mod+Shift+Right move right +# +# Workspaces: +# + # Switch to workspace + bindsym $mod+1 workspace number 1 + bindsym $mod+2 workspace number 2 + bindsym $mod+3 workspace number 3 + bindsym $mod+4 workspace number 4 + bindsym $mod+5 workspace number 5 + bindsym $mod+6 workspace number 6 + bindsym $mod+7 workspace number 7 + bindsym $mod+8 workspace number 8 + bindsym $mod+9 workspace number 9 + bindsym $mod+0 workspace number 10 + + # Move focused container to workspace + bindsym $mod+Shift+1 move container to workspace number 1 + bindsym $mod+Shift+2 move container to workspace number 2 + bindsym $mod+Shift+3 move container to workspace number 3 + bindsym $mod+Shift+4 move container to workspace number 4 + bindsym $mod+Shift+5 move container to workspace number 5 + bindsym $mod+Shift+6 move container to workspace number 6 + bindsym $mod+Shift+7 move container to workspace number 7 + bindsym $mod+Shift+8 move container to workspace number 8 + bindsym $mod+Shift+9 move container to workspace number 9 + bindsym $mod+Shift+0 move container to workspace number 10 + +# +# Layout stuff: +# + # You can "split" the current object of your focus with + # $mod+b or $mod+v, for horizontal and vertical splits + # respectively. + bindsym $mod+b splith + bindsym $mod+v splitv + + # Switch the current container between different layout styles + bindsym $mod+s layout stacking + bindsym $mod+w layout tabbed + bindsym $mod+e layout toggle split + + # Make the current focus fullscreen + bindsym $mod+f fullscreen + + # Toggle the current focus between tiling and floating mode + bindsym $mod+Shift+space floating toggle + + # Swap focus between the tiling area and the floating area + bindsym $mod+space focus mode_toggle + + # Move focus to the parent container + bindsym $mod+a focus parent +# +# Scratchpad: +# + # Sway has a "scratchpad", which is a bag of holding for windows. + # You can send windows there and get them back later. + + # Move the currently focused window to the scratchpad + bindsym $mod+Shift+minus move scratchpad + + # Show the next scratchpad window or hide the focused scratchpad window. + # If there are multiple scratchpad windows, this command cycles through them. + bindsym $mod+minus scratchpad show +# +# Resizing containers: +# +mode "resize" { + # left will shrink the containers width + # right will grow the containers width + # up will shrink the containers height + # down will grow the containers height + bindsym $left resize shrink width 40px + bindsym $down resize grow height 40px + bindsym $up resize shrink height 40px + bindsym $right resize grow width 40px + + # Ditto, with arrow keys + bindsym Left resize shrink width 40px + bindsym Down resize grow height 40px + bindsym Up resize shrink height 40px + bindsym Right resize grow width 40px + + # Return to default mode + bindsym Return mode "default" + bindsym Escape mode "default" +} +bindsym $mod+r mode "resize" + +for_window { + [instance="google-chrome"] inhibit_idle fullscreen; border none; max_render_time off +} + +assign [class="Signal"] workspace 10 +assign [app_id="org.telegram.desktop"] workspace 10 +assign [class="discord"] workspace 10 +assign [class="steam"] workspace steam + + + +# Include configs from 3 locations: +# - /usr/share/sway/config.d +# - /etc/sway/config.d +# - $XDG_CONFIG_HOME/sway/config.d ($HOME/.config/sway/config.d) +# +# If multiple directories contain the files with the same name, the later +# directory takes precedence; `$XDG_CONFIG_HOME/sway/config.d/20-swayidle.conf` +# will always be loaded instead of `/usr/share/sway/config.d/20-swayidle.conf` +# or `/etc/sway/config.d/20-swayidle.conf` +# +# This mechanism permits overriding our default configuration per-system +# (/etc) or per-user ($XDG_CONFIG_HOME) basis. Just create the file you +# want to modify/override in the higher-level directory. +# +# For example, to disable the default bar from Fedora configs, you'll need to +# $ echo -n > "$HOME/.config/sway/config.d/90-bar.conf" +# +# Note the quoting, the $() and the arguments quoting. All the parts are equally +# important to make the magic work. And if you want to learn the secret behind +# the trick, it's all in the `wordexp(3)`. +# +include '$(/usr/libexec/sway/layered-include "/usr/share/sway/config.d/*.conf" "/etc/sway/config.d/*.conf" "${XDG_CONFIG_HOME:-$HOME/.config}/sway/config.d/*.conf" "${XDG_CONFIG_HOME:-$HOME/.config}/sway/local.d/*.conf")' diff --git a/sway/config.d/.01-steam.conf.swp b/sway/config.d/.01-steam.conf.swp new file mode 100644 index 0000000..d945850 Binary files /dev/null and b/sway/config.d/.01-steam.conf.swp differ diff --git a/sway/config.d/90-swayidle.conf b/sway/config.d/90-swayidle.conf new file mode 100644 index 0000000..65ac29f --- /dev/null +++ b/sway/config.d/90-swayidle.conf @@ -0,0 +1,30 @@ +# Idle and lock configuration +# +# This will lock your screen after 300 seconds of inactivity, then turn off +# your displays after another 60 seconds, and turn your screens back on when +# resumed. It will also lock your screen before your computer goes to sleep. +# The timeouts can be customized via `$lock_timeout` and `$screen_timeout` +# variables. For a predictable behavior, keep the `$screen_timeout` value +# lesser than the `$lock_timeout`. +# +# You can also lock the screen manually by running `loginctl lock-session` or +# add a binding for the command. Example: +# bindsym $mod+Shift+Escape exec loginctl lock-session +# +# Note that all swaylock customizations are handled via /etc/swaylock/config and +# can be overridden via $XDG_CONFIG_HOME/swaylock/config (~/.config/swaylock/config). +# +# Requires: swayidle +# Requires: swaylock +# Requires: /usr/bin/pkill, /usr/bin/pgrep + +exec LT="$lock_timeout" ST="$screen_timeout" LT=${LT:-300} ST=${ST:-60} && \ + swayidle -w \ + timeout $LT 'swaylock -f -i $HOME/.config/sway/lock.jpg' \ + timeout $((LT + ST)) 'swaymsg "output * power off"' \ + resume 'swaymsg "output * power on"' \ + timeout $ST 'pgrep -xu "$USER" swaylock >/dev/null && swaymsg "output * power off"' \ + resume 'pgrep -xu "$USER" swaylock >/dev/null && swaymsg "output * power on"' \ + before-sleep 'swaylock -f -i $HOME/.config/sway/lock.jpg' \ + lock 'swaylock -f -i $HOME/.config/sway/lock.jpg' \ + unlock 'pkill -xu "$USER" -SIGUSR1 swaylock' diff --git a/sway/lock.jpg b/sway/lock.jpg new file mode 100644 index 0000000..1f5fa93 Binary files /dev/null and b/sway/lock.jpg differ diff --git a/sway/wallpaper.jpg b/sway/wallpaper.jpg new file mode 100644 index 0000000..89c1efb Binary files /dev/null and b/sway/wallpaper.jpg differ diff --git a/waybar/config.jsonc b/waybar/config.jsonc new file mode 100644 index 0000000..d2ebcaf --- /dev/null +++ b/waybar/config.jsonc @@ -0,0 +1,210 @@ +// -*- mode: jsonc -*- +{ + // "layer": "top", // Waybar at top layer + // "position": "bottom", // Waybar position (top|bottom|left|right) + "height": 30, // Waybar height (to be removed for auto height) + // "width": 1280, // Waybar width + "spacing": 4, // Gaps between modules (4px) + // Choose the order of the modules + "modules-left": [ + "sway/workspaces", + "sway/mode", + "sway/scratchpad" + ], + "modules-center": [ + "sway/window" + ], + "modules-right": [ + "idle_inhibitor", + "pulseaudio", + "network", + "power-profiles-daemon", + "cpu", + "memory", + "temperature", + "backlight", +// "sway/language", + "battery", + "clock", + "tray" + ], + // Modules configuration + // "sway/workspaces": { + // "disable-scroll": true, + // "all-outputs": true, + // "warp-on-scroll": false, + // "format": "{name}: {icon}", + // "format-icons": { + // "1": "", + // "2": "", + // "3": "", + // "4": "", + // "5": "", + // "urgent": "", + // "focused": "", + // "default": "" + // } + // }, + "keyboard-state": { + "numlock": true, + "capslock": true, + "format": "{name} {icon}", + "format-icons": { + "locked": "", + "unlocked": "" + } + }, + "sway/mode": { + "format": "{}" + }, + "sway/scratchpad": { + "format": "{icon} {count}", + "show-empty": false, + "format-icons": ["", ""], + "tooltip": true, + "tooltip-format": "{app}: {title}" + }, + "mpd": { + "format": "{stateIcon} {consumeIcon}{randomIcon}{repeatIcon}{singleIcon}{artist} - {album} - {title} ({elapsedTime:%M:%S}/{totalTime:%M:%S}) ⸨{songPosition}|{queueLength}⸩ {volume}% ", + "format-disconnected": "Disconnected ", + "format-stopped": "{consumeIcon}{randomIcon}{repeatIcon}{singleIcon}Stopped ", + "unknown-tag": "N/A", + "interval": 5, + "consume-icons": { + "on": " " + }, + "random-icons": { + "off": " ", + "on": " " + }, + "repeat-icons": { + "on": " " + }, + "single-icons": { + "on": "1 " + }, + "state-icons": { + "paused": "", + "playing": "" + }, + "tooltip-format": "MPD (connected)", + "tooltip-format-disconnected": "MPD (disconnected)" + }, + "idle_inhibitor": { + "format": "{icon}", + "format-icons": { + "activated": "", + "deactivated": "" + } + }, + "tray": { + // "icon-size": 21, + "spacing": 10 + }, + "clock": { + // "timezone": "America/New_York", + "tooltip-format": "{:%Y %B}\n{calendar}", + "format-alt": "{:%Y-%m-%d}" + }, + "cpu": { + "format": "{usage}% ", + "tooltip": false + }, + "memory": { + "format": "{}% " + }, + "temperature": { + // "thermal-zone": 2, + // "hwmon-path": "/sys/class/hwmon/hwmon2/temp1_input", + "critical-threshold": 80, + // "format-critical": "{temperatureC}°C {icon}", + "format": "{temperatureC}°C {icon}", + "format-icons": ["", "", ""] + }, + "backlight": { + // "device": "acpi_video1", + "format": "{percent}% {icon}", + "format-icons": ["🌑", "🌘", "🌗", "🌖", "🌕"] + }, + "battery": { + "states": { + // "good": 95, + "warning": 30, + "critical": 15 + }, + "format": "{capacity}% {icon}", + "format-full": "{capacity}% {icon}", + "format-charging": "{capacity}% ", + "format-plugged": "{capacity}% ", + "format-alt": "{time} {icon}", + // "format-good": "", // An empty format will hide the module + // "format-full": "", + "format-icons": ["", "", "", "", ""] + }, + "battery#bat2": { + "bat": "BAT2" + }, + "power-profiles-daemon": { + "format": "{icon}", + "tooltip-format": "Power profile: {profile}\nDriver: {driver}", + "tooltip": true, + "format-icons": { + "default": "", + "performance": "", + "balanced": "", + "power-saver": "" + } + }, + "network": { + // "interface": "wlp2*", // (Optional) To force the use of this interface + "format-wifi": "{essid} ({signalStrength}%) ", + "format-ethernet": "{ipaddr}/{cidr} ", + "tooltip-format": "{ifname} via {gwaddr} ", + "format-linked": "{ifname} (No IP) ", + "format-disconnected": "Disconnected ⚠", + "format-alt": "{ifname}: {ipaddr}/{cidr}" + }, + "pulseaudio": { + // "scroll-step": 1, // %, can be a float + "format": "{volume}% {icon} {format_source}", + "format-bluetooth": "{volume}% {icon} {format_source}", + "format-bluetooth-muted": " {icon} {format_source}", + "format-muted": " {format_source}", + "format-source": "{volume}% ", + "format-source-muted": "", + "format-icons": { + "headphone": "", + "hands-free": "", + "headset": "", + "phone": "", + "portable": "", + "car": "", + "default": ["", "", ""] + }, + "on-click": "pavucontrol" + }, + "custom/media": { + "format": "{icon} {}", + "return-type": "json", + "max-length": 40, + "format-icons": { + "spotify": "", + "default": "🎜" + }, + "escape": true, + "exec": "$HOME/.config/waybar/mediaplayer.py 2> /dev/null" // Script in resources folder + // "exec": "$HOME/.config/waybar/mediaplayer.py --player spotify 2> /dev/null" // Filter player based on name + }, + "custom/power": { + "format" : "⏻ ", + "tooltip": false, + "menu": "on-click", + "menu-file": "$HOME/.config/waybar/power_menu.xml", // Menu file in resources folder + "menu-actions": { + "shutdown": "shutdown", + "reboot": "reboot", + "suspend": "systemctl suspend", + "hibernate": "systemctl hibernate" + } + } +} diff --git a/waybar/style.css b/waybar/style.css new file mode 100644 index 0000000..e98f839 --- /dev/null +++ b/waybar/style.css @@ -0,0 +1,170 @@ +* { + border: none; + border-radius: 0; + font-family: RobotoMono NerdFont, Roboto, Noto Sans CJK JP, sans-serif; + font-weight: bold; + font-size: 12px; + min-height: 0; +} + +window#waybar { + background: transparent; + color: #ffffff; +} + +window > box { + /*margin: 0 0 0 16px;*/ + background: #171717;/*#282a36;*/ + border-bottom: 3px transparent; + color: white; +} + +tooltip { + color: white; + background-color: #171717; + text-shadow: none; +} + +#workspaces { + margin-left: 2px; + margin-right: 2px; +} + +/* https://github.com/Alexays/Waybar/wiki/FAQ#the-workspace-buttons-have-a-strange-hover-effect */ +#workspaces button { + padding: 0 3px; + margin: 0px; + min-width: 0px; + color: #ffffff; + background: transparent; + border-bottom: 3px solid transparent; + border-top: 2px solid transparent; +} + +#workspaces button.focused { + padding: 0 3px; + border-bottom: 3px solid #ffffff; + border-top: 2px solid #171717; + /*border-radius: 3px;*/ +} + +#window { + /*margin: 0 240;*/ +} + +#mode { + background: #64727D; + border-bottom: 3px solid #ffb52a; +} + +#window, #clock, #battery, #cpu, #memory, #temperature, #backlight, #network, #pulseaudio, #custom-disk, #custom-weather, #language, #tray, #mode, #idle_inhibitor { + padding: 0 2px; + margin: 0 5px; + background: transparent; + border-top: 2px solid transparent; +} + +#clock { + border-bottom: 3px solid #ff6e67; +} + +#battery { + border-bottom: 3px solid #ffb52a; +} + +#battery.charging { + /*border-bottom: 3px solid #51e258;*/ + animation-name :blink; + animation-duration: 1.0s; + animation-timing-function: ease-out; + animation-iteration-count: infinite; + animation-direction: alternate; +} + +@keyframes blink { + 0%{ + border-bottom: 3px solid transparent; + } + 100% { + border-bottom: 3px solid #ffb52a; + } +} + +@keyframes blinkLow { + from { + border-bottom: 3px solid transparent; + } + to { + border-bottom: 3px solid #ff6e67; + } +} + +*#battery.critical:not(.charging) { + animation-name: blinkLow; + animation-duration: 0.7s; + animation-timing-function: ease-out; + animation-iteration-count: infinite; + animation-direction: alternate; +} + +#cpu { + border-bottom: 3px solid #51e258; +} + +#memory { + border-bottom: 3px solid #8ae8fd; +} + +#backlight { + border-bottom: 3px solid #90b1b1; +} + +#network { + border-bottom: 3px solid #eb3e86; +} + +#network.disconnected { + border-bottom: 3px solid #ff676e; /*#ff676e;*/ +} + +#pulseaudio { + border-bottom: 3px solid #3f87f6; +} + +#pulseaudio.muted { + border-bottom: 3px solid #bfbfbf; +} + +#custom-disk { + border-bottom: 3px solid #51e258; +} + +#custom-weather { + border-bottom: 3px solid #3f87f6; +} + +#language { + border-bottom: 3px solid #fbbc01; +} + +#temperature { + border-bottom: 3px solid #f0932b; +} + +#temperature.critical { + background: #eb4d4b; +} + +#tray { + border-bottom: 3px solid #3f87f6; /* #ff676e; */ +} + +#idle_inhibitor { + background-color: #171717; +} + +#idle_inhibitor.activated { + background-color: #ecf0f1; + color: #2d3436; +} + diff --git a/waybar/style.css.old b/waybar/style.css.old new file mode 100644 index 0000000..e031037 --- /dev/null +++ b/waybar/style.css.old @@ -0,0 +1,326 @@ +* { + font-family: 'Noto Sans Mono', 'Font Awesome 6 Free', 'Font Awesome 6 Brands', monospace; + font-size: 13px; +} + +window#waybar { + background-color: rgba(43, 48, 59, 0.5); + border-bottom: 3px solid rgba(100, 114, 125, 0.5); + color: #ffffff; + transition-property: background-color; + transition-duration: .5s; +} + +window#waybar.hidden { + opacity: 0.2; +} + +/* +window#waybar.empty { + background-color: transparent; +} +window#waybar.solo { + background-color: #FFFFFF; +} +*/ + +window#waybar.termite { + background-color: #3F3F3F; +} + +window#waybar.chromium { + background-color: #000000; + border: none; +} + +button { + /* Use box-shadow instead of border so the text isn't offset */ + box-shadow: inset 0 -3px transparent; + /* Avoid rounded borders under each button name */ + border: none; + border-radius: 0; +} + +/* https://github.com/Alexays/Waybar/wiki/FAQ#the-workspace-buttons-have-a-strange-hover-effect */ +button:hover { + background: inherit; + box-shadow: inset 0 -3px #ffffff; +} + +/* you can set a style on hover for any module like this */ +#pulseaudio:hover { + background-color: #a37800; +} + +#workspaces button { + padding: 0 5px; + background-color: transparent; + color: #ffffff; +} + +#workspaces button:hover { + background: rgba(0, 0, 0, 0.2); +} + +#workspaces button.focused { + background-color: #64727D; + box-shadow: inset 0 -3px #ffffff; +} + +#workspaces button.urgent { + background-color: #eb4d4b; +} + +#mode { + background-color: #64727D; + box-shadow: inset 0 -3px #ffffff; +} + +#clock, +#battery, +#cpu, +#memory, +#disk, +#temperature, +#backlight, +#network, +#pulseaudio, +#wireplumber, +#custom-media, +#tray, +#mode, +#idle_inhibitor, +#scratchpad, +#power-profiles-daemon, +#mpd { + padding: 0 10px; + color: #ffffff; +} + +#window, +#workspaces { + margin: 0 4px; +} + +/* If workspaces is the leftmost module, omit left margin */ +.modules-left > widget:first-child > #workspaces { + margin-left: 0; +} + +/* If workspaces is the rightmost module, omit right margin */ +.modules-right > widget:last-child > #workspaces { + margin-right: 0; +} + +#clock { + background-color: #64727D; +} + +#battery { + background-color: #ffffff; + color: #000000; +} + +#battery.charging, #battery.plugged { + color: #ffffff; + background-color: #26A65B; +} + +@keyframes blink { + to { + background-color: #ffffff; + color: #000000; + } +} + +/* Using steps() instead of linear as a timing function to limit cpu usage */ +#battery.critical:not(.charging) { + background-color: #f53c3c; + color: #ffffff; + animation-name: blink; + animation-duration: 0.5s; + animation-timing-function: steps(12); + animation-iteration-count: infinite; + animation-direction: alternate; +} + +#power-profiles-daemon { + padding-right: 15px; +} + +#power-profiles-daemon.performance { + background-color: #f53c3c; + color: #ffffff; +} + +#power-profiles-daemon.balanced { + background-color: #2980b9; + color: #ffffff; +} + +#power-profiles-daemon.power-saver { + background-color: #2ecc71; + color: #000000; +} + +label:focus { + background-color: #000000; +} + +#cpu { + background-color: #2ecc71; + color: #000000; +} + +#memory { + background-color: #9b59b6; +} + +#disk { + background-color: #964B00; +} + +#backlight { + background-color: #90b1b1; +} + +#network { + background-color: #2980b9; +} + +#network.disconnected { + background-color: #f53c3c; +} + +#pulseaudio { + background-color: #f1c40f; + color: #000000; +} + +#pulseaudio.muted { + background-color: #90b1b1; + color: #2a5c45; +} + +#wireplumber { + background-color: #fff0f5; + color: #000000; +} + +#wireplumber.muted { + background-color: #f53c3c; +} + +#custom-media { + background-color: #66cc99; + color: #2a5c45; + min-width: 100px; +} + +#custom-media.custom-spotify { + background-color: #66cc99; +} + +#custom-media.custom-vlc { + background-color: #ffa000; +} + +#temperature { + background-color: #f0932b; +} + +#temperature.critical { + background-color: #eb4d4b; +} + +#tray { + background-color: #2980b9; +} + +#tray > .passive { + -gtk-icon-effect: dim; +} + +#tray > .needs-attention { + -gtk-icon-effect: highlight; + background-color: #eb4d4b; +} + +#idle_inhibitor { + background-color: #2d3436; +} + +#idle_inhibitor.activated { + background-color: #ecf0f1; + color: #2d3436; +} + +#mpd { + background-color: #66cc99; + color: #2a5c45; +} + +#mpd.disconnected { + background-color: #f53c3c; +} + +#mpd.stopped { + background-color: #90b1b1; +} + +#mpd.paused { + background-color: #51a37a; +} + +#language { + background: #00b093; + color: #740864; + padding: 0 5px; + margin: 0 5px; + min-width: 16px; +} + +#keyboard-state { + background: #97e1ad; + color: #000000; + padding: 0 0px; + margin: 0 5px; + min-width: 16px; +} + +#keyboard-state > label { + padding: 0 5px; +} + +#keyboard-state > label.locked { + background: rgba(0, 0, 0, 0.2); +} + +#scratchpad { + background: rgba(0, 0, 0, 0.2); +} + +#scratchpad.empty { + background-color: transparent; +} + +#privacy { + padding: 0; +} + +#privacy-item { + padding: 0 5px; + color: white; +} + +#privacy-item.screenshare { + background-color: #cf5700; +} + +#privacy-item.audio-in { + background-color: #1ca000; +} + +#privacy-item.audio-out { + background-color: #0069d4; +}