830 lines
24 KiB
Nix
830 lines
24 KiB
Nix
{ config, pkgs, lib, ... }:
|
|
let
|
|
key = {
|
|
left = "n";
|
|
down = "e";
|
|
up = "i";
|
|
right = "o";
|
|
tabL = "u";
|
|
tabR = "Y";
|
|
};
|
|
font = {
|
|
mono = "Hack Nerd Font";
|
|
interface = "Liberation Sans";
|
|
size = {
|
|
small = "12";
|
|
medium = "14";
|
|
big = "16";
|
|
};
|
|
};
|
|
accents = {
|
|
red = {
|
|
color = "#F44336";
|
|
fg = "#ffffff";
|
|
};
|
|
};
|
|
themes = {
|
|
dark = {
|
|
background = "~/.local/share/backgrounds/assembly_dark.png";
|
|
opacity = 98;
|
|
opacityHex = "ee";
|
|
color = {
|
|
type = "dark";
|
|
bg = "#202020";
|
|
bg_light = "#404040";
|
|
bg_dark = "#191919";
|
|
txt = "#FFFFFF";
|
|
nontxt = "#252525";
|
|
random_range = "[a-f]";
|
|
normal = {
|
|
black = "#404040";
|
|
red = "#AB4642";
|
|
green = "#A1B56C";
|
|
yellow = "#E6C547";
|
|
blue = "#6C99DA";
|
|
magenta = "#C397D8";
|
|
cyan = "#70C0BA";
|
|
white = "#EAEAEA";
|
|
#non standard
|
|
orange = "#FF7500";
|
|
brown = "#A07040";
|
|
};
|
|
};
|
|
};
|
|
};
|
|
papirus_red = (pkgs.unstable.papirus-icon-theme.override { color = "red"; });
|
|
orchis_theme_compact =
|
|
(pkgs.orchis-theme.override { tweaks = [ "compact" "solid" ]; });
|
|
nerdfonts_fira_hack =
|
|
(pkgs.nerdfonts.override { fonts = [ "FiraCode" "Hack" ]; });
|
|
accent = accents.red;
|
|
theme = themes.dark;
|
|
color = theme.color;
|
|
pulse_sink = pkgs.writeShellScriptBin "pulse_sink" ''
|
|
#!/bin/sh
|
|
output=$(printf "HDMI\nHeadphones" | bemenu -b)
|
|
vol=$(${pkgs.pamixer}/bin/pamixer --get-volume)
|
|
case "$output" in
|
|
HDMI)
|
|
pactl set-default-sink alsa_output.pci-0000_07_00.1.hdmi-stereo-extra1
|
|
;;
|
|
Headphones)
|
|
pactl set-default-sink alsa_output.pci-0000_09_00.4.analog-stereo
|
|
;;
|
|
esac
|
|
${pkgs.pamixer}/bin/pamixer --set-volume "$vol"
|
|
'';
|
|
bmenu = pkgs.writeScriptBin "bmenu" ''
|
|
#!${pkgs.fish}/bin/fish
|
|
|
|
# wrapper around bemenu
|
|
# bmenu * - use as dmenu, -p for custom prompt (man bemenu)
|
|
# bmenu run - select from .desktop files and run it
|
|
# bmenu start - internal option
|
|
|
|
set swaymsg ${pkgs.sway}/bin/swaymsg
|
|
set swaymsg ${pkgs.sway}/bin/swaymsg
|
|
|
|
if test "$argv[1]" = "run"
|
|
test -n "$argv[2]" && set t "$argv[2]" || set t "terminal"
|
|
|
|
test -n "$i3SOCK" && set wrapper 'i3-msg exec --'
|
|
test -n "$SWAYSOCK" && set wrapper 'swaymsg exec --'
|
|
|
|
exec ${pkgs.j4-dmenu-desktop}/bin/j4-dmenu-desktop \
|
|
--dmenu="bmenu start -p Iniciar:" \
|
|
--term "$t" \
|
|
--wrapper="$wrapper" \
|
|
--no-generic
|
|
end
|
|
|
|
if test -n "$SWAYSOCK"
|
|
swaymsg -t get_tree |
|
|
${pkgs.jq}/bin/jq -je '..|select(.focused? and .fullscreen_mode? == 1)|""' &&
|
|
${pkgs.sway}/bin/swaymsg -q fullscreen off &&
|
|
set fullscreen
|
|
|
|
${pkgs.sway}/bin/swaymsg -t get_outputs |
|
|
${pkgs.jq}/bin/jq -r 'map(.focused)|reverse|index(true)' |
|
|
read focused_output
|
|
|
|
test -n "$focused_output"
|
|
and set focused_output "-m $focused_output"
|
|
end
|
|
|
|
function clean_exit
|
|
set -q fullscreen
|
|
and swaymsg -q fullscreen on &
|
|
end
|
|
|
|
trap clean_exit EXIT
|
|
|
|
# t title
|
|
# f filter
|
|
# n normal
|
|
# h highlighted
|
|
# s selected
|
|
# sc scrollbar
|
|
|
|
set fn "${font.mono} ${font.size.small}"
|
|
|
|
set tb "${ color.bg }${theme.opacityHex}"
|
|
set tf "${ accent.color }"
|
|
|
|
set fb "${ color.bg }${theme.opacityHex}"
|
|
set ff "${ color.txt }"
|
|
|
|
set nb "${ color.bg }${theme.opacityHex}"
|
|
set nf "${ color.txt }"
|
|
set hb "${ accent.color }"
|
|
set hf "${ accent.fg }"
|
|
|
|
${pkgs.dhist}/bin/dhist wrap -- ${pkgs.bemenu}/bin/bemenu \
|
|
$focused_output\
|
|
--ignorecase\
|
|
--bottom\
|
|
--no-overlap\
|
|
--list 20\
|
|
--prefix '>'\
|
|
--fn "$fn"\
|
|
--tb "$tb" --tf "$tf" \
|
|
--fb "$fb" --ff "$ff" \
|
|
--nb "$nb" --nf "$nf" \
|
|
--hb "$hb" --hf "$hf" \
|
|
$argv
|
|
|
|
# vim: ft=fish
|
|
'';
|
|
in {
|
|
# Home Manager needs a bit of information about you and the
|
|
# paths it should manage.
|
|
home.username = "lelgenio";
|
|
home.homeDirectory = "/home/lelgenio";
|
|
# This value determines the Home Manager release that your
|
|
# configuration is compatible with. This helps avoid breakage
|
|
# when a new Home Manager release introduces backwards
|
|
# incompatible changes.
|
|
#
|
|
# You can update Home Manager without changing this value. See
|
|
# the Home Manager release notes for a list of state version
|
|
# changes in each release.
|
|
home.stateVersion = "22.05";
|
|
# Let Home Manager install and manage itself.
|
|
programs.home-manager.enable = true;
|
|
home.packages = with pkgs; [
|
|
alacritty
|
|
exa
|
|
fd
|
|
# text manipulation
|
|
pkgs.unstable.helix
|
|
sd
|
|
ripgrep
|
|
# desktop
|
|
kanshi
|
|
xfce.thunar
|
|
pass
|
|
dhist
|
|
bmenu
|
|
# media
|
|
yt-dlp
|
|
ffmpeg
|
|
imagemagick
|
|
mpv
|
|
mpc-cli
|
|
pulse_sink
|
|
# chat
|
|
tdesktop
|
|
discord
|
|
# Theming
|
|
orchis_theme_compact
|
|
papirus_red
|
|
libsForQt5.qtstyleplugins
|
|
qt5.qtsvg
|
|
## fonts
|
|
liberation_ttf
|
|
hack-font
|
|
font-awesome_5
|
|
fira-code
|
|
nerdfonts_fira_hack
|
|
# Programming
|
|
vscode
|
|
cargo
|
|
rust-analyzer
|
|
gcc
|
|
nixfmt
|
|
];
|
|
programs.fish = {
|
|
enable = true;
|
|
interactiveShellInit = ''
|
|
set -g __accent_color "${accent.color}"
|
|
alias _fish_prompt_accent "_fish_prompt_color '$__accent_color'"
|
|
'';
|
|
shellAbbrs = {
|
|
sv = "sudo systemct";
|
|
suv = "sudo systemct --user";
|
|
# git abbrs
|
|
g = "git";
|
|
ga = "git add";
|
|
gs = "git status";
|
|
gsh = "git show";
|
|
gl = "git log";
|
|
gg = "git graph";
|
|
gd = "git diff";
|
|
gds = "git diff --staged";
|
|
gc = "git commit";
|
|
gca = "git commit --all";
|
|
gcf = "git commit --fixup";
|
|
gp = "git push -u origin (git branch --show-current)";
|
|
gw = "git switch";
|
|
gr = "cd (git root)";
|
|
gri = "git rebase --interactive FETCH_HEAD";
|
|
};
|
|
};
|
|
home.file = {
|
|
# ".config/sway/config".source = ./sway;
|
|
".config/fish/conf.d/prompt.fish".source = ./fish_prompt.fish;
|
|
};
|
|
programs.alacritty = {
|
|
enable = true;
|
|
settings = {
|
|
colors= {
|
|
primary= {
|
|
background= "${ color.bg }";
|
|
foreground= "${ color.txt }";
|
|
};
|
|
cursor= {
|
|
text= "#000000";
|
|
cursor= "${ accent.color }";
|
|
};
|
|
normal= {
|
|
black= "${ color.normal.black }";
|
|
red= "${ color.normal.red }";
|
|
green= "${ color.normal.green }";
|
|
yellow= "${ color.normal.yellow }";
|
|
blue= "${ color.normal.blue }";
|
|
magenta= "${ color.normal.magenta }";
|
|
cyan= "${ color.normal.cyan }";
|
|
white= "${ color.normal.white }";
|
|
};
|
|
};
|
|
draw_bold_text_with_bright_colors= false;
|
|
window= {
|
|
opacity= theme.opacity / 100.0;
|
|
dynamic_padding= true;
|
|
};
|
|
};
|
|
};
|
|
programs.helix = {
|
|
enable = true;
|
|
package = pkgs.unstable.helix;
|
|
settings = {
|
|
theme = "gruvbox";
|
|
editor = {
|
|
whitespace.render = "all";
|
|
whitespace.characters = {
|
|
space = "·";
|
|
tab = "→";
|
|
newline = "¬";
|
|
};
|
|
};
|
|
keys.normal = {
|
|
# basic movement
|
|
n = "move_char_left";
|
|
e = "move_line_down";
|
|
i = "move_line_up";
|
|
o = "move_char_right";
|
|
# search
|
|
l = "search_next";
|
|
L = "search_prev";
|
|
# edits
|
|
s = "insert_mode";
|
|
# open newline
|
|
h = "open_below";
|
|
H = "open_above";
|
|
# selections
|
|
k = "select_regex";
|
|
K = "split_selection";
|
|
"C-k" = "split_selection_on_newline";
|
|
# goto mode
|
|
g.n = "goto_line_start";
|
|
g.o = "goto_line_end";
|
|
};
|
|
keys.select = {
|
|
# basic movement
|
|
n = "extend_char_left";
|
|
e = "extend_line_down";
|
|
i = "extend_line_up";
|
|
o = "extend_char_right";
|
|
# search
|
|
l = "search_next";
|
|
L = "search_prev";
|
|
# edits
|
|
s = "insert_mode";
|
|
# open newline
|
|
h = "open_below";
|
|
H = "open_above";
|
|
# selections
|
|
k = "select_regex";
|
|
K = "split_selection";
|
|
"C-k" = "split_selection_on_newline";
|
|
# goto mode
|
|
g.n = "goto_line_start";
|
|
g.o = "goto_line_end";
|
|
};
|
|
keys.insert = { "A-k" = "normal_mode"; };
|
|
};
|
|
};
|
|
home.sessionVariables = { EDITOR = "hx"; };
|
|
programs.firefox = {
|
|
enable = true;
|
|
package = pkgs.firefox;
|
|
extensions = with pkgs.nur.repos.rycee.firefox-addons; [
|
|
darkreader
|
|
ublock-origin
|
|
tree-style-tab
|
|
sponsorblock
|
|
duckduckgo-privacy-essentials
|
|
];
|
|
profiles = {
|
|
main = {
|
|
isDefault = true;
|
|
settings = {
|
|
"devtools.theme" = "dark";
|
|
"toolkit.legacyUserProfileCustomizations.stylesheets" = true;
|
|
"browser.tabs.inTitlebar" = 0;
|
|
};
|
|
userChrome = ''
|
|
#tabbrowser-tabs { visibility: collapse !important; }
|
|
'';
|
|
};
|
|
};
|
|
};
|
|
programs.command-not-found.enable = true;
|
|
# home.file = {
|
|
# ".config/sway/config".source = ./sway;
|
|
# };
|
|
programs.waybar = {
|
|
enable = true;
|
|
systemd.enable = true;
|
|
systemd.target = "sway-session.target";
|
|
settings = [{
|
|
layer = "top";
|
|
modules-left = [ "sway/workspaces" "sway/mode" ];
|
|
modules-center = [ "clock" ];
|
|
modules-right = [ "pulseaudio" "network" ];
|
|
network = {
|
|
interval = 5;
|
|
tooltip = false;
|
|
on-click = "terminal iwd";
|
|
format-wifi = "{icon}";
|
|
format-icons = [ "" "" "" "" "" ];
|
|
format-ethernet = "";
|
|
format-linked = "";
|
|
format-disconnected = "";
|
|
};
|
|
"sway/workspaces" = {
|
|
enable-bar-scroll = true;
|
|
format = "{icon}";
|
|
format-icons = {
|
|
"1" = "";
|
|
"2" = "";
|
|
"3" = "";
|
|
"4" = "";
|
|
"5" = "";
|
|
"6" = "";
|
|
"7" = "";
|
|
"8" = "";
|
|
"9" = "";
|
|
"10" = "";
|
|
urgent = "";
|
|
focused = "";
|
|
default = "";
|
|
};
|
|
};
|
|
clock = {
|
|
interval = 60;
|
|
format = "<b>{:%H:%M %a %d/%m}</b>";
|
|
tooltip = false;
|
|
};
|
|
pulseaudio = {
|
|
interval = 5;
|
|
tooltip = false;
|
|
scroll-step = 10;
|
|
format = "{icon}";
|
|
format-bluetooth = "";
|
|
format-bluetooth-muted = "";
|
|
format-muted = "ﱝ";
|
|
format-icons = {
|
|
headphone = [ " 奄" " 奔" " 墳" ];
|
|
handsfree = "";
|
|
headset = "";
|
|
phone = "";
|
|
portable = "";
|
|
car = "";
|
|
default = [ "奄" "奔" "墳" ];
|
|
};
|
|
on-click = "pavucontrol";
|
|
on-click-right = "pulse-sink";
|
|
};
|
|
}];
|
|
style = ''
|
|
/* {%@@ set bg_rgb = hex2rgb(color.bg) @@%} */
|
|
* {
|
|
font: ${font.size.medium}px "${font.interface}", Font Awesome, Fira Code Nerd Font;
|
|
border-radius:0;
|
|
margin:0;
|
|
padding: 0;
|
|
transition-duration:0;
|
|
}
|
|
window#waybar {
|
|
/* background-color: rgba(30,30,30,.9); */
|
|
transition-duration: .5s;
|
|
/* TODO: background opacity */
|
|
background-color: ${color.bg};
|
|
/*{%@@ if bar_pos == "top" @@%}
|
|
border-bottom:
|
|
{%@@ else @@%}
|
|
border-top:
|
|
{%@@ endif @@%}*/
|
|
border-bottom:
|
|
2px solid ${color.bg_dark};
|
|
}
|
|
window#waybar.solo {
|
|
background-color: ${color.bg};
|
|
}
|
|
#workspaces button {
|
|
color: ${color.bg_light};
|
|
min-width:50px;
|
|
background-color: transparent;
|
|
border: 3px solid transparent;
|
|
}
|
|
#workspaces button.focused {
|
|
color: ${color.txt};
|
|
/*{%@@ if bar_pos == "top" @@%}
|
|
border-top:
|
|
{%@@ else @@%}
|
|
border-bottom:
|
|
{%@@ endif @@%}*/
|
|
border-top:
|
|
3px solid ${accent.color};
|
|
/* border-bottom: 3px solid transparent; */
|
|
}
|
|
/*Window Title*/
|
|
#window {
|
|
color: ${color.txt};
|
|
margin:0 4px;
|
|
}
|
|
#mode {
|
|
color: ${accent.color};
|
|
}
|
|
#mpd,
|
|
#custom-mpd,
|
|
#tray,
|
|
#clock,
|
|
#network,
|
|
#battery,
|
|
#backlight,
|
|
#bluetooth,
|
|
#pulseaudio,
|
|
#custom-mail,
|
|
#custom-spigot,
|
|
#custom-updates,
|
|
#custom-weather,
|
|
#custom-unpushed,
|
|
#custom-transmissionD,
|
|
#custom-transmissionS,
|
|
#custom-delugeD,
|
|
#custom-delugeS,
|
|
#custom-caffeine
|
|
{
|
|
margin: 0 7px;
|
|
color: ${color.txt};
|
|
opacity:.7;
|
|
}
|
|
#battery{
|
|
margin-right:15px;
|
|
}
|
|
#clock,
|
|
#custom-weather
|
|
{
|
|
font-size: ${font.size.big}px;
|
|
}
|
|
#network,
|
|
#pulseaudio,
|
|
#custom-caffeine
|
|
{
|
|
margin-top:-1px;
|
|
font-size:16px;
|
|
}
|
|
#mpd,
|
|
#window,
|
|
#workspaces
|
|
{
|
|
font-weight:normal;
|
|
}
|
|
#custom-unpushed,
|
|
#custom-recording {
|
|
min-width:15px;
|
|
color: #ee4040;
|
|
}
|
|
#tray {
|
|
padding: 0;
|
|
margin: 0;
|
|
}
|
|
#language {
|
|
font-size: ${font.size.medium}px;
|
|
color: ${color.bg_light};
|
|
}
|
|
#custom-sleep {
|
|
color: ${accent.color};
|
|
font-size: ${font.size.big}px;
|
|
font-weight: bold;
|
|
}
|
|
'';
|
|
};
|
|
wayland.windowManager.sway = {
|
|
enable = true;
|
|
config = {
|
|
bars = [ ];
|
|
window.titlebar = false;
|
|
gaps = {
|
|
smartGaps = true;
|
|
smartBorders = "on";
|
|
inner = 5;
|
|
};
|
|
colors = let
|
|
acc = accent.color;
|
|
fg_acc = accent.fg;
|
|
fg_color = color.txt;
|
|
bg_color = color.bg_dark;
|
|
alert = "#000000";
|
|
client = border: background: text: indicator: childBorder: {
|
|
inherit border background text indicator childBorder;
|
|
};
|
|
in {
|
|
focused = client acc acc fg_acc acc acc;
|
|
focusedInactive = client bg_color bg_color fg_color bg_color bg_color;
|
|
unfocused = client bg_color bg_color fg_color bg_color bg_color;
|
|
urgent = client alert alert fg_color alert alert;
|
|
};
|
|
input."type:touchpad" = {
|
|
# Disable While Typing
|
|
dwt = "disabled";
|
|
natural_scroll = "enabled";
|
|
tap = "enabled";
|
|
};
|
|
input."*" = {
|
|
xkb_layout = "us(colemak),br";
|
|
xkb_options = "lv3:lsgt_switch,grp:shifts_toggle";
|
|
xkb_numlock = "enabled";
|
|
repeat_rate = "30";
|
|
repeat_delay = "200";
|
|
};
|
|
assigns = {
|
|
"10" = [
|
|
{ app_id = ".*[Tt]elegram.*"; }
|
|
{ class = ".*[Tt]elegram.*"; }
|
|
{ class = "Jitsi Meet"; }
|
|
{ class = "discord"; }
|
|
{ title = "Discord"; }
|
|
];
|
|
};
|
|
modes = let return_mode = lib.mapAttrs (k: v: "${v}; mode default");
|
|
in {
|
|
audio = return_mode {
|
|
"escape" = "";
|
|
"s" = "exec ${pulse_sink}/bin/pulse_sink";
|
|
};
|
|
};
|
|
floating.modifier = "Mod4";
|
|
keybindings = let
|
|
mod = "Mod4";
|
|
menu = "bmenu run";
|
|
terminal = "alacritty";
|
|
workspace_binds = {
|
|
"${mod}+1" = "workspace number 1";
|
|
"${mod}+2" = "workspace number 2";
|
|
"${mod}+3" = "workspace number 3";
|
|
"${mod}+4" = "workspace number 4";
|
|
"${mod}+5" = "workspace number 5";
|
|
"${mod}+6" = "workspace number 6";
|
|
"${mod}+7" = "workspace number 7";
|
|
"${mod}+8" = "workspace number 8";
|
|
"${mod}+9" = "workspace number 9";
|
|
"${mod}+0" = "workspace number 10";
|
|
"${mod}+Shift+1" = "move container to workspace number 1";
|
|
"${mod}+Shift+2" = "move container to workspace number 2";
|
|
"${mod}+Shift+3" = "move container to workspace number 3";
|
|
"${mod}+Shift+4" = "move container to workspace number 4";
|
|
"${mod}+Shift+5" = "move container to workspace number 5";
|
|
"${mod}+Shift+6" = "move container to workspace number 6";
|
|
"${mod}+Shift+7" = "move container to workspace number 7";
|
|
"${mod}+Shift+8" = "move container to workspace number 8";
|
|
"${mod}+Shift+9" = "move container to workspace number 9";
|
|
"${mod}+Shift+0" = "move container to workspace number 10";
|
|
};
|
|
prev_next_binds = let
|
|
join_dict_arr = builtins.foldl' (a: v: a // v) { };
|
|
maybe_window = key:
|
|
if (lib.strings.hasInfix "button" key) then
|
|
"--whole-window"
|
|
else
|
|
"";
|
|
prev_binds = map (key: {
|
|
"${maybe_window key} ${mod}+${key}" = "workspace prev_on_output";
|
|
}) [ key.tabL "bracketleft" "Prior" "button9" "button4" ];
|
|
next_binds = map (key: {
|
|
"${maybe_window key} ${mod}+${key}" = "workspace next_on_output";
|
|
}) [ key.tabR "bracketright" "Next" "button8" "button5" ];
|
|
in join_dict_arr (prev_binds ++ next_binds);
|
|
movement_binds = {
|
|
"${mod}+${key.left}" = "focus left";
|
|
"${mod}+${key.down}" = "focus down";
|
|
"${mod}+${key.up}" = "focus up";
|
|
"${mod}+${key.right}" = "focus right";
|
|
"${mod}+Left" = "focus left";
|
|
"${mod}+Down" = "focus down";
|
|
"${mod}+Up" = "focus up";
|
|
"${mod}+Right" = "focus right";
|
|
"${mod}+Shift+${key.left}" = "move left";
|
|
"${mod}+Shift+${key.down}" = "move down";
|
|
"${mod}+Shift+${key.up}" = "move up";
|
|
"${mod}+Shift+${key.right}" = "move right";
|
|
"${mod}+Shift+Left" = "move left";
|
|
"${mod}+Shift+Down" = "move down";
|
|
"${mod}+Shift+Up" = "move up";
|
|
"${mod}+Shift+Right" = "move right";
|
|
"${mod}+Control+${key.left}" = "resize shrink width";
|
|
"${mod}+Control+${key.down}" = "resize grow height";
|
|
"${mod}+Control+${key.up}" = "resize shrink height";
|
|
"${mod}+Control+${key.right}" = "resize grow width";
|
|
"${mod}+Control+Left" = "resize shrink width";
|
|
"${mod}+Control+Down" = "resize grow height";
|
|
"${mod}+Control+Up" = "resize shrink height";
|
|
"${mod}+Control+Right" = "resize grow width";
|
|
"${mod}+mod1+${key.left}" = "focus output left";
|
|
"${mod}+mod1+${key.down}" = "focus output down";
|
|
"${mod}+mod1+${key.up}" = "focus output up";
|
|
"${mod}+mod1+${key.right}" = "focus output right";
|
|
"${mod}+mod1+Left" = "focus output left";
|
|
"${mod}+mod1+Down" = "focus output down";
|
|
"${mod}+mod1+Up" = "focus output up";
|
|
"${mod}+mod1+Right" = "focus output right";
|
|
"${mod}+mod1+Shift+${key.left}" = "move workspace output left";
|
|
"${mod}+mod1+Shift+${key.down}" = "move workspace output down";
|
|
"${mod}+mod1+Shift+${key.up}" = "move workspace output up";
|
|
"${mod}+mod1+Shift+${key.right}" = "move workspace output right";
|
|
"${mod}+mod1+Shift+Left" = "move workspace output left";
|
|
"${mod}+mod1+Shift+Down" = "move workspace output down";
|
|
"${mod}+mod1+Shift+Up" = "move workspace output up";
|
|
"${mod}+mod1+Shift+Right" = "move workspace output right";
|
|
};
|
|
audio_binds = {
|
|
XF86AudioRaiseVolume =
|
|
"exec pactl set-sink-volume @DEFAULT_SINK@ +10%";
|
|
XF86AudioLowerVolume =
|
|
"exec pactl set-sink-volume @DEFAULT_SINK@ -10%";
|
|
XF86AudioMute = "exec pactl set-sink-mute @DEFAULT_SINK@ toggle";
|
|
XF86AudioMicMute =
|
|
"exec pactl set-source-mute @DEFAULT_SOURCE@ toggle";
|
|
# Control media
|
|
XF86AudioPlay = "exec playerctl play-pause";
|
|
XF86AudioPause = "exec playerctl play-pause";
|
|
XF86AudioNext = "exec playerctl next";
|
|
XF86AudioPrev = "exec playerctl previous";
|
|
};
|
|
system_binds = { "Ctrl+${mod}+z" = "exec systemctl suspend"; };
|
|
in {
|
|
"${mod}+Return" = "exec ${terminal}";
|
|
"${mod}+Ctrl+Return" = "exec thunar";
|
|
"${mod}+x" = "kill";
|
|
"${mod}+s" = "exec ${menu}";
|
|
"${mod}+m" = "mode audio";
|
|
"${mod}+b" = "splith";
|
|
"${mod}+v" = "splitv";
|
|
"${mod}+f" = "fullscreen toggle";
|
|
"${mod}+a" = "focus parent";
|
|
# "${mod}+s" = "layout stacking";
|
|
"${mod}+w" = "layout tabbed";
|
|
# "${mod}+e" = "layout toggle split";
|
|
"${mod}+Shift+space" = "floating toggle";
|
|
"${mod}+space" = "focus mode_toggle";
|
|
"${mod}+Shift+minus" = "move scratchpad";
|
|
"${mod}+minus" = "scratchpad show";
|
|
"${mod}+Shift+c" = "reload";
|
|
# "${mod}+Shift+e" =
|
|
# "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" = "mode resize";
|
|
} // workspace_binds // prev_next_binds // movement_binds // audio_binds
|
|
// system_binds
|
|
# // map (key: "$mod+${key} workspace prev_on_output") [ key.tabL "bracketleft" "Prior" "button9" "button4" ]
|
|
# // map (key: "$mod+${key} workspace next_on_output") [ key.tabL "bracketleft" "Prior" "button9" "button4" ]
|
|
;
|
|
terminal = pkgs.alacritty.executable;
|
|
};
|
|
};
|
|
services.gammastep = {
|
|
enable = true;
|
|
provider = "geoclue2";
|
|
};
|
|
services.kanshi = {
|
|
enable = true;
|
|
profiles = {
|
|
sedetary = {
|
|
outputs = [
|
|
{
|
|
criteria = "eDP-1";
|
|
status = "disable";
|
|
position = "1920,312";
|
|
}
|
|
{
|
|
criteria = "HDMI-A-1";
|
|
position = "0,0";
|
|
}
|
|
];
|
|
exec = [ "xrdb .Xresources" ];
|
|
};
|
|
nomad = {
|
|
outputs = [{
|
|
criteria = "eDP-1";
|
|
status = "enable";
|
|
position = "1920,312";
|
|
}];
|
|
exec = [ "xrdb .Xresources" ];
|
|
};
|
|
};
|
|
};
|
|
services.kdeconnect = {
|
|
enable = true;
|
|
indicator = true;
|
|
};
|
|
services.mpd = {
|
|
enable = true;
|
|
musicDirectory = "~/Música";
|
|
};
|
|
home.pointerCursor = {
|
|
name = "capitaine-cursors";
|
|
package = pkgs.capitaine-cursors;
|
|
x11.enable = true;
|
|
gtk.enable = true;
|
|
};
|
|
gtk = {
|
|
enable = true;
|
|
theme = {
|
|
name = "Orchis-Red-Dark-Compact";
|
|
package = orchis_theme_compact;
|
|
};
|
|
iconTheme = {
|
|
name = "Papirus-Dark";
|
|
package = papirus_red;
|
|
};
|
|
};
|
|
qt = {
|
|
enable = true;
|
|
platformTheme = "gtk";
|
|
style.package = pkgs.libsForQt5.qtstyleplugins;
|
|
style.name = "gtk2";
|
|
};
|
|
|
|
programs.mangohud.enable = true;
|
|
systemd.user.services = {
|
|
firefox = {
|
|
Unit = {
|
|
Description = "Firefox Web browser";
|
|
Documentation = "https://github.com/Alexays/Waybar/wiki";
|
|
PartOf = [ "graphical-session.target" ];
|
|
After = [ "graphical-session.target" ];
|
|
};
|
|
Service = {
|
|
ExecStart = "${pkgs.discord}/bin/discord";
|
|
Restart = "on-failure";
|
|
};
|
|
Install = { WantedBy = [ "sway-session.target" ]; };
|
|
};
|
|
discord = {
|
|
Unit = {
|
|
Description = "Discord Internet voice chat";
|
|
PartOf = [ "graphical-session.target" ];
|
|
After = [ "graphical-session.target" ];
|
|
};
|
|
Service = {
|
|
ExecStart = "${pkgs.discord}/bin/discord";
|
|
Restart = "on-failure";
|
|
};
|
|
Install = { WantedBy = [ "sway-session.target" ]; };
|
|
};
|
|
telegram = {
|
|
Unit = {
|
|
Description = "Telegram Internet chat";
|
|
PartOf = [ "graphical-session.target" ];
|
|
After = [ "graphical-session.target" ];
|
|
};
|
|
Service = {
|
|
ExecStart = "${pkgs.tdesktop}/bin/telegram-desktop";
|
|
Restart = "on-failure";
|
|
};
|
|
Install = { WantedBy = [ "sway-session.target" ]; };
|
|
};
|
|
};
|
|
}
|