add i3, add markagl

This commit is contained in:
jmarkin 2025-11-21 23:22:07 +03:00
parent b3d15e9bfd
commit e9aea2010f
19 changed files with 1397 additions and 138 deletions

View file

@ -521,6 +521,26 @@
"type": "github"
}
},
"nix-system-graphics": {
"inputs": {
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1763162280,
"narHash": "sha256-q3qg2Mhijw1vp3It9jHpVew9PVboPbMAY+rwoXuFXx0=",
"owner": "soupglasses",
"repo": "nix-system-graphics",
"rev": "f59140cd568a3307371076512ad2429570330c21",
"type": "github"
},
"original": {
"owner": "soupglasses",
"repo": "nix-system-graphics",
"type": "github"
}
},
"nixos": {
"locked": {
"lastModified": 1763049705,
@ -686,10 +706,12 @@
"mac-app-util": "mac-app-util",
"mynvim": "mynvim",
"neovim-nightly-overlay": "neovim-nightly-overlay",
"nix-system-graphics": "nix-system-graphics",
"nixos": "nixos",
"nixpkgs": "nixpkgs_2",
"secrets": "secrets",
"smart-splits-nvim": "smart-splits-nvim",
"system-manager": "system-manager",
"systems": "systems"
}
},
@ -766,6 +788,26 @@
"type": "github"
}
},
"system-manager": {
"inputs": {
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1762982120,
"narHash": "sha256-ab/YEG7gobBrwatyoE6xYNBzNBhmOhX52veM+RICw6g=",
"owner": "numtide",
"repo": "system-manager",
"rev": "b0660c2fc9a2da9488d0a5ce05a55d48d823d4e8",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "system-manager",
"type": "github"
}
},
"systems": {
"locked": {
"lastModified": 1681028828,

View file

@ -71,6 +71,15 @@
secrets.inputs.nixpkgs.follows = "nixpkgs";
secrets.inputs.agenix.follows = "agenix";
system-manager = {
url = "github:numtide/system-manager";
inputs.nixpkgs.follows = "nixpkgs";
};
nix-system-graphics = {
url = "github:soupglasses/nix-system-graphics";
inputs.nixpkgs.follows = "nixpkgs";
};
};
outputs =
@ -78,6 +87,8 @@
, nixos
, home-manager
, mac-app-util
, system-manager
, nix-system-graphics
# , limainit
, secrets
, ...
@ -121,6 +132,18 @@
in
{
systemConfigs.default = system-manager.lib.makeSystemConfig {
modules = [
nix-system-graphics.systemModules.default
({
config = {
nixpkgs.hostPlatform = "x86_64-linux";
system-manager.allowAnyDistro = true;
system-graphics.enable = true;
};
})
];
};
homeConfigurations =
let
kronHome = {
@ -169,6 +192,17 @@
./home/users/small-pc.nix
];
};
"markagl@cachyos-mac" = home-manager.lib.homeManagerConfiguration {
pkgs = x86Pkgs;
modules = [
{
home.homeDirectory = "/home/markagl";
home.username = "markagl";
}
./home/users/markagl.nix
];
};
# "kron@lima" = home-manager.lib.homeManagerConfiguration {
# pkgs = aarch64Pkgs;
#

View file

@ -1,15 +0,0 @@
{ ... }:
{
programs.foot = {
enable = true;
settings = {
main = {
font = "JetBrainsMonoNL Nerd Font Mono:size=13";
};
mouse = {
hide-when-typing = "yes";
};
};
};
}

195
home/programs/i3/config Normal file
View file

@ -0,0 +1,195 @@
set $mod Mod1
set $cmd Mod4
font pango:JetBrainsMonoNL Nerd Font Mono 12
floating_modifier $mod
# start a terminal
bindsym $cmd+Return exec $term
# kill focused window
bindsym $cmd+q kill
bindsym ctrl+space exec "rofi -show combi -modi window,run,combi -combi-modi window,run"
# alternatively, you can use the cursor keys:
bindsym $mod+Left focus left
bindsym $mod+Down focus down
bindsym $mod+Up focus up
bindsym $mod+Right focus right
# alternatively, you can use the cursor keys:
bindsym $mod+Shift+Left move left
bindsym $mod+Shift+Down move down
bindsym $mod+Shift+Up move up
bindsym $mod+Shift+Right move right
# split in horizontal orientation
bindsym $mod+Shift+h split h
# split in vertical orientation
bindsym $mod+Shift+v split v
bindsym $mod+Shift+t split toggle
# enter fullscreen mode for the focused container
bindsym $mod+f fullscreen toggle
# change container layout (stacked, tabbed, toggle split)
bindsym $mod+s layout stacking
bindsym $mod+w layout tabbed
bindsym $mod+e layout toggle split
bindsym $mod+Shift+w sticky toggle
# toggle tiling / floating
bindsym $mod+Shift+space floating toggle
# change focus between tiling / floating windows
bindsym $mod+space focus mode_toggle
# focus the parent container
bindsym $mod+a 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"
# switch to workspace
bindsym $mod+1 workspace number $ws1
bindsym $mod+2 workspace number $ws2
bindsym $mod+3 workspace number $ws3
bindsym $mod+4 workspace number $ws4
bindsym $mod+5 workspace number $ws5
bindsym $mod+6 workspace number $ws6
bindsym $mod+7 workspace number $ws7
bindsym $mod+8 workspace number $ws8
bindsym $mod+9 workspace number $ws9
bindsym $mod+0 workspace number $ws10
# move focused container to workspace
bindsym $mod+Shift+1 move container to workspace number $ws1
bindsym $mod+Shift+2 move container to workspace number $ws2
bindsym $mod+Shift+3 move container to workspace number $ws3
bindsym $mod+Shift+4 move container to workspace number $ws4
bindsym $mod+Shift+5 move container to workspace number $ws5
bindsym $mod+Shift+6 move container to workspace number $ws6
bindsym $mod+Shift+7 move container to workspace number $ws7
bindsym $mod+Shift+8 move container to workspace number $ws8
bindsym $mod+Shift+9 move container to workspace number $ws9
bindsym $mod+Shift+0 move container to workspace number $ws10
# reload the configuration file
bindsym $mod+Shift+c reload
# restart i3 inplace (preserves your layout/session, can be used to upgrade i3)
bindsym $mod+Shift+r restart
# exit i3 (logs you out of your X session)
bindsym $mod+Shift+e exec "i3-nagbar -t warning -m 'You pressed the exit shortcut. Do you really want to exit i3? This will end your X session.' -b 'Yes, exit i3' 'i3-msg exit'"
# resize window (you can also use the mouse for that)
mode "resize" {
# These bindings trigger as soon as you enter the resize mode
# same bindings, but for the arrow keys
bindsym Left resize shrink width 5 px or 5 ppt
bindsym Down resize grow height 5 px or 5 ppt
bindsym Up resize shrink height 5 px or 5 ppt
bindsym Right resize grow width 5 px or 5 ppt
# back to normal: Enter or Escape
bindsym Return mode "default"
bindsym Escape mode "default"
bindsym $mod+r mode "default"
}
bindsym $mod+r mode "resize"
#
# Status Bar:
#
exec_always --no-startup-id ~/.config/polybar/launch.sh
# class border backgr. text indicator child_border
client.focused #000000 #000000 #ffffff #000000 #000000
client.focused_inactive #000000 #000000 #ffffff #000000 #000000
client.unfocused #000000 #000000 #888888 #000000 #000000
client.urgent #000000 #000000 #ffffff #000000 #000000
client.placeholder #000000 #000000 #ffffff #000000 #000000
client.background #ffffff
########################################################################
########################################################################
####
#### Workplaces layout
####
########################################################################
########################################################################
#exec --no-startup-id "i3-msg 'workspace 1; exec alacritty'"
########################################################################
########################################################################
####
#### Floated windows
####
########################################################################
########################################################################
for_window [title="Calculator"] floating enable
for_window [title="Timer"] floating enable
for_window [class="^.*"] border pixel 1
for_window [class="librewolf"] border none
for_window [class="zen-browser"] border none
for_window [class="mpv"] floating enable
for_window [class="imv"] floating enable
for_window [class="zenity"] floating enable
########################################################################
########################################################################
####
#### HOTKEYS
####
########################################################################
########################################################################
## This will switch the current layout to the 'us'.
#bindsym $mod+l exec "setxkbmap -layout us && sleep 0.1 && setxkbmap -option grp:caps_toggle 'us,ru' -option grp_led:caps && sleep 0.1 && i3lock --blur 5"
## This keybind will lock the screen. The lockscreen.
bindsym $mod+l exec "sleep 0.1 && i3lock --blur 5"
########################################################################
########################################################################
####
#### AUTOLOAD
####
########################################################################
########################################################################
## Here is a language switcher by pressing capslock button,
## and the capslock functionality available by using shift+capslock.
## Uncomment to enable 'us' to/from 'ru' switch. change to language(s) you prefer more.
exec_always setxkbmap -option grp:caps_toggle "us,ru" -option "grp:caps_toggle,grp_led:caps"
exec xrandr --output eDP-1 --mode 2560x1600 --rate 60 --scale 0.8
#exec xrandr --auto --output HDMI-1 --mode 1920x1080 --above HDMI-2
exec --no-startup-id dunst
exec --no-startup-id picom
exec --no-startup-id redshift
exec --no-startup-id dex -a -s /etc/xdg/autostart/:~/.config/autostart/
exec --no-startup-id /usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1
exec_always mkfifo /tmp/xobpipe && tail -f /tmp/xobpipe | xob -t 2170 & disown

View file

@ -0,0 +1,74 @@
{ pkgs, lib, config, ... }:
let
xresources = pkgs.writeText "Xresources" ''
XTerm*termName: xterm-256color
XTerm*faceName: JetBrainsMonoNL Nerd Font Mono
XTerm*faceSize: 12
XTerm*title: XTerm
XTerm*loginShell: true
'';
xtraSesCMDs = ''
${pkgs.xorg.xrdb}/bin/xrdb -merge ${xresources}
'';
i3Config = ''
set $term ${pkgs.alacritty}/bin/alacritty
'' + builtins.readFile ./config;
in
{
xsession.enable = true;
xsession.scriptPath = ".xsession";
xsession.initExtra = ''
systemctl --user import-environment PATH DISPLAY XAUTHORITY DESKTOP_SESSION XDG_CONFIG_DIRS XDG_DATA_DIRS XDG_RUNTIME_DIR XDG_SESSION_ID DBUS_SESSION_BUS_ADDRESS || true
${lib.getBin pkgs.dbus}/bin/dbus-update-activation-environment --systemd --all || true
${xtraSesCMDs}
'';
home.file = {
".config/polybar" = {
recursive = true;
source = ./polybar;
};
".config/rofi" = {
recursive = true;
source = ./rofi;
};
};
xsession.windowManager.i3 = {
enable = true;
config = null;
extraConfig = i3Config;
};
home.packages = with pkgs; with pkgs.xfce; [
i3lock
libnotify
polybar
rofi
pa_applet
pavucontrol
networkmanagerapplet
lm_sensors
glib # for gsettings
gtk3.out # gtk-update-icon-cache
desktop-file-utils
shared-mime-info # for update-mime-database
polkit_gnome
xdg-utils
xdg-user-dirs
garcon
libxfce4ui
xfce4-volumed-pulse
xfce4-power-manager
xfce4-notifyd
xfce4-screenshooter
xfce4-taskmanager
libsForQt5.qt5.qtquickcontrols2
libsForQt5.qt5.qtgraphicaleffects
wl-clipboard
xclip
];
}

View file

@ -0,0 +1,269 @@
;==========================================================
;
;
; ██████╗ ██████╗ ██╗ ██╗ ██╗██████╗ █████╗ ██████╗
; ██╔══██╗██╔═══██╗██║ ╚██╗ ██╔╝██╔══██╗██╔══██╗██╔══██╗
; ██████╔╝██║ ██║██║ ╚████╔╝ ██████╔╝███████║██████╔╝
; ██╔═══╝ ██║ ██║██║ ╚██╔╝ ██╔══██╗██╔══██║██╔══██╗
; ██║ ╚██████╔╝███████╗██║ ██████╔╝██║ ██║██║ ██║
; ╚═╝ ╚═════╝ ╚══════╝╚═╝ ╚═════╝ ╚═╝ ╚═╝╚═╝ ╚═╝
;
;
; To learn more about how to configure Polybar
; go to https://github.com/polybar/polybar
;
; The README contains a lot of information
;
;==========================================================
;vim: ft=ini
[colors]
background = #BCC3C3
background-alt = #002B36
foreground = #002B36
foreground-alt = #BCC3C3
primary = #ffb52a
secondary = #e60053
alert = #FF0000
[bar/example]
monitor = ${env:MONITOR:}
width = 100%
height = 22
radius = 0.0
fixed-center = true
top = yes
bottom = no
override-redirect = false
foreground = ${colors.foreground-alt}
background = ${colors.background-alt}
; Under-/overline pixel size and argb color
; Individual values can be defined using:
; {overline,underline}-size
; {overline,underline}-color
line-size = 1
line-color = #dfdfdf
border-top-size = 0
border-bottom-size = 0
border-left-size = 0
border-right-size = 0
padding-left = 0
padding-right = 0
module-margin-left = 0
module-margin-right = 0
font-0 = Hack:pixelsize=9;3
font-2 = "Wuncon Siji:pixelsize=10;3"
font-1 = Weather Icons:style=Regular:size=10;2
font-3 = FontAwesome5Free:style=Solid:pixelsize=10;3
font-4 = FontAwesome5Brands:style=Solid:pixelsize=10;3
modules-left = i3 sp2 info-hackspeed sp2 temperature sp1 cpu sp1 memory
modules-right = net sp2 xkeyboard sp2 battery sp2 date sp2
tray-position = right
tray-padding = 0
tray-detached = false
tray-maxsize = 14
tray-scale = 1.0
tray-background = ${colors.background-alt}
tray-foreground = ${colors.foreground-alt}
tray-offset-x = 0
tray-offset-y = 0
wm-restack = i3
scroll-up = #i3.next
scroll-down = #i3.prev
cursor-click = pointer
[module/sp1]
type = custom/text
content = " | "
content-foreground = #93A1A1
content-background = ${colors.background-alt}
[module/sp2]
type = custom/text
content = " |"
content-foreground = #93A1A1
content-background = ${colors.background-alt}
[module/i3]
type = internal/i3
format = <label-state> <label-mode>
index-sort = true
wrapping-scroll = false
strip-wsnumbers = false
enable-click = false
enable-scroll = false
label-mode = %mode%
label-mode-padding = 1
label-mode-foreground = ${colors.foreground-alt}
label-mode-background = ${colors.background-alt}
; focused = Active workspace on focused monitor
label-focused = %index%
label-focused-foreground = ${colors.foreground}
label-focused-background = ${colors.background}
label-focused-underline = ${colors.foreground-alt}
label-focused-padding = 1
; unfocused = Inactive workspace on any monitor
label-unfocused = %index%
label-unfocused-padding = ${self.label-focused-padding}
label-unfocused-foreground = ${colors.foreground-alt}
label-unfocused-background = ${colors.background-alt}
; visible = Active workspace on unfocused monitor
label-visible = %index%
label-visible-foreground = ${self.label-focused-background}
label-visible-background = ${self.label-focused-foreground}
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-foreground = ${colors.foreground}
label-urgent-background = ${colors.alert}
label-urgent-padding = 1
; Separator in between workspaces
label-separator =
label-separator-padding = 0
label-separator-foreground = #fff
[module/info-hackspeed]
type = custom/script
exec = ~/.config/polybar/scripts/info-hackspeed.sh
tail = true
[module/weather]
type = custom/script
exec = ~/.config/polybar/scripts/weather-openmap.sh
interval = 600
[module/date]
type = internal/date
interval = 1
time = "%a %d %I:%M %P"
format-prefix = " "
format-prefix-foreground = ${colors.foreground-alt}
format-prefix-background = ${colors.background-alt}
label = %time%
label-foreground = ${colors.foreground-alt}
label-background = ${colors.background-alt}
[module/cpu]
type = internal/cpu
interval = 2
label = %percentage%
format-prefix = "CPU: "
format = <label>
[module/memory]
type = internal/memory
interval = 2
label = %used%
format-prefix = "RAM: "
format = <label>
[module/wireless-network]
type = internal/network
interface = wlan0
[module/battery]
type = internal/battery
battery = BAT0 ; your battery name (check /sys/class/power_supply/)
adapter = ADP1
full-at = 95
low-at = 15
poll-interval = 5
[module/temperature]
type = internal/temperature
; Full path of temperature sysfs path
; Use `sensors` to find preferred temperature source, then run
; $ for i in /sys/class/hwmon/hwmon*/temp*_input; do echo "$(<$(dirname $i)/name): $(cat ${i%_*}_label 2>/dev/null || echo $(basename ${i%_*})) $(readlink -f $i)"; done
; to find path to desired file
; Default reverts to thermal zone setting
hwmon-path = /sys/devices/platform/coretemp.0/hwmon/hwmon5/temp2_input
[module/volume]
type = internal/alsa
; Soundcard to be used
; Usually in the format hw:# where # is the card number
; You can find the different card numbers in `/proc/asound/cards`
master-soundcard = default
speaker-soundcard = default
headphone-soundcard = default
; Name of the master, speaker and headphone mixers
; Use the following command to list available mixer controls:
; $ amixer scontrols | sed -nr "s/.*'([[:alnum:]]+)'.*/\1/p"
; If master, speaker or headphone-soundcard isn't the default,
; use `amixer -c # scontrols` instead where # is the number
; of the master, speaker or headphone soundcard respectively
;
; Default: Master
master-mixer = Master
format-volume = "<label-volume><bar-volume>"
label-volume = " "
label-volume-foreground = ${colors.foreground-alt}
label-volume-background = ${colors.background-alt}
format-muted-prefix = " "
format-muted-foreground = ${colors.foreground-alt}
format-muted-background = ${colors.background-alt}
label-muted = MUTED
bar-volume-width = 5
bar-volume-foreground-0 = ${colors.foreground-alt}
bar-volume-foreground-1 = ${colors.foreground-alt}
bar-volume-foreground-2 = ${colors.foreground-alt}
bar-volume-foreground-3 = ${colors.foreground-alt}
bar-volume-foreground-4 = ${colors.foreground-alt}
bar-volume-foreground-5 = ${colors.foreground-alt}
bar-volume-foreground-6 = ${colors.foreground-alt}
bar-volume-gradient = false
bar-volume-indicator = []
bar-volume-indicator-font = 1
bar-volume-indicator-foreground = ${colors.foreground-alt}
bar-volume-indicator-background = ${colors.background-alt}
bar-volume-fill = -
bar-volume-fill-font = 1
bar-volume-fill-foreground = ${colors.foreground-alt}
bar-volume-fill-background = ${colors.background-alt}
bar-volume-empty = -
bar-volume-empty-font = 1
bar-volume-empty-foreground = ${colors.foreground-alt}
bar-volume-empty-background = ${colors.background-alt}
[settings]
throttle-output = 5
throttle-output-for = 10
;throttle-input-for = 30
screenchange-reload = true
compositing-background = over
compositing-foreground = over
compositing-overline = over
compositing-border = over
[global/wm]
margin-top = 5
margin-bottom = 5

View file

@ -0,0 +1,16 @@
#!/usr/bin/env sh
# Terminate already running bar instances
killall -q polybar
# Wait until the processes have been shut down
while pgrep -u $UID -x polybar >/dev/null; do sleep 1; done
# for multimonitor
if type "xrandr"; then
for m in $(xrandr --query | grep " connected" | cut -d" " -f1); do
MONITOR=$m polybar --reload example & disown
done
else
polybar --reload example & disown
fi

View file

@ -0,0 +1,32 @@
#!/usr/bin/env bash
set -euo pipefail
if ! updates_arch=$(checkupdates 2> /dev/null | wc -l ); then
updates_arch=0
fi
if ! updates_aur=$(paru -Qum | wc -l); then
# if ! updates_aur=$(cower -u 2> /dev/null | wc -l); then
# if ! updates_aur=$(trizen -Su --aur --quiet | wc -l); then
updates_aur=0
fi
updates=$(("$updates_arch" + "$updates_aur"))
#if [ "$updates" -gt 0 ]; then
# echo "# $updates"
#else
# echo ""
#fi
re='^[0-9]+$'
if ! [[ $updates_arch =~ $re ]] ; then
updates_aur=999; exit 1
fi
if ! [[ $updates_arch =~ $re ]] ; then
updates_aur=999; exit 1
fi
echo "P:$updates_arch Y:$updates_aur"

View file

@ -0,0 +1,62 @@
#!/bin/sh
# shellcheck disable=SC2016,SC2059
KEYBOARD_ID="11"
# cpm: characters per minute
# wpm: words per minute (1 word = 5 characters)
METRIC=cpm
FORMAT="# %d $METRIC"
INTERVAL=20
# If you have a keyboard layout that is not listed here yet, create a condition
# yourself. $3 is the key index. Use `xinput test "AT Translated Set 2 keyboard"`
# to see key codes in real time. Be sure to open a pull request for your
# layout's condition!
LAYOUT=qwerty
case "$LAYOUT" in
qwerty) CONDITION='($3 >= 10 && $3 <= 19) || ($3 >= 24 && $3 <= 33) || ($3 >= 37 && $3 <= 53) || ($3 >= 52 && $3 <= 58)'; ;;
azerty) CONDITION='($3 >= 10 && $3 <= 19) || ($3 >= 24 && $3 <= 33) || ($3 >= 37 && $3 <= 54) || ($3 >= 52 && $3 <= 57)'; ;;
dontcare) CONDITION='1'; ;; # Just register all key presses, not only letters and numbers
*) echo "# Unsupported layout \"$LAYOUT\""; exit 1; ;;
esac
# We have to account for the fact we're not listening a whole minute
multiply_by=60
divide_by=$INTERVAL
case "$METRIC" in
wpm) divide_by=$((divide_by * 5)); ;;
cpm) ;;
*) echo "Unsupported metric \"$METRIC\""; exit 1; ;;
esac
hackspeed_cache="$(mktemp -p '' hackspeed_cache.XXXXX)"
trap 'rm "$hackspeed_cache"' EXIT
# Write a dot to our cache for each key press
printf '' > "$hackspeed_cache"
xinput test "$KEYBOARD_ID" | \
stdbuf -o0 awk '$1 == "key" && $2 == "press" && ('"$CONDITION"') {printf "."}' >> "$hackspeed_cache" &
while true; do
# Ask the kernel how big the file is with the command `stat`. The number we
# get is the file size in bytes, which equals the amount of dots the file
# contains, and hence how much keys were pressed since the file was last
# cleared.
lines=$(stat --format %s "$hackspeed_cache")
# Truncate the cache file so that in the next iteration, we count only new
# keypresses
printf '' > "$hackspeed_cache"
# The shell only does integer operations, so make sure to first multiply and
# then divide
value=$((lines * multiply_by / divide_by))
printf "$FORMAT\\n" "$value"
sleep $INTERVAL
done

View file

@ -0,0 +1,88 @@
#!/usr/bin/env bash
set -euo pipefail
get_icon() {
case $1 in
01d) icon="🟠";;
01n) icon="⚫";;
02d) icon="⛅";;
02n) icon="⛅";;
04d) icon="🌥️";;
04n) icon="🌥️";;
09d) icon="🌧️";;
09n) icon="🌧️";;
10d) icon="🌦️";;
10n) icon="🌦️";;
11d) icon="🌩️";;
11n) icon="🌩️";;
13d) icon="❄️";;
13n) icon="❄️";;
50d) icon="🌫️";;
50n) icon="🌫️";;
*) icon="☁️";
esac
echo $icon
}
get_duration() {
osname=$(uname -s)
case $osname in
*BSD) date -r "$1" -u +%H:%M;;
*) date --date="@$1" -u +%H:%M;;
esac
}
KEY=""
CITY=""
UNITS="metric"
SYMBOL="°"
API="https://api.openweathermap.org/data/2.5"
if [ ! -z $CITY ]; then
if [ "$CITY" -eq "$CITY" ] 2>/dev/null; then
CITY_PARAM="id=$CITY"
else
CITY_PARAM="q=$CITY"
fi
current=$(curl -sf "$API/weather?appid=$KEY&$CITY_PARAM&units=$UNITS")
#curl -s "https://api.openweathermap.org/data/2.5/onecall?lat=0&lon=0&appid=TOKEN&units=metric" | jq -r '.daily[1].temp.day'
forecast=$(curl -sf "$API/forecast?appid=$KEY&$CITY_PARAM&units=$UNITS&cnt=1")
else
location=$(curl -sf https://location.services.mozilla.com/v1/geolocate?key=geoclue)
if [ ! -z "$location" ]; then
location_lat="$(echo "$location" | jq '.location.lat')"
location_lon="$(echo "$location" | jq '.location.lng')"
current=$(curl -sf "$API/weather?appid=$KEY&lat=$location_lat&lon=$location_lon&units=$UNITS")
forecast=$(curl -sf "$API/forecast?appid=$KEY&lat=$location_lat&lon=$location_lon&units=$UNITS&cnt=1")
fi
fi
if [ ! -z "$current" ] && [ ! -z "$forecast" ]; then
current_temp=$(printf "%.0f" $(echo "$current" | jq ".main.temp"))
current_icon=$(echo "$current" | jq -r ".weather[0].icon")
forecast_temp=$(printf "%.0f" $(echo "$forecast" | jq ".list[].main.temp"))
forecast_icon=$(echo "$forecast" | jq -r ".list[].weather[0].icon")
sun_rise=$(echo "$current" | jq ".sys.sunrise")
sun_set=$(echo "$current" | jq ".sys.sunset")
now=$(date +%s)
if [ "$sun_rise" -gt "$now" ]; then
daytime="🌅 $(get_duration "$((sun_rise-now))")"
elif [ "$sun_set" -gt "$now" ]; then
daytime="🌇 $(get_duration "$((sun_set-now))")"
else
daytime="🌅 $(get_duration "$((sun_rise-now))")"
fi
echo "$(get_icon "$current_icon") $current_temp$SYMBOL $(get_icon "$forecast_icon") $forecast_temp$SYMBOL $daytime"
fi

View file

@ -0,0 +1,9 @@
/* colors */
* {
al: #00000000;
bg: #263238FF;
ac: #00BCD4FF;
se: #00BCD426;
fg: #DFDFDFFF;
}

View file

@ -0,0 +1,24 @@
/* Confirm Dialog */
@import "colors.rasi"
* {
background-color: @bg;
text-color: @fg;
font: "Iosevka Nerd Font 10";
}
window {
width: 225px;
padding: 25px;
border: 1px;
border-radius: 0px;
border-color: @ac;
location: center;
y-offset: -2em;
}
entry {
expand: true;
text-color: @ac;
}

View file

@ -0,0 +1,119 @@
/*
*
* Author : Aditya Shakya
* Mail : adi1090x@gmail.com
* Github : @adi1090x
* Twitter : @adi1090x
*
*/
configuration {
font: "Iosevka Nerd Font 10";
show-icons: true;
icon-theme: "Papirus";
display-drun: "";
drun-display-format: "{name}";
disable-history: false;
fullscreen: false;
hide-scrollbar: true;
sidebar-mode: false;
}
@import "colors.rasi"
window {
transparency: "real";
background-color: @bg;
text-color: @fg;
border: 2px;
border-color: @ac;
border-radius: 0px;
width: 450px;
location: center;
x-offset: 0;
y-offset: 0;
}
prompt {
enabled: true;
padding: 10px;
background-color: @al;
text-color: @ac;
font: "Iosevka Nerd Font 10";
}
entry {
background-color: @al;
text-color: @ac;
placeholder-color: @ac;
expand: true;
horizontal-align: 0;
placeholder: "Search...";
padding: 10px 10px 10px 0px;
border-radius: 0px;
blink: true;
}
inputbar {
children: [ prompt, entry ];
background-color: @al;
text-color: @fg;
expand: false;
border: 0px 0px 1px 0px;
border-radius: 0px;
border-color: @ac;
spacing: 0px;
}
listview {
background-color: @al;
padding: 0px;
columns: 1;
lines: 5;
spacing: 5px;
cycle: true;
dynamic: true;
layout: vertical;
}
mainbox {
background-color: @al;
border: 0px;
border-radius: 0px;
border-color: @ac;
children: [ inputbar, listview ];
spacing: 10px;
padding: 2px 10px 10px 10px;
}
element {
background-color: @al;
text-color: @fg;
orientation: horizontal;
border-radius: 0px;
padding: 8px;
}
element-icon {
background-color: transparent;
text-color: inherit;
size: 24px;
border: 0px;
}
element-text {
background-color: transparent;
text-color: inherit;
expand: true;
horizontal-align: 0;
vertical-align: 0.5;
margin: 0px 2.5px 0px 2.5px;
}
element selected {
background-color: @se;
text-color: @fg;
border: 0px 0px 0px 0px;
border-radius: 0px;
border-color: @ac;
}

View file

@ -0,0 +1,24 @@
/* Confirm Dialog */
@import "colors.rasi"
* {
background-color: @bg;
text-color: @fg;
font: "Iosevka Nerd Font 10";
}
window {
width: 320px;
padding: 25px;
border: 1px;
border-radius: 0px;
border-color: @ac;
location: center;
y-offset: -2em;
}
entry {
expand: true;
text-color: @ac;
}

View file

@ -0,0 +1,128 @@
/*
*
* Author : Aditya Shakya
* Mail : adi1090x@gmail.com
* Github : @adi1090x
* Twitter : @adi1090x
*
*/
configuration {
font: "Iosevka Nerd Font 10";
show-icons: true;
icon-theme: "Papirus";
display-drun: "";
drun-display-format: "{name}";
disable-history: false;
fullscreen: false;
hide-scrollbar: true;
sidebar-mode: false;
}
@import "colors.rasi"
window {
transparency: "real";
background-color: @bg;
text-color: @fg;
border: 2px;
border-color: @ac;
border-radius: 0px;
width: 400px;
location: center;
x-offset: 0;
y-offset: 0;
}
prompt {
enabled: true;
padding: 10px 10px 10px 0px;
background-color: @al;
text-color: @ac;
font: "Iosevka Nerd Font 10";
}
textbox-prompt-colon {
padding: 10px 15px 10px 15px;
font: "Iosevka Nerd Font 10";
background-color: @al;
text-color: @ac;
expand: false;
str: "直";
}
entry {
background-color: @al;
text-color: @ac;
placeholder-color: @ac;
expand: true;
horizontal-align: 0;
placeholder: "Search...";
padding: 10px 10px 10px 0px;
border-radius: 0px;
blink: true;
}
inputbar {
children: [ textbox-prompt-colon, prompt ];
background-color: @al;
text-color: @fg;
expand: false;
border: 0px 0px 1px 0px;
border-radius: 0px;
border-color: @ac;
spacing: 0px;
}
listview {
background-color: @al;
padding: 0px;
columns: 1;
lines: 8;
spacing: 5px;
cycle: true;
dynamic: true;
layout: vertical;
}
mainbox {
background-color: @al;
border: 0px;
border-radius: 0px;
border-color: @ac;
children: [ inputbar, listview ];
spacing: 10px;
padding: 2px 10px 10px 10px;
}
element {
background-color: @al;
text-color: @fg;
orientation: horizontal;
border-radius: 0px;
padding: 8px 8px 8px -10px;
}
element-icon {
background-color: transparent;
text-color: inherit;
size: 24px;
border: 0px;
}
element-text {
background-color: transparent;
text-color: inherit;
expand: true;
horizontal-align: 0;
vertical-align: 0.5;
margin: 0px 2.5px 0px 2.5px;
}
element selected {
background-color: @se;
text-color: @fg;
border: 0px 0px 0px 0px;
border-radius: 0px;
border-color: @ac;
}

View file

@ -0,0 +1,128 @@
/*
*
* Author : Aditya Shakya
* Mail : adi1090x@gmail.com
* Github : @adi1090x
* Twitter : @adi1090x
*
*/
configuration {
font: "Iosevka Nerd Font 10";
show-icons: true;
icon-theme: "Papirus";
display-drun: "";
drun-display-format: "{name}";
disable-history: false;
fullscreen: false;
hide-scrollbar: true;
sidebar-mode: false;
}
@import "colors.rasi"
window {
transparency: "real";
background-color: @bg;
text-color: @fg;
border: 2px;
border-color: @ac;
border-radius: 0px;
width: 300px;
location: center;
x-offset: 0;
y-offset: 0;
}
prompt {
enabled: true;
padding: 10px 10px 10px 0px;
background-color: @al;
text-color: @ac;
font: "Iosevka Nerd Font 10";
}
textbox-prompt-colon {
padding: 10px 15px 10px 15px;
font: "Iosevka Nerd Font 10";
background-color: @al;
text-color: @ac;
expand: false;
str: "";
}
entry {
background-color: @al;
text-color: @ac;
placeholder-color: @ac;
expand: true;
horizontal-align: 0;
placeholder: "Search...";
padding: 10px 10px 10px 0px;
border-radius: 0px;
blink: true;
}
inputbar {
children: [ textbox-prompt-colon, prompt ];
background-color: @al;
text-color: @fg;
expand: false;
border: 0px 0px 1px 0px;
border-radius: 0px;
border-color: @ac;
spacing: 0px;
}
listview {
background-color: @al;
padding: 0px;
columns: 1;
lines: 5;
spacing: 5px;
cycle: true;
dynamic: true;
layout: vertical;
}
mainbox {
background-color: @al;
border: 0px;
border-radius: 0px;
border-color: @ac;
children: [ inputbar, listview ];
spacing: 10px;
padding: 2px 10px 10px 10px;
}
element {
background-color: @al;
text-color: @fg;
orientation: horizontal;
border-radius: 0px;
padding: 8px 8px 8px -16px;
}
element-icon {
background-color: transparent;
text-color: inherit;
size: 24px;
border: 0px;
}
element-text {
background-color: transparent;
text-color: inherit;
expand: true;
horizontal-align: 0;
vertical-align: 0.5;
margin: 0px 2.5px 0px 2.5px;
}
element selected {
background-color: @se;
text-color: @fg;
border: 0px 0px 0px 0px;
border-radius: 0px;
border-color: @ac;
}

View file

@ -0,0 +1,128 @@
/*
*
* Author : Aditya Shakya
* Mail : adi1090x@gmail.com
* Github : @adi1090x
* Twitter : @adi1090x
*
*/
configuration {
font: "Iosevka Nerd Font 10";
show-icons: true;
icon-theme: "Papirus";
display-drun: "";
drun-display-format: "{name}";
disable-history: false;
fullscreen: false;
hide-scrollbar: true;
sidebar-mode: false;
}
@import "colors.rasi"
window {
transparency: "real";
background-color: @bg;
text-color: @fg;
border: 2px;
border-color: @ac;
border-radius: 0px;
width: 300px;
location: center;
x-offset: 0;
y-offset: 0;
}
prompt {
enabled: true;
padding: 10px 10px 10px 0px;
background-color: @al;
text-color: @ac;
font: "Iosevka Nerd Font 10";
}
textbox-prompt-colon {
padding: 10px 15px 10px 15px;
font: "Iosevka Nerd Font 10";
background-color: @al;
text-color: @ac;
expand: false;
str: "";
}
entry {
background-color: @al;
text-color: @ac;
placeholder-color: @ac;
expand: true;
horizontal-align: 0;
placeholder: "Search...";
padding: 10px 10px 10px 0px;
border-radius: 0px;
blink: true;
}
inputbar {
children: [ textbox-prompt-colon, entry ];
background-color: @al;
text-color: @fg;
expand: false;
border: 0px 0px 1px 0px;
border-radius: 0px;
border-color: @ac;
spacing: 0px;
}
listview {
background-color: @al;
padding: 0px;
columns: 1;
lines: 5;
spacing: 5px;
cycle: true;
dynamic: true;
layout: vertical;
}
mainbox {
background-color: @al;
border: 0px;
border-radius: 0px;
border-color: @ac;
children: [ inputbar, listview ];
spacing: 10px;
padding: 2px 10px 10px 10px;
}
element {
background-color: @al;
text-color: @fg;
orientation: horizontal;
border-radius: 0px;
padding: 8px 8px 8px -16px;
}
element-icon {
background-color: transparent;
text-color: inherit;
size: 24px;
border: 0px;
}
element-text {
background-color: transparent;
text-color: inherit;
expand: true;
horizontal-align: 0;
vertical-align: 0.5;
margin: 0px 2.5px 0px 2.5px;
}
element selected {
background-color: @se;
text-color: @fg;
border: 0px 0px 0px 0px;
border-radius: 0px;
border-color: @ac;
}

View file

@ -1,123 +0,0 @@
{ pkgs, lib,... }:
{
imports = [
./foot.nix
];
fonts = {
packages = with pkgs; [
noto-fonts
noto-fonts-cjk
noto-fonts-emoji
font-awesome
source-han-sans
];
};
security.polkit.enable = true;
security.pam.loginLimits = [
{ domain = "@users"; item = "rtprio"; type = "-"; value = 1; }
];
wayland.windowManager.sway = {
enable = true;
wrapperFeatures.gtk = true; # Fixes common issues with GTK 3 apps
config = {
modifier = "Mod4";
bars = [{
command = "${pkgs.waybar}/bin/waybar";
}];
terminal = "foot";
startup = [
{ command = "foot"; }
];
focus = {
forceWrapping = false;
followMouse = false;
};
fonts = {
names = [ "JetBrainsMonoNL Nerd Font Mono" ];
size = 13;
};
gaps = {
inner = 15;
};
input = {
"type:touchpad" = {
dwt = "enabled";
tap = "enabled";
natural_scroll = "enabled";
middle_emulation = "enabled";
};
"type:pointer" = {
natural_scroll = "enabled";
};
"type:mouse" = {
natural_scroll = "disabled";
};
};
window = {
border = 3;
titlebar = false;
commands = [
{
command = "opacity 1.0, border pixel 3, inhibit_idle fullscreen";
criteria = {
class = ".*";
};
}
{
command = "opacity 1.0, border pixel 3, inhibit_idle fullscreen";
criteria = {
app_id = ".*";
};
}
{
command = "resize set 650 450";
criteria = {
app_id = "snippetexpandergui";
};
}
{
command = "floating enable, sticky enable";
criteria = {
title = "Picture-in-Picture";
};
}
{
command = "floating enable, sticky enable";
criteria = {
title = ".*Sharing Indicator.*";
};
}
{
command = "floating enable, sticky enable, resize set 650 450";
criteria = {
title = ".*Syncthing Tray.*";
};
}
];
};
};
swaynag = {
enable = true;
settings = {
"<config>" = {
edge = "top";
message-padding = 5;
};
};
};
};
home.packages = with pkgs; [
grim # screenshot functionality
slurp # screenshot functionality
wl-clipboard # wl-copy and wl-paste for copy/paste from stdin / stdout
mako # notification system developed by swaywm maintainer
];
}

25
home/users/markagl.nix Normal file
View file

@ -0,0 +1,25 @@
{ pkgs, lib, config, ... }:
{
home.packages = with pkgs; [
# utils
procps
inotify-tools
];
imports = [
./kron.nix
../programs/i3
../programs/ai
# for config host
# ../programs/ghostty
../programs/alacritty
];
home.sessionVariables.OLLAMA_HOST = lib.mkForce "192.168.88.15";
home.sessionVariables.OLLAMA_URL = lib.mkForce "http://${config.home.sessionVariables.OLLAMA_HOST}:11434";
}