Switch to waybar
This commit is contained in:
parent
3e9863bb6a
commit
10268bc53f
6 changed files with 301 additions and 56 deletions
|
@ -1,7 +1,7 @@
|
||||||
{ pkgs, ... }:
|
{ pkgs, ... }:
|
||||||
{
|
{
|
||||||
home-manager.users.mae = {
|
home-manager.users.mae = {
|
||||||
imports = [ ../mae/home-manager-base.nix ../profiles/sway/desktop.nix ];
|
imports = [ ../mae/home-manager-base.nix ];
|
||||||
};
|
};
|
||||||
users = (import ../mae/user.nix { inherit pkgs; });
|
users = (import ../mae/user.nix { inherit pkgs; });
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
{ pkgs, ... }:
|
{ pkgs, ... }:
|
||||||
{
|
{
|
||||||
home-manager.users.mae = {
|
home-manager.users.mae = {
|
||||||
imports = [ ../mae/home-manager-base.nix ../profiles/sway/laptop.nix ];
|
imports = [ ../mae/home-manager-base.nix ];
|
||||||
};
|
};
|
||||||
users = (import ../mae/user.nix { inherit pkgs; });
|
users = (import ../mae/user.nix { inherit pkgs; });
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
{ pkgs, ... }:
|
{ pkgs, ... }:
|
||||||
{
|
{
|
||||||
imports = [ ../profiles/direnv ../profiles/git ../profiles/zsh ../profiles/neovim ../profiles/syncthing ../profiles/kdeconnect ../profiles/podman ../profiles/alacritty ../profiles/tmux ../profiles/mpv ];
|
imports = [ ../profiles/direnv ../profiles/git ../profiles/zsh ../profiles/neovim ../profiles/syncthing ../profiles/kdeconnect ../profiles/podman ../profiles/alacritty ../profiles/tmux ../profiles/mpv ../profiles/sway ];
|
||||||
|
|
||||||
home.sessionVariables = {
|
home.sessionVariables = {
|
||||||
XDG_DATA_DIRS = "$XDG_DATA_DIRS:/var/lib/flatpak/exports/share:$HOME/.local/share/flatpak/exports/share";
|
XDG_DATA_DIRS = "$XDG_DATA_DIRS:/var/lib/flatpak/exports/share:$HOME/.local/share/flatpak/exports/share";
|
||||||
|
|
|
@ -25,10 +25,8 @@ in
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
bars = [{
|
bars = [{
|
||||||
id = "top";
|
|
||||||
statusCommand = "${pkgs.i3status-rust}/bin/i3status-rs";
|
|
||||||
position = "top";
|
position = "top";
|
||||||
trayOutput = "*";
|
command = "${pkgs.waybar}/bin/waybar";
|
||||||
}];
|
}];
|
||||||
floating.criteria = [{ title = "Steam - Update News"; }];
|
floating.criteria = [{ title = "Steam - Update News"; }];
|
||||||
startup = [
|
startup = [
|
||||||
|
@ -55,6 +53,41 @@ in
|
||||||
export _JAVA_AWT_WM_NONREPARENTING=1
|
export _JAVA_AWT_WM_NONREPARENTING=1
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
programs.waybar = {
|
||||||
|
enable = true;
|
||||||
|
settings = {
|
||||||
|
mainBar = {
|
||||||
|
layer = "top";
|
||||||
|
position = "top";
|
||||||
|
modules-left = [ "sway/workspaces" "sway/mode" ];
|
||||||
|
modules-center = [ ];
|
||||||
|
modules-right = [ "custom/riley-gender" "disk" "battery" "backlight" "pulseaudio" "clock" "tray" ];
|
||||||
|
"custom/riley-gender" = {
|
||||||
|
interval = "360";
|
||||||
|
exec = pkgs.writeShellScript "hello-from-waybar" ''
|
||||||
|
set -euo pipefail
|
||||||
|
gender="$(${pkgs.curl}/bin/curl 'https://rly.cx/api/gender')"
|
||||||
|
pronouns="$(${pkgs.curl}/bin/curl 'https://rly.cx/api/pronouns')"
|
||||||
|
echo -n "Riley: $gender ($pronouns)"
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
backlight = {
|
||||||
|
on-scroll-up = "${pkgs.brightnessctl}/bin/brightnessctl s +1%";
|
||||||
|
on-scroll-down = "${pkgs.brightnessctl}/bin/brightnessctl s 1%- -n 1";
|
||||||
|
};
|
||||||
|
clock = {
|
||||||
|
format = "{:%a %d %b %H:%M}";
|
||||||
|
};
|
||||||
|
disk = {
|
||||||
|
format = "{percentage_free}%({free})";
|
||||||
|
};
|
||||||
|
pulseaudio = {
|
||||||
|
on-click-right = "${pkgs.pulseaudio}/bin/pactl set-sink-mute @DEFAULT_SINK@ toggle";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
style = ./waybar.css;
|
||||||
|
};
|
||||||
|
|
||||||
programs.rofi = {
|
programs.rofi = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
@ -71,47 +104,5 @@ in
|
||||||
defaultTimeout = 2000;
|
defaultTimeout = 2000;
|
||||||
};
|
};
|
||||||
|
|
||||||
programs.i3status-rust = {
|
|
||||||
enable = true;
|
|
||||||
bars.bar_0 = {
|
|
||||||
blocks = [
|
|
||||||
{
|
|
||||||
block = "custom";
|
|
||||||
command = ''
|
|
||||||
set -euo pipefail
|
|
||||||
gender="$(${pkgs.curl}/bin/curl 'https://rly.cx/api/gender')"
|
|
||||||
pronouns="$(${pkgs.curl}/bin/curl 'https://rly.cx/api/pronouns')"
|
|
||||||
echo -n "Riley: $gender ($pronouns)"
|
|
||||||
'';
|
|
||||||
interval = 360;
|
|
||||||
}
|
|
||||||
{
|
|
||||||
block = "disk_space";
|
|
||||||
path = "/";
|
|
||||||
info_type = "available";
|
|
||||||
unit = "GB";
|
|
||||||
interval = 60;
|
|
||||||
warning = 20.0;
|
|
||||||
alert = 10.0;
|
|
||||||
}
|
|
||||||
{
|
|
||||||
block = "memory";
|
|
||||||
display_type = "memory";
|
|
||||||
format_mem = "{mem_used}/{mem_total}({mem_used_percents})";
|
|
||||||
format_swap = "{swap_used}/{swap_total}({swap_used_percents})";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
block = "cpu";
|
|
||||||
interval = 1;
|
|
||||||
}
|
|
||||||
{ block = "sound"; }
|
|
||||||
{
|
|
||||||
block = "time";
|
|
||||||
interval = 60;
|
|
||||||
format = "%a %d/%m %R";
|
|
||||||
}
|
|
||||||
];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
home.packages = [ scripts.lockscreen ];
|
home.packages = [ scripts.lockscreen ];
|
||||||
}
|
}
|
|
@ -1,8 +0,0 @@
|
||||||
{ pkgs, lib, ... }:
|
|
||||||
let
|
|
||||||
desk = (import ./desktop.nix { inherit pkgs lib; });
|
|
||||||
desk_blocks = desk.programs.i3status-rust.bars.bar_0.blocks;
|
|
||||||
lap_blocks = [{ block = "backlight"; } { block = "battery"; }] ++ desk_blocks;
|
|
||||||
lap = lib.recursiveUpdate desk { programs.i3status-rust.bars.bar_0.blocks = lap_blocks; };
|
|
||||||
in
|
|
||||||
lap
|
|
262
users/profiles/sway/waybar.css
Normal file
262
users/profiles/sway/waybar.css
Normal file
|
@ -0,0 +1,262 @@
|
||||||
|
* {
|
||||||
|
/* `otf-font-awesome` is required to be installed for icons */
|
||||||
|
font-family: FontAwesome, Roboto, Helvetica, Arial, sans-serif;
|
||||||
|
font-size: 11px;
|
||||||
|
}
|
||||||
|
|
||||||
|
window#waybar {
|
||||||
|
background-color: rgba(43, 48, 59, 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;
|
||||||
|
}
|
||||||
|
|
||||||
|
#workspaces button {
|
||||||
|
padding: 0 5px;
|
||||||
|
background-color: transparent;
|
||||||
|
color: #ffffff;
|
||||||
|
/* Use box-shadow instead of border so the text isn't offset */
|
||||||
|
box-shadow: inset 0 -3px transparent;
|
||||||
|
/* Avoid rounded borders under each workspace name */
|
||||||
|
border: none;
|
||||||
|
border-radius: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* https://github.com/Alexays/Waybar/wiki/FAQ#the-workspace-buttons-have-a-strange-hover-effect */
|
||||||
|
#workspaces button:hover {
|
||||||
|
background: rgba(0, 0, 0, 0.2);
|
||||||
|
box-shadow: inset 0 -3px #ffffff;
|
||||||
|
}
|
||||||
|
|
||||||
|
#workspaces button.focused {
|
||||||
|
background-color: #64727D;
|
||||||
|
box-shadow: inset 0 -3px #ffffff;
|
||||||
|
}
|
||||||
|
|
||||||
|
#workspaces button.urgent {
|
||||||
|
background-color: #eb4d4b;
|
||||||
|
}
|
||||||
|
|
||||||
|
#mode {
|
||||||
|
background-color: #64727D;
|
||||||
|
border-bottom: 3px solid #ffffff;
|
||||||
|
}
|
||||||
|
|
||||||
|
#clock,
|
||||||
|
#battery,
|
||||||
|
#cpu,
|
||||||
|
#memory,
|
||||||
|
#disk,
|
||||||
|
#temperature,
|
||||||
|
#backlight,
|
||||||
|
#network,
|
||||||
|
#pulseaudio,
|
||||||
|
#custom-media,
|
||||||
|
#mode,
|
||||||
|
#idle_inhibitor,
|
||||||
|
#custom-riley-gender,
|
||||||
|
#mpd {
|
||||||
|
padding: 0 10px;
|
||||||
|
color: #ffffff;
|
||||||
|
}
|
||||||
|
|
||||||
|
#tray * {
|
||||||
|
padding: 0 5px;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
#custom-riley-gender {
|
||||||
|
background-color: #7D9EFF;
|
||||||
|
}
|
||||||
|
|
||||||
|
#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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#battery.critical:not(.charging) {
|
||||||
|
background-color: #f53c3c;
|
||||||
|
color: #ffffff;
|
||||||
|
animation-name: blink;
|
||||||
|
animation-duration: 0.5s;
|
||||||
|
animation-timing-function: linear;
|
||||||
|
animation-iteration-count: infinite;
|
||||||
|
animation-direction: alternate;
|
||||||
|
}
|
||||||
|
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
|
||||||
|
#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);
|
||||||
|
}
|
Loading…
Reference in a new issue