From b8a5c62b112859f463a53ac97b43f7f8cdc544a9 Mon Sep 17 00:00:00 2001 From: spl3g Date: Sun, 31 Dec 2023 15:08:06 +0300 Subject: uhm --- home-manager/laptop/default.nix | 17 ++ home-manager/laptop/home.nix~ | 16 ++ home-manager/laptop/hyprland/cat.png | Bin 0 -> 15467 bytes home-manager/laptop/hyprland/default.nix | 27 +++ home-manager/laptop/hyprland/hyprland.conf | 185 +++++++++++++++++++ .../laptop/hyprland/scripts/battery-level.sh | 22 +++ home-manager/laptop/hyprland/scripts/hshot | 45 +++++ home-manager/laptop/hyprland/scripts/kill | 7 + home-manager/laptop/hyprland/scripts/rnew.fish | 8 + home-manager/laptop/hyprland/scripts/rofi-modes | 20 ++ home-manager/laptop/programs/ags/bar/config.js | 203 +++++++++++++++++++++ home-manager/laptop/programs/ags/bar/style.css | 26 +++ home-manager/laptop/programs/ags/default.nix | 8 + home-manager/laptop/programs/default.nix | 4 + home-manager/laptop/programs/default.nix~ | 28 +++ .../programs/rofi/#squared-material-pine.rasi# | 97 ++++++++++ .../programs/rofi/.#squared-material-pine.rasi | 1 + home-manager/laptop/programs/rofi/config.rasi | 156 ++++++++++++++++ home-manager/laptop/programs/rofi/default.nix | 18 ++ .../programs/rofi/squared-material-pine.rasi | 97 ++++++++++ home-manager/laptop/programs/rofi/theme.rasi | 125 +++++++++++++ home-manager/laptop/programs/waybar/config.jsonc | 94 ++++++++++ home-manager/laptop/programs/waybar/default.nix | 19 ++ home-manager/laptop/programs/waybar/style.css | 31 ++++ home-manager/laptop/services/default.nix | 3 + home-manager/laptop/services/mako/default.nix | 23 +++ 26 files changed, 1280 insertions(+) create mode 100644 home-manager/laptop/default.nix create mode 100644 home-manager/laptop/home.nix~ create mode 100644 home-manager/laptop/hyprland/cat.png create mode 100644 home-manager/laptop/hyprland/default.nix create mode 100644 home-manager/laptop/hyprland/hyprland.conf create mode 100755 home-manager/laptop/hyprland/scripts/battery-level.sh create mode 100755 home-manager/laptop/hyprland/scripts/hshot create mode 100755 home-manager/laptop/hyprland/scripts/kill create mode 100755 home-manager/laptop/hyprland/scripts/rnew.fish create mode 100755 home-manager/laptop/hyprland/scripts/rofi-modes create mode 100644 home-manager/laptop/programs/ags/bar/config.js create mode 100644 home-manager/laptop/programs/ags/bar/style.css create mode 100644 home-manager/laptop/programs/ags/default.nix create mode 100644 home-manager/laptop/programs/default.nix create mode 100644 home-manager/laptop/programs/default.nix~ create mode 100644 home-manager/laptop/programs/rofi/#squared-material-pine.rasi# create mode 120000 home-manager/laptop/programs/rofi/.#squared-material-pine.rasi create mode 100644 home-manager/laptop/programs/rofi/config.rasi create mode 100644 home-manager/laptop/programs/rofi/default.nix create mode 100644 home-manager/laptop/programs/rofi/squared-material-pine.rasi create mode 100644 home-manager/laptop/programs/rofi/theme.rasi create mode 100644 home-manager/laptop/programs/waybar/config.jsonc create mode 100644 home-manager/laptop/programs/waybar/default.nix create mode 100644 home-manager/laptop/programs/waybar/style.css create mode 100644 home-manager/laptop/services/default.nix create mode 100644 home-manager/laptop/services/mako/default.nix (limited to 'home-manager/laptop') diff --git a/home-manager/laptop/default.nix b/home-manager/laptop/default.nix new file mode 100644 index 0000000..66aa183 --- /dev/null +++ b/home-manager/laptop/default.nix @@ -0,0 +1,17 @@ +{ inputs, ... }: +let + imports = builtins.concatMap import [ + ./programs + ./services + ] ++ nonListImports; + nonListImports = [ + inputs.hyprland.homeManagerModules.default + inputs.ags.homeManagerModules.default + ./hyprland + ../general + ]; +in +{ + inherit imports; +} + diff --git a/home-manager/laptop/home.nix~ b/home-manager/laptop/home.nix~ new file mode 100644 index 0000000..fa99095 --- /dev/null +++ b/home-manager/laptop/home.nix~ @@ -0,0 +1,16 @@ +{ inputs, ... }: +let + imports = builtins.concatMap [ + ./programs + ./services + ./hyprland + ] ++ [ + inputs.hyprland.homeManagerModules.default + inputs.ags.homeManagerModules.default + ./themes + ]; +in +{ + +} + diff --git a/home-manager/laptop/hyprland/cat.png b/home-manager/laptop/hyprland/cat.png new file mode 100644 index 0000000..5657a78 Binary files /dev/null and b/home-manager/laptop/hyprland/cat.png differ diff --git a/home-manager/laptop/hyprland/default.nix b/home-manager/laptop/hyprland/default.nix new file mode 100644 index 0000000..9f911e1 --- /dev/null +++ b/home-manager/laptop/hyprland/default.nix @@ -0,0 +1,27 @@ +{ pkgs, ... }: +let + configFile = builtins.readFile ./hyprland.conf; + scripts = '' + $scripts=${./scripts} + ''; + overrides = '' + exec-once=swww init && swww img ${./cat.png} + ''; + extraConfig = scripts + configFile + overrides; + +in +{ + home.packages = with pkgs; [ + swww + brightnessctl + slurp + grim + cliphist + xdg-desktop-portal-hyprland + ]; + wayland.windowManager.hyprland = { + enable = true; + package = pkgs.hyprland; + inherit extraConfig; + }; +} diff --git a/home-manager/laptop/hyprland/hyprland.conf b/home-manager/laptop/hyprland/hyprland.conf new file mode 100644 index 0000000..376dd52 --- /dev/null +++ b/home-manager/laptop/hyprland/hyprland.conf @@ -0,0 +1,185 @@ +monitor = eDP-1,preferred,auto,1 +monitor = ,highres,auto,1,mirror,eDP-1 + +input { + kb_file= + kb_layout = us,ru + kb_variant= + kb_model= + kb_options = grp:win_space_toggle + kb_rules= + + follow_mouse = 1 + + touchpad { + natural_scroll = yes + clickfinger_behavior = yes + scroll_factor = 0.8 + # disable_while_typing = no + } + + sensitivity = 0 # -1.0 - 1.0, 0 means no modification. +} + +general { + gaps_in = 5 + gaps_out = 20 + border_size = 3 + col.active_border = 0xFF6e6a86 + col.inactive_border = 0xFF363a4f + apply_sens_to_raw = 0 # whether to apply the sensitivity to raw input (e.g. used by games where you aim using your mouse) + layout = dwindle +} + +decoration { + rounding = 7 + drop_shadow = false + shadow_range = 5 + shadow_offset = [100, 100] +} + +animations { + enabled = 1 + bezier = overshot,0.13,0.99,0.29,1.1, + animation = fade,1,4,default + animation = workspaces,1,4,default,fade + animation = windows,1,4,overshot,popin 95% +} + +dwindle { + pseudotile = 0 # enable pseudotiling on dwindle +} + +gestures { + workspace_swipe = yes +} + +windowrulev2 = float, title:^(Firrfox — Sharing Indicator)$ +windowrulev2 = nofullscreenrequest, title:^(Firefox — Sharing Indicator)$ +windowrulev2 = noborder, title:^(Firefox — Sharing Indicator)$ +windowrulev2 = rounding 0, title:^(Firefox — Sharing Indicator)$ +windowrulev2 = float, title:^(firefox)$, title:^(Picture-in-Picture)$ +windowrulev2 = pin, title:^(firefox)$, title:^(Picture-in-Picture)$ +windowrulev2 = rounding 7, title:^(rofi)$ +layerrule = blur, waybar + +# some nice mouse binds +bindm = SUPER,mouse:272,movewindow +bindm = SUPER,mouse:273,resizewindow + +# Binds +bind = SUPER_SHIFT,Q,exec,$scripts/kill +bind = SUPER_SHIFT,E,exit, +bind = ,0x1008FF2A,exec,nwg-bar +bind = SUPER,V,togglefloating, +bind = SUPER_SHIFT,V,centerwindow +bind = SUPER,P,pseudo, +bind = SUPER,F,fullscreen,0 +bind = SUPER_SHIFT,F,fakefullscreen +bind = SUPER,M,fullscreen,1 +bind = SUPER,N,exec,killall -SIGUSR1 waybar +bind = SUPER_SHIFT,N,exec,killall -SIGUSR2 waybar + +# Lockscreen +bind = SUPER_SHIFT,P,exec,bash -c ~/Games/swaylock-blur.sh + +# Change colume +bind = ,0x1008FF11,exec,wpctl status | grep '*' -m 1 | awk '{print $3 - 0}' | xargs -I _ wpctl set-volume _ 5%- +bind = ,0x1008FF13,exec,wpctl status | grep '*' -m 1 | awk '{print $3 - 0}' | xargs -I _ wpctl set-volume _ 5%+ +bind = ,0x1008FF12,exec,wpctl status | grep '*' -m 1 | awk '{print $3 - 0}' | xargs -I _ wpctl set-mute _ toggle + +# Change brightness +bind = ,0x1008FF02,exec,brightnessctl s +5% +bind = ,0x1008FF03,exec,brightnessctl s 5%- + +# App binds +bind = SUPER,Q,exec,alacritty +bind = SUPER,B,exec,firefox +bind = SUPER_SHIFT,R,exec,nautilus +bind = SUPER,T,exec,telegram-desktop +bind = SUPER,E,exec,emacsclient -c -a "emacs" +bind = SUPER_CONTROL,E,exec,emacs + +# Rofi +bind = SUPER,D,exec,killall rofi || rofi -show-icons -show drun +bind = SUPER,C,exec,$scripts/rofi-modes + +# Screenshots +bind = ,Print,exec,$scripts/hshot -m +bind = CONTROL,Print,exec,$scripts/hshot -m -c +bind = SHIFT,Print,exec,$scripts/hshot -s +bind = CONTROL_SHIFT,Print,exec,$scripts/hshot -s -c +bind = ALT,Print,exec,$scripts/hshot -w +bind = ALT_CONTROL,Print,exec,$scripts/hshot -w -c + +# Cycle through windows +bind = SUPER,J,movefocus,d +bind = SUPER,K,movefocus,u +bind = SUPER,H,movefocus,l +bind = SUPER,L,movefocus,r + +# Resize windows +# bind = SUPER_CONTROL,K,resizeactive,0 -50 +# bind = SUPER_CONTROL,J,resizeactive,0 50 +# bind = SUPER_CONTROL,H,resizeactive,-50 0 +# bind = SUPER_CONTROL,L,resizeactive,50 0 +bind = SUPER_CONTROL,K,splitratio,0.5 +bind = SUPER_CONTROL,J,splitratio,-0.5 + + +# Move windows +bind = SUPER_SHIFT,J,movewindow,d +bind = SUPER_SHIFT,K,movewindow,u +bind = SUPER_SHIFT,H,movewindow,l +bind = SUPER_SHIFT,L,movewindow,r + +# Move through workspaces +bind = SUPER,1,workspace,1 +bind = SUPER,2,workspace,2 +bind = SUPER,3,workspace,3 +bind = SUPER,4,workspace,4 +bind = SUPER,5,workspace,5 +bind = SUPER,6,workspace,6 +bind = SUPER,7,workspace,7 +bind = SUPER,8,workspace,8 +bind = SUPER,9,workspace,9 +bind = SUPER,0,workspace,10 + +# Move app to workspace +bind = ALT,1,movetoworkspace,1 +bind = ALT,2,movetoworkspace,2 +bind = ALT,3,movetoworkspace,3 +bind = ALT,4,movetoworkspace,4 +bind = ALT,5,movetoworkspace,5 +bind = ALT,6,movetoworkspace,6 +bind = ALT,7,movetoworkspace,7 +bind = ALT,8,movetoworkspace,8 +bind = ALT,9,movetoworkspace,9 +bind = ALT,0,movetoworkspace,10 + +# Move app to workspace silent +bind = SUPER_SHIFT,1,movetoworkspacesilent,1 +bind = SUPER_SHIFT,2,movetoworkspacesilent,2 +bind = SUPER_SHIFT,3,movetoworkspacesilent,3 +bind = SUPER_SHIFT,4,movetoworkspacesilent,4 +bind = SUPER_SHIFT,5,movetoworkspacesilent,5 +bind = SUPER_SHIFT,6,movetoworkspacesilent,6 +bind = SUPER_SHIFT,7,movetoworkspacesilent,7 +bind = SUPER_SHIFT,8,movetoworkspacesilent,8 +bind = SUPER_SHIFT,9,movetoworkspacesilent,9 +bind = SUPER_SHIFT,0,movetoworkspacesilent,10 + +# Mouse binds +bind = SUPER,mouse_down,workspace,e+1 +bind = SUPER,mouse_up,workspace,e-1 +bind = SUPER,up,workspace,e+1 + +# Startup apps +exec-once = mako +exec-once = dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP +exec-once = /usr/lib/polkit-kde-authentication-agent-1 +exec-once = emacs --daemon +exec-once = wl-paste --type text --watch cliphist store +exec-once = wl-paste --type image --watch cliphist store +exec-once = hyprctl setcursor Bibata-Modern-Ice 13 +exec-once = swww init \ No newline at end of file diff --git a/home-manager/laptop/hyprland/scripts/battery-level.sh b/home-manager/laptop/hyprland/scripts/battery-level.sh new file mode 100755 index 0000000..cc2d5cd --- /dev/null +++ b/home-manager/laptop/hyprland/scripts/battery-level.sh @@ -0,0 +1,22 @@ +#!/bin/sh +while true; do + # Check the battery level and charging status + battery_info=$(acpi -b) + + # Extract the battery level from the output of `acpi` + battery_level=$(echo $battery_info | grep -o "[0-9]*%" | sed "s/%//") + + # Check if the laptop is charging + if [[ $battery_info == *"Charging"* ]]; then + # If the laptop is charging, do nothing + : + else + # If the battery level is less than 15%, send a notification + if [ "$battery_level" -lt 15 ]; then + notify-send "Battery Low" "Battery level is at $battery_level%. Charge your laptop." + fi + fi + + # Sleep for 5 minutes before checking the battery level again + sleep 300 +done diff --git a/home-manager/laptop/hyprland/scripts/hshot b/home-manager/laptop/hyprland/scripts/hshot new file mode 100755 index 0000000..0d02b9c --- /dev/null +++ b/home-manager/laptop/hyprland/scripts/hshot @@ -0,0 +1,45 @@ +#!/bin/sh + +declare -a cmd + +usage() { + echo -e "-m | monitor\n-s | slurp\n-w | active window\n-c | add copy" +} + +monitor() { + cmd=("grim -o \"\$(hyprctl -j monitors | jq -r '.[] | select(.focused) | .name')\"") +} + +slurp() { + cmd=("grim -g \"\$(slurp)\"") +} + +window() { + cmd=("grim -g \"\$(hyprctl activewindow -j | jq -j '\"\(.at | .[0]),\(.at | .[1]) \(.size | .[0])x\(.size | .[1])\"')\"") +} + +copy() { + if [[ -n ${cmd[0]} ]]; then + cmd+=("- | wl-copy") + else + usage + fi +} + +while getopts ":mswc" opt; do + case ${opt} in + m) monitor;; + s) slurp;; + w) window;; + c) copy;; + *) usage + exit 1;; + esac +done + +if [[ -z $1 ]]; then + usage + exit 1 +fi + +bash -c "${cmd[*]}" diff --git a/home-manager/laptop/hyprland/scripts/kill b/home-manager/laptop/hyprland/scripts/kill new file mode 100755 index 0000000..40ab4a9 --- /dev/null +++ b/home-manager/laptop/hyprland/scripts/kill @@ -0,0 +1,7 @@ +#!/bin/sh + +if [[ $(hyprctl activewindow -j | jq -r '.class') =~ (kitty) ]]; then + kill $(hyprctl activewindow -j | jq '.pid') -s 9 +else + hyprctl dispatch killactive +fi diff --git a/home-manager/laptop/hyprland/scripts/rnew.fish b/home-manager/laptop/hyprland/scripts/rnew.fish new file mode 100755 index 0000000..743d7fd --- /dev/null +++ b/home-manager/laptop/hyprland/scripts/rnew.fish @@ -0,0 +1,8 @@ +#!/usr/bin/env fish + +ranger $argv +set quit_cd_wd_file "$HOME/.ranger_quit_cd_wd" +if test -s "$quit_cd_wd_file" + kitty -d "$(cat $quit_cd_wd_file)" --detach + true >"$quit_cd_wd_file" +end diff --git a/home-manager/laptop/hyprland/scripts/rofi-modes b/home-manager/laptop/hyprland/scripts/rofi-modes new file mode 100755 index 0000000..2d52802 --- /dev/null +++ b/home-manager/laptop/hyprland/scripts/rofi-modes @@ -0,0 +1,20 @@ +#!/bin/sh + +case $(echo -e "clipboard\nemoji\ncalc" | rofi -dmenu) in + emoji) arg=emoji;; + calc) arg=calc;; + clipboard) cliphist list | rofi -dmenu -display-columns 2 | cliphist decode | wl-copy + exit;; + bitwarden) if [[ $XDG_BACKEND == "wayland" ]]; then + typer=wtype + clip=wl-copy + else + typer=xdotool + clip=xclip + fi + rofi-rbw --typer $typer --clip $clip + exit;; + *)exit;; +esac + +rofi -modi $arg -show $arg diff --git a/home-manager/laptop/programs/ags/bar/config.js b/home-manager/laptop/programs/ags/bar/config.js new file mode 100644 index 0000000..8abf671 --- /dev/null +++ b/home-manager/laptop/programs/ags/bar/config.js @@ -0,0 +1,203 @@ +// importing +import Hyprland from 'resource:///com/github/Aylur/ags/service/hyprland.js'; +import Notifications from 'resource:///com/github/Aylur/ags/service/notifications.js'; +import Mpris from 'resource:///com/github/Aylur/ags/service/mpris.js'; +import Audio from 'resource:///com/github/Aylur/ags/service/audio.js'; +import Battery from 'resource:///com/github/Aylur/ags/service/battery.js'; +import SystemTray from 'resource:///com/github/Aylur/ags/service/systemtray.js'; +import App from 'resource:///com/github/Aylur/ags/app.js'; +import Widget from 'resource:///com/github/Aylur/ags/widget.js'; +import { exec, execAsync } from 'resource:///com/github/Aylur/ags/utils.js'; + +// widgets can be only assigned as a child in one container +// so to make a reuseable widget, just make it a function +// then you can use it by calling simply calling it + +const Workspaces = () => Widget.Box({ + className: 'workspaces', + connections: [[Hyprland.active.workspace, self => { + // generate an array [1..10] then make buttons from the index + const arr = Array.from({ length: 10 }, (_, i) => i + 1); + self.children = arr.map(i => Widget.Button({ + onClicked: () => execAsync(`hyprctl dispatch workspace ${i}`), + child: Widget.Label(`${i}`), + className: Hyprland.active.workspace.id == i ? 'focused' : '', + })); + }]], +}); + +const ClientTitle = () => Widget.Label({ + className: 'client-title', + binds: [ + ['label', Hyprland.active.client, 'title'], + ], +}); + +const Clock = () => Widget.Label({ + className: 'clock', + connections: [ + // this is bad practice, since exec() will block the main event loop + // in the case of a simple date its not really a problem + [1000, self => self.label = exec('date "+%H:%M:%S %b %e."')], + + // this is what you should do + [1000, self => execAsync(['date', '+%H:%M:%S %b %e.']) + .then(date => self.label = date).catch(console.error)], + ], +}); + +// we don't need dunst or any other notification daemon +// because the Notifications module is a notification daemon itself +const Notification = () => Widget.Box({ + className: 'notification', + children: [ + Widget.Icon({ + icon: 'preferences-system-notifications-symbolic', + connections: [ + [Notifications, self => self.visible = Notifications.popups.length > 0], + ], + }), + Widget.Label({ + connections: [[Notifications, self => { + self.label = Notifications.popups[0]?.summary || ''; + }]], + }), + ], +}); + +const Media = () => Widget.Button({ + className: 'media', + onPrimaryClick: () => Mpris.getPlayer('')?.playPause(), + onScrollUp: () => Mpris.getPlayer('')?.next(), + onScrollDown: () => Mpris.getPlayer('')?.previous(), + child: Widget.Label({ + connections: [[Mpris, self => { + const mpris = Mpris.getPlayer(''); + // mpris player can be undefined + if (mpris) + self.label = `${mpris.trackArtists.join(', ')} - ${mpris.trackTitle}`; + else + self.label = 'Nothing is playing'; + }]], + }), +}); + +const Volume = () => Widget.Box({ + className: 'volume', + css: 'min-width: 180px', + children: [ + Widget.Stack({ + items: [ + // tuples of [string, Widget] + ['101', Widget.Icon('audio-volume-overamplified-symbolic')], + ['67', Widget.Icon('audio-volume-high-symbolic')], + ['34', Widget.Icon('audio-volume-medium-symbolic')], + ['1', Widget.Icon('audio-volume-low-symbolic')], + ['0', Widget.Icon('audio-volume-muted-symbolic')], + ], + connections: [[Audio, self => { + if (!Audio.speaker) + return; + + if (Audio.speaker.isMuted) { + self.shown = '0'; + return; + } + + const show = [101, 67, 34, 1, 0].find( + threshold => threshold <= Audio.speaker.volume * 100); + + self.shown = `${show}`; + }, 'speaker-changed']], + }), + Widget.Slider({ + hexpand: true, + drawValue: false, + onChange: ({ value }) => Audio.speaker.volume = value, + connections: [[Audio, self => { + self.value = Audio.speaker?.volume || 0; + }, 'speaker-changed']], + }), + ], +}); + +const BatteryLabel = () => Widget.Box({ + className: 'battery', + children: [ + Widget.Icon({ + connections: [[Battery, self => { + self.icon = `battery-level-${Math.floor(Battery.percent / 10) * 10}-symbolic`; + }]], + }), + Widget.ProgressBar({ + vpack: 'center', + connections: [[Battery, self => { + if (Battery.percent < 0) + return; + + self.fraction = Battery.percent / 100; + }]], + }), + ], +}); + +const SysTray = () => Widget.Box({ + connections: [[SystemTray, self => { + self.children = SystemTray.items.map(item => Widget.Button({ + child: Widget.Icon({ binds: [['icon', item, 'icon']] }), + onPrimaryClick: (_, event) => item.activate(event), + onSecondaryClick: (_, event) => item.openMenu(event), + binds: [['tooltip-markup', item, 'tooltip-markup']], + })); + }]], +}); + +// layout of the bar +const Left = () => Widget.Box({ + children: [ + Workspaces(), + ClientTitle(), + ], +}); + +const Center = () => Widget.Box({ + children: [ + Media(), + Notification(), + ], +}); + +const Right = () => Widget.Box({ + hpack: 'end', + children: [ + Volume(), + BatteryLabel(), + Clock(), + SysTray(), + ], +}); + +const Bar = ({ monitor } = {}) => Widget.Window({ + name: `bar-${monitor}`, // name has to be unique + className: 'bar', + monitor, + anchor: ['top', 'left', 'right'], + exclusive: true, + child: Widget.CenterBox({ + startWidget: Left(), + centerWidget: Center(), + endWidget: Right(), + }), +}) + +// exporting the config so ags can manage the windows +export default { + style: App.configDir + '/style.css', + windows: [ + Bar(), + + // you can call it, for each monitor + // Bar({ monitor: 0 }), + // Bar({ monitor: 1 }) + ], +}; diff --git a/home-manager/laptop/programs/ags/bar/style.css b/home-manager/laptop/programs/ags/bar/style.css new file mode 100644 index 0000000..900d84f --- /dev/null +++ b/home-manager/laptop/programs/ags/bar/style.css @@ -0,0 +1,26 @@ +* { + font-family: Material Design Icons, Rubik Medium; + font-size: 14px; + color: #6e6a86; +} + +.window { + border-radius: 10px; + background: #1f1d2e; + border: 3px solid #363a4f; +} + +.battery { + margin-right: 6px; +} + +.workspaces button { + font-size: 15px; + transition: all 100ms ease-out; +} + +.workspaces button:active { + font-weight: bolder; + color: #908caa; + transition: all 100ms ease-out; +} diff --git a/home-manager/laptop/programs/ags/default.nix b/home-manager/laptop/programs/ags/default.nix new file mode 100644 index 0000000..646bccf --- /dev/null +++ b/home-manager/laptop/programs/ags/default.nix @@ -0,0 +1,8 @@ +{ pkgs, ... }: + +{ + programs.ags = { + enable = false; + configDir = ./bar; + }; +} diff --git a/home-manager/laptop/programs/default.nix b/home-manager/laptop/programs/default.nix new file mode 100644 index 0000000..a077139 --- /dev/null +++ b/home-manager/laptop/programs/default.nix @@ -0,0 +1,4 @@ +[ + ./rofi + ./waybar +] diff --git a/home-manager/laptop/programs/default.nix~ b/home-manager/laptop/programs/default.nix~ new file mode 100644 index 0000000..c904e18 --- /dev/null +++ b/home-manager/laptop/programs/default.nix~ @@ -0,0 +1,28 @@ +let + more = { pkgs, ... }: { + programs = { + kitty = { + enable = true; + font.name = "Source Code Pro"; + font.size = 11.3; + theme = "Rosé Pine Moon"; + shellIntegration.enableFishIntegration = true; + extraConfig = "cursor_shape underline"; + }; + }; + }; + progConfig = { config, ... }: "${config.home.homeDirectory}/.nixfiles/home-manager/home/programs/"; + nonNixConfigs = { config, ... }: { + xdg.configFile = { + "ranger".source = config.lib.file.mkOutOfStoreSymlink "${config.home.homeDirectory}/.nixfiles/home-manager/home/programs/ranger"; + "emacs/init.el".source = config.lib.file.mkOutOfStoreSymlink "${config.home.homeDirectory}/.nixfiles/home-manager/home/programs/emacs/init.el"; + }; + }; +in +[ + ./fish + ./firefox + ./rofi + more + nonNixConfigs +] diff --git a/home-manager/laptop/programs/rofi/#squared-material-pine.rasi# b/home-manager/laptop/programs/rofi/#squared-material-pine.rasi# new file mode 100644 index 0000000..dfc1304 --- /dev/null +++ b/home-manager/laptop/programs/rofi/#squared-material-pine.rasi# @@ -0,0 +1,97 @@ +/******************************************************************************* + * ROFI SQUARED THEME USING THE MATERIAL DARKER PALETTE + * User : LR-Tech + * Theme Repo : https://github.com/lr-tech/rofi-themes-collection + *******************************************************************************/ + +* { + font: "FiraCode Nerd Font Medium 12"; + + bg0: #1f1d2e; + bg1: #2a273f; + fg0: #908caa; + + accent-color: #6e6a86; + urgent-color: #ffffff; + + background-color: transparent; + text-color: @fg0; + + margin: 0; + padding: 0; + spacing: 0; +} + +window { + location: center; + width: 480; + y-offset: -160; + border-radius: 7px; + + background-color: @bg0; +} + +inputbar { + spacing: 8px; + padding: 8px; + + background-color: @bg1; +} + +prompt, entry, element-icon, element-text { + vertical-align: 0.5; +} + +prompt { + text-color: @accent-color; +} + +textbox { + padding: 8px; + background-color: @bg1; +} + +listview { + padding: 4px 0; + lines: 8; + columns: 1; + + fixed-height: false; +} + +element { + padding: 8px; + spacing: 8px; +} + +element normal normal { + text-color: @fg0; +} + +element normal urgent { + text-color: @urgent-color; +} + +element normal active { + text-color: @accent-color; +} + +element selected { + text-color: @bg0; +} + +element selected normal, element selected active { + background-color: @accent-color; +} + +element selected urgent { + background-color: @urgent-color; +} + +element-icon { + size: 0.8em; +} + +element-text { + text-color: inherit; +} diff --git a/home-manager/laptop/programs/rofi/.#squared-material-pine.rasi b/home-manager/laptop/programs/rofi/.#squared-material-pine.rasi new file mode 120000 index 0000000..01f556d --- /dev/null +++ b/home-manager/laptop/programs/rofi/.#squared-material-pine.rasi @@ -0,0 +1 @@ +jerpo@ltrr.1733:1703369468 \ No newline at end of file diff --git a/home-manager/laptop/programs/rofi/config.rasi b/home-manager/laptop/programs/rofi/config.rasi new file mode 100644 index 0000000..55e75a7 --- /dev/null +++ b/home-manager/laptop/programs/rofi/config.rasi @@ -0,0 +1,156 @@ +configuration { +/* modes: "window,drun,run,ssh";*/ +/* font: "mono 12";*/ + location: 0; + yoffset: 0; + xoffset: 0; +/* fixed-num-lines: true;*/ +/* show-icons: false;*/ +/* terminal: "rofi-sensible-terminal";*/ +/* ssh-client: "ssh";*/ +/* ssh-command: "{terminal} -e {ssh-client} {host} [-p {port}]";*/ +/* run-command: "{cmd}";*/ +/* run-list-command: "";*/ +/* run-shell-command: "{terminal} -e {cmd}";*/ +/* window-command: "wmctrl -i -R {window}";*/ +/* window-match-fields: "all";*/ +/* icon-theme: ;*/ +/* drun-match-fields: "name,generic,exec,categories,keywords";*/ +/* drun-categories: ;*/ +/* drun-show-actions: false;*/ +/* drun-display-format: "{name} [({generic})]";*/ +/* drun-url-launcher: "xdg-open";*/ +/* disable-history: false;*/ +/* ignored-prefixes: "";*/ +/* sort: false;*/ +/* sorting-method: "normal";*/ +/* case-sensitive: false;*/ + cycle: true; +/* sidebar-mode: false;*/ +/* hover-select: false;*/ +/* eh: 1;*/ +/* auto-select: false;*/ +/* parse-hosts: false;*/ +/* parse-known-hosts: true;*/ +/* combi-modes: "window,run";*/ +/* matching: "normal";*/ +/* tokenize: true;*/ +/* m: "-5";*/ +/* filter: ;*/ +/* dpi: -1;*/ +/* threads: 0;*/ +/* scroll-method: 0;*/ +/* window-format: "{w} {c} {t}";*/ +/* click-to-exit: true;*/ +/* max-history-size: 25;*/ +/* combi-hide-mode-prefix: false;*/ +/* combi-display-format: "{mode} {text}";*/ +/* matching-negate-char: '-' /* unsupported */;*/ +/* cache-dir: ;*/ +/* window-thumbnail: false;*/ +/* drun-use-desktop-cache: false;*/ +/* drun-reload-desktop-cache: false;*/ +/* normalize-match: false;*/ +/* steal-focus: false;*/ +/* application-fallback-icon: ;*/ +/* refilter-timeout-limit: 8192;*/ +/* xserver-i300-workaround: false;*/ +/* pid: "/run/user/1000/rofi.pid";*/ +/* display-window: ;*/ +/* display-windowcd: ;*/ +/* display-run: ;*/ +/* display-ssh: ;*/ +/* display-drun: ;*/ +/* display-combi: ;*/ +/* display-keys: ;*/ +/* display-filebrowser: ;*/ +/* display-emoji: ;*/ +/* display-calc: ;*/ +/* kb-primary-paste: "Control+V,Shift+Insert";*/ +/* kb-secondary-paste: "Control+v,Insert";*/ +/* kb-clear-line: "Control+w";*/ +/* kb-move-front: "Control+a";*/ +/* kb-move-end: "Control+e";*/ +/* kb-move-word-back: "Alt+b,Control+Left";*/ +/* kb-move-word-forward: "Alt+f,Control+Right";*/ +/* kb-move-char-back: "Left,Control+b";*/ +/* kb-move-char-forward: "Right,Control+f";*/ +/* kb-remove-word-back: "Control+Alt+h,Control+BackSpace";*/ +/* kb-remove-word-forward: "Control+Alt+d";*/ +/* kb-remove-char-forward: "Delete,Control+d";*/ +/* kb-remove-char-back: "BackSpace,Shift+BackSpace,Control+h";*/ +/* kb-remove-to-eol: "Control+k";*/ +/* kb-remove-to-sol: "Control+u";*/ +/* kb-accept-entry: "Control+j,Control+m,Return,KP_Enter";*/ +/* kb-accept-custom: "Control+Return";*/ +/* kb-accept-custom-alt: "Control+Shift+Return";*/ +/* kb-accept-alt: "Shift+Return";*/ +/* kb-delete-entry: "Shift+Delete";*/ +/* kb-mode-next: "Shift+Right,Control+Tab";*/ +/* kb-mode-previous: "Shift+Left,Control+ISO_Left_Tab";*/ +/* kb-mode-complete: "Control+l";*/ +/* kb-row-left: "Control+Page_Up";*/ +/* kb-row-right: "Control+Page_Down";*/ +/* kb-row-up: "Up,Control+p";*/ +/* kb-row-down: "Down,Control+n";*/ +/* kb-row-tab: "";*/ +/* kb-element-next: "Tab";*/ +/* kb-element-prev: "ISO_Left_Tab";*/ +/* kb-page-prev: "Page_Up";*/ +/* kb-page-next: "Page_Down";*/ +/* kb-row-first: "Home,KP_Home";*/ +/* kb-row-last: "End,KP_End";*/ +/* kb-row-select: "Control+space";*/ +/* kb-screenshot: "Alt+S";*/ +/* kb-ellipsize: "Alt+period";*/ +/* kb-toggle-case-sensitivity: "grave,dead_grave";*/ +/* kb-toggle-sort: "Alt+grave";*/ +/* kb-cancel: "Escape,Control+g,Control+bracketleft";*/ +/* kb-custom-1: "Alt+1";*/ +/* kb-custom-2: "Alt+2";*/ +/* kb-custom-3: "Alt+3";*/ +/* kb-custom-4: "Alt+4";*/ +/* kb-custom-5: "Alt+5";*/ +/* kb-custom-6: "Alt+6";*/ +/* kb-custom-7: "Alt+7";*/ +/* kb-custom-8: "Alt+8";*/ +/* kb-custom-9: "Alt+9";*/ +/* kb-custom-10: "Alt+0";*/ +/* kb-custom-11: "Alt+exclam";*/ +/* kb-custom-12: "Alt+at";*/ +/* kb-custom-13: "Alt+numbersign";*/ +/* kb-custom-14: "Alt+dollar";*/ +/* kb-custom-15: "Alt+percent";*/ +/* kb-custom-16: "Alt+dead_circumflex";*/ +/* kb-custom-17: "Alt+ampersand";*/ +/* kb-custom-18: "Alt+asterisk";*/ +/* kb-custom-19: "Alt+parenleft";*/ +/* kb-select-1: "Super+1";*/ +/* kb-select-2: "Super+2";*/ +/* kb-select-3: "Super+3";*/ +/* kb-select-4: "Super+4";*/ +/* kb-select-5: "Super+5";*/ +/* kb-select-6: "Super+6";*/ +/* kb-select-7: "Super+7";*/ +/* kb-select-8: "Super+8";*/ +/* kb-select-9: "Super+9";*/ +/* kb-select-10: "Super+0";*/ +/* ml-row-left: "ScrollLeft";*/ +/* ml-row-right: "ScrollRight";*/ +/* ml-row-up: "ScrollUp";*/ +/* ml-row-down: "ScrollDown";*/ +/* me-select-entry: "MousePrimary";*/ +/* me-accept-entry: "MouseDPrimary";*/ +/* me-accept-custom: "Control+MouseDPrimary";*/ + timeout { + action: "kb-cancel"; + delay: 0; + } + filebrowser { + directories-first: true; + sorting-method: "name"; + } + plugin { + path: "/nix/store/dllm74vs7qfrcsnwwsjcs4w0x70d67ps-rofi-1.7.5/lib/rofi"; + } +} diff --git a/home-manager/laptop/programs/rofi/default.nix b/home-manager/laptop/programs/rofi/default.nix new file mode 100644 index 0000000..540e97b --- /dev/null +++ b/home-manager/laptop/programs/rofi/default.nix @@ -0,0 +1,18 @@ +{ pkgs, ... }: + +{ + programs.rofi = { + enable = true; + package = pkgs.rofi-wayland; + theme = ./squared-material-pine.rasi; + cycle = true; + plugins = with pkgs; [ + rofi-emoji + rofi-calc + ]; + extraConfig = { + kb-row-up = "Up,Alt+k"; + kb-row-down = "Down,Alt+j"; + }; + }; +} diff --git a/home-manager/laptop/programs/rofi/squared-material-pine.rasi b/home-manager/laptop/programs/rofi/squared-material-pine.rasi new file mode 100644 index 0000000..dfc1304 --- /dev/null +++ b/home-manager/laptop/programs/rofi/squared-material-pine.rasi @@ -0,0 +1,97 @@ +/******************************************************************************* + * ROFI SQUARED THEME USING THE MATERIAL DARKER PALETTE + * User : LR-Tech + * Theme Repo : https://github.com/lr-tech/rofi-themes-collection + *******************************************************************************/ + +* { + font: "FiraCode Nerd Font Medium 12"; + + bg0: #1f1d2e; + bg1: #2a273f; + fg0: #908caa; + + accent-color: #6e6a86; + urgent-color: #ffffff; + + background-color: transparent; + text-color: @fg0; + + margin: 0; + padding: 0; + spacing: 0; +} + +window { + location: center; + width: 480; + y-offset: -160; + border-radius: 7px; + + background-color: @bg0; +} + +inputbar { + spacing: 8px; + padding: 8px; + + background-color: @bg1; +} + +prompt, entry, element-icon, element-text { + vertical-align: 0.5; +} + +prompt { + text-color: @accent-color; +} + +textbox { + padding: 8px; + background-color: @bg1; +} + +listview { + padding: 4px 0; + lines: 8; + columns: 1; + + fixed-height: false; +} + +element { + padding: 8px; + spacing: 8px; +} + +element normal normal { + text-color: @fg0; +} + +element normal urgent { + text-color: @urgent-color; +} + +element normal active { + text-color: @accent-color; +} + +element selected { + text-color: @bg0; +} + +element selected normal, element selected active { + background-color: @accent-color; +} + +element selected urgent { + background-color: @urgent-color; +} + +element-icon { + size: 0.8em; +} + +element-text { + text-color: inherit; +} diff --git a/home-manager/laptop/programs/rofi/theme.rasi b/home-manager/laptop/programs/rofi/theme.rasi new file mode 100644 index 0000000..c110b07 --- /dev/null +++ b/home-manager/laptop/programs/rofi/theme.rasi @@ -0,0 +1,125 @@ +/* borrowed from https://github.com/abxh/dotfiles/blob/main/rofi/config.rasi */ +/* cuz IT'S SO SICK!!! */ + +* { + /* // general */ + bg: #333333; + bgt: #333333AA; + t: transparent; + fg: #e0c69f; + + selected-bg: @fg; + selected-fg: @bg; + + /* // for windows */ + active: #a9b665; + urgent: #ea6962; +} + +window { + fullscreen: true; + padding: 35% 30%; + transparency: "real"; + background-color: @bgt; + border-color: @t; +} + +listview { + border: 0 0 0 0; + padding: 23 0 0; + scrollbar: true; +} + +scrollbar { + width: 4px; + border: 0; + handle-color: @fg; + handle-width: 8px; + padding: 0 5; +} + +entry { + placeholder: ""; +} + +/* // other kinda less interesting stuff {{{ */ + +textbox { + text-color: @fg; +} + +/* // using elements from: */ +/* // https://github.com/bardisty/gruvbox-rofi/blob/master/gruvbox-common.rasi */ + +element { + border: 0; + padding: 2px; +} +element.normal.normal { + background-color: @t; + text-color: @fg; +} +element.normal.urgent { + background-color: @t; + text-color: @urgent; +} +element.normal.active { + background-color: @t; + text-color: @active; +} +element.selected.normal { + background-color: @selected-bg; + text-color: @selected-fg; +} +element.selected.urgent { + background-color: @selected-bg; + text-color: @urgent; +} +element.selected.active { + background-color: @selected-bg; + text-color: @selected-fg; +} +element.alternate.normal { + background-color: @t; + text-color: @fg; +} +element.alternate.urgent { + background-color: @t; + text-color: @urgent; +} +element.alternate.active { + background-color: @t; + text-color: @active; +} + +sidebar { + border: 2px 0 0; + border-color: @fg; +} + +inputbar { + spacing: 0; + text-color: @fg; + padding: 2px; + children: [ prompt, textbox-prompt-sep, entry, case-indicator ]; +} + +case-indicator, +entry, +prompt, +button { + spacing: 0; + text-color: @fg; +} + +button.selected { + background-color: @bg; + text-color: @fg; +} + +textbox-prompt-sep { + expand: false; + str: ":"; + text-color: @fg; + margin: 0 0.3em 0 0; +} diff --git a/home-manager/laptop/programs/waybar/config.jsonc b/home-manager/laptop/programs/waybar/config.jsonc new file mode 100644 index 0000000..84aeafd --- /dev/null +++ b/home-manager/laptop/programs/waybar/config.jsonc @@ -0,0 +1,94 @@ +{ + "layer": "top", // Waybar at top layer + "height": 40, // Waybar height (to be removed for auto height) + "spacing": 8, // Gaps between modules (4px) + "margin-top": 20, + "margin-left": 20, + "margin-right": 20, + "margin-down": 5, + "modules-left": ["hyprland/workspaces"], + "modules-center": ["clock"], + "modules-right": ["network", "memory", "backlight", "pulseaudio", "hyprland/language", "tray", "battery"], + + "hyprland/workspaces": { + "format": "{icon}", + "on-click": "activate", + "all-outputs": false, + "format-icons": { + "1": "α", + "2": "β", + "3": "γ", + "4": "δ", + "5": "ε", + "urgent": "λ", + "focused": "σ", + "default": "ω"} + }, + "hyprland/language": { + "format": "{} 󰌌", + "format-ru": "ru", + "format-en": "en" + }, + "tray": { + "spacing": 10 + }, + "clock": { + // "timezone": "America/New_York", + "format": "{:%H:%M 󰅐}", + "tooltip-format": "{:%Y %B}\n{calendar}", + "format-alt": "{:%d %h %Y 󰃮}", + "on-click": "killall calcure || alacritty -t calcure -e calcure;sudo ydotool click 0xc1" + }, + "memory": { + "format": "{}% ", + "on-click": "killall btop || alacritty -t btop -e btop;sudo ydotool click 0xc1" + }, + "backlight": { + // "device": "acpi_video1", + "format": "{percent}% {icon}", + "format-icons": ["󰃞", "󰃟", "󰃠"] + }, + "battery": { + "states": { + // "good": 95, + "warning": 30, + "critical": 15 + }, + "format": "{capacity}% {icon}", + "format-charging": "{capacity}% 󰂄", + "format-plugged": "{capacity}% ", + "format-alt": "{icon}", + // "format-good": "", // An empty format will hide the module + // "format-full": "", + "format-icons": ["󱃍", "󰁼", "󰁼", "󰁽", "󰁾", "󰁿", "󰂀", "󰂁", "󰂂", "󰁹"], + }, + "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": "󰤫", + "on-click": "killall connman-gtk || connman-gtk;sudo ydotool click 0xc1" + }, + "pulseaudio": { + // "scroll-step": 1, // %, can be a float + "format": "{volume}% {icon} {format_source}", + "format-bluetooth": "{volume}% 󰥰 {format_source}", + "format-bluetooth-muted": "󰟎 {format_source}", + "format-muted": "󰝟 {format_source}", + "format-source": "{volume}% 󰍬", + "format-source-muted": "󰍭", + "format-icons": { + "headphone": "󰋋", + "hands-free": "", + "headset": "", + "phone": "", + "portable": "", + "car": "", + "muted-icon": "󰝟", + "default": ["󰕿", "󰖀", "󰕾"] + }, + "on-click": "killall bluetuith || alacritty -t blue -e bluetuith; sudo ydotool click 0xc1" + }, +} diff --git a/home-manager/laptop/programs/waybar/default.nix b/home-manager/laptop/programs/waybar/default.nix new file mode 100644 index 0000000..8618718 --- /dev/null +++ b/home-manager/laptop/programs/waybar/default.nix @@ -0,0 +1,19 @@ +{ pkgs, ... }: +let + systemd.enable = true; + package = pkgs.waybar.override { + swaySupport = false; + mpdSupport = false; + }; + +in +{ + programs.waybar = { + enable = true; + inherit systemd package; + }; + xdg.configFile = { + "waybar/config".text = builtins.readFile ./config.jsonc; + "waybar/style.css".text = builtins.readFile ./style.css; + }; +} diff --git a/home-manager/laptop/programs/waybar/style.css b/home-manager/laptop/programs/waybar/style.css new file mode 100644 index 0000000..7f64ae3 --- /dev/null +++ b/home-manager/laptop/programs/waybar/style.css @@ -0,0 +1,31 @@ +* { + font-family: Material Design Icons, Rubik Medium; + font-size: 14px; + color: #939ab7; +} + +window#waybar { + border-radius: 10px; + background: rgba(36, 39, 58, 0.7); + border: 3px solid rgba(183, 189, 248, 0.2); +} + +#battery { + margin-right: 6px; +} + +#workspaces button label { + font-size: 15px; + color: #cad3f5; + transition: all 100ms ease-out; +} + +#workspaces button.active label { + font-weight: bolder; + color: #f0c6c6; + transition: all 100ms ease-out; +} + +#battery { + color: #f0c6c6; +} diff --git a/home-manager/laptop/services/default.nix b/home-manager/laptop/services/default.nix new file mode 100644 index 0000000..8d73ea5 --- /dev/null +++ b/home-manager/laptop/services/default.nix @@ -0,0 +1,3 @@ +[ + ./mako +] diff --git a/home-manager/laptop/services/mako/default.nix b/home-manager/laptop/services/mako/default.nix new file mode 100644 index 0000000..bddb020 --- /dev/null +++ b/home-manager/laptop/services/mako/default.nix @@ -0,0 +1,23 @@ +let + anchor = "bottom-right"; + backgroundColor = "#1f1d2e"; + borderColor = "#e0def4"; + textColor = "#e0def4"; + defaultTimeout = 5000; + borderSize = 3; + borderRadius = 7; + font = "Rubik 11"; +in +{ + services.mako = { + enable = true; + inherit anchor + backgroundColor + borderColor + textColor + defaultTimeout + borderRadius + font + borderSize; + }; +} -- cgit v1.2.3