Big refactor WIP

This commit is contained in:
2022-04-15 16:40:32 +01:00
parent b1b692dbdf
commit ec73d821aa
35 changed files with 107 additions and 206 deletions

View File

@@ -0,0 +1,8 @@
{
imports = [
./i3
./i3status-rust
# ./polybar
./rofi
];
}

View File

@@ -0,0 +1,192 @@
{ config, lib, pkgs, ...}:
let
mod = "Mod4";
in {
home.file = {
"bin/scripts/goup" = {
source = ./goup;
executable = true;
};
"bin/scripts/godown" = {
source = ./godown;
executable = true;
};
};
xsession = {
enable = true;
windowManager.i3 = {
enable = true;
package = pkgs.i3-gaps;
config = {
bars = [
{
colors = {
background = "#282A36";
statusline = "#F8F8F2";
separator = "#44475A";
activeWorkspace = {
border = "#282A36";
background = "#44475A";
text = "#F8F8F2";
};
focusedWorkspace = {
border = "#44475A";
background = "#44475A";
text = "#F8F8F2";
};
inactiveWorkspace = {
border = "#282A36";
background = "#282A36";
text = "#BFBFBF";
};
urgentWorkspace = {
border = "#FF5555";
background = "#FF5555";
text = "#F8F8F2";
};
bindingMode = {
border = "#FF5555";
background = "#FF5555";
text = "#F8F8F2";
};
};
fonts = {
size = 11.0;
};
statusCommand = "${pkgs.i3status-rust}/bin/i3status-rs /home/daniel/.config/i3status-rust/config-main.toml";
position = "top";
}
];
colors = {
focused = {
border = "#6272A4";
background = "#6272A4";
text = "#F8F8F2";
indicator = "#6272A4";
childBorder = "#6272A4";
};
focusedInactive = {
border = "#44475A";
background = "#44475A";
text = "#F8F8F2";
indicator = "#44475A";
childBorder = "#44475A";
};
unfocused = {
border = "#282A36";
background = "#282A36";
text = "#BFBFBF";
indicator = "#282A36";
childBorder = "#282A36";
};
urgent = {
border = "#44475A";
background = "#FF5555";
text = "#F8F8F2";
indicator = "#FF5555";
childBorder = "#FF5555";
};
placeholder = {
border = "#282A36";
background = "#282A36";
text = "#F8F8F2";
indicator = "#282A36";
childBorder = "#282A36";
};
background = "#F8F8F2";
};
defaultWorkspace = "workspace number 1";
floating = {
modifier = mod;
criteria = [
{ instance = "pavucontrol"; }
];
};
focus = {
followMouse = false;
};
fonts = {
names = [ "pango:monospace 8" ];
style = "monospace";
size = 8.0;
};
gaps = {
outer = lib.mkDefault 10;
inner = lib.mkDefault 5;
smartBorders = "on";
};
keybindings = lib.mkOptionDefault {
"${mod}+q" = "kill";
"${mod}+d" = "exec rofi -show drun";
"${mod}+h" = "focus left";
"${mod}+j" = "focus down";
"${mod}+k" = "focus up";
"${mod}+l" = "focus right";
"${mod}+Shift+h" = "move left";
"${mod}+Shift+l" = "move right";
"${mod}+Tab" = "workspace back_and_forth";
"${mod}+b" = "split h";
"${mod}+v" = "split v";
"${mod}+Control+Return" = "exec --no-startup-id i3utils workspace new";
"${mod}+Control+Shift+Return" = "exec --no-startup-id i3utils workspace new -b";
"${mod}+Shift+Return" = "exec --no-startup-id i3utils workspace new -n, move next";
"${mod}+Control+j" = "exec --no-startup-id $HOME/bin/scripts/godown";
"${mod}+Control+k" = "exec --no-startup-id $HOME/bin/scripts/goup";
"${mod}+Control+h" = "exec --no-startup-id i3utils workspace new -b";
"${mod}+Shift+k" = "exec --no-startup-id i3utils window move prev";
"${mod}+Shift+j" = "exec --no-startup-id i3utils window move next";
"${mod}+p" = "scratchpad show";
"${mod}+Escape" = "exec loginctl lock-session";
"XF86MonBrightnessUp" = "exec xbacklight -inc 10";
"XF86MonBrightnessDown" = "exec xbacklight -dec 10";
"XF86AudioMute" = "exec pamixer -t";
"XF86AudioLowerVolume" = "exec pamixer -d 10";
"XF86AudioRaiseVolume" = "exec pamixer -i 10";
"XF86AudioPrev" = "exec playerctl previous";
"XF86AudioPlay" = "exec playerctl play-pause";
"XF86AudioNext" = "exec playerctl next";
"Mod1+Shift+4" = "exec flameshot gui -s -p ~/Pictures/screenshots";
};
modifier = mod;
startup = [
{ command = "$HOME/bin/scripts/flower"; always = true; }
{ command = "feh --bg-fill $HOME/wallpapers/wallpaper.jpg"; always = false; }
];
terminal = "kitty";
window = {
border = lib.mkDefault 2;
titlebar = false;
commands = [
{ command = "move position center #2116 46"; criteria = { class = "jetbrains-toolbox"; }; }
{ command = "move scratchpad"; criteria = { instance = "spotify"; }; }
];
};
};
};
};
}

View File

@@ -0,0 +1,10 @@
#!/bin/sh
if test -n "$(i3utils workspace isLast)" ; then
if test -z "$(i3utils workspace isEmpty)" ; then
i3-msg workspace $(( $(i3utils workspace current) + 1 ))
fi
else
i3-msg workspace next
fi
i3utils workspace reflow

View File

@@ -0,0 +1,6 @@
#!/bin/sh
if [ -z $(i3utils workspace isFirst) ]; then
i3-msg workspace prev
i3utils workspace reflow
fi

View File

@@ -0,0 +1,49 @@
{ config, pkgs, ... }:
{
programs.i3status-rust = {
enable = true;
bars = {
main = {
theme = "dracula";
icons = "awesome";
blocks = [
{
block = "time";
}
{
block = "battery";
allow_missing = true;
hide_missing = true;
}
{
block = "backlight";
device = "intel_backlight";
step_width = 10;
invert_icons = true;
}
{
block = "networkmanager";
primary_only = true;
ap_format = "{ssid}";
device_format = "{icon}{ap}";
}
{
block = "keyboard_layout";
}
{
block = "notify";
}
{
block = "music";
player = "spotify";
buttons = [ "prev" "play" "next" ];
}
{
block = "sound";
}
];
};
};
};
}

View File

@@ -0,0 +1,394 @@
[colors]
;background = ${xrdb:color0:#222}
background = #222
background-alt = #444
;foreground = ${xrdb:color7:#222}
foreground = #dfdfdf
foreground-alt = #555
primary = #ffb52a
secondary = #e60053
alert = #bd2c40
[bar/main]
width = 100%
height = 34
font-0 = Ubuntu:size=10;2
font-1 = Font Awesome 5 Free Solid:size=10;3
font-2 = Font Awesome 5 Brands:size=10;1
fixed-center = true
background = ${colors.background}
foreground = ${colors.foreground}
line-size = 3
line-color = #f00
;border-size = 4
border-color = #00000000
padding-left = 0
padding-right = 2
module-margin-left = 1
module-margin-right = 2
modules-left = i3
modules-center = mpd date
modules-right = filesystem xbacklight pulseaudio memory cpu wlan eth battery temperature powermenu
tray-position = right
tray-padding = 2
dpi = 120
;tray-background = #0063ff
;wm-restack = bspwm
;wm-restack = i3
;override-redirect = true
;scroll-up = bspwm-desknext
;scroll-down = bspwm-deskprev
;scroll-up = i3wm-wsnext
;scroll-down = i3wm-wsprev
cursor-click = pointer
cursor-scroll = ns-resize
[module/xwindow]
type = internal/xwindow
label = %title:0:30:...%
[module/xkeyboard]
type = internal/xkeyboard
blacklist-0 = num lock
format-prefix = " "
format-prefix-foreground = ${colors.foreground-alt}
format-prefix-underline = ${colors.secondary}
label-layout = %layout%
label-layout-underline = ${colors.secondary}
label-indicator-padding = 2
label-indicator-margin = 1
label-indicator-background = ${colors.secondary}
label-indicator-underline = ${colors.secondary}
[module/filesystem]
type = internal/fs
interval = 25
mount-0 = /
label-mounted = %{F#0a81f5}%mountpoint%%{F-}: %percentage_used%%
label-unmounted = %mountpoint% not mounted
label-unmounted-foreground = ${colors.foreground-alt}
[module/i3]
type = internal/i3
format = <label-state> <label-mode>
index-sort = false
wrapping-scroll = false
; Only show workspaces on the same output as the bar
;pin-workspaces = true
label-mode-padding = 2
label-mode-foreground = #000
label-mode-background = ${colors.primary}
; focused = Active workspace on focused monitor
label-focused = %name%
label-focused-background = ${colors.background-alt}
label-focused-underline= ${colors.primary}
label-focused-padding = 2
; unfocused = Inactive workspace on any monitor
label-unfocused = %name%
label-unfocused-padding = 2
; visible = Active workspace on unfocused monitor
label-visible = %name%
label-visible-background = ${self.label-focused-background}
label-visible-underline = ${self.label-focused-underline}
label-visible-padding = ${self.label-focused-padding}
; urgent = Workspace with urgency hint set
label-urgent = %index%
label-urgent-background = ${colors.alert}
label-urgent-padding = 2
; Separator in between workspaces
; label-separator = |
[module/mpd]
type = internal/mpd
format-online = <label-song> <icon-prev> <icon-stop> <toggle> <icon-next>
icon-prev = 
icon-stop = 
icon-play = 
icon-pause = 
icon-next = 
label-song-maxlen = 25
label-song-ellipsis = true
[module/xbacklight]
type = internal/xbacklight
format = <label> <bar>
label = BL
bar-width = 10
bar-indicator = |
bar-indicator-foreground = #fff
bar-indicator-font = 2
bar-fill = ─
bar-fill-font = 2
bar-fill-foreground = #9f78e1
bar-empty = ─
bar-empty-font = 2
bar-empty-foreground = ${colors.foreground-alt}
[module/backlight-acpi]
inherit = module/xbacklight
type = internal/backlight
card = intel_backlight
[module/cpu]
type = internal/cpu
interval = 2
format-prefix = " "
format-prefix-foreground = ${colors.foreground-alt}
format-underline = #f90000
label = %percentage:2%%
[module/memory]
type = internal/memory
interval = 2
format-prefix = " "
format-prefix-foreground = ${colors.foreground-alt}
format-underline = #4bffdc
label = %percentage_used%%
[module/wlan]
type = internal/network
interface = wlp59s0
interval = 3.0
format-connected = <ramp-signal> <label-connected>
format-connected-underline = #9f78e1
label-connected = %essid%
format-disconnected =
;format-disconnected = <label-disconnected>
;format-disconnected-underline = ${self.format-connected-underline}
;label-disconnected = %ifname% disconnected
;label-disconnected-foreground = ${colors.foreground-alt}
ramp-signal-0 = 
ramp-signal-1 = 
ramp-signal-2 = 
ramp-signal-3 = 
ramp-signal-4 = 
ramp-signal-foreground = ${colors.foreground-alt}
[module/eth]
type = internal/network
interface = enp0s31f6
interval = 3.0
format-connected-underline = #55aa55
format-connected-prefix = " "
format-connected-prefix-foreground = ${colors.foreground-alt}
label-connected = %local_ip%
format-disconnected =
;format-disconnected = <label-disconnected>
;format-disconnected-underline = ${self.format-connected-underline}
;label-disconnected = %ifname% disconnected
;label-disconnected-foreground = ${colors.foreground-alt}
[module/date]
type = internal/date
interval = 1
date =
date-alt = " %Y-%m-%d"
time = %H:%M
time-alt = %H:%M:%S
format-prefix = 
format-prefix-foreground = ${colors.foreground-alt}
format-underline = #0a6cf5
label = %date% %time%
[module/pulseaudio]
type = internal/pulseaudio
format-volume = <label-volume> <ramp-volume> <bar-volume>
label-volume = vol %percentage%%
label-volume-foreground = ${root.foreground}
label-muted = 
label-muted-foreground = #FF0000
ramp-volume-0 = 
ramp-volume-1 = 
ramp-volume-2 = 
ramp-volume-3 = 
ramp-volume-4 = 
ramp-headphones-0 = 
ramp-headphones-1 = 
bar-volume-width = 10
bar-volume-foreground-0 = #55aa55
bar-volume-foreground-1 = #55aa55
bar-volume-foreground-2 = #55aa55
bar-volume-foreground-3 = #55aa55
bar-volume-foreground-4 = #55aa55
bar-volume-foreground-5 = #f5a70a
bar-volume-foreground-6 = #ff5555
bar-volume-gradient = false
bar-volume-indicator = |
bar-volume-indicator-font = 2
bar-volume-fill = ─
bar-volume-fill-font = 2
bar-volume-empty = ─
bar-volume-empty-font = 2
bar-volume-empty-foreground = ${colors.foreground-alt}
[module/alsa]
type = internal/alsa
format-volume = <label-volume> <bar-volume>
label-volume = VOL
label-volume-foreground = ${root.foreground}
format-muted-prefix = " "
format-muted-foreground = ${colors.foreground-alt}
label-muted = sound muted
bar-volume-width = 10
bar-volume-foreground-0 = #55aa55
bar-volume-foreground-1 = #55aa55
bar-volume-foreground-2 = #55aa55
bar-volume-foreground-3 = #55aa55
bar-volume-foreground-4 = #55aa55
bar-volume-foreground-5 = #f5a70a
bar-volume-foreground-6 = #ff5555
bar-volume-gradient = false
bar-volume-indicator = |
bar-volume-indicator-font = 2
bar-volume-fill = ─
bar-volume-fill-font = 2
bar-volume-empty = ─
bar-volume-empty-font = 2
bar-volume-empty-foreground = ${colors.foreground-alt}
[module/battery]
type = internal/battery
poll-interval = 10
format-charging = <label-charging>
label-charging =  %percentage: 2%%
format-charging-underline = #ffb52a
format-discharging = <ramp-capacity> <label-discharging>
label-discharging = %percentage: 2%%
format-discharging-underline = ${self.format-charging-underline}
format-full = <label-full>
label-full = 
format-full-underline = ${self.format-charging-underline}
format-low = <animation-low> <label-low>
label-low = %percentage: 2%%
label-low-foreground = ${colors.warning}
animation-low-foreground = ${colors.warning}
full-at = 99
low-at = 12
ramp-capacity-0 = 
ramp-capacity-1 = 
ramp-capacity-2 = 
ramp-capacity-3 = 
ramp-capacity-4 = 
ramp-capacity-5 = 
ramp-capacity-6 = 
ramp-capacity-7 = 
ramp-capacity-8 = 
ramp-capacity-9 = 
animation-low-0 = 
animation-low-1 = 
animation-low-2 = 
animation-low-3 = 
animation-low-3-foreground = ${colors.transparent}
animation-low-framerate = 500
[module/temperature]
type = internal/temperature
thermal-zone = 0
warn-temperature = 60
format = <ramp> <label>
format-underline = #f50a4d
format-warn = <ramp> <label-warn>
format-warn-underline = ${self.format-underline}
label = %temperature-c%
label-warn = %temperature-c%
label-warn-foreground = ${colors.secondary}
ramp-0 = 
ramp-1 = 
ramp-2 = 
ramp-foreground = ${colors.foreground-alt}
[module/powermenu]
type = custom/menu
expand-right = true
format-spacing = 1
label-open = 
label-open-foreground = ${colors.secondary}
label-close =  cancel
label-close-foreground = ${colors.secondary}
label-separator = |
label-separator-foreground = ${colors.foreground-alt}
menu-0-0 = reboot
menu-0-0-exec = menu-open-1
menu-0-1 = power off
menu-0-1-exec = menu-open-2
menu-1-0 = cancel
menu-1-0-exec = menu-open-0
menu-1-1 = reboot
menu-1-1-exec = sudo reboot
menu-2-0 = power off
menu-2-0-exec = sudo poweroff
menu-2-1 = cancel
menu-2-1-exec = menu-open-0
[settings]
screenchange-reload = true
;compositing-background = xor
;compositing-background = screen
;compositing-foreground = source
;compositing-border = over
;pseudo-transparency = false
[global/wm]
margin-top = 5
margin-bottom = 5
; vim:ft=dosini

View File

@@ -0,0 +1,20 @@
{pkgs, ...}:
{
services.polybar = {
enable = true;
package = pkgs.polybar.override {
i3Support = true;
pulseSupport = true;
};
script = ''
polybar main & disown
'';
config = ./config;
};
}

View File

@@ -0,0 +1,139 @@
* {
/* Dracula theme colour palette */
drac-bgd: #282a36;
drac-cur: #44475a;
drac-fgd: #f8f8f2;
drac-cmt: #6272a4;
drac-cya: #8be9fd;
drac-grn: #50fa7b;
drac-ora: #ffb86c;
drac-pnk: #ff79c6;
drac-pur: #bd93f9;
drac-red: #ff5555;
drac-yel: #f1fa8c;
font: "Jetbrains Mono 12";
foreground: @drac-fgd;
background-color: @drac-bgd;
active-background: @drac-pnk;
urgent-background: @drac-red;
selected-background: @active-background;
selected-urgent-background: @urgent-background;
selected-active-background: @active-background;
separatorcolor: @active-background;
bordercolor: #6272a4;
}
#window {
background-color: @background;
border: 3;
border-radius: 6;
border-color: @bordercolor;
padding: 5;
}
#mainbox {
border: 0;
padding: 5;
}
#message {
border: 1px dash 0px 0px ;
border-color: @separatorcolor;
padding: 1px ;
}
#textbox {
text-color: @foreground;
}
#listview {
fixed-height: 0;
border: 2px dash 0px 0px ;
border-color: @bordercolor;
spacing: 2px ;
scrollbar: false;
padding: 2px 0px 0px ;
}
#element {
border: 0;
padding: 1px ;
}
#element.normal.normal {
background-color: @background;
text-color: @foreground;
}
#element.normal.urgent {
background-color: @urgent-background;
text-color: @urgent-foreground;
}
#element.normal.active {
background-color: @active-background;
text-color: @background;
}
#element.selected.normal {
background-color: @selected-background;
text-color: @foreground;
}
#element.selected.urgent {
background-color: @selected-urgent-background;
text-color: @foreground;
}
#element.selected.active {
background-color: @selected-active-background;
text-color: @background;
}
#element.alternate.normal {
background-color: @background;
text-color: @foreground;
}
#element.alternate.urgent {
background-color: @urgent-background;
text-color: @foreground;
}
#element.alternate.active {
background-color: @active-background;
text-color: @foreground;
}
#scrollbar {
width: 2px ;
border: 0;
handle-width: 8px ;
padding: 0;
}
#sidebar {
border: 2px dash 0px 0px ;
border-color: @separatorcolor;
}
#button.selected {
background-color: @selected-background;
text-color: @foreground;
}
#inputbar {
spacing: 0;
text-color: @foreground;
padding: 1px ;
}
#case-indicator {
spacing: 0;
text-color: @foreground;
}
#entry {
spacing: 0;
text-color: @drac-cya;
}
#prompt {
spacing: 0;
text-color: @drac-grn;
}
#inputbar {
children: [ prompt,textbox-prompt-colon,entry,case-indicator ];
}
#textbox-prompt-colon {
expand: false;
str: ":";
margin: 0px 0.3em 0em 0em ;
text-color: @drac-grn;
}
element-text, element-icon {
background-color: inherit;
text-color: inherit;
}

View File

@@ -0,0 +1,8 @@
{ pkgs, ... }:
{
programs.rofi = {
enable = true;
theme = ./colour.rasi;
};
}