mirror of
https://github.com/Swarsel/.dotfiles.git
synced 2026-04-14 13:19:09 +02:00
feat: switch to niri+noctalia
This commit is contained in:
parent
a343de7a90
commit
694dd794f7
38 changed files with 3922 additions and 2066 deletions
1791
SwarselSystems.org
1791
SwarselSystems.org
File diff suppressed because it is too large
Load diff
11
files/scripts/niri-resize.sh
Normal file
11
files/scripts/niri-resize.sh
Normal file
|
|
@ -0,0 +1,11 @@
|
||||||
|
WORKSPACE=$(niri msg -j workspaces | jq -r '.[] | select(.is_active == true) | .id')
|
||||||
|
|
||||||
|
COUNT=$(niri msg -j windows | jq --argjson ws "$WORKSPACE" -r '.[] | select(.workspace_id == $ws and .is_floating == false) | .app_id' | wc -l)
|
||||||
|
|
||||||
|
while [[ $COUNT == "0" || $COUNT == "2" ]]; do
|
||||||
|
COUNT=$(niri msg -j windows | jq --argjson ws "$WORKSPACE" -r '.[] | select(.workspace_id == $ws and .is_floating == false) | .app_id' | wc -l)
|
||||||
|
done
|
||||||
|
|
||||||
|
if [[ $COUNT == "1" ]]; then
|
||||||
|
niri msg action maximize-column
|
||||||
|
fi
|
||||||
|
|
@ -1,36 +0,0 @@
|
||||||
while :; do
|
|
||||||
case ${1:-} in
|
|
||||||
-k | --kitty)
|
|
||||||
cmd=(sh -c 'kitty --app-id kittyterm -T kittyterm -o confirm_os_window_close=0 zellij attach --create kittyterm' '&')
|
|
||||||
searchapp="kittyterm"
|
|
||||||
;;
|
|
||||||
-e | --element)
|
|
||||||
cmd=(element-desktop)
|
|
||||||
searchapp="Element"
|
|
||||||
;;
|
|
||||||
-d | --vesktop)
|
|
||||||
cmd=(vesktop)
|
|
||||||
searchapp="vesktop"
|
|
||||||
;;
|
|
||||||
-s | --spotifyplayer)
|
|
||||||
cmd=(sh -c 'kitty --add-id spotifytui -T spotifytui -o confirm_os_window_close=0 spotify_player' '&')
|
|
||||||
searchapp="spotifytui"
|
|
||||||
;;
|
|
||||||
*) break ;;
|
|
||||||
esac
|
|
||||||
shift
|
|
||||||
done
|
|
||||||
|
|
||||||
WIN_INFO=$(niri msg -j windows | jq --arg search "$searchapp" '.[] | select (.app_id | test($search)) | { id, is_focused, workspace_id }')
|
|
||||||
ID=$(echo "$WIN_INFO" | jq -r '.id // empty')
|
|
||||||
IS_FOCUSED=$(echo "$WIN_INFO" | jq -r '.is_focused // empty')
|
|
||||||
TARGET_MONITOR=$(niri msg -j workspaces | jq --arg search "" '.[] | select (.name != null and (.name | test($search))) | { output }' | jq -r '.output // empty')
|
|
||||||
CURRENT_WORKSPACE=$(niri msg -j workspaces | jq -r '.[] | select (.is_active == true) | .output // empty')
|
|
||||||
|
|
||||||
if [ -z "$ID" ]; then
|
|
||||||
niri msg action spawn -- "${cmd[@]}"
|
|
||||||
elif [ "$IS_FOCUSED" ]; then
|
|
||||||
niri msg action move-window-to-workspace "" --window-id "$ID" --focus false
|
|
||||||
else
|
|
||||||
niri msg action focus-monitor "$TARGET_MONITOR" && niri msg action move-window-to-workspace "$CURRENT_WORKSPACE" --window-id "$ID" && niri msg action focus-floating
|
|
||||||
fi
|
|
||||||
565
files/zellij/config-kittyterm.kdl
Normal file
565
files/zellij/config-kittyterm.kdl
Normal file
|
|
@ -0,0 +1,565 @@
|
||||||
|
copy_command "wl-copy"
|
||||||
|
copy_on_select true
|
||||||
|
default_layout "swarsel"
|
||||||
|
default_shell "zsh"
|
||||||
|
keybinds clear-defaults=true {
|
||||||
|
entersearch {
|
||||||
|
bind "Ctrl c" {
|
||||||
|
SwitchToMode "scroll"
|
||||||
|
}
|
||||||
|
bind "esc" {
|
||||||
|
SwitchToMode "scroll"
|
||||||
|
}
|
||||||
|
bind "enter" {
|
||||||
|
SwitchToMode "search"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
locked {
|
||||||
|
bind "Ctrl g" {
|
||||||
|
SwitchToMode "normal"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
move {
|
||||||
|
bind "Ctrl h" {
|
||||||
|
SwitchToMode "normal"
|
||||||
|
}
|
||||||
|
bind "left" {
|
||||||
|
MovePane "left"
|
||||||
|
}
|
||||||
|
bind "down" {
|
||||||
|
MovePane "down"
|
||||||
|
}
|
||||||
|
bind "up" {
|
||||||
|
MovePane "up"
|
||||||
|
}
|
||||||
|
bind "right" {
|
||||||
|
MovePane "right"
|
||||||
|
}
|
||||||
|
bind "h" {
|
||||||
|
MovePane "left"
|
||||||
|
}
|
||||||
|
bind "j" {
|
||||||
|
MovePane "down"
|
||||||
|
}
|
||||||
|
bind "k" {
|
||||||
|
MovePane "up"
|
||||||
|
}
|
||||||
|
bind "l" {
|
||||||
|
MovePane "right"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
pane {
|
||||||
|
bind "Ctrl p" {
|
||||||
|
SwitchToMode "normal"
|
||||||
|
}
|
||||||
|
bind "left" {
|
||||||
|
MoveFocus "left"
|
||||||
|
}
|
||||||
|
bind "down" {
|
||||||
|
MoveFocus "down"
|
||||||
|
}
|
||||||
|
bind "up" {
|
||||||
|
MoveFocus "up"
|
||||||
|
}
|
||||||
|
bind "right" {
|
||||||
|
MoveFocus "right"
|
||||||
|
}
|
||||||
|
bind "h" {
|
||||||
|
MoveFocus "left"
|
||||||
|
}
|
||||||
|
bind "j" {
|
||||||
|
MoveFocus "down"
|
||||||
|
}
|
||||||
|
bind "k" {
|
||||||
|
MoveFocus "up"
|
||||||
|
}
|
||||||
|
bind "l" {
|
||||||
|
MoveFocus "right"
|
||||||
|
}
|
||||||
|
bind "d" {
|
||||||
|
NewPane "down"
|
||||||
|
SwitchToMode "normal"
|
||||||
|
}
|
||||||
|
bind "e" {
|
||||||
|
TogglePaneEmbedOrFloating
|
||||||
|
SwitchToMode "normal"
|
||||||
|
}
|
||||||
|
bind "f" {
|
||||||
|
ToggleFocusFullscreen
|
||||||
|
SwitchToMode "normal"
|
||||||
|
}
|
||||||
|
bind "n" {
|
||||||
|
NewPane
|
||||||
|
SwitchToMode "normal"
|
||||||
|
}
|
||||||
|
bind "p" {
|
||||||
|
SwitchFocus
|
||||||
|
}
|
||||||
|
bind "f12" {
|
||||||
|
ToggleFloatingPanes
|
||||||
|
SwitchToMode "normal"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
renamepane {
|
||||||
|
bind "esc" {
|
||||||
|
UndoRenamePane
|
||||||
|
SwitchToMode "pane"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
renametab {
|
||||||
|
bind "esc" {
|
||||||
|
UndoRenameTab
|
||||||
|
SwitchToMode "tab"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
resize {
|
||||||
|
bind "Ctrl n" {
|
||||||
|
SwitchToMode "normal"
|
||||||
|
}
|
||||||
|
bind "left" {
|
||||||
|
Resize "Increase left"
|
||||||
|
}
|
||||||
|
bind "down" {
|
||||||
|
Resize "Increase down"
|
||||||
|
}
|
||||||
|
bind "up" {
|
||||||
|
Resize "Increase up"
|
||||||
|
}
|
||||||
|
bind "right" {
|
||||||
|
Resize "Increase right"
|
||||||
|
}
|
||||||
|
bind "+" {
|
||||||
|
Resize "Increase"
|
||||||
|
}
|
||||||
|
bind "-" {
|
||||||
|
Resize "Decrease"
|
||||||
|
}
|
||||||
|
bind "=" {
|
||||||
|
Resize "Increase"
|
||||||
|
}
|
||||||
|
bind "H" {
|
||||||
|
Resize "Decrease left"
|
||||||
|
}
|
||||||
|
bind "J" {
|
||||||
|
Resize "Decrease down"
|
||||||
|
}
|
||||||
|
bind "K" {
|
||||||
|
Resize "Decrease up"
|
||||||
|
}
|
||||||
|
bind "L" {
|
||||||
|
Resize "Decrease right"
|
||||||
|
}
|
||||||
|
bind "h" {
|
||||||
|
Resize "Increase left"
|
||||||
|
}
|
||||||
|
bind "j" {
|
||||||
|
Resize "Increase down"
|
||||||
|
}
|
||||||
|
bind "k" {
|
||||||
|
Resize "Increase up"
|
||||||
|
}
|
||||||
|
bind "l" {
|
||||||
|
Resize "Increase right"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
scroll {
|
||||||
|
bind "e" {
|
||||||
|
EditScrollback
|
||||||
|
SwitchToMode "normal"
|
||||||
|
}
|
||||||
|
bind "s" {
|
||||||
|
SwitchToMode "entersearch"
|
||||||
|
SearchInput 0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
search {
|
||||||
|
bind "c" {
|
||||||
|
SearchToggleOption "CaseSensitivity"
|
||||||
|
}
|
||||||
|
bind "n" {
|
||||||
|
Search "down"
|
||||||
|
}
|
||||||
|
bind "o" {
|
||||||
|
SearchToggleOption "WholeWord"
|
||||||
|
}
|
||||||
|
bind "p" {
|
||||||
|
Search "up"
|
||||||
|
}
|
||||||
|
bind "w" {
|
||||||
|
SearchToggleOption "Wrap"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
session {
|
||||||
|
bind "Ctrl o" {
|
||||||
|
SwitchToMode "normal"
|
||||||
|
}
|
||||||
|
bind "c" {
|
||||||
|
LaunchOrFocusPlugin "configuration" {
|
||||||
|
floating true
|
||||||
|
move_to_focused_tab true
|
||||||
|
}
|
||||||
|
SwitchToMode "normal"
|
||||||
|
}
|
||||||
|
bind "p" {
|
||||||
|
LaunchOrFocusPlugin "plugin-manager" {
|
||||||
|
floating true
|
||||||
|
move_to_focused_tab true
|
||||||
|
}
|
||||||
|
SwitchToMode "normal"
|
||||||
|
}
|
||||||
|
bind "w" {
|
||||||
|
LaunchOrFocusPlugin "session-manager" {
|
||||||
|
floating true
|
||||||
|
move_to_focused_tab true
|
||||||
|
}
|
||||||
|
SwitchToMode "normal"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
shared_among "pane" "tmux" {
|
||||||
|
bind "x" {
|
||||||
|
CloseFocus
|
||||||
|
SwitchToMode "normal"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
shared_among "renametab" "renamepane" {
|
||||||
|
bind "Ctrl c" {
|
||||||
|
SwitchToMode "normal"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
shared_among "scroll" "search" {
|
||||||
|
bind "PageDown" {
|
||||||
|
PageScrollDown
|
||||||
|
}
|
||||||
|
bind "PageUp" {
|
||||||
|
PageScrollUp
|
||||||
|
}
|
||||||
|
bind "left" {
|
||||||
|
PageScrollUp
|
||||||
|
}
|
||||||
|
bind "down" {
|
||||||
|
ScrollDown
|
||||||
|
}
|
||||||
|
bind "up" {
|
||||||
|
ScrollUp
|
||||||
|
}
|
||||||
|
bind "right" {
|
||||||
|
PageScrollDown
|
||||||
|
}
|
||||||
|
bind "Ctrl b" {
|
||||||
|
PageScrollUp
|
||||||
|
}
|
||||||
|
bind "Ctrl c" {
|
||||||
|
ScrollToBottom
|
||||||
|
SwitchToMode "normal"
|
||||||
|
}
|
||||||
|
bind "d" {
|
||||||
|
HalfPageScrollDown
|
||||||
|
}
|
||||||
|
bind "Ctrl f" {
|
||||||
|
PageScrollDown
|
||||||
|
}
|
||||||
|
bind "h" {
|
||||||
|
PageScrollUp
|
||||||
|
}
|
||||||
|
bind "j" {
|
||||||
|
ScrollDown
|
||||||
|
}
|
||||||
|
bind "k" {
|
||||||
|
ScrollUp
|
||||||
|
}
|
||||||
|
bind "l" {
|
||||||
|
PageScrollDown
|
||||||
|
}
|
||||||
|
bind "Ctrl s" {
|
||||||
|
SwitchToMode "normal"
|
||||||
|
}
|
||||||
|
bind "u" {
|
||||||
|
HalfPageScrollUp
|
||||||
|
}
|
||||||
|
}
|
||||||
|
shared_among "session" "tmux" {
|
||||||
|
bind "d" {
|
||||||
|
Detach
|
||||||
|
}
|
||||||
|
}
|
||||||
|
shared_except "locked" {
|
||||||
|
bind "Alt left" {
|
||||||
|
MoveFocusOrTab "left"
|
||||||
|
}
|
||||||
|
bind "Alt down" {
|
||||||
|
MoveFocus "down"
|
||||||
|
}
|
||||||
|
bind "Alt up" {
|
||||||
|
MoveFocus "up"
|
||||||
|
}
|
||||||
|
bind "Alt right" {
|
||||||
|
MoveFocusOrTab "right"
|
||||||
|
}
|
||||||
|
bind "Alt +" {
|
||||||
|
Resize "Increase"
|
||||||
|
}
|
||||||
|
bind "Alt -" {
|
||||||
|
Resize "Decrease"
|
||||||
|
}
|
||||||
|
bind "Alt =" {
|
||||||
|
Resize "Increase"
|
||||||
|
}
|
||||||
|
bind "Alt r" {
|
||||||
|
WriteChars "source cdr"
|
||||||
|
WriteChars "\n"
|
||||||
|
}
|
||||||
|
bind "Alt f" {
|
||||||
|
ToggleFloatingPanes
|
||||||
|
}
|
||||||
|
bind "Ctrl g" {
|
||||||
|
SwitchToMode "locked"
|
||||||
|
}
|
||||||
|
bind "Alt h" {
|
||||||
|
MoveFocusOrTab "left"
|
||||||
|
}
|
||||||
|
bind "Alt i" {
|
||||||
|
MoveTab "left"
|
||||||
|
}
|
||||||
|
bind "Alt j" {
|
||||||
|
MoveFocus "down"
|
||||||
|
}
|
||||||
|
bind "Alt k" {
|
||||||
|
MoveFocus "up"
|
||||||
|
}
|
||||||
|
bind "Alt p" {
|
||||||
|
NewPane
|
||||||
|
}
|
||||||
|
bind "Alt n" {
|
||||||
|
NewTab
|
||||||
|
}
|
||||||
|
}
|
||||||
|
shared_except "locked" "move" {
|
||||||
|
bind "Ctrl h" {
|
||||||
|
SwitchToMode "move"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
shared_except "locked" "pane" {
|
||||||
|
bind "Ctrl p" {
|
||||||
|
SwitchToMode "pane"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
shared_except "locked" "resize" {
|
||||||
|
bind "Ctrl n" {
|
||||||
|
SwitchToMode "resize"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
shared_except "locked" "scroll" "search" {
|
||||||
|
bind "Ctrl s" {
|
||||||
|
SwitchToMode "scroll"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
shared_except "locked" "scroll" "search" "tmux" {
|
||||||
|
bind "Ctrl b" {
|
||||||
|
SwitchToMode "tmux"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
shared_except "locked" "session" {
|
||||||
|
bind "Ctrl o" {
|
||||||
|
SwitchToMode "session"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
shared_except "locked" "tab" {
|
||||||
|
bind "Ctrl t" {
|
||||||
|
SwitchToMode "tab"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
shared_except "normal" "locked" "entersearch" {
|
||||||
|
bind "enter" {
|
||||||
|
SwitchToMode "normal"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
shared_except "normal" "locked" "entersearch" "renametab" "renamepane" {
|
||||||
|
bind "esc" {
|
||||||
|
SwitchToMode "normal"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
tab {
|
||||||
|
bind "Ctrl t" {
|
||||||
|
SwitchToMode "normal"
|
||||||
|
}
|
||||||
|
bind "left" {
|
||||||
|
GoToPreviousTab
|
||||||
|
}
|
||||||
|
bind "down" {
|
||||||
|
GoToNextTab
|
||||||
|
}
|
||||||
|
bind "up" {
|
||||||
|
GoToPreviousTab
|
||||||
|
}
|
||||||
|
bind "right" {
|
||||||
|
GoToNextTab
|
||||||
|
}
|
||||||
|
bind "1" {
|
||||||
|
GoToTab 1
|
||||||
|
SwitchToMode "normal"
|
||||||
|
}
|
||||||
|
bind "2" {
|
||||||
|
GoToTab 2
|
||||||
|
SwitchToMode "normal"
|
||||||
|
}
|
||||||
|
bind "3" {
|
||||||
|
GoToTab 3
|
||||||
|
SwitchToMode "normal"
|
||||||
|
}
|
||||||
|
bind "4" {
|
||||||
|
GoToTab 4
|
||||||
|
SwitchToMode "normal"
|
||||||
|
}
|
||||||
|
bind "5" {
|
||||||
|
GoToTab 5
|
||||||
|
SwitchToMode "normal"
|
||||||
|
}
|
||||||
|
bind "6" {
|
||||||
|
GoToTab 6
|
||||||
|
SwitchToMode "normal"
|
||||||
|
}
|
||||||
|
bind "7" {
|
||||||
|
GoToTab 7
|
||||||
|
SwitchToMode "normal"
|
||||||
|
}
|
||||||
|
bind "8" {
|
||||||
|
GoToTab 8
|
||||||
|
SwitchToMode "normal"
|
||||||
|
}
|
||||||
|
bind "9" {
|
||||||
|
GoToTab 9
|
||||||
|
SwitchToMode "normal"
|
||||||
|
}
|
||||||
|
bind "h" {
|
||||||
|
GoToPreviousTab
|
||||||
|
}
|
||||||
|
bind "j" {
|
||||||
|
GoToNextTab
|
||||||
|
}
|
||||||
|
bind "k" {
|
||||||
|
GoToPreviousTab
|
||||||
|
}
|
||||||
|
bind "l" {
|
||||||
|
GoToNextTab
|
||||||
|
}
|
||||||
|
bind "n" {
|
||||||
|
NewTab
|
||||||
|
SwitchToMode "normal"
|
||||||
|
}
|
||||||
|
bind "r" {
|
||||||
|
SwitchToMode "renametab"
|
||||||
|
TabNameInput 0
|
||||||
|
}
|
||||||
|
bind "s" {
|
||||||
|
ToggleActiveSyncTab
|
||||||
|
SwitchToMode "normal"
|
||||||
|
}
|
||||||
|
bind "x" {
|
||||||
|
CloseTab
|
||||||
|
SwitchToMode "normal"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
tmux {
|
||||||
|
bind "left" {
|
||||||
|
MoveFocus "left"
|
||||||
|
SwitchToMode "normal"
|
||||||
|
}
|
||||||
|
bind "down" {
|
||||||
|
MoveFocus "down"
|
||||||
|
SwitchToMode "normal"
|
||||||
|
}
|
||||||
|
bind "up" {
|
||||||
|
MoveFocus "up"
|
||||||
|
SwitchToMode "normal"
|
||||||
|
}
|
||||||
|
bind "right" {
|
||||||
|
MoveFocus "right"
|
||||||
|
SwitchToMode "normal"
|
||||||
|
}
|
||||||
|
bind "space" {
|
||||||
|
NextSwapLayout
|
||||||
|
}
|
||||||
|
bind "\"" {
|
||||||
|
NewPane "down"
|
||||||
|
SwitchToMode "normal"
|
||||||
|
}
|
||||||
|
bind "%" {
|
||||||
|
NewPane "right"
|
||||||
|
SwitchToMode "normal"
|
||||||
|
}
|
||||||
|
bind "," {
|
||||||
|
SwitchToMode "renametab"
|
||||||
|
}
|
||||||
|
bind "[" {
|
||||||
|
SwitchToMode "scroll"
|
||||||
|
}
|
||||||
|
bind "Ctrl b" {
|
||||||
|
Write 2
|
||||||
|
SwitchToMode "normal"
|
||||||
|
}
|
||||||
|
bind "c" {
|
||||||
|
NewTab
|
||||||
|
SwitchToMode "normal"
|
||||||
|
}
|
||||||
|
bind "h" {
|
||||||
|
MoveFocus "left"
|
||||||
|
SwitchToMode "normal"
|
||||||
|
}
|
||||||
|
bind "j" {
|
||||||
|
MoveFocus "down"
|
||||||
|
SwitchToMode "normal"
|
||||||
|
}
|
||||||
|
bind "k" {
|
||||||
|
MoveFocus "up"
|
||||||
|
SwitchToMode "normal"
|
||||||
|
}
|
||||||
|
bind "l" {
|
||||||
|
MoveFocus "right"
|
||||||
|
SwitchToMode "normal"
|
||||||
|
}
|
||||||
|
bind "n" {
|
||||||
|
GoToNextTab
|
||||||
|
SwitchToMode "normal"
|
||||||
|
}
|
||||||
|
bind "o" {
|
||||||
|
FocusNextPane
|
||||||
|
}
|
||||||
|
bind "p" {
|
||||||
|
GoToPreviousTab
|
||||||
|
SwitchToMode "normal"
|
||||||
|
}
|
||||||
|
bind "z" {
|
||||||
|
ToggleFocusFullscreen
|
||||||
|
SwitchToMode "normal"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
layout_dir "/home/swarsel/.config/zellij/layouts"
|
||||||
|
on_force_close "detach"
|
||||||
|
pane_frames false
|
||||||
|
plugins {
|
||||||
|
compact-bar {
|
||||||
|
path "compact-bar"
|
||||||
|
}
|
||||||
|
status-bar {
|
||||||
|
path "status-bar"
|
||||||
|
}
|
||||||
|
strider {
|
||||||
|
path "strider"
|
||||||
|
}
|
||||||
|
tab-bar {
|
||||||
|
path "tab-bar"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
scrollback_lines_to_serialize 100000
|
||||||
|
session_serialization true
|
||||||
|
show_startup_tips false
|
||||||
|
simplified_ui false
|
||||||
|
support_kitty_keyboard_protocol true
|
||||||
|
theme_dir "/home/swarsel/.config/zellij/themes"
|
||||||
|
ui {
|
||||||
|
pane_frames {
|
||||||
|
hide_session_name true
|
||||||
|
rounded_corners true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -1,341 +0,0 @@
|
||||||
{ config }:
|
|
||||||
''
|
|
||||||
pane_frames false
|
|
||||||
simplified_ui false
|
|
||||||
default_shell "zsh"
|
|
||||||
copy_on_select true
|
|
||||||
on_force_close "detach"
|
|
||||||
show_startup_tips false
|
|
||||||
|
|
||||||
default_layout "default"
|
|
||||||
layout_dir "${config.home.homeDirectory}/.config/zellij/layouts"
|
|
||||||
theme_dir "${config.home.homeDirectory}/.config/zellij/themes"
|
|
||||||
|
|
||||||
keybinds clear-defaults=true {
|
|
||||||
locked {
|
|
||||||
bind "Ctrl g" { SwitchToMode "normal"; }
|
|
||||||
}
|
|
||||||
pane {
|
|
||||||
bind "left" { MoveFocus "left"; }
|
|
||||||
bind "down" { MoveFocus "down"; }
|
|
||||||
bind "up" { MoveFocus "up"; }
|
|
||||||
bind "right" { MoveFocus "right"; }
|
|
||||||
bind "c" { SwitchToMode "renamepane"; PaneNameInput 0; }
|
|
||||||
bind "d" { NewPane "down"; SwitchToMode "normal"; }
|
|
||||||
bind "e" { TogglePaneEmbedOrFloating; SwitchToMode "normal"; }
|
|
||||||
bind "f" { ToggleFocusFullscreen; SwitchToMode "normal"; }
|
|
||||||
bind "h" { MoveFocus "left"; }
|
|
||||||
bind "j" { MoveFocus "down"; }
|
|
||||||
bind "k" { MoveFocus "up"; }
|
|
||||||
bind "l" { MoveFocus "right"; }
|
|
||||||
bind "n" { NewPane; SwitchToMode "normal"; }
|
|
||||||
bind "p" { SwitchFocus; }
|
|
||||||
bind "Ctrl p" { SwitchToMode "normal"; }
|
|
||||||
bind "r" { NewPane "right"; SwitchToMode "normal"; }
|
|
||||||
bind "w" { ToggleFloatingPanes; SwitchToMode "normal"; }
|
|
||||||
bind "z" { TogglePaneFrames; SwitchToMode "normal"; }
|
|
||||||
}
|
|
||||||
tab {
|
|
||||||
bind "left" { GoToPreviousTab; }
|
|
||||||
bind "down" { GoToNextTab; }
|
|
||||||
bind "up" { GoToPreviousTab; }
|
|
||||||
bind "right" { GoToNextTab; }
|
|
||||||
bind "1" { GoToTab 1; SwitchToMode "normal"; }
|
|
||||||
bind "2" { GoToTab 2; SwitchToMode "normal"; }
|
|
||||||
bind "3" { GoToTab 3; SwitchToMode "normal"; }
|
|
||||||
bind "4" { GoToTab 4; SwitchToMode "normal"; }
|
|
||||||
bind "5" { GoToTab 5; SwitchToMode "normal"; }
|
|
||||||
bind "6" { GoToTab 6; SwitchToMode "normal"; }
|
|
||||||
bind "7" { GoToTab 7; SwitchToMode "normal"; }
|
|
||||||
bind "8" { GoToTab 8; SwitchToMode "normal"; }
|
|
||||||
bind "9" { GoToTab 9; SwitchToMode "normal"; }
|
|
||||||
bind "[" { BreakPaneLeft; SwitchToMode "normal"; }
|
|
||||||
bind "]" { BreakPaneRight; SwitchToMode "normal"; }
|
|
||||||
bind "b" { BreakPane; SwitchToMode "normal"; }
|
|
||||||
bind "h" { GoToPreviousTab; }
|
|
||||||
bind "j" { GoToNextTab; }
|
|
||||||
bind "k" { GoToPreviousTab; }
|
|
||||||
bind "l" { GoToNextTab; }
|
|
||||||
bind "n" { NewTab; SwitchToMode "normal"; }
|
|
||||||
bind "r" { SwitchToMode "renametab"; TabNameInput 0; }
|
|
||||||
bind "s" { ToggleActiveSyncTab; SwitchToMode "normal"; }
|
|
||||||
bind "Ctrl t" { SwitchToMode "normal"; }
|
|
||||||
bind "x" { CloseTab; SwitchToMode "normal"; }
|
|
||||||
bind "tab" { ToggleTab; }
|
|
||||||
}
|
|
||||||
resize {
|
|
||||||
bind "left" { Resize "Increase left"; }
|
|
||||||
bind "down" { Resize "Increase down"; }
|
|
||||||
bind "up" { Resize "Increase up"; }
|
|
||||||
bind "right" { Resize "Increase right"; }
|
|
||||||
bind "+" { Resize "Increase"; }
|
|
||||||
bind "-" { Resize "Decrease"; }
|
|
||||||
bind "=" { Resize "Increase"; }
|
|
||||||
bind "H" { Resize "Decrease left"; }
|
|
||||||
bind "J" { Resize "Decrease down"; }
|
|
||||||
bind "K" { Resize "Decrease up"; }
|
|
||||||
bind "L" { Resize "Decrease right"; }
|
|
||||||
bind "h" { Resize "Increase left"; }
|
|
||||||
bind "j" { Resize "Increase down"; }
|
|
||||||
bind "k" { Resize "Increase up"; }
|
|
||||||
bind "l" { Resize "Increase right"; }
|
|
||||||
bind "Ctrl n" { SwitchToMode "normal"; }
|
|
||||||
}
|
|
||||||
move {
|
|
||||||
bind "left" { MovePane "left"; }
|
|
||||||
bind "down" { MovePane "down"; }
|
|
||||||
bind "up" { MovePane "up"; }
|
|
||||||
bind "right" { MovePane "right"; }
|
|
||||||
bind "h" { MovePane "left"; }
|
|
||||||
bind "Ctrl h" { SwitchToMode "normal"; }
|
|
||||||
bind "j" { MovePane "down"; }
|
|
||||||
bind "k" { MovePane "up"; }
|
|
||||||
bind "l" { MovePane "right"; }
|
|
||||||
bind "n" { MovePane; }
|
|
||||||
bind "p" { MovePaneBackwards; }
|
|
||||||
bind "tab" { MovePane; }
|
|
||||||
}
|
|
||||||
scroll {
|
|
||||||
bind "e" { EditScrollback; SwitchToMode "normal"; }
|
|
||||||
bind "s" { SwitchToMode "entersearch"; SearchInput 0; }
|
|
||||||
}
|
|
||||||
search {
|
|
||||||
bind "c" { SearchToggleOption "CaseSensitivity"; }
|
|
||||||
bind "n" { Search "down"; }
|
|
||||||
bind "o" { SearchToggleOption "WholeWord"; }
|
|
||||||
bind "p" { Search "up"; }
|
|
||||||
bind "w" { SearchToggleOption "Wrap"; }
|
|
||||||
}
|
|
||||||
session {
|
|
||||||
bind "c" {
|
|
||||||
LaunchOrFocusPlugin "configuration" {
|
|
||||||
floating true
|
|
||||||
move_to_focused_tab true
|
|
||||||
}
|
|
||||||
SwitchToMode "normal"
|
|
||||||
}
|
|
||||||
bind "Ctrl o" { SwitchToMode "normal"; }
|
|
||||||
bind "p" {
|
|
||||||
LaunchOrFocusPlugin "plugin-manager" {
|
|
||||||
floating true
|
|
||||||
move_to_focused_tab true
|
|
||||||
}
|
|
||||||
SwitchToMode "normal"
|
|
||||||
}
|
|
||||||
bind "w" {
|
|
||||||
LaunchOrFocusPlugin "session-manager" {
|
|
||||||
floating true
|
|
||||||
move_to_focused_tab true
|
|
||||||
}
|
|
||||||
SwitchToMode "normal"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
shared_except "locked" {
|
|
||||||
bind "Alt left" { MoveFocusOrTab "left"; }
|
|
||||||
bind "Alt down" { MoveFocus "down"; }
|
|
||||||
bind "Alt up" { MoveFocus "up"; }
|
|
||||||
bind "Alt right" { MoveFocusOrTab "right"; }
|
|
||||||
bind "Alt +" { Resize "Increase"; }
|
|
||||||
bind "Alt -" { Resize "Decrease"; }
|
|
||||||
bind "Alt =" { Resize "Increase"; }
|
|
||||||
bind "Alt [" { PreviousSwapLayout; }
|
|
||||||
bind "Alt ]" { NextSwapLayout; }
|
|
||||||
bind "Alt f" { ToggleFloatingPanes; }
|
|
||||||
bind "Ctrl g" { SwitchToMode "locked"; }
|
|
||||||
bind "Alt h" { MoveFocusOrTab "left"; }
|
|
||||||
bind "Alt i" { MoveTab "left"; }
|
|
||||||
bind "Alt j" { MoveFocus "down"; }
|
|
||||||
bind "Alt k" { MoveFocus "up"; }
|
|
||||||
bind "Alt l" { MoveFocusOrTab "right"; }
|
|
||||||
bind "Alt n" { NewPane; }
|
|
||||||
bind "Alt o" { MoveTab "right"; }
|
|
||||||
bind "Ctrl q" { Quit; }
|
|
||||||
}
|
|
||||||
shared_except "locked" "move" {
|
|
||||||
bind "Ctrl h" { SwitchToMode "move"; }
|
|
||||||
}
|
|
||||||
shared_except "locked" "session" {
|
|
||||||
bind "Ctrl o" { SwitchToMode "session"; }
|
|
||||||
}
|
|
||||||
shared_except "locked" "scroll" "search" "tmux" {
|
|
||||||
bind "Ctrl b" { SwitchToMode "tmux"; }
|
|
||||||
}
|
|
||||||
shared_except "locked" "scroll" "search" {
|
|
||||||
bind "Ctrl s" { SwitchToMode "scroll"; }
|
|
||||||
}
|
|
||||||
shared_except "locked" "tab" {
|
|
||||||
bind "Ctrl t" { SwitchToMode "tab"; }
|
|
||||||
}
|
|
||||||
shared_except "locked" "pane" {
|
|
||||||
bind "Ctrl p" { SwitchToMode "pane"; }
|
|
||||||
}
|
|
||||||
shared_except "locked" "resize" {
|
|
||||||
bind "Ctrl n" { SwitchToMode "resize"; }
|
|
||||||
}
|
|
||||||
shared_except "normal" "locked" "entersearch" {
|
|
||||||
bind "enter" { SwitchToMode "normal"; }
|
|
||||||
}
|
|
||||||
shared_except "normal" "locked" "entersearch" "renametab" "renamepane" {
|
|
||||||
bind "esc" { SwitchToMode "normal"; }
|
|
||||||
}
|
|
||||||
shared_among "pane" "tmux" {
|
|
||||||
bind "x" { CloseFocus; SwitchToMode "normal"; }
|
|
||||||
}
|
|
||||||
shared_among "scroll" "search" {
|
|
||||||
bind "PageDown" { PageScrollDown; }
|
|
||||||
bind "PageUp" { PageScrollUp; }
|
|
||||||
bind "left" { PageScrollUp; }
|
|
||||||
bind "down" { ScrollDown; }
|
|
||||||
bind "up" { ScrollUp; }
|
|
||||||
bind "right" { PageScrollDown; }
|
|
||||||
bind "Ctrl b" { PageScrollUp; }
|
|
||||||
bind "Ctrl c" { ScrollToBottom; SwitchToMode "normal"; }
|
|
||||||
bind "d" { HalfPageScrollDown; }
|
|
||||||
bind "Ctrl f" { PageScrollDown; }
|
|
||||||
bind "h" { PageScrollUp; }
|
|
||||||
bind "j" { ScrollDown; }
|
|
||||||
bind "k" { ScrollUp; }
|
|
||||||
bind "l" { PageScrollDown; }
|
|
||||||
bind "Ctrl s" { SwitchToMode "normal"; }
|
|
||||||
bind "u" { HalfPageScrollUp; }
|
|
||||||
}
|
|
||||||
entersearch {
|
|
||||||
bind "Ctrl c" { SwitchToMode "scroll"; }
|
|
||||||
bind "esc" { SwitchToMode "scroll"; }
|
|
||||||
bind "enter" { SwitchToMode "search"; }
|
|
||||||
}
|
|
||||||
renametab {
|
|
||||||
bind "esc" { UndoRenameTab; SwitchToMode "tab"; }
|
|
||||||
}
|
|
||||||
shared_among "renametab" "renamepane" {
|
|
||||||
bind "Ctrl c" { SwitchToMode "normal"; }
|
|
||||||
}
|
|
||||||
renamepane {
|
|
||||||
bind "esc" { UndoRenamePane; SwitchToMode "pane"; }
|
|
||||||
}
|
|
||||||
shared_among "session" "tmux" {
|
|
||||||
bind "d" { Detach; }
|
|
||||||
}
|
|
||||||
tmux {
|
|
||||||
bind "left" { MoveFocus "left"; SwitchToMode "normal"; }
|
|
||||||
bind "down" { MoveFocus "down"; SwitchToMode "normal"; }
|
|
||||||
bind "up" { MoveFocus "up"; SwitchToMode "normal"; }
|
|
||||||
bind "right" { MoveFocus "right"; SwitchToMode "normal"; }
|
|
||||||
bind "space" { NextSwapLayout; }
|
|
||||||
bind "\"" { NewPane "down"; SwitchToMode "normal"; }
|
|
||||||
bind "%" { NewPane "right"; SwitchToMode "normal"; }
|
|
||||||
bind "," { SwitchToMode "renametab"; }
|
|
||||||
bind "[" { SwitchToMode "scroll"; }
|
|
||||||
bind "Ctrl b" { Write 2; SwitchToMode "normal"; }
|
|
||||||
bind "c" { NewTab; SwitchToMode "normal"; }
|
|
||||||
bind "h" { MoveFocus "left"; SwitchToMode "normal"; }
|
|
||||||
bind "j" { MoveFocus "down"; SwitchToMode "normal"; }
|
|
||||||
bind "k" { MoveFocus "up"; SwitchToMode "normal"; }
|
|
||||||
bind "l" { MoveFocus "right"; SwitchToMode "normal"; }
|
|
||||||
bind "n" { GoToNextTab; SwitchToMode "normal"; }
|
|
||||||
bind "o" { FocusNextPane; }
|
|
||||||
bind "p" { GoToPreviousTab; SwitchToMode "normal"; }
|
|
||||||
bind "z" { ToggleFocusFullscreen; SwitchToMode "normal"; }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Plugin aliases - can be used to change the implementation of Zellij
|
|
||||||
// changing these requires a restart to take effect
|
|
||||||
plugins {
|
|
||||||
compact-bar location="zellij:compact-bar"
|
|
||||||
configuration location="zellij:configuration"
|
|
||||||
filepicker location="zellij:strider" {
|
|
||||||
cwd "/"
|
|
||||||
}
|
|
||||||
plugin-manager location="zellij:plugin-manager"
|
|
||||||
session-manager location="zellij:session-manager"
|
|
||||||
status-bar location="zellij:status-bar"
|
|
||||||
strider location="zellij:strider"
|
|
||||||
tab-bar location="zellij:tab-bar"
|
|
||||||
welcome-screen location="zellij:session-manager" {
|
|
||||||
welcome_screen true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Plugins to load in the background when a new session starts
|
|
||||||
// eg. "file:/path/to/my-plugin.wasm"
|
|
||||||
// eg. "https://example.com/my-plugin.wasm"
|
|
||||||
load_plugins {
|
|
||||||
}
|
|
||||||
|
|
||||||
// Provide a command to execute when copying text. The text will be piped to
|
|
||||||
// the stdin of the program to perform the copy. This can be used with
|
|
||||||
// terminal emulators which do not support the OSC 52 ANSI control sequence
|
|
||||||
// that will be used by default if this option is not set.
|
|
||||||
// Examples:
|
|
||||||
//
|
|
||||||
// copy_command "xclip -selection clipboard" // x11
|
|
||||||
// copy_command "wl-copy" // wayland
|
|
||||||
// copy_command "pbcopy" // osx
|
|
||||||
//
|
|
||||||
// copy_command "pbcopy"
|
|
||||||
|
|
||||||
// Choose the destination for copied text
|
|
||||||
// Allows using the primary selection buffer (on x11/wayland) instead of the system clipboard.
|
|
||||||
// Does not apply when using copy_command.
|
|
||||||
// Options:
|
|
||||||
// - system (default)
|
|
||||||
// - primary
|
|
||||||
//
|
|
||||||
// copy_clipboard "primary"
|
|
||||||
|
|
||||||
// Path to the default editor to use to edit pane scrollbuffer
|
|
||||||
// Default: $EDITOR or $VISUAL
|
|
||||||
// scrollback_editor "/usr/bin/vim"
|
|
||||||
|
|
||||||
// Toggle between having Zellij lay out panes according to a predefined set of layouts whenever possible
|
|
||||||
// Options:
|
|
||||||
// - true (default)
|
|
||||||
// - false
|
|
||||||
//
|
|
||||||
// auto_layout false
|
|
||||||
|
|
||||||
// Whether sessions should be serialized to the cache folder (including their tabs/panes, cwds and running commands) so that they can later be resurrected
|
|
||||||
// Options:
|
|
||||||
// - true (default)
|
|
||||||
// - false
|
|
||||||
//
|
|
||||||
// session_serialization false
|
|
||||||
|
|
||||||
// Whether pane viewports are serialized along with the session, default is false
|
|
||||||
// Options:
|
|
||||||
// - true
|
|
||||||
// - false (default)
|
|
||||||
//
|
|
||||||
// serialize_pane_viewport false
|
|
||||||
|
|
||||||
// Scrollback lines to serialize along with the pane viewport when serializing sessions, 0
|
|
||||||
// defaults to the scrollback size. If this number is higher than the scrollback size, it will
|
|
||||||
// also default to the scrollback size. This does nothing if `serialize_pane_viewport` is not true.
|
|
||||||
//
|
|
||||||
// scrollback_lines_to_serialize 10000
|
|
||||||
|
|
||||||
// Enable or disable the rendering of styled and colored underlines (undercurl).
|
|
||||||
// May need to be disabled for certain unsupported terminals
|
|
||||||
// (Requires restart)
|
|
||||||
// Default: true
|
|
||||||
//
|
|
||||||
// styled_underlines false
|
|
||||||
|
|
||||||
// How often in seconds sessions are serialized
|
|
||||||
//
|
|
||||||
// serialization_interval 10000
|
|
||||||
|
|
||||||
// Enable or disable writing of session metadata to disk (if disabled, other sessions might not know
|
|
||||||
// metadata info on this session)
|
|
||||||
// (Requires restart)
|
|
||||||
// Default: false
|
|
||||||
//
|
|
||||||
// disable_session_metadata false
|
|
||||||
|
|
||||||
// Enable or disable support for the enhanced Kitty Keyboard Protocol (the host terminal must also support it)
|
|
||||||
// (Requires restart)
|
|
||||||
// Default: true (if the host terminal supports it)
|
|
||||||
//
|
|
||||||
// support_kitty_keyboard_protocol false
|
|
||||||
''
|
|
||||||
27
flake.lock
generated
27
flake.lock
generated
|
|
@ -1562,11 +1562,11 @@
|
||||||
},
|
},
|
||||||
"nixpkgs-dev": {
|
"nixpkgs-dev": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1769996711,
|
"lastModified": 1770317794,
|
||||||
"narHash": "sha256-rzB5MFIyk0gec3/0LjlevvMGkWN7H3TrZ1p7AmKtik8=",
|
"narHash": "sha256-C2pjgjp63uBXa+7JYG7PqYSZadjanr2ye/+QpdFjIGc=",
|
||||||
"owner": "Swarsel",
|
"owner": "Swarsel",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "11da4ed1369bfbde772f2a0fda761b759e621f20",
|
"rev": "bf4809db44ba271f1f147e1f966775b2e6ea673d",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|
@ -2346,6 +2346,26 @@
|
||||||
"type": "gitlab"
|
"type": "gitlab"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"noctalia": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": [
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1770217681,
|
||||||
|
"narHash": "sha256-gMJRIJiZFBe7Bwrwo2cz7YAxV0OiAVQMcmp8fY/YDPg=",
|
||||||
|
"owner": "noctalia-dev",
|
||||||
|
"repo": "noctalia-shell",
|
||||||
|
"rev": "91d07e9279aa9394427289f4b5dff959fbf779fb",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "noctalia-dev",
|
||||||
|
"repo": "noctalia-shell",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
"nosys": {
|
"nosys": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1668010795,
|
"lastModified": 1668010795,
|
||||||
|
|
@ -2659,6 +2679,7 @@
|
||||||
"nixpkgs-stable24_11": "nixpkgs-stable24_11",
|
"nixpkgs-stable24_11": "nixpkgs-stable24_11",
|
||||||
"nixpkgs-stable25_05": "nixpkgs-stable25_05",
|
"nixpkgs-stable25_05": "nixpkgs-stable25_05",
|
||||||
"nixpkgs-stable25_11": "nixpkgs-stable25_11",
|
"nixpkgs-stable25_11": "nixpkgs-stable25_11",
|
||||||
|
"noctalia": "noctalia",
|
||||||
"nswitch-rcm-nix": "nswitch-rcm-nix",
|
"nswitch-rcm-nix": "nswitch-rcm-nix",
|
||||||
"nur": "nur",
|
"nur": "nur",
|
||||||
"pia": "pia",
|
"pia": "pia",
|
||||||
|
|
|
||||||
|
|
@ -58,6 +58,10 @@
|
||||||
url = "github:nix-community/emacs-overlay";
|
url = "github:nix-community/emacs-overlay";
|
||||||
# inputs.nixpkgs.follows = "nixpkgs";
|
# inputs.nixpkgs.follows = "nixpkgs";
|
||||||
};
|
};
|
||||||
|
noctalia = {
|
||||||
|
url = "github:noctalia-dev/noctalia-shell";
|
||||||
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
topologyPrivate.url = "./files/topology/public";
|
topologyPrivate.url = "./files/topology/public";
|
||||||
|
|
|
||||||
|
|
@ -18,7 +18,8 @@ in
|
||||||
"${self}/modules/nixos/optional/nswitch-rcm.nix"
|
"${self}/modules/nixos/optional/nswitch-rcm.nix"
|
||||||
"${self}/modules/nixos/optional/virtualbox.nix"
|
"${self}/modules/nixos/optional/virtualbox.nix"
|
||||||
"${self}/modules/nixos/optional/work.nix"
|
"${self}/modules/nixos/optional/work.nix"
|
||||||
|
"${self}/modules/nixos/optional/niri.nix"
|
||||||
|
"${self}/modules/nixos/optional/noctalia.nix"
|
||||||
];
|
];
|
||||||
|
|
||||||
topology.self = {
|
topology.self = {
|
||||||
|
|
|
||||||
|
|
@ -6,16 +6,18 @@
|
||||||
systemd.user.services.anki-applet = {
|
systemd.user.services.anki-applet = {
|
||||||
Unit = {
|
Unit = {
|
||||||
Description = "Anki applet";
|
Description = "Anki applet";
|
||||||
Requires = [ "tray.target" ];
|
Requires = [ "graphical-session.target" ];
|
||||||
After = [
|
After = [
|
||||||
"graphical-session.target"
|
"graphical-session.target"
|
||||||
"tray.target"
|
"tray.target"
|
||||||
];
|
];
|
||||||
PartOf = [ "graphical-session.target" ];
|
PartOf = [
|
||||||
|
"tray.target"
|
||||||
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
Install = {
|
Install = {
|
||||||
WantedBy = [ "graphical-session.target" ];
|
WantedBy = [ "tray.target" ];
|
||||||
};
|
};
|
||||||
|
|
||||||
Service = {
|
Service = {
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,7 @@ in
|
||||||
config = lib.mkIf config.swarselmodules.${moduleName} {
|
config = lib.mkIf config.swarselmodules.${moduleName} {
|
||||||
services.${moduleName} = {
|
services.${moduleName} = {
|
||||||
enable = true;
|
enable = true;
|
||||||
systemdTarget = config.wayland.systemd.target;
|
systemdTarget = "sway-session.target";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -11,6 +11,7 @@
|
||||||
bak
|
bak
|
||||||
timer
|
timer
|
||||||
e
|
e
|
||||||
|
niri-resize
|
||||||
swarselcheck
|
swarselcheck
|
||||||
swarselcheck-niri
|
swarselcheck-niri
|
||||||
waybarupdate
|
waybarupdate
|
||||||
|
|
|
||||||
|
|
@ -6,16 +6,18 @@
|
||||||
systemd.user.services.element-applet = {
|
systemd.user.services.element-applet = {
|
||||||
Unit = {
|
Unit = {
|
||||||
Description = "Element applet";
|
Description = "Element applet";
|
||||||
Requires = [ "tray.target" ];
|
Requires = [ "graphical-session.target" ];
|
||||||
After = [
|
After = [
|
||||||
"graphical-session.target"
|
"graphical-session.target"
|
||||||
"tray.target"
|
"tray.target"
|
||||||
];
|
];
|
||||||
PartOf = [ "graphical-session.target" ];
|
PartOf = [
|
||||||
|
"tray.target"
|
||||||
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
Install = {
|
Install = {
|
||||||
WantedBy = [ "graphical-session.target" ];
|
WantedBy = [ "tray.target" ];
|
||||||
};
|
};
|
||||||
|
|
||||||
Service = {
|
Service = {
|
||||||
|
|
|
||||||
|
|
@ -6,18 +6,18 @@
|
||||||
systemd.user.services.firezone-applet = {
|
systemd.user.services.firezone-applet = {
|
||||||
Unit = {
|
Unit = {
|
||||||
Description = "Firezone applet";
|
Description = "Firezone applet";
|
||||||
Requires = [
|
Requires = [ "graphical-session.target" ];
|
||||||
"tray.target"
|
|
||||||
];
|
|
||||||
After = [
|
After = [
|
||||||
"graphical-session.target"
|
"graphical-session.target"
|
||||||
"tray.target"
|
"tray.target"
|
||||||
];
|
];
|
||||||
PartOf = [ "graphical-session.target" ];
|
PartOf = [
|
||||||
|
"tray.target"
|
||||||
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
Install = {
|
Install = {
|
||||||
WantedBy = [ "graphical-session.target" ];
|
WantedBy = [ "tray.target" ];
|
||||||
};
|
};
|
||||||
|
|
||||||
Service = {
|
Service = {
|
||||||
|
|
|
||||||
|
|
@ -5,6 +5,7 @@ in
|
||||||
{
|
{
|
||||||
options.swarselmodules.gammastep = lib.mkEnableOption "gammastep settings";
|
options.swarselmodules.gammastep = lib.mkEnableOption "gammastep settings";
|
||||||
config = lib.mkIf config.swarselmodules.gammastep {
|
config = lib.mkIf config.swarselmodules.gammastep {
|
||||||
|
systemd.user.services.gammastep = confLib.overrideTarget "sway-session.target";
|
||||||
services.gammastep = lib.mkIf (config.swarselsystems.isNixos && !config.swarselsystems.isPublic) {
|
services.gammastep = lib.mkIf (config.swarselsystems.isNixos && !config.swarselsystems.isPublic) {
|
||||||
enable = true;
|
enable = true;
|
||||||
provider = "manual";
|
provider = "manual";
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
{ self, lib, pkgs, config, ... }:
|
{ self, lib, pkgs, config, confLib, ... }:
|
||||||
{
|
{
|
||||||
options.swarselmodules.kanshi = lib.mkEnableOption "kanshi settings";
|
options.swarselmodules.kanshi = lib.mkEnableOption "kanshi settings";
|
||||||
config = lib.mkIf config.swarselmodules.kanshi {
|
config = lib.mkIf config.swarselmodules.kanshi {
|
||||||
|
|
@ -14,6 +14,8 @@
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
systemd.user.services.kanshi = confLib.overrideTarget "sway-session.target";
|
||||||
services.kanshi = {
|
services.kanshi = {
|
||||||
enable = true;
|
enable = true;
|
||||||
settings = [
|
settings = [
|
||||||
|
|
|
||||||
|
|
@ -6,16 +6,18 @@
|
||||||
systemd.user.services.obsidian-applet = {
|
systemd.user.services.obsidian-applet = {
|
||||||
Unit = {
|
Unit = {
|
||||||
Description = "Obsidian applet";
|
Description = "Obsidian applet";
|
||||||
Requires = [ "tray.target" ];
|
Requires = [ "graphical-session.target" ];
|
||||||
After = [
|
After = [
|
||||||
"graphical-session.target"
|
"graphical-session.target"
|
||||||
"tray.target"
|
"tray.target"
|
||||||
];
|
];
|
||||||
PartOf = [ "graphical-session.target" ];
|
PartOf = [
|
||||||
|
"tray.target"
|
||||||
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
Install = {
|
Install = {
|
||||||
WantedBy = [ "graphical-session.target" ];
|
WantedBy = [ "tray.target" ];
|
||||||
};
|
};
|
||||||
|
|
||||||
Service = {
|
Service = {
|
||||||
|
|
|
||||||
|
|
@ -242,6 +242,7 @@ in
|
||||||
startup = config.swarselsystems.startup ++ [
|
startup = config.swarselsystems.startup ++ [
|
||||||
{ command = "kitty -T kittyterm -o confirm_os_window_close=0 zellij attach --create kittyterm"; }
|
{ command = "kitty -T kittyterm -o confirm_os_window_close=0 zellij attach --create kittyterm"; }
|
||||||
{ command = "sleep 60; kitty -T spotifytui -o confirm_os_window_close=0 spotify_player"; }
|
{ command = "sleep 60; kitty -T spotifytui -o confirm_os_window_close=0 spotify_player"; }
|
||||||
|
{ command = "mako"; }
|
||||||
];
|
];
|
||||||
seat = {
|
seat = {
|
||||||
"*" = {
|
"*" = {
|
||||||
|
|
|
||||||
|
|
@ -10,23 +10,25 @@ in
|
||||||
brightnessctl = "${lib.getExe pkgs.brightnessctl}";
|
brightnessctl = "${lib.getExe pkgs.brightnessctl}";
|
||||||
swaylock = "${lib.getExe pkgs.swaylock-effects}";
|
swaylock = "${lib.getExe pkgs.swaylock-effects}";
|
||||||
suspend = "${pkgs.systemd}/bin/systemctl suspend";
|
suspend = "${pkgs.systemd}/bin/systemctl suspend";
|
||||||
|
noctalia = "/etc/profiles/per-user/${config.swarselsystems.mainUser}/bin/noctalia-shell ipc call";
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
enable = true;
|
enable = true;
|
||||||
systemdTarget = config.wayland.systemd.target;
|
# systemdTarget = "sway-session.target";
|
||||||
extraArgs = [ "-w" ];
|
extraArgs = [ "-w" ];
|
||||||
timeouts = [
|
timeouts = [
|
||||||
{ timeout = 60; command = "${brightnessctl} -s; ${brightnessctl} set 80%-"; resumeCommand = "${brightnessctl} -r"; }
|
{ timeout = 60; command = "${brightnessctl} -s; ${brightnessctl} set 80%-"; resumeCommand = "${brightnessctl} -r"; }
|
||||||
# { timeout = 300; command = "${lib.getExe pkgs.swaylock-effects} -f --screenshots --clock --effect-blur 7x5 --effect-vignette 0.5:0.5 --fade-in 0.2"; }
|
# { timeout = 300; command = "${lib.getExe pkgs.swaylock-effects} -f --screenshots --clock --effect-blur 7x5 --effect-vignette 0.5:0.5 --fade-in 0.2"; }
|
||||||
{ timeout = 300; command = "${swaylock} -f"; }
|
# { timeout = 300; command = "${swaylock} -f"; }
|
||||||
|
{ timeout = 300; command = "${noctalia} lockScreen lock || ${swaylock} -f"; }
|
||||||
# { timeout = 600; command = ''${pkgs.sway}/bin/swaymsg "output * dpms off"; resumeCommand = "${pkgs.sway}/bin/swaymsg output * dpms on''; }
|
# { timeout = 600; command = ''${pkgs.sway}/bin/swaymsg "output * dpms off"; resumeCommand = "${pkgs.sway}/bin/swaymsg output * dpms on''; }
|
||||||
{ timeout = 600; command = "${suspend}"; }
|
{ timeout = 600; command = "${noctalia} sessionMenu lockAndSuspend || ${suspend}"; }
|
||||||
];
|
];
|
||||||
events = {
|
events = {
|
||||||
# { event = "before-sleep"; command = "${lib.getExe pkgs.swaylock-effects} -f --screenshots --clock --effect-blur 7x5 --effect-vignette 0.5:0.5 --fade-in 0.2"; }
|
# { event = "before-sleep"; command = "${lib.getExe pkgs.swaylock-effects} -f --screenshots --clock --effect-blur 7x5 --effect-vignette 0.5:0.5 --fade-in 0.2"; }
|
||||||
# { event = "after-resume"; command = "${swaylock} -f "; }
|
# { event = "after-resume"; command = "${swaylock} -f "; }
|
||||||
before-sleep = "${swaylock} -f ";
|
# before-sleep = "${swaylock} -f ";
|
||||||
lock = "${swaylock} -f ";
|
# lock = "${swaylock} -f ";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,8 @@
|
||||||
{ lib, pkgs, config, ... }:
|
{ lib, pkgs, config, confLib, ... }:
|
||||||
{
|
{
|
||||||
options.swarselmodules.swayosd = lib.mkEnableOption "swayosd settings";
|
options.swarselmodules.swayosd = lib.mkEnableOption "swayosd settings";
|
||||||
config = lib.mkIf config.swarselmodules.swayosd {
|
config = lib.mkIf config.swarselmodules.swayosd {
|
||||||
|
systemd.user.services.swayosd = confLib.overrideTarget "sway-session.target";
|
||||||
services.swayosd = {
|
services.swayosd = {
|
||||||
enable = true;
|
enable = true;
|
||||||
package = pkgs.dev.swayosd;
|
package = pkgs.dev.swayosd;
|
||||||
|
|
|
||||||
|
|
@ -6,16 +6,18 @@
|
||||||
systemd.user.services.vesktop-applet = {
|
systemd.user.services.vesktop-applet = {
|
||||||
Unit = {
|
Unit = {
|
||||||
Description = "Vesktop applet";
|
Description = "Vesktop applet";
|
||||||
Requires = [ "tray.target" ];
|
Requires = [ "graphical-session.target" ];
|
||||||
After = [
|
After = [
|
||||||
"graphical-session.target"
|
"graphical-session.target"
|
||||||
"tray.target"
|
"tray.target"
|
||||||
];
|
];
|
||||||
PartOf = [ "graphical-session.target" ];
|
PartOf = [
|
||||||
|
"tray.target"
|
||||||
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
Install = {
|
Install = {
|
||||||
WantedBy = [ "graphical-session.target" ];
|
WantedBy = [ "tray.target" ];
|
||||||
};
|
};
|
||||||
|
|
||||||
Service = {
|
Service = {
|
||||||
|
|
|
||||||
|
|
@ -66,8 +66,8 @@ in
|
||||||
enable = true;
|
enable = true;
|
||||||
systemd = {
|
systemd = {
|
||||||
enable = false;
|
enable = false;
|
||||||
# target = "sway-session.target";
|
target = "sway-session.target";
|
||||||
inherit (config.wayland.systemd) target;
|
# inherit (config.wayland.systemd) target;
|
||||||
};
|
};
|
||||||
settings = {
|
settings = {
|
||||||
mainBar = {
|
mainBar = {
|
||||||
|
|
|
||||||
|
|
@ -5,12 +5,14 @@
|
||||||
programs.zellij = {
|
programs.zellij = {
|
||||||
enable = true;
|
enable = true;
|
||||||
enableZshIntegration = true;
|
enableZshIntegration = true;
|
||||||
|
attachExistingSession = false;
|
||||||
|
exitShellOnExit = true;
|
||||||
settings = {
|
settings = {
|
||||||
pane_frames = false;
|
pane_frames = false;
|
||||||
simplified_ui = false;
|
simplified_ui = false;
|
||||||
default_shell = "zsh";
|
default_shell = "zsh";
|
||||||
copy_on_select = true;
|
copy_on_select = true;
|
||||||
on_force_close = "detach";
|
on_force_close = "quit";
|
||||||
show_startup_tips = false;
|
show_startup_tips = false;
|
||||||
support_kitty_keyboard_protocol = true;
|
support_kitty_keyboard_protocol = true;
|
||||||
default_layout = "swarsel";
|
default_layout = "swarsel";
|
||||||
|
|
|
||||||
|
|
@ -1,23 +1,24 @@
|
||||||
{ inputs, config, pkgs, lib, vars, ... }:
|
{ inputs, config, pkgs, lib, vars, type, ... }:
|
||||||
{
|
{
|
||||||
imports = [
|
imports = lib.optionals (type != "nixos") [
|
||||||
inputs.niri-flake.homeModules.niri
|
inputs.niri-flake.homeModules.niri
|
||||||
];
|
];
|
||||||
options.swarselmodules.niri = lib.mkEnableOption "niri settings";
|
config = {
|
||||||
config = lib.mkIf config.swarselmodules.niri
|
|
||||||
{
|
|
||||||
|
|
||||||
programs.niri = {
|
programs.niri = {
|
||||||
package = pkgs.niri-unstable; # which package to use for niri validation
|
package = pkgs.niri-stable; # which package to use for niri validation
|
||||||
settings = {
|
settings = {
|
||||||
|
debug = {
|
||||||
|
honor-xdg-activation-with-invalid-serial = [ ];
|
||||||
|
};
|
||||||
xwayland-satellite = {
|
xwayland-satellite = {
|
||||||
enable = true;
|
enable = true;
|
||||||
path = "${lib.getExe pkgs.xwayland-satellite-unstable}";
|
path = "${lib.getExe pkgs.xwayland-satellite-unstable}";
|
||||||
};
|
};
|
||||||
prefer-no-csd = true;
|
prefer-no-csd = true;
|
||||||
layer-rules = [
|
layer-rules = [
|
||||||
{ matches = [{ namespace = "^notifications$"; }]; block-out-from = "screencast"; }
|
{ matches = [{ namespace = "^notifications$"; }]; block-out-from = "screen-capture"; }
|
||||||
{ matches = [{ namespace = "^wallpaper$"; }]; place-within-backdrop = true; }
|
{ matches = [{ namespace = "^wallpaper$"; }]; place-within-backdrop = true; }
|
||||||
|
{ matches = [{ namespace = "^noctalia-overview*"; }]; place-within-backdrop = true; }
|
||||||
];
|
];
|
||||||
window-rules = [
|
window-rules = [
|
||||||
{
|
{
|
||||||
|
|
@ -28,23 +29,24 @@
|
||||||
enable = true;
|
enable = true;
|
||||||
draw-behind-window = true;
|
draw-behind-window = true;
|
||||||
};
|
};
|
||||||
geometry-corner-radius = { top-left = 2.0; top-right = 2.0; bottom-left = 2.0; bottom-right = 2.0; };
|
clip-to-geometry = true;
|
||||||
|
geometry-corner-radius = { top-left = 5.0; top-right = 5.0; bottom-left = 5.0; bottom-right = 5.0; };
|
||||||
}
|
}
|
||||||
{ matches = [{ app-id = "at.yrlf.wl_mirror"; }]; opacity = 1.0; }
|
{ matches = [{ app-id = "at.yrlf.wl_mirror"; }]; opacity = 1.0; }
|
||||||
{ matches = [{ app-id = "Gimp"; }]; opacity = 1.0; }
|
{ matches = [{ app-id = "Gimp"; }]; opacity = 1.0; }
|
||||||
{ matches = [{ app-id = "firefox"; }]; opacity = 0.99; }
|
{ matches = [{ app-id = "^firefox$"; }]; opacity = 0.95; }
|
||||||
{ matches = [{ app-id = "^special.*"; }]; default-column-width = { proportion = 0.9; }; open-on-workspace = "Scratchpad"; }
|
{ matches = [{ app-id = "^special.*"; }]; default-column-width = { proportion = 0.9; }; open-on-workspace = "Scratchpad"; }
|
||||||
{ matches = [{ app-id = "chromium-browser"; }]; opacity = 0.99; }
|
{ matches = [{ app-id = "chromium-browser"; }]; opacity = 0.99; }
|
||||||
{ matches = [{ app-id = "^qalculate-gtk$"; }]; open-floating = true; }
|
{ matches = [{ app-id = "^qalculate-gtk$"; }]; open-floating = true; }
|
||||||
{ matches = [{ app-id = "^blueman$"; }]; open-floating = true; }
|
{ matches = [{ app-id = "^blueman$"; }]; open-floating = true; }
|
||||||
{ matches = [{ app-id = "^pavucontrol$"; }]; open-floating = true; }
|
{ matches = [{ app-id = "^pavucontrol$"; }]; open-floating = true; }
|
||||||
{ matches = [{ app-id = "^syncthingtray$"; }]; open-floating = true; }
|
{ matches = [{ app-id = "^syncthingtray$"; }]; open-floating = true; }
|
||||||
{ matches = [{ app-id = "^Element$"; }]; open-floating = true; default-column-width = { proportion = 0.5; }; block-out-from = "screencast"; }
|
{ matches = [{ app-id = "^Element$"; }]; open-floating = true; default-column-width = { proportion = 0.5; }; block-out-from = "screen-capture"; }
|
||||||
# { matches = [{ app-id = "^Element$"; }]; default-column-width = { proportion = 0.9; }; open-on-workspace = "Scratchpad"; block-out-from = "screencast"; }
|
# { matches = [{ app-id = "^Element$"; }]; default-column-width = { proportion = 0.9; }; open-on-workspace = "Scratchpad"; block-out-from = "screencast"; }
|
||||||
{ matches = [{ app-id = "^vesktop$"; }]; open-floating = true; default-column-width = { proportion = 0.5; }; block-out-from = "screencast"; }
|
{ matches = [{ app-id = "^vesktop$"; }]; open-floating = true; default-column-width = { proportion = 0.5; }; block-out-from = "screen-capture"; }
|
||||||
# { matches = [{ app-id = "^vesktop$"; }]; default-column-width = { proportion = 0.9; }; open-on-workspace = "Scratchpad"; block-out-from = "screencast"; }
|
# { matches = [{ app-id = "^vesktop$"; }]; default-column-width = { proportion = 0.9; }; open-on-workspace = "Scratchpad"; block-out-from = "screencast"; }
|
||||||
{ matches = [{ app-id = "^com.nextcloud.desktopclient.nextcloud$"; }]; open-floating = true; }
|
{ matches = [{ app-id = "^com.nextcloud.desktopclient.nextcloud$"; }]; open-floating = true; }
|
||||||
{ matches = [{ title = ".*1Password.*"; }]; excludes = [{ app-id = "^firefox$"; } { app-id = "^emacs$"; } { app-id = "^kitty$"; }]; open-floating = true; block-out-from = "screencast"; }
|
{ matches = [{ title = ".*1Password.*"; }]; excludes = [{ app-id = "^firefox$"; } { app-id = "^emacs$"; } { app-id = "^kitty$"; }]; open-floating = true; block-out-from = "screen-capture"; }
|
||||||
{ matches = [{ title = "(?:Open|Save) (?:File|Folder|As)"; }]; open-floating = true; }
|
{ matches = [{ title = "(?:Open|Save) (?:File|Folder|As)"; }]; open-floating = true; }
|
||||||
{ matches = [{ title = "^Add$"; }]; open-floating = true; }
|
{ matches = [{ title = "^Add$"; }]; open-floating = true; }
|
||||||
{ matches = [{ title = "^Picture-in-Picture$"; }]; open-floating = true; }
|
{ matches = [{ title = "^Picture-in-Picture$"; }]; open-floating = true; }
|
||||||
|
|
@ -56,6 +58,8 @@
|
||||||
];
|
];
|
||||||
environment = {
|
environment = {
|
||||||
DISPLAY = ":0";
|
DISPLAY = ":0";
|
||||||
|
QT_QPA_PLATFORM = lib.mkForce "wayland";
|
||||||
|
EDITOR = "emacsclient -c";
|
||||||
} // vars.waylandSessionVariables;
|
} // vars.waylandSessionVariables;
|
||||||
screenshot-path = "~/Pictures/Screenshots/screenshot_%Y-%m-%d-%H%M%S.png";
|
screenshot-path = "~/Pictures/Screenshots/screenshot_%Y-%m-%d-%H%M%S.png";
|
||||||
input = {
|
input = {
|
||||||
|
|
@ -100,19 +104,18 @@
|
||||||
};
|
};
|
||||||
binds = with config.lib.niri.actions; let
|
binds = with config.lib.niri.actions; let
|
||||||
sh = spawn "sh" "-c";
|
sh = spawn "sh" "-c";
|
||||||
|
resizer = "niri-resize";
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
|
|
||||||
# "Mod+Super_L" = spawn "killall -SIGUSR1 .waybar-wrapped";
|
|
||||||
"Mod+z".action = spawn "killall -SIGUSR1 .waybar-wrapped";
|
|
||||||
"Mod+Shift+t".action = toggle-window-rule-opacity;
|
"Mod+Shift+t".action = toggle-window-rule-opacity;
|
||||||
# "Mod+Escape".action = "mode $exit";
|
|
||||||
"Mod+m".action = focus-workspace-previous;
|
"Mod+m".action = focus-workspace-previous;
|
||||||
"Mod+Shift+Space".action = toggle-window-floating;
|
"Mod+Shift+Space".action = toggle-window-floating;
|
||||||
"Mod+Shift+f".action = toggle-windowed-fullscreen;
|
"Mod+Shift+f".action = fullscreen-window;
|
||||||
"Mod+q".action = close-window;
|
"Mod+q".action = sh "niri msg action close-window & ${resizer}";
|
||||||
"Mod+f".action = spawn "firefox";
|
"Mod+f".action = sh "${resizer} & firefox";
|
||||||
"Mod+Space".action = spawn "fuzzel";
|
# "Mod+Space".action = spawn "noctalia-shell" "ipc" "call" "launcher" "toggle";
|
||||||
|
"Mod+Space".action = sh "${resizer} & fuzzel";
|
||||||
|
"Mod+z".action = spawn "noctalia-shell" "ipc" "call" "bar" "toggle";
|
||||||
"Mod+Shift+c".action = spawn "qalculate-gtk";
|
"Mod+Shift+c".action = spawn "qalculate-gtk";
|
||||||
"Mod+Ctrl+p".action = spawn "1password" "--quick-acces";
|
"Mod+Ctrl+p".action = spawn "1password" "--quick-acces";
|
||||||
"Mod+Shift+Escape".action = spawn "kitty" "-o" "confirm_os_window_close=0" "btm";
|
"Mod+Shift+Escape".action = spawn "kitty" "-o" "confirm_os_window_close=0" "btm";
|
||||||
|
|
@ -125,11 +128,11 @@
|
||||||
"Mod+Shift+s".action.screenshot-window = { write-to-disk = true; };
|
"Mod+Shift+s".action.screenshot-window = { write-to-disk = true; };
|
||||||
# "Mod+Shift+v".action = spawn "wf-recorder" "-g" "'$(slurp -f %o -or)'" "-f" "~/Videos/screenrecord_$(date +%Y-%m-%d-%H%M%S).mkv";
|
# "Mod+Shift+v".action = spawn "wf-recorder" "-g" "'$(slurp -f %o -or)'" "-f" "~/Videos/screenrecord_$(date +%Y-%m-%d-%H%M%S).mkv";
|
||||||
|
|
||||||
"Mod+e".action = sh "emacsclient -nquc -a emacs -e '(dashboard-open)'";
|
"Mod+e".action = sh "${resizer} & emacsclient -nquc -a emacs -e '(dashboard-open)'";
|
||||||
"Mod+c".action = sh "emacsclient -ce '(org-capture)'";
|
"Mod+c".action = sh "${resizer} & emacsclient -ce '(org-capture)'";
|
||||||
"Mod+t".action = sh "emacsclient -ce '(org-agenda)'";
|
"Mod+t".action = sh "${resizer} & emacsclient -ce '(org-agenda)'";
|
||||||
"Mod+Shift+m".action = sh "emacsclient -ce '(mu4e)'";
|
"Mod+Shift+m".action = sh "${resizer} & emacsclient -ce '(mu4e)'";
|
||||||
"Mod+Shift+a".action = sh "emacsclient -ce '(swarsel/open-calendar)'";
|
"Mod+Shift+a".action = sh "${resizer} & emacsclient -ce '(swarsel/open-calendar)'";
|
||||||
|
|
||||||
"Mod+a".action = spawn "swarselcheck-niri" "-s";
|
"Mod+a".action = spawn "swarselcheck-niri" "-s";
|
||||||
"Mod+x".action = spawn "swarselcheck-niri" "-k";
|
"Mod+x".action = spawn "swarselcheck-niri" "-k";
|
||||||
|
|
@ -154,14 +157,18 @@
|
||||||
# "Mod+Shift+e".action = "exec swaynag -t warning -m 'You pressed the exit shortcut. Do you really want to exit sway? This will end your Wayland session.' -b 'Yes, exit sway' 'swaymsg exit'";
|
# "Mod+Shift+e".action = "exec swaynag -t warning -m 'You pressed the exit shortcut. Do you really want to exit sway? This will end your Wayland session.' -b 'Yes, exit sway' 'swaymsg exit'";
|
||||||
# "Mod+r".action = "mode resize";
|
# "Mod+r".action = "mode resize";
|
||||||
# "Mod+Return".action = "exec kitty";
|
# "Mod+Return".action = "exec kitty";
|
||||||
"Mod+Return".action = spawn "swarselzellij";
|
"Mod+Return".action = sh "${resizer} & exec kitty -o confirm_os_window_close=0";
|
||||||
"XF86AudioRaiseVolume".action = spawn "swayosd-client" "--output-volume" "raise";
|
"XF86AudioRaiseVolume".action = spawn "noctalia-shell" "ipc" "call" "volume" "increase";
|
||||||
"XF86AudioLowerVolume".action = spawn "swayosd-client" "--output-volume" "lower";
|
"XF86AudioLowerVolume".action = spawn "noctalia-shell" "ipc" "call" "volume" "decrease";
|
||||||
"XF86AudioMute".action = spawn "swayosd-client" "--output-volume" "mute-toggle";
|
"XF86AudioMute".action = spawn "noctalia-shell" "ipc" "call" "volume" "muteOutput";
|
||||||
"XF86MonBrightnessUp".action = spawn "swayosd-client" "--brightness raise";
|
"XF86AudioPrev".action = spawn "noctalia-shell" "ipc" "call" "media" "previous";
|
||||||
"XF86MonBrightnessDown".action = spawn "swayosd-client" "--brightness lower";
|
"XF86AudioPlay".action = spawn "noctalia-shell" "ipc" "call" "media" "playPause";
|
||||||
|
"XF86AudioNext".action = spawn "noctalia-shell" "ipc" "call" "media" "next";
|
||||||
|
"XF86MonBrightnessUp".action = spawn "noctalia-shell" "ipc" "call" "brightness" "increase";
|
||||||
|
"XF86MonBrightnessDown".action = spawn "noctalia-shell" "ipc" "call" "brightness" "decrease";
|
||||||
"XF86Display".action = spawn "wl-mirror" "eDP-1";
|
"XF86Display".action = spawn "wl-mirror" "eDP-1";
|
||||||
"Mod+Escape".action = spawn "wlogout";
|
"Mod+Escape".action = spawn "noctalia-shell" "ipc" "call" "sessionMenu" "toggle";
|
||||||
|
"Mod+i".action = spawn "noctalia-shell" "ipc" "call" "launcher" "emoji";
|
||||||
"Mod+Equal".action = set-column-width "+10%";
|
"Mod+Equal".action = set-column-width "+10%";
|
||||||
"Mod+Minus".action = set-column-width "-10%";
|
"Mod+Minus".action = set-column-width "-10%";
|
||||||
|
|
||||||
|
|
@ -193,24 +200,21 @@
|
||||||
# { command = [ "anki" ]; }
|
# { command = [ "anki" ]; }
|
||||||
# { command = [ "obsidian" ]; }
|
# { command = [ "obsidian" ]; }
|
||||||
# { command = [ "nm-applet" ]; }
|
# { command = [ "nm-applet" ]; }
|
||||||
{ command = [ "niri" "msg" "action" "focus-workspace" "2" ]; }
|
# { command = [ "niri" "msg" "action" "focus-workspace" "2" ]; }
|
||||||
|
# { command = [ "noctalia-shell" ]; }
|
||||||
|
{ command = [ "pkill mako" ]; }
|
||||||
|
{ command = [ "systemctl" "--user" "start" "noctalia-shell.target" ]; }
|
||||||
];
|
];
|
||||||
workspaces = {
|
# workspaces = {
|
||||||
# "01-Main" = {
|
# "01-Main" = {
|
||||||
# name = "Scratchpad";
|
# name = "Scratchpad";
|
||||||
# };
|
# };
|
||||||
"99-Scratchpad" = {
|
# "99-Scratchpad" = {
|
||||||
name = "";
|
# name = "";
|
||||||
};
|
# };
|
||||||
};
|
# };
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
} // {
|
|
||||||
programs.niri = lib.mkIf (!config.swarselmodules.niri) {
|
|
||||||
package = null;
|
|
||||||
config = null;
|
|
||||||
settings = null;
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
605
modules/home/optional/noctalia.nix
Normal file
605
modules/home/optional/noctalia.nix
Normal file
|
|
@ -0,0 +1,605 @@
|
||||||
|
{ self, inputs, config, pkgs, lib, confLib, ... }:
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
inputs.noctalia.homeModules.default
|
||||||
|
];
|
||||||
|
config = {
|
||||||
|
systemd.user = {
|
||||||
|
targets = {
|
||||||
|
noctalia-shell.Unit = {
|
||||||
|
After = [ "graphical-session.target" ];
|
||||||
|
Wants = [
|
||||||
|
"tray.target"
|
||||||
|
"noctalia-tray-pre.target"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
tray = {
|
||||||
|
Unit = {
|
||||||
|
After = [ "noctalia-tray-pre.target" ];
|
||||||
|
PartOf = [ "noctalia-shell.service" ];
|
||||||
|
};
|
||||||
|
Install.WantedBy = [ "noctalia-shell.target" ];
|
||||||
|
};
|
||||||
|
noctalia-tray-pre = {
|
||||||
|
Unit = {
|
||||||
|
After = [
|
||||||
|
"noctalia-init.service"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
Install.WantedBy = [ "noctalia-shell.target" ];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
services = {
|
||||||
|
noctalia-shell = confLib.overrideTarget "noctalia-shell.target";
|
||||||
|
noctalia-init = {
|
||||||
|
Unit = {
|
||||||
|
PartOf = [ "noctalia-tray-pre.target" ];
|
||||||
|
};
|
||||||
|
|
||||||
|
Service = {
|
||||||
|
Type = "oneshot";
|
||||||
|
ExecStartPre = "${pkgs.coreutils}/bin/sleep 5";
|
||||||
|
ExecStart = "-${pkgs.busybox}/bin/pkill mako";
|
||||||
|
RemainAfterExit = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
Install = {
|
||||||
|
WantedBy = [ "noctalia-tray-pre.target" ];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
programs = {
|
||||||
|
fastfetch.enable = true;
|
||||||
|
noctalia-shell = {
|
||||||
|
enable = true;
|
||||||
|
package = pkgs.noctalia-shell.override { calendarSupport = true; };
|
||||||
|
systemd.enable = true;
|
||||||
|
settings = {
|
||||||
|
bar = {
|
||||||
|
barType = "simple";
|
||||||
|
position = "top";
|
||||||
|
monitors = [ ];
|
||||||
|
density = "default";
|
||||||
|
showCapsule = false;
|
||||||
|
showOutline = false;
|
||||||
|
capsuleOpacity = lib.mkForce 1;
|
||||||
|
backgroundOpacity = lib.mkForce 0.5;
|
||||||
|
useSeparateOpacity = true;
|
||||||
|
floating = false;
|
||||||
|
marginVertical = 4;
|
||||||
|
marginHorizontal = 0;
|
||||||
|
frameThickness = 8;
|
||||||
|
frameRadius = 12;
|
||||||
|
outerCorners = true;
|
||||||
|
hideOnOverview = false;
|
||||||
|
displayMode = "auto_hide";
|
||||||
|
autoHideDelay = 100;
|
||||||
|
autoShowDelay = 300;
|
||||||
|
screenOverrides = [ ];
|
||||||
|
widgets = {
|
||||||
|
left = [
|
||||||
|
{
|
||||||
|
characterCount = 2;
|
||||||
|
colorizeIcons = false;
|
||||||
|
emptyColor = "primary";
|
||||||
|
enableScrollWheel = false;
|
||||||
|
focusedColor = "secondary";
|
||||||
|
followFocusedScreen = false;
|
||||||
|
groupedBorderOpacity = 1;
|
||||||
|
hideUnoccupied = true;
|
||||||
|
iconScale = 0.5;
|
||||||
|
id = "Workspace";
|
||||||
|
labelMode = "none";
|
||||||
|
occupiedColor = "primary";
|
||||||
|
pillSize = 0.4;
|
||||||
|
reverseScroll = false;
|
||||||
|
showApplications = true;
|
||||||
|
showBadge = true;
|
||||||
|
showLabelsOnlyWhenOccupied = true;
|
||||||
|
unfocusedIconsOpacity = 0.25;
|
||||||
|
}
|
||||||
|
];
|
||||||
|
center = [
|
||||||
|
{
|
||||||
|
colorizeIcons = false;
|
||||||
|
hideMode = "hidden";
|
||||||
|
id = "ActiveWindow";
|
||||||
|
maxWidth = 145;
|
||||||
|
scrollingMode = "hover";
|
||||||
|
showIcon = true;
|
||||||
|
useFixedWidth = false;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
id = "plugin:privacy-indicator";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
id = "plugin:screen-recorder";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
right = [
|
||||||
|
{
|
||||||
|
blacklist = [
|
||||||
|
"bluetooth*"
|
||||||
|
];
|
||||||
|
colorizeIcons = false;
|
||||||
|
drawerEnabled = true;
|
||||||
|
hidePassive = true;
|
||||||
|
id = "Tray";
|
||||||
|
pinned = [ ];
|
||||||
|
}
|
||||||
|
{
|
||||||
|
displayMode = "alwaysShow";
|
||||||
|
id = "Volume";
|
||||||
|
middleClickCommand = "pavucontrol";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
displayMode = "onhover";
|
||||||
|
id = "Network";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
displayMode = "onhover";
|
||||||
|
id = "Bluetooth";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
displayMode = "onhover";
|
||||||
|
id = "VPN";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
deviceNativePath = "__default__";
|
||||||
|
hideIfIdle = true;
|
||||||
|
hideIfNotDetected = true;
|
||||||
|
id = "Battery";
|
||||||
|
showNoctaliaPerformance = false;
|
||||||
|
showPowerProfiles = true;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
id = "plugin:ba7043:github-feed";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
id = "plugin:clipper";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
colorName = "primary";
|
||||||
|
id = "SessionMenu";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
customFont = "FiraCode Nerd Font Mono";
|
||||||
|
formatHorizontal = "ddd dd. MMM HH:mm:ss";
|
||||||
|
formatVertical = "";
|
||||||
|
id = "Clock";
|
||||||
|
tooltipFormat = "ddd dd. MMM HH:mm:ss";
|
||||||
|
useCustomFont = true;
|
||||||
|
usePrimaryColor = true;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
colorizeDistroLogo = false;
|
||||||
|
colorizeSystemIcon = "primary";
|
||||||
|
customIconPath = "";
|
||||||
|
enableColorization = true;
|
||||||
|
icon = "noctalia";
|
||||||
|
id = "ControlCenter";
|
||||||
|
useDistroLogo = true;
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
general = {
|
||||||
|
avatarImage = "${self}/files/wallpaper/swarsel.png";
|
||||||
|
dimmerOpacity = 0.2;
|
||||||
|
showScreenCorners = false;
|
||||||
|
forceBlackScreenCorners = false;
|
||||||
|
scaleRatio = 1;
|
||||||
|
radiusRatio = 0.2;
|
||||||
|
iRadiusRatio = 1;
|
||||||
|
boxRadiusRatio = 1;
|
||||||
|
screenRadiusRatio = 1;
|
||||||
|
animationSpeed = 1;
|
||||||
|
animationDisabled = false;
|
||||||
|
compactLockScreen = true;
|
||||||
|
lockOnSuspend = true;
|
||||||
|
showSessionButtonsOnLockScreen = true;
|
||||||
|
showHibernateOnLockScreen = false;
|
||||||
|
enableShadows = true;
|
||||||
|
shadowDirection = "bottom_right";
|
||||||
|
shadowOffsetX = 2;
|
||||||
|
shadowOffsetY = 3;
|
||||||
|
language = "";
|
||||||
|
allowPanelsOnScreenWithoutBar = true;
|
||||||
|
showChangelogOnStartup = true;
|
||||||
|
telemetryEnabled = false;
|
||||||
|
enableLockScreenCountdown = true;
|
||||||
|
lockScreenCountdownDuration = 10000;
|
||||||
|
autoStartAuth = true;
|
||||||
|
allowPasswordWithFprintd = true;
|
||||||
|
};
|
||||||
|
ui = {
|
||||||
|
fontDefaultScale = 1;
|
||||||
|
fontFixedScale = 1;
|
||||||
|
tooltipsEnabled = true;
|
||||||
|
panelBackgroundOpacity = lib.mkForce 1;
|
||||||
|
panelsAttachedToBar = true;
|
||||||
|
settingsPanelMode = "centered";
|
||||||
|
wifiDetailsViewMode = "grid";
|
||||||
|
bluetoothDetailsViewMode = "grid";
|
||||||
|
networkPanelView = "wifi";
|
||||||
|
bluetoothHideUnnamedDevices = false;
|
||||||
|
boxBorderEnabled = false;
|
||||||
|
};
|
||||||
|
location = {
|
||||||
|
name = confLib.getConfig.repo.secrets.common.location.timezoneSpecific;
|
||||||
|
weatherEnabled = true;
|
||||||
|
weatherShowEffects = false;
|
||||||
|
useFahrenheit = false;
|
||||||
|
use12hourFormat = false;
|
||||||
|
showWeekNumberInCalendar = true;
|
||||||
|
showCalendarEvents = true;
|
||||||
|
showCalendarWeather = true;
|
||||||
|
analogClockInCalendar = false;
|
||||||
|
firstDayOfWeek = 1;
|
||||||
|
hideWeatherTimezone = false;
|
||||||
|
hideWeatherCityName = false;
|
||||||
|
};
|
||||||
|
calendar = {
|
||||||
|
cards = [
|
||||||
|
{
|
||||||
|
enabled = true;
|
||||||
|
id = "calendar-header-card";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
enabled = true;
|
||||||
|
id = "calendar-month-card";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
enabled = true;
|
||||||
|
id = "weather-card";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
wallpaper = {
|
||||||
|
enabled = true;
|
||||||
|
overviewEnabled = true;
|
||||||
|
directory = "${self}/files/wallpaper";
|
||||||
|
monitorDirectories = [ ];
|
||||||
|
enableMultiMonitorDirectories = true;
|
||||||
|
showHiddenFiles = false;
|
||||||
|
viewMode = "single";
|
||||||
|
setWallpaperOnAllMonitors = true;
|
||||||
|
fillMode = "crop";
|
||||||
|
fillColor = "#000000";
|
||||||
|
useSolidColor = false;
|
||||||
|
solidColor = "#1a1a2e";
|
||||||
|
automationEnabled = false;
|
||||||
|
wallpaperChangeMode = "random";
|
||||||
|
randomIntervalSec = 300;
|
||||||
|
transitionDuration = 500;
|
||||||
|
transitionType = "random";
|
||||||
|
transitionEdgeSmoothness = 0.05;
|
||||||
|
panelPosition = "follow_bar";
|
||||||
|
hideWallpaperFilenames = false;
|
||||||
|
useWallhaven = false;
|
||||||
|
wallhavenQuery = "";
|
||||||
|
wallhavenSorting = "relevance";
|
||||||
|
wallhavenOrder = "desc";
|
||||||
|
wallhavenCategories = "111";
|
||||||
|
wallhavenPurity = "100";
|
||||||
|
wallhavenRatios = "";
|
||||||
|
wallhavenApiKey = "";
|
||||||
|
wallhavenResolutionMode = "atleast";
|
||||||
|
wallhavenResolutionWidth = "";
|
||||||
|
wallhavenResolutionHeight = "";
|
||||||
|
sortOrder = "name";
|
||||||
|
};
|
||||||
|
appLauncher = {
|
||||||
|
enableClipboardHistory = false;
|
||||||
|
autoPasteClipboard = false;
|
||||||
|
enableClipPreview = true;
|
||||||
|
clipboardWrapText = true;
|
||||||
|
clipboardWatchTextCommand = "wl-paste --type text --watch cliphist store";
|
||||||
|
clipboardWatchImageCommand = "wl-paste --type image --watch cliphist store";
|
||||||
|
position = "center";
|
||||||
|
pinnedApps = [ ];
|
||||||
|
useApp2Unit = false;
|
||||||
|
sortByMostUsed = true;
|
||||||
|
terminalCommand = "kitty -e";
|
||||||
|
customLaunchPrefixEnabled = false;
|
||||||
|
customLaunchPrefix = "";
|
||||||
|
viewMode = "list";
|
||||||
|
showCategories = false;
|
||||||
|
iconMode = "native";
|
||||||
|
showIconBackground = false;
|
||||||
|
enableSettingsSearch = false;
|
||||||
|
enableWindowsSearch = false;
|
||||||
|
ignoreMouseInput = true;
|
||||||
|
screenshotAnnotationTool = "";
|
||||||
|
};
|
||||||
|
controlCenter = {
|
||||||
|
position = "close_to_bar_button";
|
||||||
|
diskPath = "/";
|
||||||
|
shortcuts = {
|
||||||
|
left = [
|
||||||
|
{
|
||||||
|
id = "Network";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
id = "Bluetooth";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
right = [
|
||||||
|
{
|
||||||
|
id = "Notifications";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
id = "PowerProfile";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
id = "KeepAwake";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
id = "plugin:screen-recorder";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
cards = [
|
||||||
|
{
|
||||||
|
enabled = true;
|
||||||
|
id = "profile-card";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
enabled = true;
|
||||||
|
id = "shortcuts-card";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
enabled = true;
|
||||||
|
id = "audio-card";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
enabled = true;
|
||||||
|
id = "brightness-card";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
enabled = true;
|
||||||
|
id = "weather-card";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
enabled = true;
|
||||||
|
id = "media-sysmon-card";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
systemMonitor = {
|
||||||
|
cpuWarningThreshold = 80;
|
||||||
|
cpuCriticalThreshold = 90;
|
||||||
|
tempWarningThreshold = 80;
|
||||||
|
tempCriticalThreshold = 90;
|
||||||
|
gpuWarningThreshold = 80;
|
||||||
|
gpuCriticalThreshold = 90;
|
||||||
|
memWarningThreshold = 80;
|
||||||
|
memCriticalThreshold = 90;
|
||||||
|
swapWarningThreshold = 80;
|
||||||
|
swapCriticalThreshold = 90;
|
||||||
|
diskWarningThreshold = 80;
|
||||||
|
diskCriticalThreshold = 90;
|
||||||
|
diskAvailWarningThreshold = 20;
|
||||||
|
diskAvailCriticalThreshold = 10;
|
||||||
|
cpuPollingInterval = 1000;
|
||||||
|
gpuPollingInterval = 3000;
|
||||||
|
enableDgpuMonitoring = false;
|
||||||
|
memPollingInterval = 1000;
|
||||||
|
diskPollingInterval = 30000;
|
||||||
|
networkPollingInterval = 1000;
|
||||||
|
loadAvgPollingInterval = 3000;
|
||||||
|
useCustomColors = true;
|
||||||
|
warningColor = "#5ec4ff";
|
||||||
|
criticalColor = "#d95468";
|
||||||
|
externalMonitor = "btm";
|
||||||
|
};
|
||||||
|
dock = {
|
||||||
|
enabled = false;
|
||||||
|
};
|
||||||
|
network = {
|
||||||
|
wifiEnabled = true;
|
||||||
|
bluetoothRssiPollingEnabled = false;
|
||||||
|
bluetoothRssiPollIntervalMs = 10000;
|
||||||
|
wifiDetailsViewMode = "grid";
|
||||||
|
bluetoothDetailsViewMode = "grid";
|
||||||
|
bluetoothHideUnnamedDevices = false;
|
||||||
|
};
|
||||||
|
sessionMenu = {
|
||||||
|
enableCountdown = true;
|
||||||
|
countdownDuration = 3000;
|
||||||
|
position = "center";
|
||||||
|
showHeader = true;
|
||||||
|
largeButtonsStyle = true;
|
||||||
|
largeButtonsLayout = "grid";
|
||||||
|
showNumberLabels = true;
|
||||||
|
powerOptions = [
|
||||||
|
{
|
||||||
|
action = "lock";
|
||||||
|
command = "";
|
||||||
|
countdownEnabled = true;
|
||||||
|
enabled = true;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
action = "suspend";
|
||||||
|
command = "";
|
||||||
|
countdownEnabled = true;
|
||||||
|
enabled = true;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
action = "hibernate";
|
||||||
|
command = "";
|
||||||
|
countdownEnabled = true;
|
||||||
|
enabled = true;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
action = "reboot";
|
||||||
|
command = "";
|
||||||
|
countdownEnabled = true;
|
||||||
|
enabled = true;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
action = "logout";
|
||||||
|
command = "";
|
||||||
|
countdownEnabled = true;
|
||||||
|
enabled = true;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
action = "shutdown";
|
||||||
|
command = "";
|
||||||
|
countdownEnabled = true;
|
||||||
|
enabled = true;
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
notifications = {
|
||||||
|
enabled = true;
|
||||||
|
monitors = [ ];
|
||||||
|
location = "top_right";
|
||||||
|
overlayLayer = true;
|
||||||
|
backgroundOpacity = 0.5;
|
||||||
|
respectExpireTimeout = true;
|
||||||
|
lowUrgencyDuration = 3;
|
||||||
|
normalUrgencyDuration = 8;
|
||||||
|
criticalUrgencyDuration = 15;
|
||||||
|
enableMediaToast = false;
|
||||||
|
enableKeyboardLayoutToast = true;
|
||||||
|
batteryWarningThreshold = 20;
|
||||||
|
batteryCriticalThreshold = 5;
|
||||||
|
saveToHistory = {
|
||||||
|
low = true;
|
||||||
|
normal = true;
|
||||||
|
critical = true;
|
||||||
|
};
|
||||||
|
sounds.enabled = false;
|
||||||
|
};
|
||||||
|
osd = {
|
||||||
|
enabled = true;
|
||||||
|
location = "right";
|
||||||
|
autoHideMs = 2000;
|
||||||
|
overlayLayer = true;
|
||||||
|
backgroundOpacity = 0.5;
|
||||||
|
monitors = [ ];
|
||||||
|
enabledTypes = [ 0 1 2 3 ];
|
||||||
|
};
|
||||||
|
audio = {
|
||||||
|
volumeStep = 5;
|
||||||
|
volumeOverdrive = false;
|
||||||
|
cavaFrameRate = 30;
|
||||||
|
visualizerType = "linear";
|
||||||
|
mprisBlacklist = [ ];
|
||||||
|
preferredPlayer = "";
|
||||||
|
volumeFeedback = false;
|
||||||
|
};
|
||||||
|
brightness = {
|
||||||
|
brightnessStep = 5;
|
||||||
|
enforceMinimum = true;
|
||||||
|
enableDdcSupport = false;
|
||||||
|
};
|
||||||
|
nightLight = {
|
||||||
|
enabled = true;
|
||||||
|
autoSchedule = true;
|
||||||
|
nightTemp = "3700";
|
||||||
|
dayTemp = "5500";
|
||||||
|
manualSunrise = "06:30";
|
||||||
|
manualSunset = "18:30";
|
||||||
|
};
|
||||||
|
hooks.enabled = false;
|
||||||
|
desktopWidgets.enabled = false;
|
||||||
|
|
||||||
|
plugins = {
|
||||||
|
sources = [
|
||||||
|
{
|
||||||
|
enabled = true;
|
||||||
|
name = "Official Noctalia Plugins";
|
||||||
|
url = "https://github.com/noctalia-dev/noctalia-plugins";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
enabled = true;
|
||||||
|
name = "Dev";
|
||||||
|
url = "https://github.com/Swarsel/noctalia-plugins";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
states = lib.listToAttrs
|
||||||
|
(map
|
||||||
|
(plugin:
|
||||||
|
lib.nameValuePair plugin {
|
||||||
|
enabled = true;
|
||||||
|
sourceUrl = "https://github.com/noctalia-dev/noctalia-plugins";
|
||||||
|
})
|
||||||
|
[
|
||||||
|
"clipper"
|
||||||
|
"github-feed"
|
||||||
|
"privacy-indicator"
|
||||||
|
"kaomoji-provider"
|
||||||
|
"unicode-picker"
|
||||||
|
"screen-recorder"
|
||||||
|
]) // {
|
||||||
|
github-feed = {
|
||||||
|
enabled = true;
|
||||||
|
sourceUrl = "https://github.com/Swarsel/noctalia-plugins";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
pluginSettings = {
|
||||||
|
clipper = {
|
||||||
|
enableTodoIntegration = false;
|
||||||
|
};
|
||||||
|
|
||||||
|
privacy-indicator = {
|
||||||
|
hideInactive = true;
|
||||||
|
iconSpacing = 4;
|
||||||
|
removeMargins = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
screen-recorder = {
|
||||||
|
hideInactive = true;
|
||||||
|
directory = "";
|
||||||
|
filenamePattern = "recording_yyyyMMdd_HHmmss";
|
||||||
|
frameRate = "60";
|
||||||
|
audioCodec = "opus";
|
||||||
|
videoCodec = "h264";
|
||||||
|
quality = "very_high";
|
||||||
|
colorRange = "limited";
|
||||||
|
showCursor = true;
|
||||||
|
copyToClipboard = true;
|
||||||
|
audioSource = "default_output";
|
||||||
|
videoSource = "portal";
|
||||||
|
resolution = "original";
|
||||||
|
};
|
||||||
|
|
||||||
|
github-feed = {
|
||||||
|
username = lib.toUpper config.swarselsystems.mainUser;
|
||||||
|
token = confLib.getConfig.repo.secrets.common.noctaliaGithubToken;
|
||||||
|
refreshInterval = 300;
|
||||||
|
maxEvents = 50;
|
||||||
|
showStars = false;
|
||||||
|
showForks = false;
|
||||||
|
showPRs = false;
|
||||||
|
showRepoCreations = false;
|
||||||
|
showMyRepoStars = true;
|
||||||
|
showMyRepoForks = true;
|
||||||
|
openInBrowser = true;
|
||||||
|
# my fork:
|
||||||
|
showNotificationBadge = true;
|
||||||
|
colorizationEnabled = true;
|
||||||
|
colorizationIcon = "Primary";
|
||||||
|
colorizationBadge = "Tertiary";
|
||||||
|
colorizationBadgeText = "Primary";
|
||||||
|
defaultTab = 1;
|
||||||
|
enableSystemNotifications = true;
|
||||||
|
notifyGitHubNotifications = true;
|
||||||
|
notifyStars = true;
|
||||||
|
notifyForks = true;
|
||||||
|
notifyPRs = true;
|
||||||
|
notifyRepoCreations = true;
|
||||||
|
notifyMyRepoStars = true;
|
||||||
|
notifyMyRepoForks = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
@ -459,16 +459,18 @@ in
|
||||||
teams-applet = {
|
teams-applet = {
|
||||||
Unit = {
|
Unit = {
|
||||||
Description = "teams applet";
|
Description = "teams applet";
|
||||||
Requires = [ "tray.target" ];
|
Requires = [ "graphical-session.target" ];
|
||||||
After = [
|
After = [
|
||||||
"graphical-session.target"
|
"graphical-session.target"
|
||||||
"tray.target"
|
"tray.target"
|
||||||
];
|
];
|
||||||
PartOf = [ "graphical-session.target" ];
|
PartOf = [
|
||||||
|
"tray.target"
|
||||||
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
Install = {
|
Install = {
|
||||||
WantedBy = [ "graphical-session.target" ];
|
WantedBy = [ "tray.target" ];
|
||||||
};
|
};
|
||||||
|
|
||||||
Service = {
|
Service = {
|
||||||
|
|
@ -479,16 +481,18 @@ in
|
||||||
onepassword-applet = {
|
onepassword-applet = {
|
||||||
Unit = {
|
Unit = {
|
||||||
Description = "1password applet";
|
Description = "1password applet";
|
||||||
Requires = [ "tray.target" ];
|
Requires = [ "graphical-session.target" ];
|
||||||
After = [
|
After = [
|
||||||
"graphical-session.target"
|
"graphical-session.target"
|
||||||
"tray.target"
|
"tray.target"
|
||||||
];
|
];
|
||||||
PartOf = [ "graphical-session.target" ];
|
PartOf = [
|
||||||
|
"tray.target"
|
||||||
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
Install = {
|
Install = {
|
||||||
WantedBy = [ "graphical-session.target" ];
|
WantedBy = [ "tray.target" ];
|
||||||
};
|
};
|
||||||
|
|
||||||
Service = {
|
Service = {
|
||||||
|
|
|
||||||
|
|
@ -2,11 +2,15 @@
|
||||||
{
|
{
|
||||||
options.swarselmodules.lowBattery = lib.mkEnableOption "low battery notification config";
|
options.swarselmodules.lowBattery = lib.mkEnableOption "low battery notification config";
|
||||||
config = lib.mkIf config.swarselmodules.lowBattery {
|
config = lib.mkIf config.swarselmodules.lowBattery {
|
||||||
systemd.user.services."battery-low" = {
|
systemd.user.services."battery-low" =
|
||||||
|
let
|
||||||
|
target = "sway-session.target";
|
||||||
|
in
|
||||||
|
{
|
||||||
enable = true;
|
enable = true;
|
||||||
description = "Timer for battery check that alerts at 10% or less";
|
description = "Timer for battery check that alerts at 10% or less";
|
||||||
partOf = [ "graphical-session.target" ];
|
partOf = [ target ];
|
||||||
wantedBy = [ "graphical-session.target" ];
|
wantedBy = [ target ];
|
||||||
serviceConfig = {
|
serviceConfig = {
|
||||||
Type = "simple";
|
Type = "simple";
|
||||||
ExecStart = pkgs.writeShellScript "battery-low-notification"
|
ExecStart = pkgs.writeShellScript "battery-low-notification"
|
||||||
|
|
|
||||||
|
|
@ -14,7 +14,7 @@ in
|
||||||
comment = "Sway compositor managed by UWSM";
|
comment = "Sway compositor managed by UWSM";
|
||||||
binPath = "/run/current-system/sw/bin/sway";
|
binPath = "/run/current-system/sw/bin/sway";
|
||||||
};
|
};
|
||||||
niri = lib.mkIf (config.swarselmodules ? niri) {
|
niri = lib.mkIf (config.programs ? niri) {
|
||||||
prettyName = "Niri";
|
prettyName = "Niri";
|
||||||
comment = "Niri compositor managed by UWSM";
|
comment = "Niri compositor managed by UWSM";
|
||||||
binPath = "/run/current-system/sw/bin/niri-session";
|
binPath = "/run/current-system/sw/bin/niri-session";
|
||||||
|
|
|
||||||
|
|
@ -1,20 +1,20 @@
|
||||||
{ lib, config, pkgs, ... }:
|
{ lib, config, ... }:
|
||||||
{
|
{
|
||||||
options.swarselmodules.xdg-portal = lib.mkEnableOption "xdg portal config";
|
options.swarselmodules.xdg-portal = lib.mkEnableOption "xdg portal config";
|
||||||
config = lib.mkIf config.swarselmodules.xdg-portal {
|
config = lib.mkIf config.swarselmodules.xdg-portal {
|
||||||
xdg.portal = {
|
xdg.portal = {
|
||||||
enable = true;
|
enable = true;
|
||||||
config = {
|
# config = {
|
||||||
common = {
|
# common = {
|
||||||
default = "wlr";
|
# default = "wlr";
|
||||||
};
|
# };
|
||||||
};
|
# };
|
||||||
wlr.enable = true;
|
# wlr.enable = true;
|
||||||
wlr.settings.screencast = {
|
# wlr.settings.screencast = {
|
||||||
output_name = "eDP-1";
|
# output_name = "eDP-1";
|
||||||
chooser_type = "simple";
|
# chooser_type = "simple";
|
||||||
chooser_cmd = "${pkgs.slurp}/bin/slurp -f %o -or";
|
# chooser_cmd = "${pkgs.slurp}/bin/slurp -f %o -or";
|
||||||
};
|
# };
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,14 +1,14 @@
|
||||||
{ inputs, lib, config, pkgs, ... }:
|
{ self, inputs, config, pkgs, ... }:
|
||||||
let
|
|
||||||
moduleName = "niri";
|
|
||||||
in
|
|
||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
inputs.niri-flake.nixosModules.niri
|
inputs.niri-flake.nixosModules.niri
|
||||||
];
|
];
|
||||||
options.swarselmodules.${moduleName} = lib.mkEnableOption "${moduleName} settings";
|
config = {
|
||||||
config = lib.mkIf config.swarselmodules.${moduleName}
|
|
||||||
{
|
niri-flake.cache.enable = true;
|
||||||
|
home-manager.users.${config.swarselsystems.mainUser}.imports = [
|
||||||
|
"${self}/modules/home/optional/niri.nix"
|
||||||
|
];
|
||||||
|
|
||||||
environment.systemPackages = with pkgs; [
|
environment.systemPackages = with pkgs; [
|
||||||
wl-clipboard
|
wl-clipboard
|
||||||
|
|
@ -20,14 +20,11 @@ in
|
||||||
];
|
];
|
||||||
|
|
||||||
|
|
||||||
programs.niri = {
|
programs = {
|
||||||
|
niri = {
|
||||||
enable = true;
|
enable = true;
|
||||||
package = pkgs.niri-unstable; # the actual niri that will be installed and used
|
package = pkgs.niri-stable; # the actual niri that will be installed and used
|
||||||
};
|
};
|
||||||
} // {
|
|
||||||
niri-flake.cache.enable = true;
|
|
||||||
programs.niri = {
|
|
||||||
package = null;
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
17
modules/nixos/optional/noctalia.nix
Normal file
17
modules/nixos/optional/noctalia.nix
Normal file
|
|
@ -0,0 +1,17 @@
|
||||||
|
{ self, inputs, config, ... }:
|
||||||
|
{
|
||||||
|
disabledModules = [ "programs/gpu-screen-recorder.nix" ];
|
||||||
|
imports = [
|
||||||
|
"${inputs.nixpkgs-dev}/nixos/modules/programs/gpu-screen-recorder.nix"
|
||||||
|
];
|
||||||
|
config = {
|
||||||
|
home-manager.users.${config.swarselsystems.mainUser}.imports = [
|
||||||
|
"${self}/modules/home/optional/noctalia.nix"
|
||||||
|
];
|
||||||
|
services = {
|
||||||
|
upower.enable = true; # needed for battery percentage
|
||||||
|
gnome.evolution-data-server.enable = true; # needed for calendar integration
|
||||||
|
};
|
||||||
|
programs.gpu-screen-recorder.enable = true;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
{ self, lib, config, globals, dns, confLib, ... }:
|
{ lib, config, globals, dns, confLib, ... }:
|
||||||
let
|
let
|
||||||
inherit (confLib.gen { name = "firefly-iii"; port = 80; }) servicePort serviceName serviceUser serviceGroup serviceDomain serviceAddress proxyAddress4 proxyAddress6;
|
inherit (confLib.gen { name = "firefly-iii"; port = 80; }) servicePort serviceName serviceUser serviceGroup serviceDomain serviceAddress proxyAddress4 proxyAddress6;
|
||||||
inherit (confLib.static) isHome dnsServer webProxy homeWebProxy homeServiceAddress nginxAccessRules;
|
inherit (confLib.static) isHome dnsServer webProxy homeWebProxy homeServiceAddress nginxAccessRules;
|
||||||
|
|
@ -30,11 +30,11 @@ in
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
topology.self.services.${serviceName} = {
|
# topology.self.services.${serviceName} = {
|
||||||
name = "Firefly-III";
|
# name = "Firefly-III";
|
||||||
info = "https://${serviceDomain}";
|
# info = "https://${serviceDomain}";
|
||||||
icon = "${self}/files/topology-images/${serviceName}.png";
|
# icon = "${self}/files/topology-images/${serviceName}.png";
|
||||||
};
|
# };
|
||||||
|
|
||||||
globals.services.${serviceName} = {
|
globals.services.${serviceName} = {
|
||||||
domain = serviceDomain;
|
domain = serviceDomain;
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
{ self, lib, config, globals, dns, confLib, ... }:
|
{ lib, config, globals, dns, confLib, ... }:
|
||||||
let
|
let
|
||||||
inherit (confLib.gen { name = "freshrss"; port = 80; }) servicePort serviceName serviceUser serviceGroup serviceDomain serviceAddress proxyAddress4 proxyAddress6;
|
inherit (confLib.gen { name = "freshrss"; port = 80; }) servicePort serviceName serviceUser serviceGroup serviceDomain serviceAddress proxyAddress4 proxyAddress6;
|
||||||
inherit (confLib.static) isHome webProxy homeWebProxy dnsServer homeServiceAddress nginxAccessRules;
|
inherit (confLib.static) isHome webProxy homeWebProxy dnsServer homeServiceAddress nginxAccessRules;
|
||||||
|
|
@ -49,11 +49,11 @@ in
|
||||||
# };
|
# };
|
||||||
};
|
};
|
||||||
|
|
||||||
topology.self.services.${serviceName} = {
|
# topology.self.services.${serviceName} = {
|
||||||
name = "FreshRSS";
|
# name = "FreshRSS";
|
||||||
info = "https://${serviceDomain}";
|
# info = "https://${serviceDomain}";
|
||||||
icon = "${self}/files/topology-images/${serviceName}.png";
|
# icon = "${self}/files/topology-images/${serviceName}.png";
|
||||||
};
|
# };
|
||||||
|
|
||||||
globals.services.${serviceName} = {
|
globals.services.${serviceName} = {
|
||||||
domain = serviceDomain;
|
domain = serviceDomain;
|
||||||
|
|
|
||||||
|
|
@ -165,6 +165,19 @@ in
|
||||||
_ = { };
|
_ = { };
|
||||||
});
|
});
|
||||||
|
|
||||||
|
overrideTarget = target:
|
||||||
|
let
|
||||||
|
inherit target;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
Unit = {
|
||||||
|
PartOf = lib.mkForce [ target ];
|
||||||
|
After = lib.mkForce [ target ];
|
||||||
|
Requires = lib.mkForce [ target ];
|
||||||
|
};
|
||||||
|
Install.WantedBy = lib.mkForce [ target ];
|
||||||
|
};
|
||||||
|
|
||||||
genNginx =
|
genNginx =
|
||||||
{ serviceAddress
|
{ serviceAddress
|
||||||
, serviceName
|
, serviceName
|
||||||
|
|
|
||||||
|
|
@ -82,6 +82,7 @@ in
|
||||||
(additions final prev)
|
(additions final prev)
|
||||||
// (nixpkgs-stable-versions final prev)
|
// (nixpkgs-stable-versions final prev)
|
||||||
// (inputs.niri-flake.overlays.niri final prev)
|
// (inputs.niri-flake.overlays.niri final prev)
|
||||||
|
// (inputs.noctalia.overlays.default final prev)
|
||||||
// (inputs.vbc-nix.overlays.default final prev)
|
// (inputs.vbc-nix.overlays.default final prev)
|
||||||
// (inputs.nur.overlays.default final prev)
|
// (inputs.nur.overlays.default final prev)
|
||||||
// (inputs.emacs-overlay.overlay final prev)
|
// (inputs.emacs-overlay.overlay final prev)
|
||||||
|
|
|
||||||
|
|
@ -30,7 +30,7 @@ writeShellApplication {
|
||||||
;;
|
;;
|
||||||
-r | --repo)
|
-r | --repo)
|
||||||
shift
|
shift
|
||||||
target_repo=rue
|
target_repo=true
|
||||||
;;
|
;;
|
||||||
-d | --directory)
|
-d | --directory)
|
||||||
shift
|
shift
|
||||||
|
|
|
||||||
6
pkgs/flake/niri-resize/default.nix
Normal file
6
pkgs/flake/niri-resize/default.nix
Normal file
|
|
@ -0,0 +1,6 @@
|
||||||
|
{ self, name, writeShellApplication, jq }:
|
||||||
|
writeShellApplication {
|
||||||
|
inherit name;
|
||||||
|
runtimeInputs = [ jq ];
|
||||||
|
text = builtins.readFile "${self}/files/scripts/${name}.sh";
|
||||||
|
}
|
||||||
|
|
@ -2,5 +2,38 @@
|
||||||
writeShellApplication {
|
writeShellApplication {
|
||||||
inherit name;
|
inherit name;
|
||||||
runtimeInputs = [ kitty element-desktop vesktop spotify-player jq ];
|
runtimeInputs = [ kitty element-desktop vesktop spotify-player jq ];
|
||||||
text = builtins.readFile "${self}/files/scripts/${name}.sh";
|
text = ''
|
||||||
|
while :; do
|
||||||
|
case ''${1:-} in
|
||||||
|
-k | --kitty)
|
||||||
|
cmd=(sh -c 'kitty --app-id kittyterm -T kittyterm -o confirm_os_window_close=0 zellij --config ${self}/files/zellij/config-kittyterm.kdl attach --create kittyterm' '&')
|
||||||
|
searchapp="kittyterm"
|
||||||
|
;;
|
||||||
|
-e | --element)
|
||||||
|
cmd=(element-desktop)
|
||||||
|
searchapp="Element"
|
||||||
|
;;
|
||||||
|
-d | --vesktop)
|
||||||
|
cmd=(vesktop)
|
||||||
|
searchapp="vesktop"
|
||||||
|
;;
|
||||||
|
-s | --spotifyplayer)
|
||||||
|
cmd=(sh -c 'kitty --add-id spotifytui -T spotifytui -o confirm_os_window_close=0 spotify_player' '&')
|
||||||
|
searchapp="spotifytui"
|
||||||
|
;;
|
||||||
|
*) break ;;
|
||||||
|
esac
|
||||||
|
shift
|
||||||
|
done
|
||||||
|
|
||||||
|
WIN_INFO=$(niri msg -j windows | jq --arg search "$searchapp" '.[] | select (.app_id | test($search)) | { id, is_focused, workspace_id }')
|
||||||
|
ID=$(echo "$WIN_INFO" | jq -r '.id // empty')
|
||||||
|
|
||||||
|
if [ -z "$ID" ]; then
|
||||||
|
niri msg action spawn -- "''${cmd[@]}"
|
||||||
|
else
|
||||||
|
niri msg action close-window --id "$ID"
|
||||||
|
fi
|
||||||
|
|
||||||
|
'';
|
||||||
}
|
}
|
||||||
|
|
|
||||||
File diff suppressed because one or more lines are too long
Loading…
Add table
Add a link
Reference in a new issue