This commit is contained in:
Hactarus 2024-09-29 17:36:23 +02:00
parent 1ff03eb4ca
commit fe0993358b
10 changed files with 515 additions and 88 deletions

326
dunst/.config/dunst/dunstrc Normal file
View file

@ -0,0 +1,326 @@
[global]
### Display ###
# Which monitor should the notifications be displayed on.
monitor = 2
# Display notification on focused monitor. Possible modes are:
# mouse: follow mouse pointer
# keyboard: follow window with keyboard focus
# none: don't follow anything
#
# "keyboard" needs a window manager that exports the
# _NET_ACTIVE_WINDOW property.
# This should be the case for almost all modern window managers.
#
# If this option is set to mouse or keyboard, the monitor option
# will be ignored.
follow = none
# The geometry of the window:
# [{width}]x{height}[+/-{x}+/-{y}]
# The geometry of the message window.
# The height is measured in number of notifications everything else
# in pixels. If the width is omitted but the height is given
# ("-geometry x2"), the message window expands over the whole screen
# (dmenu-like). If width is 0, the window expands to the longest
# message displayed. A positive x is measured from the left, a
# negative from the right side of the screen. Y is measured from
# the top and down respectively.
# The width can be negative. In this case the actual width is the
# screen width minus the width defined in within the geometry option.
geometry = "300x5-30+20"
# Show how many messages are currently hidden (because of geometry).
indicate_hidden = yes
# Shrink window if it's smaller than the width. Will be ignored if
# width is 0.
shrink = no
# The transparency of the window. Range: [0; 100].
# This option will only work if a compositing window manager is
# present (e.g. xcompmgr, compiz, etc.).
transparency = 20
# The height of the entire notification. If the height is smaller
# than the font height and padding combined, it will be raised
# to the font height and padding.
notification_height = 0
# Draw a line of "separator_height" pixel height between two
# notifications.
# Set to 0 to disable.
separator_height = 6
# Padding between text and separator.
padding = 6
# Horizontal padding.
horizontal_padding = 8
# Defines width in pixels of frame around the notification window.
# Set to 0 to disable.
frame_width = 2
# Defines color of the frame around the notification window.
frame_color = "#6272A4"
# Define a color for the separator.
# possible values are:
# * auto: dunst tries to find a color fitting to the background;
# * foreground: use the same color as the foreground;
# * frame: use the same color as the frame;
# * anything else will be interpreted as a X color.
separator_color = auto
# Sort messages by urgency.
sort = yes
# Don't remove messages, if the user is idle (no mouse or keyboard input)
# for longer than idle_threshold seconds.
# Set to 0 to disable.
# Transient notifications ignore this setting.
idle_threshold = 120
### Text ###
font = Hack 10
# The spacing between lines. If the height is smaller than the
# font height, it will get raised to the font height.
line_height = 0
# Possible values are:
# full: Allow a small subset of html markup in notifications:
# <b>bold</b>
# <i>italic</i>
# <s>strikethrough</s>
# <u>underline</u>
#
# For a complete reference see
# <http://developer.gnome.org/pango/stable/PangoMarkupFormat.html>.
#
# strip: This setting is provided for compatibility with some broken
# clients that send markup even though it's not enabled on the
# server. Dunst will try to strip the markup but the parsing is
# simplistic so using this option outside of matching rules for
# specific applications *IS GREATLY DISCOURAGED*.
#
# no: Disable markup parsing, incoming notifications will be treated as
# plain text. Dunst will not advertise that it has the body-markup
# capability if this is set as a global setting.
#
# It's important to note that markup inside the format option will be parsed
# regardless of what this is set to.
markup = full
# The format of the message. Possible variables are:
# %a appname
# %s summary
# %b body
# %i iconname (including its path)
# %I iconname (without its path)
# %p progress value if set ([ 0%] to [100%]) or nothing
# %n progress value if set without any extra characters
# %% Literal %
# Markup is allowed
format = "<big>%s</big> <i>%a</i>\n%b"
# Alignment of message text.
# Possible values are "left", "center" and "right".
alignment = left
# Show age of message if message is older than show_age_threshold
# seconds.
# Set to -1 to disable.
show_age_threshold = 60
# Split notifications into multiple lines if they don't fit into
# geometry.
word_wrap = yes
# When word_wrap is set to no, specify where to ellipsize long lines.
# Possible values are "start", "middle" and "end".
ellipsize = middle
# Ignore newlines '\n' in notifications.
ignore_newline = no
# Merge multiple notifications with the same content
stack_duplicates = true
# Hide the count of merged notifications with the same content
hide_duplicate_count = false
# Display indicators for URLs (U) and actions (A).
show_indicators = yes
### Icons ###
# Align icons left/right/off
icon_position = left
# Scale larger icons down to this size, set to 0 to disable
max_icon_size = 128
# Paths to default icons.
icon_path = /run/current-system/sw/share/icons/hicolor/128x128/status:/run/current-system/sw/share/icons/hicolor/128x128/devices:/run/current-system/sw/share/icons/hicolor/128x128/actions:/usr/share/icons/gnome/16x16/status/:/usr/share/icons/gnome/16x16/devices/
### History ###
# Should a notification popped up from history be sticky or timeout
# as if it would normally do.
sticky_history = yes
# Maximum amount of notifications kept in history
history_length = 20
### Misc/Advanced ###
# dmenu path.
dmenu = /run/current-system/sw/bin/dmenu -p dunst:
# Browser for opening urls in context menu.
browser = /etc/profiles/per-user/hactario/bin/firefox -new-tab
# Always run rule-defined scripts, even if the notification is suppressed
always_run_script = true
# Define the title of the windows spawned by dunst
title = Dunst
# Define the class of the windows spawned by dunst
class = Dunst
# Print a notification on startup.
# This is mainly for error detection, since dbus (re-)starts dunst
# automatically after a crash.
startup_notification = true
### Legacy
# Use the Xinerama extension instead of RandR for multi-monitor support.
# This setting is provided for compatibility with older nVidia drivers that
# do not support RandR and using it on systems that support RandR is highly
# discouraged.
#
# By enabling this setting dunst will not be able to detect when a monitor
# is connected or disconnected which might break follow mode if the screen
# layout changes.
force_xinerama = false
# Experimental features that may or may not work correctly. Do not expect them
# to have a consistent behaviour across releases.
[experimental]
# Calculate the dpi to use on a per-monitor basis.
# If this setting is enabled the Xft.dpi value will be ignored and instead
# dunst will attempt to calculate an appropriate dpi value for each monitor
# using the resolution and physical size. This might be useful in setups
# where there are multiple screens with very different dpi values.
per_monitor_dpi = false
[shortcuts]
# Shortcuts are specified as [modifier+][modifier+]...key
# Available modifiers are "ctrl", "mod1" (the alt-key), "mod2",
# "mod3" and "mod4" (windows-key).
# Xev might be helpful to find names for keys.
# Close notification.
close = ctrl+mod1+space
# Close all notifications.
close_all = ctrl+shift+space
# Redisplay last message(s).
# On the US keyboard layout "grave" is normally above TAB and left
# of "1". Make sure this key actually exists on your keyboard layout,
# e.g. check output of 'xmodmap -pke'
history = ctrl+dead_acute
# Context menu.
context = ctrl+shift+period
[urgency_low]
# IMPORTANT: colors have to be defined in quotation marks.
# Otherwise the "#" and following would be interpreted as a comment.
background = "#282A36"
foreground = "#F8F8F2"
timeout = 10
# Icon for notifications with low urgency, uncomment to enable
#icon = /path/to/icon
[urgency_normal]
background = "#44475A"
foreground = "#F8F8F2"
timeout = 10
# Icon for notifications with normal urgency, uncomment to enable
#icon = /path/to/icon
[urgency_critical]
background = "#6272A4"
foreground = "#FF5555"
frame_color = "#FF5555"
timeout = 0
# Icon for notifications with critical urgency, uncomment to enable
#icon = /path/to/icon
# Every section that isn't one of the above is interpreted as a rules to
# override settings for certain messages.
# Messages can be matched by "appname", "summary", "body", "icon", "category",
# "msg_urgency" and you can override the "timeout", "urgency", "foreground",
# "background", "new_icon" and "format".
# Shell-like globbing will get expanded.
#
# SCRIPTING
# You can specify a script that gets run when the rule matches by
# setting the "script" option.
# The script will be called as follows:
# script appname summary body icon urgency
# where urgency can be "LOW", "NORMAL" or "CRITICAL".
#
# NOTE: if you don't want a notification to be displayed, set the format
# to "".
# NOTE: It might be helpful to run dunst -print in a terminal in order
# to find fitting options for rules.
#[espeak]
# summary = "*"
# script = dunst_espeak.sh
#[script-test]
# summary = "*script*"
# script = dunst_test.sh
#[ignore]
# # This notification will not be displayed
# summary = "foobar"
# format = ""
#[history-ignore]
# # This notification will not be saved in history
# summary = "foobar"
# history_ignore = yes
#[signed_on]
# appname = Pidgin
# summary = "*signed on*"
# urgency = low
#
#[signed_off]
# appname = Pidgin
# summary = *signed off*
# urgency = low
#
#[says]
# appname = Pidgin
# summary = *says*
# urgency = critical
#
#[twitter]
# appname = Pidgin
# summary = *twitter.com*
# urgency = normal
#
# vim: ft=cfg

2
dunst/.config/dunst/spotify.sh Executable file
View file

@ -0,0 +1,2 @@
#!/usr/bin/env bash
/usr/bin/spotifycli --statusshort > ~/.config/i3status/spotify.log

View file

@ -12,7 +12,7 @@
};
dotfiles = {
url = "git.ood.ovh:hactarus/dotfiles";
flake = false;
flake = true;
};
outputs = { self, nixpkgs, home-manager, ... } @inputs: {
homeConfigurations.foodogsquared = home-manager.lib.homeManagerConfiguration {

View file

@ -41,6 +41,10 @@ bindsym XF86AudioRaiseVolume exec --no-startup-id pactl set-sink-volume @DEFAULT
bindsym XF86AudioLowerVolume exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ -10% && $refresh_i3status
bindsym XF86AudioMute exec --no-startup-id pactl set-sink-mute @DEFAULT_SINK@ toggle && $refresh_i3status
bindsym XF86AudioMicMute exec --no-startup-id pactl set-source-mute @DEFAULT_SOURCE@ toggle && $refresh_i3status
bindsym XF86AudioPlay exec "spotifycli --playpause && spotifycli --statusshort > /var/log/scripts/spotify.log"
bindsym XF86AudioNext exec "spotifycli --next && spotifycli --statusshort > /var/log/scripts/spotify.log"
bindsym XF86AudioPrev exec "spotifycli --prev && spotifycli --statusshort > /var/log/scripts/spotify.log"
# Use Mouse+$mod to drag floating windows to their wanted position
floating_modifier $mod
@ -116,16 +120,16 @@ bindsym $mod+q focus parent
# Define names for default workspaces for which we configure key bindings later on.
# We use variables to avoid repeating the names in multiple places.
set $ws1 "1 󰯊 "
set $ws2 "2 󰙯 "
set $ws3 "3 "
set $ws4 "4 "
set $ws5 "5 󰕧 "
set $ws6 "6 󰭹 "
set $ws7 "7 "
set $ws8 "8 󰈮 "
set $ws9 "9  "
set $ws10 "10 "
set $ws1 "1:󰖟 "
set $ws2 "2: "
set $ws3 "3:󰈮 "
set $ws4 "4: "
set $ws5 "5:󰕧 "
set $ws6 "6:󰺵 "
set $ws7 "7:󰭹 "
set $ws8 "8:󰙯 "
set $ws9 "9: "
set $ws10 "10:󰕧 "
# switch to workspace
bindsym $mod+ampersand workspace number $ws1
@ -151,6 +155,21 @@ bindsym $mod+Shift+exclam move container to workspace number $ws8
bindsym $mod+Shift+ccedilla move container to workspace number $ws9
bindsym $mod+Shift+agrave move container to workspace number $ws10
set $monitor_main "DP-1-1"
set $monitor_vertical "DP-2"
set $monitor_integrated "eDP-1"
workspace $ws1 output $monitor_main
workspace $ws2 output $monitor_main
workspace $ws3 output $monitor_main
workspace $ws4 output $monitor_main
workspace $ws5 output $monitor_main
workspace $ws6 output $monitor_main
workspace $ws7 output $monitor_vertical
workspace $ws8 output $monitor_vertical
workspace $ws9 output $monitor_integrated
workspace $ws10 output $monitor_integrated
# reload the configuration file
bindsym $mod+Shift+c reload
# restart i3 inplace (preserves your layout/session, can be used to upgrade i3)
@ -185,6 +204,9 @@ mode "resize" {
bindsym $mod+r mode "resize"
include ~/.config/i3/config.d/*.conf
client.focused #6272A4 #6272A4 #F8F8F2 #6272A4 #6272A4
client.focused_inactive #44475A #44475A #F8F8F2 #44475A #44475A
client.unfocused #282A36 #282A36 #BFBFBF #282A36 #282A36
@ -207,4 +229,5 @@ bar {
binding_mode #FF5555 #FF5555 #F8F8F2
}
}
exec --no-startup-id feh --bg-fill ~/.dotfiles/i3/.wallpapers/mr-robot-hacker-10000x5625-15768.png

View file

@ -0,0 +1,25 @@
# set $ws1 "1:󰖟 "
# set $ws2 "2: "
# set $ws3 "3:󰈮 "
# set $ws4 "4: "
# set $ws5 "5:󰕧 "
# set $ws6 "6:󰺵 "
# set $ws7 "7:󰭹 "
# set $ws8 "8:󰙯 "
# set $ws9 "9: "
# set $ws10 "10:󰕧 "
assign [class="firefox"] $ws1
assign [class="chromium-browser"] $ws8
assign [class="chromium"] $ws8
assign [class="Thunderbird"] $ws7
assign [class="vscodium"] $ws3
assign [class="Alacritty"] $ws2
assign [class="Moonlight"] $ws6
assign [class="plex-bin"] $ws5
assign [class="vlc"] $ws5
assign [class="Spotify"] $ws9
assign [class="Spotify"] $ws9
for_window [class="Alert"] floating enable
for_window [class="dunst"] floating enable

View file

@ -3,13 +3,10 @@ theme = "dracula"
[icons]
icons = "material-nf"
[icons.overrides]
bat = [
"| |",
"|¼|",
"|½|",
"|¾|",
"|X|",
]
bat_charging = "|^|"
[general]
colors = true
color_good = "#a3be8c"
color_degraded = "#ebcb8b"
color_bad = "#bf616a"
interval = 1
separator = "*"

View file

@ -1,45 +1,60 @@
general {
output_format = "i3bar"
// output_format = "i3bar"
colors = true
color_good = "#50FA7B"
color_degraded = "#F1FA8C"
color_bad = "#FF5555"
interval = 5
separator = "󰭆"
}
order += "ipv6"
// order += "ipv6"
order += "volume master"
order += "read_file spotify"
order += "disk /"
order += "run_watch DHCP"
order += "run_watch VPNC"
order += "path_exists VPN"
order += "wireless wlan0"
order += "ethernet eth0"
order += "disk /nix"
order += "disk /home"
// order += "run_watch DHCP"
// order += "run_watch VPNC"
// order += "path_exists VPN"
order += "wireless wlp2s0"
order += "ethernet enp0s31f6"
// order += "ethernet enp0s20f0u3c2"
order += "ethernet"
order += "battery 0"
#order += "cpu_temperature 0"
order += "cpu_temperature 0"
order += "memory"
order += "load"
order += "tztime local"
order += "tztime berlin"
order += "tztime paris"
wireless wlan0 {
format_up = "W: (%quality at %essid, %bitrate) %ip"
format_down = "W: down"
wireless wlp2s0 {
format_up = " (%quality at %essid, %bitrate) %ip"
format_down = "󱚵 "
}
ethernet eth0 {
format_up = "E: %ip (%speed)"
format_down = "E: down"
ethernet enp0s31f6 {
format_up = "󰈀 %ip"
format_down = "󰈀 "
}
ethernet enp0s20f0u3c2 {
format_up = "󰈁 %ip"
format_down = "󰈁 "
}
battery 0 {
format = "%status %percentage %remaining %emptytime"
format_down = "No battery"
status_chr = "⚡ CHR"
status_bat = "🔋 BAT"
status_unk = "? UNK"
status_full = "☻ FULL"
format = "%status %percentage %remaining"
format_down = ""
last_full_capacity = true
integer_battery_capacity = true
low_threshold = 11
threshold_type = percentage
hide_seconds = true
status_chr = " ⚡ "
status_bat = " 🪫 "
status_unk = " 🔌 "
status_full = " 🔋 "
path = "/sys/class/power_supply/BAT%d/uevent"
low_threshold = 10
}
run_watch DHCP {
@ -57,34 +72,65 @@ path_exists VPN {
}
tztime local {
format = "%Y-%m-%d %H:%M:%S"
format = "📅 %V %a 󰃭 %Y-%m-%d %H:%M:%S %Z"
hide_if_equals_localtime = true
}
tztime berlin {
format = "%Y-%m-%d %H:%M:%S %Z"
timezone = "Europe/Berlin"
tztime paris {
format = "📅 %V %a 󰃭 %Y-%m-%d %H:%M:%S %Z"
timezone = "Europe/Paris"
}
load {
format = "%5min"
format = "%5min"
}
cpu_temperature 0 {
format = "T: %degrees °C"
path = "/sys/devices/platform/coretemp.0/temp1_input"
format = "🌡️ %degrees"
path = "/sys/devices/platform/coretemp.0/hwmon/hwmon5/temp1_input"
}
memory {
format = "%used"
format = "%used"
threshold_degraded = "10%"
format_degraded = "MEMORY: %free"
}
disk "/" {
format = "%free"
format = " / %free"
prefix_type = custom
low_threshold = 20
threshold_type = percentage_avail
}
disk "/nix" {
format = "💻 /nix %free"
prefix_type = custom
low_threshold = 15
threshold_type = percentage_avail
}
disk "/home" {
format = "💾 /home %free"
prefix_type = custom
low_threshold = 10
threshold_type = percentage_avail
}
read_file uptime {
path = "/proc/uptime"
}
volume master {
format = "%volume 󰕾 "
format_muted = "󰖁 "
// device = "pulse:1"pavuc
device = "default"
mixer = "Master"
mixer_idx = 0
}
read_file spotify {
format = "🔊%content"
path = "~/.config/i3status/spotify.log"
}

View file

View file

@ -17,27 +17,34 @@
;==========================================================
[colors]
background = #282A2E
background-alt = #373B41
foreground = #C5C8C6
primary = #F0C674
secondary = #8ABEB7
alert = #A54242
disabled = #707880
background = #282A36
background-alt = #BFBFBF
foreground = #F8F8F2
primary = #F8F8F2
secondary = #282A36
alert = #44475A
disabled = #44475A
[bar/main]
monitor = "DP-1-2"
# Last component is the vertical offset
#font-0 = Fira Code:size=10;4
font-0 = FiraMono Nerd Font:size=10;4
; font-0 = FiraMono Nerd Font:size=12;4
#fc-match FontAwesome:pixelsize=14 FontAwesome.otf: "FontAwesome" "Regular"
; font-3 = FontAwesome:pixelsize=14;0
#font-0 = Overpass Nerd Font,Overpass Nerd Font SemBd:size=10;4
#font-0 = FiraCode:size=10;4
#font-0 = Overpass Nerd Font:size=10;4
#font-1 = Noto Sans:size=10;4
font-0 = fixed:pixelsize=12;1
font-1 = unifont:fontformat=truetype:size=10:antialias=false;0
font-2 = "FiraCode Nerd Font:pixelsize=12;1"
width = 100%
height = 16pt
radius = 0
dpi = 192
#dpi = 192
background = ${colors.background}
foreground = ${colors.foreground}
@ -56,15 +63,15 @@ separator = |
separator-foreground = ${colors.disabled}
modules-left = xworkspaces xwindow
#modules-right = filesystem pulseaudio xkeyboard memory cpu wlan eth battery date
modules-right = pulseaudio wlan eth battery date
modules-right = filesystem pulseaudio xkeyboard memory cpu wlan eth battery date
#modules-right = pulseaudio wlan eth battery date
cursor-click = pointer
cursor-scroll = ns-resize
enable-ipc = true
; tray-position = right
tray-position = right
; wm-restack = generic
; wm-restack = bspwm
@ -157,7 +164,7 @@ format-connected = <ramp-signal> <label-connected>
label-connected = %local_ip%
#label-connected = %{F#F0C674} %{F-} %local_ip%
#label-connected = %{F#F0C674}%ifname%%{F-} %essid% %local_ip%
label-disconnected = %{F#F0C674}%ifname%%{F#707880} disconnected
label-disconnected = %{F#F0C674}%ifname%%{F#707880} disconnected
ramp-signal-0 = %{F#F0C674}󰤯 %{F-}
ramp-signal-1 = %{F#F0C674}󰤟 %{F-}
ramp-signal-2 = %{F#F0C674}󰤢 %{F-}
@ -168,7 +175,7 @@ ramp-signal-5 = %{F#F0C674} %{F-}
[module/eth]
inherit = network-base
interface-type = wired
label-connected = %{F#F0C674}%ifname% %{F-} %local_ip%
label-connected = %{F#F0C674}%ifname% 󱚽 %{F-} %local_ip%
#label-connected = %{F#F0C674}%ifname%%{F-} %local_ip%
label-disconnected = %{F#F0C674}%ifname%%{F#707880} disconnected
@ -224,7 +231,7 @@ label-discharging = %percentage%%
# Available tokens:
# %percentage% (default) - is set to 100 if full-at is reached
# %percentage_raw%
label-full = "%{F#F0C674} %{F-}"
label-full = "%{F#F0C674}󰂅 %{F-}"
# Available tokens:
# %percentage% (default) - is set to 100 if full-at is reached
@ -245,11 +252,11 @@ ramp-capacity-4 = "%{F#F0C674} %{F-}"
bar-capacity-width = 10
# Only applies if <animation-charging> is used
animation-charging-0 = "%{F#F0C674} %{F-}"
animation-charging-1 = "%{F#F0C674} %{F-}"
animation-charging-2 = "%{F#F0C674} %{F-}"
animation-charging-3 = "%{F#F0C674} %{F-}"
animation-charging-4 = "%{F#F0C674} %{F-}"
animation-charging-0 = "%{F#F0C674}󰢜 %{F-}"
animation-charging-1 = "%{F#F0C674}󰂆 %{F-}"
animation-charging-2 = "%{F#F0C674}󰂈 %{F-}"
animation-charging-3 = "%{F#F0C674}󰂉 %{F-}"
animation-charging-4 = "%{F#F0C674}󰂊 %{F-}"
# Framerate in milliseconds
animation-charging-framerate = 750
@ -285,7 +292,7 @@ type = internal/i3
; on different bars
;
; Default: false
pin-workspaces = true
pin-workspaces = false
; Show urgent workspaces regardless of whether the workspace is actually hidden
; by pin-workspaces.

View file

@ -8,17 +8,18 @@ git submodule update
# what directories should be installable by all users including the root user
base=(
picom
dracula
dunst
git
helix
htop
i3
nano
nix
polybar
puppet
ssh
i3
picom
polybar
sway
terminfo
tmux