Compare commits
7 commits
ad27dbd732
...
adb08d1aea
Author | SHA1 | Date | |
---|---|---|---|
adb08d1aea | |||
f65e7475e5 | |||
7be7cdef8e | |||
4e2e43f1bb | |||
7094e69814 | |||
3d922f1dbc | |||
77c7207d8b |
10 changed files with 98 additions and 101 deletions
|
@ -67,6 +67,9 @@ in {
|
|||
];
|
||||
in
|
||||
listToAttrs (with hm.lib.niri.actions; [
|
||||
# TODO: Focus window if already launched
|
||||
# https://github.com/YaLTeR/niri/discussions/267
|
||||
#?? niri msg action focus-window --id (niri msg -j windows | jq '.[] | select(.app_id == "").id')
|
||||
(key "0" "Mod" (spawn [swayosd-client "--output-volume" "mute-toggle"]))
|
||||
(key "1" "Ctrl+Alt" (spawn ["lifx" "state" "--brightness" "0.01"]))
|
||||
(key "1" "Mod" (focus-workspace "1"))
|
||||
|
|
|
@ -10,6 +10,9 @@ with lib; let
|
|||
|
||||
audio = config.home-manager.users.${config.custom.username}.home.file.".local/bin/audio".source;
|
||||
bash = "${pkgs.bash}/bin/bash";
|
||||
chromium = getExe hm.programs.chromium.package;
|
||||
loupe = "${pkgs.loupe}/bin/loupe";
|
||||
nautilus = "${pkgs.nautilus}/bin/nautilus";
|
||||
niri = "${config.programs.niri.package}/bin/niri";
|
||||
sway-audio-idle-inhibit = "${pkgs.sway-audio-idle-inhibit}/bin/sway-audio-idle-inhibit";
|
||||
wallpaper = "${config.home-manager.users.${config.custom.username}.home.file.".local/bin/wallpaper".source}";
|
||||
|
@ -52,8 +55,11 @@ in {
|
|||
spawn-at-startup =
|
||||
[
|
||||
{command = [audio "--init"];} # Enforce audio profile state
|
||||
{command = [bash "-c" config.custom.menus.clipboard.clear];} # Clear clipboard history
|
||||
{command = [bash "-c" config.custom.menus.clipboard.clear-silent];} # Clear clipboard history
|
||||
{command = [sway-audio-idle-inhibit];} # Inhibit while audio is playing
|
||||
{command = [chromium];}
|
||||
{command = [loupe];}
|
||||
{command = [nautilus];}
|
||||
]
|
||||
++ optionals config.custom.wallpaper [
|
||||
{command = [wallpaper];}
|
||||
|
|
|
@ -53,7 +53,14 @@ in {
|
|||
{
|
||||
# Startup
|
||||
#?? <= 60 secs after niri launches
|
||||
matches = [{at-startup = true;}];
|
||||
matches = [
|
||||
{at-startup = true;}
|
||||
{app-id = "^org\.gnome\.Loupe$";}
|
||||
{app-id = "^org\.gnome\.Nautilus$";}
|
||||
];
|
||||
|
||||
open-focused = false;
|
||||
open-on-workspace = "1";
|
||||
}
|
||||
|
||||
{
|
||||
|
@ -76,7 +83,7 @@ in {
|
|||
then 0.4
|
||||
else 0.7;
|
||||
|
||||
#// open-on-workspace = "2";
|
||||
open-on-workspace = "2";
|
||||
}
|
||||
|
||||
{
|
||||
|
@ -101,7 +108,7 @@ in {
|
|||
{app-id = "^obsidian$";}
|
||||
];
|
||||
|
||||
#// open-on-workspace = "2";
|
||||
open-on-workspace = "2";
|
||||
}
|
||||
|
||||
{
|
||||
|
@ -120,20 +127,24 @@ in {
|
|||
];
|
||||
|
||||
default-column-width = {}; # Window-defined
|
||||
#// open-on-workspace = "1";
|
||||
open-on-workspace = "1";
|
||||
variable-refresh-rate = true;
|
||||
}
|
||||
|
||||
{
|
||||
# Media
|
||||
matches = [
|
||||
{app-id = "^org\.gnome\.Loupe$";}
|
||||
{
|
||||
app-id = "^org\.gnome\.Loupe$";
|
||||
title = "wallpaper.png";
|
||||
}
|
||||
|
||||
{app-id = "^Spotify$";}
|
||||
{app-id = "^totem$";}
|
||||
{app-id = "^YouTube Music$";}
|
||||
];
|
||||
|
||||
#// open-on-workspace = "3";
|
||||
open-on-workspace = "3";
|
||||
}
|
||||
|
||||
{
|
||||
|
@ -144,7 +155,7 @@ in {
|
|||
{app-id = "^ONLYOFFICE Desktop Editors$";}
|
||||
];
|
||||
|
||||
#// open-on-workspace = "2";
|
||||
open-on-workspace = "2";
|
||||
}
|
||||
|
||||
(let
|
||||
|
@ -199,7 +210,7 @@ in {
|
|||
];
|
||||
|
||||
open-floating = false;
|
||||
#// open-on-workspace = "1";
|
||||
open-on-workspace = "1";
|
||||
}
|
||||
|
||||
### Overrides
|
||||
|
|
|
@ -12,8 +12,9 @@ in {
|
|||
calculator.show = mkOption {default = "";};
|
||||
|
||||
clipboard = {
|
||||
clear = mkOption {default = "";};
|
||||
show = mkOption {default = "";};
|
||||
clear = mkOption {default = "";};
|
||||
clear-silent = mkOption {default = "";};
|
||||
};
|
||||
|
||||
dmenu.show = mkOption {default = "";};
|
||||
|
|
|
@ -31,6 +31,7 @@ in {
|
|||
clipboard = {
|
||||
show = "${quit} || ${rofi} -show clipboard -show-icons";
|
||||
clear = "${cliphist} wipe && ${notify-send} '> cliphist' 'Clipboard cleared' --urgency low";
|
||||
clear-silent = "${cliphist} wipe";
|
||||
};
|
||||
|
||||
dmenu.show = "${quit} || ${rofi} -dmenu";
|
||||
|
|
|
@ -26,6 +26,7 @@ in {
|
|||
clipboard = {
|
||||
show = "${walker} --modules clipboard";
|
||||
clear = "${rm} ~/.cache/walker/clipboard.gob && ${notify-send} '> walker' 'Clipboard cleared' --urgency low";
|
||||
clear-silent = "${rm} ~/.cache/walker/clipboard.gob";
|
||||
};
|
||||
|
||||
dmenu.show = "${walker} --modules dmenu";
|
||||
|
|
|
@ -6,10 +6,14 @@
|
|||
}:
|
||||
with lib; let
|
||||
cfg = config.custom.programs.ghostty;
|
||||
hm = config.home-manager.users.${config.custom.username};
|
||||
|
||||
ghostty = getExe hm.programs.ghostty.package;
|
||||
in {
|
||||
options.custom.programs.ghostty = {
|
||||
enable = mkOption {default = false;};
|
||||
minimal = mkOption {default = false;};
|
||||
service = mkOption {default = true;};
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
|
@ -82,6 +86,27 @@ in {
|
|||
window-padding-y = 4;
|
||||
};
|
||||
};
|
||||
|
||||
# HACK: Launch in background to decrease GTK startup delay
|
||||
# https://github.com/ghostty-org/ghostty/discussions/2978
|
||||
systemd.user.services = mkIf cfg.service {
|
||||
ghostty = {
|
||||
Unit = {
|
||||
Description = "Ghostty Background Service";
|
||||
After = ["xdg-desktop-autostart.target"];
|
||||
};
|
||||
|
||||
Service = {
|
||||
BusName = "com.mitchellh.ghostty";
|
||||
ExecStart = "${ghostty} --initial-window=false --quit-after-last-window-closed=false";
|
||||
Type = "dbus";
|
||||
};
|
||||
|
||||
Install = {
|
||||
WantedBy = ["xdg-desktop-autostart.target"];
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
];
|
||||
};
|
||||
|
|
|
@ -11,7 +11,7 @@ in {
|
|||
enable = mkOption {default = false;};
|
||||
git = mkOption {default = false;};
|
||||
index = mkOption {default = true;};
|
||||
service = mkOption {default = true;};
|
||||
service = mkOption {default = false;};
|
||||
terminal = mkOption {default = "ghostty";};
|
||||
};
|
||||
|
||||
|
@ -44,6 +44,7 @@ in {
|
|||
|
||||
home-manager.users.${config.custom.username} = {
|
||||
# HACK: Partially fix startup delay with background service until module is available
|
||||
# BUG: --gapplication-service always exits without a window
|
||||
systemd.user.services = let
|
||||
nautilus = "${pkgs.nautilus}/bin/nautilus";
|
||||
turtle_service = "${pkgs.turtle}/bin/turtle_service";
|
||||
|
@ -56,7 +57,7 @@ in {
|
|||
BusName = "org.gnome.Nautilus";
|
||||
ExecStart = "${nautilus} --gapplication-service";
|
||||
ExecStop = "${nautilus} --quit";
|
||||
Restart = "always"; #!! Benign exceptions cause nautilus to exit
|
||||
Restart = "always"; #!! Exits when last window is closed
|
||||
Type = "dbus";
|
||||
|
||||
# HACK: Allow child processes to live, otherwise applications launched through service are killed on stop
|
||||
|
|
|
@ -38,69 +38,16 @@ in {
|
|||
userKeymaps = [
|
||||
{
|
||||
bindings = {
|
||||
"escape" = "menu::Cancel";
|
||||
"ctrl-," = "zed::OpenSettings";
|
||||
"ctrl-o" = "workspace::Open";
|
||||
"alt-space" = "command_palette::Toggle";
|
||||
};
|
||||
}
|
||||
{
|
||||
context = "Editor";
|
||||
|
||||
bindings = {
|
||||
"alt-enter" = "editor::DuplicateLineDown";
|
||||
"backspace" = "editor::Backspace";
|
||||
"shift-backspace" = "editor::Backspace";
|
||||
"delete" = "editor::Delete";
|
||||
"tab" = "editor::Tab";
|
||||
"shift-tab" = "editor::TabPrev";
|
||||
"ctrl-k" = "editor::CutToEndOfLine";
|
||||
"ctrl-k ctrl-q" = "editor::Rewrap";
|
||||
"ctrl-k q" = "editor::Rewrap";
|
||||
"ctrl-backspace" = "editor::DeleteToPreviousWordStart";
|
||||
"ctrl-delete" = "editor::DeleteToNextWordEnd";
|
||||
"shift-delete" = "editor::Cut";
|
||||
"ctrl-insert" = "editor::Copy";
|
||||
"shift-insert" = "editor::Paste";
|
||||
"ctrl-y" = "editor::Redo";
|
||||
"ctrl-z" = "editor::Undo";
|
||||
"ctrl-shift-z" = "editor::Redo";
|
||||
"up" = "editor::MoveUp";
|
||||
"ctrl-up" = "editor::LineUp";
|
||||
"ctrl-down" = "editor::LineDown";
|
||||
"pageup" = "editor::MovePageUp";
|
||||
"alt-pageup" = "editor::PageUp";
|
||||
"shift-pageup" = "editor::SelectPageUp";
|
||||
"home" = "editor::MoveToBeginningOfLine";
|
||||
"down" = "editor::MoveDown";
|
||||
"pagedown" = "editor::MovePageDown";
|
||||
"alt-pagedown" = "editor::PageDown";
|
||||
"shift-pagedown" = "editor::SelectPageDown";
|
||||
"end" = "editor::MoveToEndOfLine";
|
||||
"left" = "editor::MoveLeft";
|
||||
"right" = "editor::MoveRight";
|
||||
"ctrl-left" = "editor::MoveToPreviousWordStart";
|
||||
"ctrl-right" = "editor::MoveToNextWordEnd";
|
||||
"ctrl-home" = "editor::MoveToBeginning";
|
||||
"ctrl-end" = "editor::MoveToEnd";
|
||||
"shift-up" = "editor::SelectUp";
|
||||
"shift-down" = "editor::SelectDown";
|
||||
"shift-left" = "editor::SelectLeft";
|
||||
"shift-right" = "editor::SelectRight";
|
||||
"ctrl-shift-left" = "editor::SelectToPreviousWordStart";
|
||||
"ctrl-shift-right" = "editor::SelectToNextWordEnd";
|
||||
"ctrl-shift-home" = "editor::SelectToBeginning";
|
||||
"ctrl-shift-end" = "editor::SelectToEnd";
|
||||
"ctrl-a" = "editor::SelectAll";
|
||||
"ctrl-l" = "editor::SelectLine";
|
||||
"ctrl-shift-i" = "editor::Format";
|
||||
"ctrl-alt-space" = "editor::ShowCharacterPalette";
|
||||
"ctrl-;" = "editor::ToggleLineNumbers";
|
||||
"ctrl-k ctrl-r" = "editor::RevertSelectedHunks";
|
||||
"ctrl-'" = "editor::ToggleHunkDiff";
|
||||
"ctrl-\"" = "editor::ExpandAllHunkDiffs";
|
||||
"ctrl-i" = "editor::ShowSignatureHelp";
|
||||
"alt-g b" = "editor::ToggleGitBlame";
|
||||
"menu" = "editor::OpenContextMenu";
|
||||
"shift-f10" = "editor::OpenContextMenu";
|
||||
"alt-left" = "editor::MoveToBeginningOfLine";
|
||||
"alt-right" = "editor::MoveToEndOfLine";
|
||||
};
|
||||
}
|
||||
];
|
||||
|
@ -192,7 +139,7 @@ in {
|
|||
};
|
||||
|
||||
ui_font_family = config.custom.settings.fonts.sans-serif;
|
||||
ui_font_size = 18;
|
||||
ui_font_size = 20;
|
||||
|
||||
# Language-specific
|
||||
# https://zed.dev/docs/configuring-languages
|
||||
|
@ -216,7 +163,7 @@ in {
|
|||
{
|
||||
cursor = "#93a1a1";
|
||||
background = "#93a1a1";
|
||||
selection = "#93a1a11A"; # 10%
|
||||
selection = "#93a1a11a"; # 10%
|
||||
}
|
||||
];
|
||||
|
||||
|
@ -224,54 +171,54 @@ in {
|
|||
"scrollbar.thumb.border" = "#00000000";
|
||||
|
||||
syntax = {
|
||||
_expr.color = "#b58900";
|
||||
_id.color = "#93a1a1";
|
||||
attribute.color = "#93a1a1";
|
||||
boolean.color = "#cb4b16";
|
||||
comment.color = "#586e75";
|
||||
"_expr".color = "#b58900";
|
||||
"_id".color = "#93a1a1";
|
||||
"attribute".color = "#93a1a1";
|
||||
"boolean".color = "#cb4b16";
|
||||
"comment".color = "#586e75";
|
||||
"comment.doc".color = "#586e75";
|
||||
constant.color = "#93a1a1";
|
||||
"constant".color = "#93a1a1";
|
||||
"constant.builtin".color = "#93a1a1";
|
||||
constructor.color = "#b58900";
|
||||
embedded.color = "#657b83";
|
||||
emphasis.color = "#93a1a1";
|
||||
"constructor".color = "#b58900";
|
||||
"embedded".color = "#657b83";
|
||||
"emphasis".color = "#93a1a1";
|
||||
"emphasis.strong".color = "#93a1a1";
|
||||
enum.color = "#b58900";
|
||||
function.color = "#268bd2";
|
||||
"enum".color = "#b58900";
|
||||
"function".color = "#268bd2";
|
||||
"function.builtin".color = "#268bd2";
|
||||
"function.call".color = "#268bd2";
|
||||
hint.color = "#657b83";
|
||||
keyword.color = "#d33682";
|
||||
"hint".color = "#657b83";
|
||||
"keyword".color = "#d33682";
|
||||
"keyword.exception".color = "#d33682";
|
||||
label.color = "#93a1a1";
|
||||
link_text.color = "#93a1a1";
|
||||
link_uri.color = "#93a1a1";
|
||||
number.color = "#2aa198";
|
||||
operator.color = "#657b83";
|
||||
predictive.color = "#657b83";
|
||||
preproc.color = "#93a1a1";
|
||||
primary.color = "#93a1a1";
|
||||
property.color = "#93a1a1";
|
||||
punctuation.color = "#657b83";
|
||||
"label".color = "#93a1a1";
|
||||
"link_text".color = "#93a1a1";
|
||||
"link_uri".color = "#93a1a1";
|
||||
"number".color = "#2aa198";
|
||||
"operator".color = "#657b83";
|
||||
"predictive".color = "#657b83";
|
||||
"preproc".color = "#93a1a1";
|
||||
"primary".color = "#93a1a1";
|
||||
"property".color = "#93a1a1";
|
||||
"punctuation".color = "#657b83";
|
||||
"punctuation.bracket".color = "#657b83";
|
||||
"punctuation.delimiter".color = "#657b83";
|
||||
"punctuation.list_marker".color = "#657b83";
|
||||
"punctuation.special".color = "#657b83";
|
||||
string.color = "#859900";
|
||||
"string".color = "#859900";
|
||||
"string.escape".color = "#cb4b16";
|
||||
"string.regex".color = "#cb4b16";
|
||||
"string.special".color = "#cb4b16";
|
||||
"string.special.symbol".color = "#cb4b16";
|
||||
tag.color = "#93a1a1";
|
||||
"tag".color = "#93a1a1";
|
||||
"tag.doctype".color = "#93a1a1";
|
||||
"text.literal".color = "#93a1a1";
|
||||
title.color = "#93a1a1";
|
||||
type.color = "#b58900";
|
||||
variable.color = "#93a1a1";
|
||||
"title".color = "#93a1a1";
|
||||
"type".color = "#b58900";
|
||||
"variable".color = "#93a1a1";
|
||||
"variable.member".color = "#93a1a1";
|
||||
"variable.parameter".color = "#6c71c4";
|
||||
"variable.special".color = "#93a1a1";
|
||||
variant.color = "#93a1a1";
|
||||
"variant".color = "#93a1a1";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
|
|
@ -27,7 +27,8 @@ in {
|
|||
|
||||
# Use portal for xdg-open
|
||||
# https://github.com/NixOS/nixpkgs/issues/160923
|
||||
xdgOpenUsePortal = true;
|
||||
# BUG: Window activation fails on niri
|
||||
#// xdgOpenUsePortal = true;
|
||||
};
|
||||
|
||||
home-manager.users.${config.custom.username}.xdg = {
|
||||
|
|
Loading…
Add table
Reference in a new issue