Steam deck perhaps

This commit is contained in:
2023-06-24 16:27:46 +01:00
parent 5eb965823e
commit 8864fc294d
120 changed files with 208 additions and 339 deletions

View File

@@ -0,0 +1,9 @@
{config, ...}: {
imports = [
# ./i3
# ./i3status-rust
# ./polybar
./hyprland
./waybar
];
}

View File

@@ -0,0 +1,209 @@
{
config,
lib,
pkgs,
hostname,
...
}: let
closer = pkgs.writeShellApplication {
name = "closer";
runtimeInputs = with pkgs; [jq xdotool];
text = ''
if [ "$(hyprctl activewindow -j | jq -r ".class")" = "Steam" ]; then
xdotool getactivewindow windowunmap
else
hyprctl dispatch killactive ""
fi
'';
};
in {
home.packages = with pkgs; [
swaybg
];
home.file = {
".config/hypr/macchiato.conf" = {
source = ./macchiato.conf;
};
};
wayland.windowManager.hyprland = {
enable = true;
package = pkgs.hyprland;
xwayland = {
enable = true;
hidpi = true;
};
nvidiaPatches = true;
extraConfig =
(builtins.readFile ./${hostname}.conf)
+ ''
# See https://wiki.hyprland.org/Configuring/Keywords/ for more
# Execute your favorite apps at launch
exec-once = waybar
exec-once = swaybg -i ~/wallpapers/wallpaper.jpg
# Source a file (multi-file configs)
# source = ~/.config/hypr/myColors.conf
source = ./macchiato.conf
# For all categories, see https://wiki.hyprland.org/Configuring/Variables/
input {
kb_layout = gb
kb_variant =
kb_model =
kb_options = caps:escape
kb_rules =
follow_mouse = 2
touchpad {
natural_scroll = yes
middle_button_emulation = yes
scroll_factor = 0.5
}
accel_profile = flat
sensitivity = 0.5 # -1.0 - 1.0, 0 means no modification.
}
general {
# See https://wiki.hyprland.org/Configuring/Variables/ for more
gaps_in = 5
gaps_out = 10
border_size = 2
col.active_border = $green
col.inactive_border = rgba(595959aa)
layout = dwindle
}
decoration {
# See https://wiki.hyprland.org/Configuring/Variables/ for more
rounding = 10
blur = yes
blur_size = 3
blur_passes = 1
blur_new_optimizations = on
drop_shadow = yes
shadow_range = 4
shadow_render_power = 3
col.shadow = rgba(1a1a1aee)
}
animations {
enabled = yes
# Some default animations, see https://wiki.hyprland.org/Configuring/Animations/ for more
bezier = myBezier, 0.05, 0.9, 0.1, 1.05
animation = windows, 1, 3, myBezier
animation = windowsOut, 1, 3, default, popin 80%
animation = border, 1, 3, default
animation = borderangle, 1, 3, default
animation = fade, 1, 3, default
animation = workspaces, 1, 3, default
}
dwindle {
# See https://wiki.hyprland.org/Configuring/Dwindle-Layout/ for more
pseudotile = yes # master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below
preserve_split = yes # you probably want this
}
master {
# See https://wiki.hyprland.org/Configuring/Master-Layout/ for more
new_is_master = true
}
gestures {
# See https://wiki.hyprland.org/Configuring/Variables/ for more
workspace_swipe = off
}
# Example per-device config
# See https://wiki.hyprland.org/Configuring/Keywords/#executing for more
device:epic mouse V1 {
sensitivity = -0.5
}
# Example windowrule v1
# windowrule = float, ^(kitty)$
# Example windowrule v2
# windowrulev2 = float,class:^(kitty)$,title:^(kitty)$
# See https://wiki.hyprland.org/Configuring/Window-Rules/ for more
# Example binds, see https://wiki.hyprland.org/Configuring/Binds/ for more
bind = $mainMod, return, exec, kitty
# bind = $mainMod, Q, killactive,
bind = $mainMod, Q, exec, ${closer}/bin/closer
bind = $mainMod, D, exec, wofi --show drun
bind = $mainMod SHIFT, S, exec, grim -g $(slurp)
# Move focus with mainMod + vim keys
bind = $mainMod, H, movefocus, l
bind = $mainMod, L, movefocus, r
bind = $mainMod, K, movefocus, u
bind = $mainMod, J, movefocus, d
# Move focus with mainMod + vim keys
bind = $mainMod, left, movewindow, l
bind = $mainMod, right, movewindow, r
bind = $mainMod, up, movewindow, u
bind = $mainMod, down, movewindow, d
# Switch workspaces with mainMod + [0-9]
bind = $mainMod, 1, workspace, 1
bind = $mainMod, 2, workspace, 2
bind = $mainMod, 3, workspace, 3
bind = $mainMod, 4, workspace, 4
bind = $mainMod, 5, workspace, 5
bind = $mainMod, 6, workspace, 6
bind = $mainMod, 7, workspace, 7
bind = $mainMod, 8, workspace, 8
bind = $mainMod, 9, workspace, 9
bind = $mainMod, 0, workspace, 10
# Move active window to a workspace with mainMod + SHIFT + [0-9]
bind = $mainMod SHIFT, 1, movetoworkspace, 1
bind = $mainMod SHIFT, 2, movetoworkspace, 2
bind = $mainMod SHIFT, 3, movetoworkspace, 3
bind = $mainMod SHIFT, 4, movetoworkspace, 4
bind = $mainMod SHIFT, 5, movetoworkspace, 5
bind = $mainMod SHIFT, 6, movetoworkspace, 6
bind = $mainMod SHIFT, 7, movetoworkspace, 7
bind = $mainMod SHIFT, 8, movetoworkspace, 8
bind = $mainMod SHIFT, 9, movetoworkspace, 9
bind = $mainMod SHIFT, 0, movetoworkspace, 10
bind = $mainMod, U, movetoworkspace, -1
bind = $mainMod, I, movetoworkspace, +1
bind = $mainMod SHIFT, space, togglefloating,
bind=$mainMod, escape, exec, swaylock -i ~/wallpapers/lock.png
binde=, XF86AudioLowerVolume, exec, wpctl set-volume -l 1.0 @DEFAULT_AUDIO_SINK@ 5%-
bind=, XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle
binde=, XF86AudioRaiseVolume, exec, wpctl set-volume -l 1.0 @DEFAULT_AUDIO_SINK@ 5%+
binde=, XF86MonBrightnessUp, exec, xbacklight -inc 10
binde=, XF86MonBrightnessDown, exec, xbacklight -dec 10
# Move/resize windows with mainMod + LMB/RMB and dragging
bindm = $mainMod, mouse:272, movewindow
bindm = $mainMod, mouse:273, resizewindow
'';
};
services.mako = {
enable = true;
};
}

View File

@@ -0,0 +1,7 @@
monitor=,preferred,auto,1.25
$mainMod = CTRL + SHIFT + ALT
bind = $mainMod + SUPER, Q, exit,
bind = $mainMod, M, workspace, -1
bind = $mainMod, comma, workspace, +1

View File

@@ -0,0 +1,30 @@
$rosewater = 0xfff4dbd6
$flamingo = 0xfff0c6c6
$pink = 0xfff5bde6
$mauve = 0xffc6a0f6
$red = 0xffed8796
$maroon = 0xffee99a0
$peach = 0xfff5a97f
$yellow = 0xffeed49f
$green = 0xffa6da95
$teal = 0xff8bd5ca
$sky = 0xff91d7e3
$sapphire = 0xff7dc4e4
$blue = 0xff8aadf4
$lavender = 0xffb7bdf8
$text = 0xffcad3f5
$subtext1 = 0xffb8c0e0
$subtext0 = 0xffa5adcb
$overlay2 = 0xff939ab7
$overlay1 = 0xff8087a2
$overlay0 = 0xff6e738d
$surface2 = 0xff5b6078
$surface1 = 0xff494d64
$surface0 = 0xff363a4f
$base = 0xff24273a
$mantle = 0xff1e2030
$crust = 0xff181926

View File

@@ -0,0 +1,10 @@
monitor=eDP-1,preferred,auto,1.5
monitor=,preferred,auto,1
$mainMod = SUPER
bind = $mainMod + SHIFT + CTRL, Q, exit,
bind = $mainMod + CTRL, H, workspace, -1
bind = $mainMod + CTRL, L, workspace, +1
bind = $mainMod + SHIFT, H, movetoworkspace, -1
bind = $mainMod + SHIFT, L, movetoworkspace, +1

View File

@@ -0,0 +1,240 @@
{
config,
lib,
pkgs,
...
}: let
mod = "Mod4";
hyper = "Control+Shift+Mod1";
in {
home.file = {
"bin/scripts/goup" = {
source = ./goup;
executable = true;
};
"bin/scripts/godown" = {
source = ./godown;
executable = true;
};
"bin/scripts/flower" = {
source = ./flower;
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 {
"${hyper}+Return" = "exec kitty";
"${mod}+q" = "kill";
"${mod}+d" = "exec rofi -show drun";
"${hyper}+q" = "kill";
"${hyper}+d" = "exec rofi -show drun";
"${mod}+h" = "focus left";
"${mod}+j" = "focus down";
"${mod}+k" = "focus up";
"${mod}+l" = "focus right";
"${hyper}+h" = "focus left";
"${hyper}+j" = "focus down";
"${hyper}+k" = "focus up";
"${hyper}+l" = "focus right";
"${mod}+Shift+h" = "move left";
"${mod}+Shift+l" = "move right";
"${hyper}+y" = "move left";
"${hyper}+o" = "move right";
"${mod}+Tab" = "workspace back_and_forth";
"${hyper}+Tab" = "workspace back_and_forth";
"${mod}+b" = "split h";
"${mod}+v" = "split v";
"${hyper}+b" = "split h";
"${hyper}+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+u" = "exec --no-startup-id $HOME/bin/scripts/godown";
"${mod}+Control+i" = "exec --no-startup-id $HOME/bin/scripts/goup";
"${mod}+Control+h" = "exec --no-startup-id i3utils workspace new -b";
"${hyper}+m" = "exec --no-startup-id $HOME/bin/scripts/godown";
"${hyper}+comma" = "exec --no-startup-id $HOME/bin/scripts/goup";
"${mod}+Shift+k" = "exec --no-startup-id i3utils window move prev";
"${mod}+Shift+j" = "exec --no-startup-id i3utils window move next";
"${hyper}+i" = "exec --no-startup-id i3utils window move prev";
"${hyper}+u" = "exec --no-startup-id i3utils window move next";
"${mod}+p" = "scratchpad show, resize set 80 ppt 80ppt, move position center";
"${hyper}+p" = "scratchpad show, resize set 80 ppt 80ppt, move position center";
"${mod}+Escape" = "exec loginctl lock-session";
"${hyper}+Escape" = "exec loginctl lock-session";
"${hyper}+f" = "fullscreen toggle";
"XF86MonBrightnessUp" = "exec xbacklight -inc 10";
"XF86MonBrightnessDown" = "exec xbacklight -dec 10";
"XF86AudioMute" = "exec pamixer -t";
"XF86AudioLowerVolume" = "exec pamixer -d 5";
"XF86AudioRaiseVolume" = "exec pamixer -i 5";
"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";
window_type = "normal";
};
}
];
};
};
};
};
}

View File

@@ -0,0 +1,5 @@
#!/usr/bin/env bash
pkill i3utils
i3utils workspace temp 2>&1 | tee -a /tmp/temp.log & disown

10
users/configs/desktop/i3/godown Executable file
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

6
users/configs/desktop/i3/goup Executable file
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,67 @@
{
config,
pkgs,
lib,
hostname,
...
}: let
filterBacklight = list:
builtins.filter (item:
!(builtins.elem item.block (
if hostname == "dingbox"
then ["backlight" "battery"]
else []
)))
list;
in {
programs.i3status-rust = {
enable = true;
bars = {
main = {
theme = "dracula";
icons = "awesome";
blocks =
[
{
block = "time";
}
]
++ lib.optionals (hostname == "pingbox") [
{
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 = "spotifyd";
buttons = ["prev" "play" "next"];
}
{
block = "sound";
}
];
};
};
};
}

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-color;
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-color;
text-color: @foreground;
}
#element.normal.urgent {
background-color: @urgent-background;
text-color: @urgent-foreground;
}
#element.normal.active {
background-color: @active-background;
text-color: @background-color;
}
#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-color;
}
#element.alternate.normal {
background-color: @background-color;
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,6 @@
{pkgs, ...}: {
programs.rofi = {
enable = true;
theme = ./colour.rasi;
};
}

View File

@@ -0,0 +1,69 @@
{
"layer": "top",
"modules-left": ["wlr/workspaces", "hyprland/window"],
"modules-center": ["clock"],
"modules-right": [
"backlight",
"pulseaudio",
"network",
"battery",
"tray"
],
"hyprland/window": {
"separate-outputs": true
},
"network": {
"tooltip-format": "{ipaddr}",
"format-wifi": "{icon} {essid}",
"format-ethernet": "󰈀 {ifname}",
"format-icons": [
"󰤯",
"󰤟",
"󰤢",
"󰤥",
"󰤨"
]
},
"battery": {
"format": "{icon} {capacity}%",
"format-icons": [
"",
"",
"",
"",
""
]
},
"backlight": {
"format": "{percent}% {icon}",
"format-icons": ["", ""]
},
"wlr/workspaces": {
"on-scroll-up": "hyprctl dispatch workspace e+1",
"on-scroll-down": "hyprctl dispatch workspace e-1",
"on-click": "activate",
"format": "{icon}",
"format-icons": {
"urgent": "",
"active": "",
"default": ""
}
},
"clock": {
"interval": 1,
"format-alt": "{:%a, %d. %b %H:%M:%S}"
},
"pulseaudio": {
"format": "{icon} {volume}%",
"format-muted": "󰖁 MUTED",
"format-icons": {
"default": [
"󰕿",
"󰖀",
"󰕾"
]
},
"max-volume": 100,
"on-click": "pavucontrol"
}
}

View File

@@ -0,0 +1,18 @@
{
config,
pkgs,
lib,
hostname,
...
}: {
programs.waybar = {
enable = true;
package = pkgs.waybar-hyprland;
settings = {
main = lib.importJSON ./config.json;
};
style = ./style.css;
};
home.file.".config/waybar/macchiato.css".source = ./macchiato.css;
}

View File

@@ -0,0 +1,37 @@
/*
*
* Catppuccin Mocha palette
* Maintainer: rubyowo
*
*/
@define-color base #24273a;
@define-color mantle #1e2030;
@define-color crust #181926;
@define-color text #cad3f5;
@define-color subtext0 #a5adcb;
@define-color subtext1 #b8c0e0;
@define-color surface0 #363a4f;
@define-color surface1 #494d64;
@define-color surface2 #5b6078;
@define-color overlay0 #6e738d;
@define-color overlay1 #8087a2;
@define-color overlay2 #939ab7;
@define-color blue #8aadf4;
@define-color lavender #b7bdf8;
@define-color sapphire #7dc4e4;
@define-color sky #91d7e3;
@define-color teal #8bd5ca;
@define-color green #a6da95;
@define-color yellow #eed49f;
@define-color peach #f5a97f;
@define-color maroon #ee99a0;
@define-color red #ed8796;
@define-color mauve #c6a0f6;
@define-color pink #f5bde6;
@define-color flamingo #f0c6c6;
@define-color rosewater #f4dbd6;

View File

@@ -0,0 +1,51 @@
@import "macchiato.css";
window#waybar {
background: @base;
color: @text;
}
#workspaces button.active {
color: @green;
background: @surface2;
}
#battery.charging {
color: @base;
background: @green;
}
#battery.discharging {
color: @base;
background: @yellow;
}
* {
border: none;
min-height: 0;
font-family: "Iosevka Nerd Font Propo", "Font Awesome";
font-size: 16px;
}
#workspaces, #tray, #battery, #backlight, #pulseaudio, #network {
padding: 0 5px;
}
#network.ethernet, #network.wifi {
color: @base;
background: @blue;
}
#network.disabled, #network.disconnected {
color: @base;
background: @red;
}
#pulseaudio {
color: @base;
background: @green;
}
#pulseaudio.muted {
background: @red;
}