WIP config with all the dots added

This commit is contained in:
Nathan Anderson 2023-12-14 17:23:01 -07:00
commit 917ae5f05e
54 changed files with 5353 additions and 0 deletions

46
dotfiles/foot/foot.ini Normal file
View File

@ -0,0 +1,46 @@
[main]
font=Hurmit Nerd Font Mono:size=12
notify=yes
selection-target=clipboard
[colors]
# Catpuccin Machiatto theme
foreground=cad3f5 # Text
background=24273a # Base
regular0=494d64 # Surface 1
regular1=ed8796 # red
regular2=a6da95 # green
regular3=eed49f # yellow
regular4=8aadf4 # blue
regular5=f5bde6 # pink
regular6=8bd5ca # teal
regular7=b8c0e0 # Subtext 1
bright0=5b6078 # Surface 2
bright1=ed8796 # red
bright2=a6da95 # green
bright3=eed49f # yellow
bright4=8aadf4 # blue
bright5=f5bde6 # pink
bright6=8bd5ca # teal
bright7=a5adcb # Subtext 0foreground=cdd6f4 # Text
# [colors]
# Catpuccin Mocha theme colors
# background=1e1e2e # Base
# regular0=45475a # Surface 1
# regular1=f38ba8 # red
# regular2=a6e3a1 # green
# regular3=f9e2af # yellow
# regular4=89b4fa # blue
# regular5=f5c2e7 # pink
# regular6=94e2d5 # teal
# regular7=bac2de # Subtext 1
# bright0=585b70 # Surface 2
# bright1=f38ba8 # red
# bright2=a6e3a1 # green
# bright3=f9e2af # yellow
# bright4=89b4fa # blue
# bright5=f5c2e7 # pink
# bright6=94e2d5 # teal
# bright7=a6adc8 # Subtext 0

View File

@ -0,0 +1,86 @@
# Theme
theme = "catppuccin_frappe"
[keys.normal]
# Navigation
n = "move_char_left" # Maps the 'a' key to the move_char_left command
i = "move_visual_line_down"
e = "move_visual_line_up"
o = "move_char_right"
C-i = "half_page_down"
C-e = "half_page_up"
# Modes
h = "insert_mode"
l = "open_below"
L = "open_above"
# Search
k = "search_next"
K = "search_prev"
C-s = ":w" # Maps Ctrl-s to the typable command :w which is an alias for :write (save file)
C-o = ":open ~/.config/helix/config.toml" # Maps Ctrl-o to opening of the helix config file
C-l = ":open ~/.config/helix/languages.toml"
[keys.normal.g]
P = "goto_previous_buffer"
N = "goto_next_buffer"
n = "goto_line_start"
o = "goto_line_end"
[keys.select]
n = "move_char_left"
i = "move_visual_line_down"
e = "move_visual_line_up"
o = "move_char_right"
[editor]
bufferline = "multiple"
auto-save = true
line-number = "relative"
cursorline = true
color-modes = true
text-width = 120
auto-format = true
[editor.statusline]
left = ["mode", "spinner", "version-control", "file-name"]
mode.normal = "Normal"
mode.insert = "Insert"
mode.select = "Select"
[editor.indent-guides]
render = true
[editor.lsp]
display-messages = true
[editor.cursor-shape]
insert = "bar"
normal = "block"
select = "underline"
[editor.file-picker]
hidden = false
[editor.whitespace.render]
space = "all"
tab = "all"
tabpad = "all"
newline = "none"
nbsp = "none"
[editor.whitespace.characters]
space = "·"
tab = "⇀"
tabpad = " "
#w = "move_line_up" # Maps the 'w' key move_line_up
#"C-S-esc" = "extend_line" # Maps Ctrl-Shift-Escape to extend_line
#g = { a = "code_action" } # Maps `ga` to show possible code actions
#"ret" = ["open_below", "normal_mode"] # Maps the enter key to open_below then re-enter normal mode

View File

@ -0,0 +1,22 @@
# [language-server.flutter-lsp]
# command = "dart language-server --client-id helix --client-version 1.0"
# [[language]]
# name = "typescript"
# auto-format = true
# formatter = { command = "eslint", args = ["--parser", "typescript"] }# [[language]]
# name = "typescript"
# language-servers = [ { name = "eslint", only-features = [ "format" ] }, "typescript-language-server" ]
[[language]]
name = "dart"
formatter = {command = "dart", args = ["format", "-l", "120"]}
# [[language]]
# name = "dart"
# formatter = { command = "format", args = [ "-l", "120"] }
# config = { lineLength = 120 }
# config = { dartls.settings.dart.lineLength = 120 }
# config = { dart = { lineLength = 120 } }
# config = { settings = { dart = { lineLength = 120 } } }
# config = { dartls = { settings = { dart = { lineLength = 120 } } } }

View File

@ -0,0 +1,21 @@
[General]
ConfigVersion=2
[Browser]
CustomProxyLocation=
Enabled=true
[GUI]
ApplicationTheme=dark
TrayIconAppearance=monochrome-light
[KeeShare]
Active="<?xml version=\"1.0\"?><KeeShare><Active/></KeeShare>\n"
Own="<?xml version=\"1.0\"?><KeeShare><PrivateKey>MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQC8OYI/I2otsVMdam8HqfnEYa6emzV2EzXAST+1A4IOC8ojOJdGbhKbvScu5MwgPAWDRiS0yIr6fjNHpTfHCMqY/K8+UsaubHIAjVVR5SDrBvAroTfts/oIqFcW8ab9DYMPpopaxnXh25gGrmEBb33GzuL2LJ4kXz40BEYjsOSffOM83/RstRhmXaV86nPmtbswyLwSEGsPZZliMIgMEoT/Y2qcjfwRJIRIEWNybmlgrHWAzVj5sr00KQhfTRo6dQG/yBMoElYGNvKSTmQDy7WVR+Mh+rYPKOwb2v8D7UrPDKd1n+GheEBKpvE8mDcSg/vGlXOHirOBdtuk+/xhqAqxAgMBAAECggEAETzLs/WN0+5r4q3sdM1juCY2pC7UTWJtUeqYtilClVUOEiisw0CcXVKMI+wZ0jqSSgHipa3B+zZogtSw0Cj6yNpHQD67aZ45LdoY/ggs+hPSFeTMpu0MZmjoROEk6QLTmwYmSzGRT88DqVpPPEmWFrQRWU3KaSFRzy4JsFtoVz9OYeFw37d9pG8BYeruqE7kx+uzCYWRjQXrjmofFpbxGWhkIUcvbVZ8wUVso4gT4JxAQks6nryL5M9NXefU+x/e1Rkopa5aRG/H0dPMYX/8uV2lsr/AW4+kaMPrKoAsPUhErrrJDwNL2zCmcAzNgsthUo/6yLLKlnk+THAGnruEawKBgQDDG9qpvR+OCQrV1rUiX2JmomkMPKIkAf4xLFNAdOwnPMRnq1mRCn0OJmmPmRF+I5fM/64tFzGK/KD5fxll3ybN+mpA540ho9Gvk89AbILXmp9MQMEh92H5tf4/q1EKgsFjMM0aplg2zupsimyi4LuI6tCBUhWun5X5yxUsbyBW2wKBgQD296WmxLJEQJcHfHN/RYBs9HAKCWZTn8kLgoFgCxTHHTB+i5N9yug78N3LmsYUBYwbshpVewxcv6xrfxQJ/igB+zXAgDAghhvbqw+kAiFo+OapchX+Yvm6LzHdnpOIUEDcVhP/IPyGwCNqL3DYhX0A7Qudk4/g73MStAS5aHucYwKBgG4/RweyvincIitC74dErq2gCAvKFzSRi7jtev1pFCf3xmNuB2ZVruRYAD4MGD5Wjmhf8WO5P11x8uQIVamitqKdZXzXWoAvuUSlGO8mYajCzlCgJoGy78HSfKAthdWSnQQXh04PwLj3oq9CaLCAnHd5d+gbIfVSZ8SGZKh/Ap8RAoGADF8dgjwqPfcKWcqnMoH1y/92uVn9MUU42gXAm2ISuWLB8iTlz5Bhj9ciFTf8ojYg7aY/YXbXiLHlXkEwbMu5j1fZOnpxbr+pF5j7IJkmuU52p5had7LXlbcVhWeTNmnmxeLd/5LUc5+eZoxX19DgETLOuScSNw9nsVEpR2xvfMcCgYEAgR4j9M8Nq088dA5Z3VGGxJ/l3GI+gChogZBRmyG48GuBygMVujJ5Kowqid0a3ImAnvxa8BGvEJlinmAsKmyi1UsmXMCLzOWO+jRNuIRoscFk1m2D3IfG43NnjoOhr9aJZHga8DHd1FXNPTqT74jkePHlDzpGOaHXQUN5CyGNouA=</PrivateKey><PublicKey><Signer>nate</Signer><Key>MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQC8OYI/I2otsVMdam8HqfnEYa6emzV2EzXAST+1A4IOC8ojOJdGbhKbvScu5MwgPAWDRiS0yIr6fjNHpTfHCMqY/K8+UsaubHIAjVVR5SDrBvAroTfts/oIqFcW8ab9DYMPpopaxnXh25gGrmEBb33GzuL2LJ4kXz40BEYjsOSffOM83/RstRhmXaV86nPmtbswyLwSEGsPZZliMIgMEoT/Y2qcjfwRJIRIEWNybmlgrHWAzVj5sr00KQhfTRo6dQG/yBMoElYGNvKSTmQDy7WVR+Mh+rYPKOwb2v8D7UrPDKd1n+GheEBKpvE8mDcSg/vGlXOHirOBdtuk+/xhqAqxAgMBAAECggEAETzLs/WN0+5r4q3sdM1juCY2pC7UTWJtUeqYtilClVUOEiisw0CcXVKMI+wZ0jqSSgHipa3B+zZogtSw0Cj6yNpHQD67aZ45LdoY/ggs+hPSFeTMpu0MZmjoROEk6QLTmwYmSzGRT88DqVpPPEmWFrQRWU3KaSFRzy4JsFtoVz9OYeFw37d9pG8BYeruqE7kx+uzCYWRjQXrjmofFpbxGWhkIUcvbVZ8wUVso4gT4JxAQks6nryL5M9NXefU+x/e1Rkopa5aRG/H0dPMYX/8uV2lsr/AW4+kaMPrKoAsPUhErrrJDwNL2zCmcAzNgsthUo/6yLLKlnk+THAGnruEawKBgQDDG9qpvR+OCQrV1rUiX2JmomkMPKIkAf4xLFNAdOwnPMRnq1mRCn0OJmmPmRF+I5fM/64tFzGK/KD5fxll3ybN+mpA540ho9Gvk89AbILXmp9MQMEh92H5tf4/q1EKgsFjMM0aplg2zupsimyi4LuI6tCBUhWun5X5yxUsbyBW2wKBgQD296WmxLJEQJcHfHN/RYBs9HAKCWZTn8kLgoFgCxTHHTB+i5N9yug78N3LmsYUBYwbshpVewxcv6xrfxQJ/igB+zXAgDAghhvbqw+kAiFo+OapchX+Yvm6LzHdnpOIUEDcVhP/IPyGwCNqL3DYhX0A7Qudk4/g73MStAS5aHucYwKBgG4/RweyvincIitC74dErq2gCAvKFzSRi7jtev1pFCf3xmNuB2ZVruRYAD4MGD5Wjmhf8WO5P11x8uQIVamitqKdZXzXWoAvuUSlGO8mYajCzlCgJoGy78HSfKAthdWSnQQXh04PwLj3oq9CaLCAnHd5d+gbIfVSZ8SGZKh/Ap8RAoGADF8dgjwqPfcKWcqnMoH1y/92uVn9MUU42gXAm2ISuWLB8iTlz5Bhj9ciFTf8ojYg7aY/YXbXiLHlXkEwbMu5j1fZOnpxbr+pF5j7IJkmuU52p5had7LXlbcVhWeTNmnmxeLd/5LUc5+eZoxX19DgETLOuScSNw9nsVEpR2xvfMcCgYEAgR4j9M8Nq088dA5Z3VGGxJ/l3GI+gChogZBRmyG48GuBygMVujJ5Kowqid0a3ImAnvxa8BGvEJlinmAsKmyi1UsmXMCLzOWO+jRNuIRoscFk1m2D3IfG43NnjoOhr9aJZHga8DHd1FXNPTqT74jkePHlDzpGOaHXQUN5CyGNouA=</Key></PublicKey></KeeShare>\n"
QuietSuccess=true
[PasswordGenerator]
AdditionalChars=
ExcludedChars=
Length=20
SpecialChars=false

2334
dotfiles/kitty/kitty.conf Normal file

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1 @@
7376

179
dotfiles/sway/cheatsheet Normal file
View File

@ -0,0 +1,179 @@
EndeavourOS Sway-WM CheatSheet :
- Hello! Welcome to EndeavourOS and our Sway-WM Edition! Now we'll admit this is not vanilla Sway and it wasn't desinged to be. It is loosely themed around the ArcDark
colorscheme chosen for it's stability and ease of implementation. The default bar is Waybar not Swaybar - once again chosen it's ease of use and stability as well
the options it offers.
- Sway is documentated through man pages unlike i3.To get a overview of what to expect you can read 'man 5 sway'. The pages are then spilt into topics - some the
important ones are listed at the bottom of the document. Waybar is also documented through man pages - 'man 5 waybar'.
- Our file structure is spilt for easier use - the names of the files eg; 'output' referring to the part they play.
- If your experiencing issus with your cursor - edit file '~/.profile' and comment out 'export WLR_NO_HARDWARE_CURSORS=1'
- Other than that enjoy your time here and welcome! You can join the Forum or our Telegram - we'd love to hear from you!
 = windows key
# start floating xfce4-terminal
+Return
# start fixed termite-terminal
+Shift+Return
# kill focused window
+q
# Application menu - wofi:
+d
# Activities:
+p
# Power-Menu:
+Shift+e
# Lock the system
+f1
# reload the configuration file
+Shift+c
# change window focus,like vim
+h focus left
+j focus down
+k focus up
+l focus right
# alternatively, you can use the cursor keys:
+Left focus left
+Down focus down
+Up focus up
+Right focus right
# move a focused window
+Shift+h move left
+Shift+j move down
+Shift+k move up
+Shift+l move right
# alternatively, you can use the cursor keys:
+Shift+Left move left
+Shift+Down move down
+Shift+Up move up
+Shift+Right move right
# split in horizontal orientation (changes take place on next opened window):
+b
# split in vertical orientation (changes take place on next opened window):
+v
# enter fullscreen mode for the focused container:
+f fullscreen toggle
# change container layout (stacked, tabbed, toggle split):
+s layout stacking
+w layout tabbed
+e layout toggle split
# toggle tiling / floating:
+Shift+space floating toggle
# change focus between tiling / floating windows:
+space focus mode_toggle
# focus the parent container:
+a focus parent
# resize floating window:
+right mouse button
# move floating window:
+left mouse button
# scratchpad:
+Shift+Minus move scratchpad
+minus scratchpad cycle
# resize mode:
+r
# resize,like vim:
h focus left
j focus down
k focus up
l focus right
# alternatively, you can use the cursor keys:
Left focus left
Down focus down
Up focus up
Right focus right
# Return to default mode:
Return or Escape
# Workspaces:
#
# Switch to workspace
+1 workspace number 1
+2 workspace number 2
+3 workspace number 3
+4 workspace number 4
+5 workspace number 5
+6 workspace number 6
+7 workspace number 7
+8 workspace number 8
+9 workspace number 9
+0 workspace number 10
# Move focused container to workspace:
+Shift+1 move container to workspace number 1
+Shift+2 move container to workspace number 2
+Shift+3 move container to workspace number 3
+Shift+4 move container to workspace number 4
+Shift+5 move container to workspace number 5
+Shift+6 move container to workspace number 6
+Shift+7 move container to workspace number 7
+Shift+8 move container to workspace number 8
+Shift+9 move container to workspace number 9
+Shift+0 move container to workspace number 10
# Multimedia Keys (be aware that these may not work for every keyboard):
They are enabled - you may need to hold down the function key while doing so.
# Screenshots:
PrintSrc for full screenshot
Shift+PrintSrc for screenshot options
# App Shortcuts:
+n thunar
+o firefox
# Other Things:
# Input - ~/.config/sway/config.d/input
# You can get the names of your inputs by running: swaymsg -t get_inputs
# Put your touchpad's IDENFICATOR to replace "Touchpad-ID" (keep the quotation marks)
# Read `man 5 sway-input` for more information about this section.
# Output - ~/.config/sway/config.d/output
# You can get the names of your outputs by running: swaymsg -t get_outputs
# Read `man 5 sway-output` for more information about this section.
# Wallpaper - ~/.config/sway/config.d/theme
# exec swaybg -i /path/to/wallpaper
# Waybar - ~/.config/waybar/config : ~/.config/waybar/style.css
# It is an external bar we have chosen because of the option's it allows.
# If you wish to use the default swaybar - ~/.config/sway/config.d/theme and change waybar to sway-bar
# Read `man 5 sway-bar` for more information about this section
# Autostart - ~/.config/sway/config.d/autostart_applications

12
dotfiles/sway/config Normal file
View File

@ -0,0 +1,12 @@
# Initial Setup
# exec ~/set_once.sh
# Config for sway
#
# Read `man 5 sway` for a complete reference.
# user config directory
include $HOME/.config/sway/config.d/*
# only enable this if every app you use is compatible with wayland
# xwayland disable

View File

@ -0,0 +1,52 @@
# Assign workspaces
assign [app_id="firefox"] 2
for_window [app_id="firefox"] focus
assign [class="firefox"] 2
for_window [class="firefox"] focus
assign [app_id=thunar] 3
for_window [app_id=thunar] focus
assign [class="Telegram"] 4
for_window [class="Telegram"] focus
for_window [app_id="xed"] focus
# set floating (nontiling)for apps needing it:
for_window [class="Yad" instance="yad"] floating enable
for_window [app_id="yad"] floating enable
for_window [app_id="blueman-manager"] floating enable, resize set width 40 ppt height 30 ppt
for_window [app_id="mobile"] floating enable, resize set width 200 ppt height 400 ppt
# set floating (nontiling) for special apps:
for_window [class="Xsane" instance="xsane"] floating enable
for_window [app_id="pavucontrol" ] floating enable, resize set width 40 ppt height 30 ppt
for_window [class="qt5ct" instance="qt5ct"] floating enable, resize set width 60 ppt height 50 ppt
for_window [class="Bluetooth-sendto" instance="bluetooth-sendto"] floating enable
for_window [app_id="pamac-manager"] floating enable, resize set width 80 ppt height 70 ppt
for_window [class="Lxappearance"] floating enable, resize set width 60 ppt height 50 ppt
# set floating for window roles
for_window [window_role="pop-up"] floating enable
for_window [window_role="bubble"] floating enable
for_window [window_role="task_dialog"] floating enable
for_window [window_role="Preferences"] floating enable
for_window [window_type="dialog"] floating enable
for_window [window_type="menu"] floating enable
for_window [window_role="About"] floating enable
for_window [title="File Operation Progress"] floating enable, border pixel 1, sticky enable, resize set width 40 ppt height 30 ppt
for_window [app_id="firefox" title="^Library$"] floating enable, border pixel 1, sticky enable, resize set width 40 ppt height 30 ppt
for_window [app_id="floating_shell_portrait"] floating enable, border pixel 1, sticky enable, resize set width 30 ppt height 40 ppt
for_window [title="Picture in picture"] floating enable, sticky enable
for_window [title="nmtui"] floating enable, resize set width 50 ppt height 70 ppt
for_window [app_id="xsensors"] floating enable
for_window [title="Save File"] floating enable
for_window [app_id="firefox" title="Firefox — Sharing Indicator"] kill
# Inhibit idle
for_window [app_id="firefox"] inhibit_idle fullscreen
for_window [app_id="Chromium"] inhibit_idle fullscreen

View File

@ -0,0 +1,22 @@
# Auth with polkit-gnome:
exec /usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1
# Desktop notifications
exec mako
# Network Applet
exec nm-applet --indicator
# GTK3 applications take a long time to start
exec systemctl --user import-environment DISPLAY WAYLAND_DISPLAY SWAYSOCK
exec hash dbus-update-activation-environment 2>/dev/null && \
dbus-update-activation-environment --systemd DISPLAY WAYLAND_DISPLAY SWAYSOCK
# Sway Fader
# exec python3 ~/.config/sway/scripts/swayfader.py
# gpu controller
exec corectrl
exec keepassxc
exec kdeconnect-indicator

View File

@ -0,0 +1,6 @@
# Clamshell Mode
set $laptop eDP-1
bindswitch --reload --locked lid:on output $laptop disable
bindswitch --reload --locked lid:off output $laptop enable
exec_always ~/.config/sway/scripts/clamshell.sh

View File

@ -0,0 +1,233 @@
# Logo key. Use Mod1 for Alt.
set $mod Mod4
# Home row direction keys, like vim
set $left n
set $down i
set $up e
set $right o
# audio control
set $sink_volume pactl get-sink-volume @DEFAULT_SINK@ | grep '^Volume:' | cut -d / -f 2 | tr -d ' ' | sed 's/%//'
set $source_volume pactl get-source-volume @DEFAULT_SOURCE@ | grep '^Volume:' | cut -d / -f 2 | tr -d ' ' | sed 's/%//'
set $volume_down $(pactl set-sink-volume @DEFAULT_SINK@ -5% && $sink_volume)
set $volume_up $(pactl set-sink-volume @DEFAULT_SINK@ +5% && $sink_volume)
set $volume_mute $(pactl set-sink-mute @DEFAULT_SINK@ toggle && pactl get-sink-mute @DEFAULT_SINK@ | sed -En "/no/ s/.*/$($sink_volume)/p; /yes/ s/.*/0/p")
set $mic_mute $(pactl set-source-mute @DEFAULT_SOURCE@ toggle && pactl get-source-mute @DEFAULT_SOURCE@ | sed -En "/no/ s/.*/$($source_volume)/p; /yes/ s/.*/0/p")
# Your preferred terminal emulators
set $term-float foot
# Your preferred application launcher
# Note: pass the final command to swaymsg so that the resulting window can be opened
# on the original workspace that the command was run on.
set $menu wofi -c ~/.config/wofi/config -I
set $powermenu ~/.config/waybar/scripts/power-menu.sh
### Idle configuration
exec swayidle -w\
# timeout 1130 'swaylock -C ~/.config/swaylock/config --grace 28 --effect-blur 2x10 --fade-in 0.3'\
timeout 600 'exec systemctl suspend'\
before-sleep 'swaylock -C ~/.config/swaylock/config' --grace 10 --effect-blur 2x10 --fade-in 0.3'
# This will lock the screen after 9m and 30s of inactivity, but with a 30 second
# grace period, during which any input will stop the system from suspending.
# Otherwise, the system locks the screen as it enters suspend.
## Lock Screen
bindsym $mod+f1 exec ~/.config/sway/scripts/lockman.sh
### Key bindings
#
# Basics:
#
# Start a floating terminal
bindsym $mod+Return exec $term-float
# Open the power menu
bindsym $mod+Shift+Escape exec $powermenu
# Kill focused window
bindsym $mod+q kill
# Start your launcher
bindsym $mod+d exec $menu
# Activities
#bindsym $mod+p exec ~/.config/wofi/windows.py
# Drag floating windows by holding down $mod and left mouse button.
# Resize them with right mouse button + $mod.
# Despite the name, also works for non-floating windows.
# Change normal to inverse to use left mouse button for resizing and right
# mouse button for dragging.
floating_modifier $mod normal
# Reload the configuration file
bindsym $mod+Shift+c reload
#
# Moving around:
#
# your focus around
bindsym $mod+$left focus left
bindsym $mod+$down focus down
bindsym $mod+$up focus up
bindsym $mod+$right focus right
# Or use $mod+[up|down|left|right]
# bindsym $mod+Left focus left
# bindsym $mod+Down focus down
# bindsym $mod+Up focus up
# bindsym $mod+Right focus right
# Move the focused window with the same, but add Shift
# bindsym $mod+Shift+$left move left
# bindsym $mod+Shift+$down move down
# bindsym $mod+Shift+$up move up
# bindsym $mod+Shift+$right move right
# Ditto, with arrow keys
bindsym $mod+Left move left
bindsym $mod+Down move down
bindsym $mod+Up move up
bindsym $mod+Right move right
#
# Workspaces:
#
# Switch to workspace
bindsym $mod+1 workspace number 1
bindsym $mod+2 workspace number 2
bindsym $mod+3 workspace number 3
bindsym $mod+4 workspace number 4
bindsym $mod+5 workspace number 5
bindsym $mod+6 workspace number 6
bindsym $mod+7 workspace number 7
bindsym $mod+8 workspace number 8
bindsym $mod+9 workspace number 9
bindsym $mod+0 workspace number 10
# Move focused container to workspace
bindsym $mod+Shift+1 move container to workspace number 1
bindsym $mod+Shift+2 move container to workspace number 2
bindsym $mod+Shift+3 move container to workspace number 3
bindsym $mod+Shift+4 move container to workspace number 4
bindsym $mod+Shift+5 move container to workspace number 5
bindsym $mod+Shift+6 move container to workspace number 6
bindsym $mod+Shift+7 move container to workspace number 7
bindsym $mod+Shift+8 move container to workspace number 8
bindsym $mod+Shift+9 move container to workspace number 9
bindsym $mod+Shift+0 move container to workspace number 10
# Note: workspaces can have any name you want, not just numbers.
# We just use 1-10 as the default.
#
# Layout stuff:
#
# You can "split" the current object of your focus with
# $mod+b or $mod+v, for horizontal and vertical splits
# respectively.
bindsym $mod+h splith
bindsym $mod+v splitv
# Switch the current container between different layout styles
bindsym $mod+Shift+s layout stacking
bindsym $mod+Shift+t layout tabbed
bindsym $mod+Shift+r layout toggle split
# Make the current focus fullscreen
bindsym $mod+f fullscreen
# Toggle the current focus between tiling and floating mode
bindsym $mod+Shift+space floating toggle
# Swap focus between the tiling area and the floating area
bindsym $mod+space focus mode_toggle
# Move focus to the parent container
bindsym $mod+a focus parent
bindsym $mod+g exec ~/.config/sway/scripts/scale.sh inc
bindsym $mod+m exec ~/.config/sway/scripts/scale.sh dec
#
# Scratchpad:
#
# Sway has a "scratchpad", which is a bag of holding for windows.
# You can send windows there and get them back later.
# Move the currently focused window to the scratchpad
bindsym $mod+Shift+minus move scratchpad
# Show the next scratchpad window or hide the focused scratchpad window.
# If there are multiple scratchpad windows, this command cycles through them.
bindsym $mod+minus scratchpad show
#
# Resizing containers:
#
mode "resize" {
# left will shrink the containers width
# right will grow the containers width
# up will shrink the containers height
# down will grow the containers height
bindsym $left resize shrink width 50px
bindsym $right resize grow width 50px
bindsym $up resize shrink height 50px
bindsym $down resize grow height 50px
# Ditto, with arrow keys
bindsym Left resize shrink width 50px
bindsym Right resize grow width 50px
bindsym Up resize shrink height 50px
bindsym Down resize grow height 50px
# Return to default mode
bindsym Return mode "default"
bindsym Escape mode "default"
}
bindsym $mod+r mode "resize"
# Resize floating windows with mouse scroll:
bindsym --whole-window --border $mod+button4 resize shrink height 5 px or 5 ppt
bindsym --whole-window --border $mod+button5 resize grow height 5 px or 5 ppt
bindsym --whole-window --border $mod+Shift+button4 resize shrink width 5 px or 5 ppt
bindsym --whole-window --border $mod+Shift+button5 resize grow width 5 px or 5 ppt
#
# Volume
#
# Control volume trough pamixer
# bindsym --locked XF86AudioRaiseVolume exec pamixer -ui 2
# bindsym --locked XF86AudioLowerVolume exec pamixer -ud 2
# bindsym --locked XF86AudioMute exec pamixer -t
# Control volume directly trough pactl
bindsym --locked XF86AudioRaiseVolume exec $volume_up
bindsym --locked XF86AudioLowerVolume exec $volume_down
bindsym --locked XF86AudioMute exec $volume_mute
#
# Player
#
bindsym XF86AudioPlay exec playerctl play
bindsym XF86AudioPause exec playerctl pause
bindsym XF86AudioNext exec playerctl next
bindsym XF86AudioPrev exec playerctl previous
#
# Backlight
#
bindsym XF86MonBrightnessUp exec brightnessctl -c backlight set +5%
bindsym XF86MonBrightnessDown exec brightnessctl -c backlight set 5%-
#
# App shortcuts
#
bindsym $mod+t exec thunar
bindsym $mod+w exec firefox
bindsym $mod+j exec obsidian & ~/Documents/Obsidian Vault/auto-add.sh
#
# Screenshots
#
bindsym $mod+Shift+p exec /usr/share/sway/scripts/grimshot --notify save output
bindsym $mod+p exec ~/.config/sway/scripts/screenshot.sh
#
# Keybindings List
#
#bindsym $mod+t exec xed ~/.config/sway/cheatsheet

View File

@ -0,0 +1,25 @@
### Input configuration
#
# Example configuration:
# You can get the names of your inputs by running: swaymsg -t get_inputs
# Put your touchpad's ID to replace "Touchpad-ID" (keep the quotation marks)
input type:touchpad {
dwt enabled
tap enabled
natural_scroll enabled
}
# Read `man 5 sway-input` for more information about this section.
#
#input type:keyboard xkb_layout "us"
input * {
xkb_layout "us"
# xkb_variant "colemak_dh"
# xkb_options "ctrl:nocaps"
}
exec_always {
'swaymsg input type:keyboard xkb_layout "$(localectl status | grep "X11 Layout" | sed -e "s/^.*X11 Layout://")"'
'swaymsg input type:keyboard xkb_variant "$(localectl status | grep "X11 Variant" | sed -e "s/^.*X11 Variant://")"'
}

View File

@ -0,0 +1,12 @@
### Output configuration
#
# Example configuration:
#
# output HDMI-A-1 resolution 1920x1080 position 1920,0
#
# You can get the names of your outputs by running: swaymsg -t get_outputs
#
# Wacom Tablet - Example
# input "1386:884:Wacom_Intuos_S_Pad" map_to_output HDMI-A-1
# input "1386:884:Wacom_Intuos_S_Pen" map_to_output HDMI-A-1
output * adaptive_sync on

View File

@ -0,0 +1,106 @@
# Apply gtk theming
exec_always ~/.config/sway/scripts/import-gsettings
set $rosewater #f4dbd6
set $flamingo #f0c6c6
set $pink #f5bde6
set $mauve #c6a0f6
set $red #ed8796
set $maroon #ee99a0
set $peach #f5a97f
set $green #a6da95
set $teal #8bd5ca
set $sky #91d7e3
set $sapphire #7dc4e4
set $blue #8aadf4
set $lavender #b7bdf8
set $text #cad3f5
set $subtext1 #b8c0e0
set $subtext0 #a5adcb
set $overlay2 #939ab7
set $overlay1 #8087a2
set $overlay0 #6e738d
set $surface2 #5b6078
set $surface1 #494d64
set $surface0 #363a4f
set $base #24273a
set $mantle #1e2030
set $crust #181926
# Set inner/outer gaps
gaps inner 6
gaps outer 4
# Hide titlebar on windows:
default_border pixel 2
# Default Font
font pango:Overpass Nerd Font 12
# Thin borders:
smart_borders on
# Set wallpaper:
#exec_always swaybg -i /home/nate/.config/sway/wallpapers/ign-0000.png
exec_always /home/nate/.config/sway/scripts/background.sh
# Title format for windows
for_window [shell="xdg_shell"] title_format "%title (%app_id)"
for_window [shell="x_wayland"] title_format "%class - %title"
# class border bground text indicator child_border
# client.focused #e5e9f0 #e5e9f0 #3b4252 #e5e9f0 #e5e9f0
# client.focused_inactive #5e81ac #5e81ac #eceff4 #5e81ac #3b4252
# client.unfocused #3b4252 #3b4252 #BFBFBF #3b4252 #3b4252
# client.urgent #d08770 #d08770 #eceff4 #d08770 #d08770
# client.placeholder #282A36 #282A36 #eceff4 #282A36 #282A36
# client.background #F8F8F2
client.focused $flamingo $base $text $rosewater $flamingo
client.focused_inactive $overlay0 $base $text $rosewater $overlay0
client.unfocused $overlay0 $base $text $rosewater $overlay0
client.urgent $peach $base $peach $overlay0 $peach
client.placeholder $overlay0 $base $text $overlay0 $overlay0
client.background $base
#
# Status Bar:
#
# Read `man 5 sway-bar` for more information about this section.
bar {
swaybar_command waybar
}
set $opacity 0.88
set $floating_window floating enable, resize set width 1030 height 710, opacity 1.0
for_window {
[class=".*"] opacity $opacity
[app_id=".*"] opacity $opacity
[app_id="firefox"] opacity 1.0
[app_id="corectrl"] opacity 1.0
[app_id="org.keepassxc.KeePassXC"] $floating_window, move to scratchpad, sratchpad show, opacity 1.0
[app_id="pavucontrol"] opacity 1.0
[app_id="oversteer"] opacity 1.0
[class="steam_app.*"] inhibit_idle fullscreen; floating enable; border none opacity 1.0
[class="steam"] opacity 1.0
[class="leagueclientux.exe"] opacity 1.0
[class="obsidian"] opacity 1.0
[title="(?:Open|Save|Save New|Open a) (?:File|Folder|As|Scene As)"] $floating_window
# Godot windows
[title="(?:Godot)"] opacity 1.0
[title="(?:Create New|Select Frames|project.godot|node)"] $floating_window
[title="(?:Create Folder|Node Configuration|Warning|Please Confirm)"] $floating_window, resize set height 200
# Aseprite
[title="(?:Aseprite)"] opacity 1.0
[window_role="pop-up"] $floating_window
[window_role="bubble"] $floating_window
[window_role="task_dialog"] $floating_window
[window_role="Preferences"] $floating_window
[window_type="dialog"] $floating_window
[window_type="menu"] $floating_window
[window_role="About"] $floating_window
}

457
dotfiles/sway/keyboard.conf Normal file
View File

@ -0,0 +1,457 @@
! layout
us USA
ad Andorra
af Afghanistan
ara Arabic
al Albania
am Armenia
az Azerbaijan
by Belarus
be Belgium
bd Bangladesh
in India
ba Bosnia and Herzegovina
br Brazil
bg Bulgaria
ma Morocco
mm Myanmar
ca Canada
cd Congo, Democratic Republic of the
cn China
hr Croatia
cz Czechia
dk Denmark
nl Netherlands
bt Bhutan
ee Estonia
ir Iran
iq Iraq
fo Faroe Islands
fi Finland
fr France
gh Ghana
gn Guinea
ge Georgia
de Germany
gr Greece
hu Hungary
is Iceland
il Israel
it Italy
jp Japan
kg Kyrgyzstan
kh Cambodia
kz Kazakhstan
la Laos
latam Latin American
lt Lithuania
lv Latvia
mao Maori
me Montenegro
mk Macedonia
mt Malta
mn Mongolia
no Norway
pl Poland
pt Portugal
ro Romania
ru Russia
rs Serbia
si Slovenia
sk Slovakia
es Spain
se Sweden
ch Switzerland
sy Syria
tj Tajikistan
lk Sri Lanka
th Thailand
tr Turkey
tw Taiwan
ua Ukraine
gb United Kingdom
uz Uzbekistan
vn Vietnam
kr Korea, Republic of
nec_vndr/jp Japan (PC-98xx Series)
ie Ireland
pk Pakistan
mv Maldives
za South Africa
epo Esperanto
np Nepal
ng Nigeria
et Ethiopia
sn Senegal
brai Braille
tm Turkmenistan
ml Mali
tz Tanzania
! variant
chr us: Cherokee
euro us: With EuroSign on 5
intl us: International (with dead keys)
alt-intl us: Alternative international (former us_intl)
colemak us: Colemak
dvorak us: Dvorak
dvorak-intl us: Dvorak international
dvorak-l us: Left handed Dvorak
dvorak-r us: Right handed Dvorak
dvorak-classic us: Classic Dvorak
dvp us: Programmer Dvorak
rus us: Russian phonetic
mac us: Macintosh
altgr-intl us: International (AltGr dead keys)
olpc2 us: Group toggle on multiply/divide key
srp us: Serbian
ps af: Pashto
uz af: Southern Uzbek
olpc-ps af: OLPC Pashto
olpc-fa af: OLPC Dari
olpc-uz af: OLPC Southern Uzbek
azerty ara: azerty
azerty_digits ara: azerty/digits
digits ara: digits
qwerty ara: qwerty
qwerty_digits ara: qwerty/digits
buckwalter ara: Buckwalter
phonetic am: Phonetic
phonetic-alt am: Alternative Phonetic
eastern am: Eastern
western am: Western
eastern-alt am: Alternative Eastern
cyrillic az: Cyrillic
legacy by: Legacy
latin by: Latin
oss be: Alternative
oss_latin9 be: Alternative, latin-9 only
oss_sundeadkeys be: Alternative, Sun dead keys
iso-alternate be: ISO Alternate
nodeadkeys be: Eliminate dead keys
sundeadkeys be: Sun dead keys
wang be: Wang model 724 azerty
probhat bd: Probhat
ben in: Bengali
ben_probhat in: Bengali Probhat
guj in: Gujarati
guru in: Gurmukhi
jhelum in: Gurmukhi Jhelum
kan in: Kannada
mal in: Malayalam
mal_lalitha in: Malayalam Lalitha
ori in: Oriya
tam_unicode in: Tamil Unicode
tam_keyboard_with_numerals in: Tamil Keyboard with Numerals
tam_TAB in: Tamil TAB Typewriter
tam_TSCII in: Tamil TSCII Typewriter
tam in: Tamil
tel in: Telugu
urd-phonetic in: Urdu, Phonetic
urd-phonetic3 in: Urdu, Alternative phonetic
urd-winkeys in: Urdu, Winkeys
bolnagri in: Hindi Bolnagri
hin-wx in: Hindi Wx
alternatequotes ba: Use guillemets for quotes
unicode ba: Use Bosnian digraphs
unicodeus ba: US keyboard with Bosnian digraphs
us ba: US keyboard with Bosnian letters
nodeadkeys br: Eliminate dead keys
dvorak br: Dvorak
nativo br: Nativo
nativo-us br: Nativo for USA keyboards
nativo-epo br: Nativo for Esperanto
phonetic bg: Traditional phonetic
bas_phonetic bg: New phonetic
french ma: French
tifinagh ma: Tifinagh
tifinagh-alt ma: Tifinagh Alternative
tifinagh-alt-phonetic ma: Tifinagh Alternative Phonetic
tifinagh-extended ma: Tifinagh Extended
tifinagh-phonetic ma: Tifinagh Phonetic
tifinagh-extended-phonetic ma: Tifinagh Extended Phonetic
fr-dvorak ca: French Dvorak
fr-legacy ca: French (legacy)
multix ca: Multilingual
multi ca: Multilingual, first part
multi-2gr ca: Multilingual, second part
ike ca: Inuktitut
shs ca: Secwepemctsin
kut ca: Ktunaxa
eng ca: English
tib cn: Tibetan
tib_asciinum cn: Tibetan (with ASCII numerals)
alternatequotes hr: Use guillemets for quotes
unicode hr: Use Croatian digraphs
unicodeus hr: US keyboard with Croatian digraphs
us hr: US keyboard with Croatian letters
bksl cz: With &lt;\|&gt; key
qwerty cz: qwerty
qwerty_bksl cz: qwerty, extended Backslash
ucw cz: UCW layout (accented letters only)
dvorak-ucw cz: US Dvorak with CZ UCW support
nodeadkeys dk: Eliminate dead keys
mac dk: Macintosh
mac_nodeadkeys dk: Macintosh, eliminate dead keys
dvorak dk: Dvorak
sundeadkeys nl: Sun dead keys
mac nl: Macintosh
std nl: Standard
nodeadkeys ee: Eliminate dead keys
dvorak ee: Dvorak
us ee: US keyboard with Estonian letters
pes_keypad ir: Persian, with Persian Keypad
ku ir: Kurdish, Latin Q
ku_f ir: Kurdish, (F)
ku_alt ir: Kurdish, Latin Alt-Q
ku_ara ir: Kurdish, Arabic-Latin
ku iq: Kurdish, Latin Q
ku_f iq: Kurdish, (F)
ku_alt iq: Kurdish, Latin Alt-Q
ku_ara iq: Kurdish, Arabic-Latin
nodeadkeys fo: Eliminate dead keys
nodeadkeys fi: Eliminate dead keys
smi fi: Northern Saami
classic fi: Classic
mac fi: Macintosh
nodeadkeys fr: Eliminate dead keys
sundeadkeys fr: Sun dead keys
oss fr: Alternative
oss_latin9 fr: Alternative, latin-9 only
oss_nodeadkeys fr: Alternative, eliminate dead keys
oss_sundeadkeys fr: Alternative, Sun dead keys
latin9 fr: (Legacy) Alternative
latin9_nodeadkeys fr: (Legacy) Alternative, eliminate dead keys
latin9_sundeadkeys fr: (Legacy) Alternative, Sun dead keys
bepo fr: Bepo, ergonomic, Dvorak way
bepo_latin9 fr: Bepo, ergonomic, Dvorak way, latin-9 only
dvorak fr: Dvorak
mac fr: Macintosh
bre fr: Breton
oci fr: Occitan
geo fr: Georgian AZERTY Tskapo
generic gh: Multilingual
akan gh: Akan
ewe gh: Ewe
fula gh: Fula
ga gh: Ga
hausa gh: Hausa
ergonomic ge: Ergonomic
mess ge: MESS
ru ge: Russian
os ge: Ossetian
deadacute de: Dead acute
deadgraveacute de: Dead grave acute
nodeadkeys de: Eliminate dead keys
ro de: Romanian keyboard with German letters
ro_nodeadkeys de: Romanian keyboard with German letters, eliminate dead keys
dvorak de: Dvorak
sundeadkeys de: Sun dead keys
neo de: Neo 2
mac de: Macintosh
mac_nodeadkeys de: Macintosh, eliminate dead keys
dsb de: Lower Sorbian
dsb_qwertz de: Lower Sorbian (qwertz)
qwerty de: qwerty
simple gr: Simple
extended gr: Extended
nodeadkeys gr: Eliminate dead keys
polytonic gr: Polytonic
standard hu: Standard
nodeadkeys hu: Eliminate dead keys
qwerty hu: qwerty
101_qwertz_comma_dead hu: 101/qwertz/comma/Dead keys
101_qwertz_comma_nodead hu: 101/qwertz/comma/Eliminate dead keys
101_qwertz_dot_dead hu: 101/qwertz/dot/Dead keys
101_qwertz_dot_nodead hu: 101/qwertz/dot/Eliminate dead keys
101_qwerty_comma_dead hu: 101/qwerty/comma/Dead keys
101_qwerty_comma_nodead hu: 101/qwerty/comma/Eliminate dead keys
101_qwerty_dot_dead hu: 101/qwerty/dot/Dead keys
101_qwerty_dot_nodead hu: 101/qwerty/dot/Eliminate dead keys
102_qwertz_comma_dead hu: 102/qwertz/comma/Dead keys
102_qwertz_comma_nodead hu: 102/qwertz/comma/Eliminate dead keys
102_qwertz_dot_dead hu: 102/qwertz/dot/Dead keys
102_qwertz_dot_nodead hu: 102/qwertz/dot/Eliminate dead keys
102_qwerty_comma_dead hu: 102/qwerty/comma/Dead keys
102_qwerty_comma_nodead hu: 102/qwerty/comma/Eliminate dead keys
102_qwerty_dot_dead hu: 102/qwerty/dot/Dead keys
102_qwerty_dot_nodead hu: 102/qwerty/dot/Eliminate dead keys
Sundeadkeys is: Sun dead keys
nodeadkeys is: Eliminate dead keys
mac is: Macintosh
dvorak is: Dvorak
lyx il: lyx
phonetic il: Phonetic
biblical il: Biblical Hebrew (Tiro)
nodeadkeys it: Eliminate dead keys
mac it: Macintosh
us it: US keyboard with Italian letters
geo it: Georgian
kana jp: Kana
OADG109A jp: OADG 109A
mac jp: Macintosh
phonetic kg: Phonetic
ruskaz kz: Russian with Kazakh
kazrus kz: Kazakh with Russian
basic la: Laos
stea la: Laos - STEA (proposed standard layout)
nodeadkeys latam: Eliminate dead keys
deadtilde latam: Include dead tilde
sundeadkeys latam: Sun dead keys
std lt: Standard
us lt: US keyboard with Lithuanian letters
ibm lt: IBM (LST 1205-92)
lekp lt: LEKP
lekpa lt: LEKPa
apostrophe lv: Apostrophe (') variant
tilde lv: Tilde (~) variant
fkey lv: F-letter (F) variant
cyrillic me: Cyrillic
cyrillicyz me: Cyrillic, Z and ZHE swapped
latinunicode me: Latin unicode
latinyz me: Latin qwerty
latinunicodeyz me: Latin unicode qwerty
cyrillicalternatequotes me: Cyrillic with guillemets
latinalternatequotes me: Latin with guillemets
nodeadkeys mk: Eliminate dead keys
us mt: Maltese keyboard with US layout
nodeadkeys no: Eliminate dead keys
dvorak no: Dvorak
smi no: Northern Saami
smi_nodeadkeys no: Northern Saami, eliminate dead keys
mac no: Macintosh
mac_nodeadkeys no: Macintosh, eliminate dead keys
qwertz pl: qwertz
dvorak pl: Dvorak
dvorak_quotes pl: Dvorak, Polish quotes on quotemark key
dvorak_altquotes pl: Dvorak, Polish quotes on key 1
csb pl: Kashubian
ru_phonetic_dvorak pl: Russian phonetic Dvorak
dvp pl: Programmer Dvorak
nodeadkeys pt: Eliminate dead keys
sundeadkeys pt: Sun dead keys
mac pt: Macintosh
mac_nodeadkeys pt: Macintosh, eliminate dead keys
mac_sundeadkeys pt: Macintosh, Sun dead keys
nativo pt: Nativo
nativo-us pt: Nativo for USA keyboards
nativo-epo pt: Nativo for Esperanto
cedilla ro: Cedilla
std ro: Standard
std_cedilla ro: Standard (Cedilla)
winkeys ro: Winkeys
crh_f ro: Crimean Tatar (Turkish F)
crh_alt ro: Crimean Tatar (Turkish Alt-Q)
crh_dobruca1 ro: Crimean Tatar (Dobruca-1 Q)
crh_dobruca2 ro: Crimean Tatar (Dobruca-2 Q)
phonetic ru: Phonetic
phonetic_winkeys ru: Phonetic Winkeys
typewriter ru: Typewriter
legacy ru: Legacy
typewriter-legacy ru: Typewriter, legacy
tt ru: Tatar
os_legacy ru: Ossetian, legacy
os_winkeys ru: Ossetian, Winkeys
cv ru: Chuvash
cv_latin ru: Chuvash Latin
udm ru: Udmurt
kom ru: Komi
sah ru: Yakut
xal ru: Kalmyk
dos ru: DOS
srp ru: Serbian
bak ru: Bashkirian
yz rs: Z and ZHE swapped
latin rs: Latin
latinunicode rs: Latin Unicode
latinyz rs: Latin qwerty
latinunicodeyz rs: Latin Unicode qwerty
alternatequotes rs: With guillemets
latinalternatequotes rs: Latin with guillemets
alternatequotes si: Use guillemets for quotes
us si: US keyboard with Slovenian letters
bksl sk: Extended Backslash
qwerty sk: qwerty
qwerty_bksl sk: qwerty, extended Backslash
nodeadkeys es: Eliminate dead keys
deadtilde es: Include dead tilde
sundeadkeys es: Sun dead keys
dvorak es: Dvorak
ast es: Asturian variant with bottom-dot H and bottom-dot L
cat es: Catalan variant with middle-dot L
mac es: Macintosh
nodeadkeys se: Eliminate dead keys
dvorak se: Dvorak
rus se: Russian phonetic
rus_nodeadkeys se: Russian phonetic, eliminate dead keys
smi se: Northern Saami
mac se: Macintosh
svdvorak se: Svdvorak
legacy ch: Legacy
de_nodeadkeys ch: German, eliminate dead keys
de_sundeadkeys ch: German, Sun dead keys
fr ch: French
fr_nodeadkeys ch: French, eliminate dead keys
fr_sundeadkeys ch: French, Sun dead keys
fr_mac ch: French (Macintosh)
de_mac ch: German (Macintosh)
syc sy: Syriac
syc_phonetic sy: Syriac phonetic
ku sy: Kurdish, Latin Q
ku_f sy: Kurdish, (F)
ku_alt sy: Kurdish, Latin Alt-Q
legacy tj: Legacy
tam_unicode lk: Tamil Unicode
tam_TAB lk: Tamil TAB Typewriter
tis th: TIS-820.2538
pat th: Pattachote
f tr: (F)
alt tr: Alt-Q
sundeadkeys tr: Sun dead keys
ku tr: Kurdish, Latin Q
ku_f tr: Kurdish, (F)
ku_alt tr: Kurdish, Latin Alt-Q
intl tr: International (with dead keys)
crh tr: Crimean Tatar (Turkish Q)
crh_f tr: Crimean Tatar (Turkish F)
crh_alt tr: Crimean Tatar (Turkish Alt-Q)
indigenous tw: Indigenous
saisiyat tw: Saisiyat
phonetic ua: Phonetic
typewriter ua: Typewriter
winkeys ua: Winkeys
legacy ua: Legacy
rstu ua: Standard RSTU
rstu_ru ua: Standard RSTU on Russian layout
homophonic ua: Homophonic
crh ua: Crimean Tatar (Turkish Q)
crh_f ua: Crimean Tatar (Turkish F)
crh_alt ua: Crimean Tatar (Turkish Alt-Q)
extd gb: Extended - Winkeys
intl gb: International (with dead keys)
dvorak gb: Dvorak
dvorakukp gb: Dvorak (UK Punctuation)
mac gb: Macintosh
colemak gb: Colemak
latin uz: Latin
crh uz: Crimean Tatar (Turkish Q)
crh_f uz: Crimean Tatar (Turkish F)
crh_alt uz: Crimean Tatar (Turkish Alt-Q)
kr104 kr: 101/104 key Compatible
CloGaelach ie: CloGaelach
UnicodeExpert ie: UnicodeExpert
ogam ie: Ogham
ogam_is434 ie: Ogham IS434
urd-crulp pk: CRULP
urd-nla pk: NLA
ara pk: Arabic
legacy epo: displaced semicolon and quote (obsolete)
igbo ng: Igbo
yoruba ng: Yoruba
hausa ng: Hausa
left_hand brai: Left hand
right_hand brai: Right hand
alt tm: Alt-Q
fr-oss ml: Français (France Alternative)
us-mac ml: English (USA Macintosh)
us-intl ml: English (USA International)

View File

@ -0,0 +1 @@
4639

View File

@ -0,0 +1,30 @@
#!/bin/bash
PID_FILE="background.pid"
WP_LOC="/home/nate/.config/sway/wallpapers"
PREV_WP=""
NEW_WP=$(ls $WP_LOC | sort -R | tail -n 1)
transition[0]="any"
transition[1]="wave"
transition[2]="outer"
transition[3]="wipe"
transition[4]="center"
size=${#transition[@]}
swww kill
swww init
# echo $(pgrep -f background.sh) > $PID_FILE
while true
do
while [[ $PREV_WP == $NEW_WP ]]
do
NEW_WP=$(ls $WP_LOC | sort -R | tail -n 1)
done
index=$(($RANDOM % $size))
#echo "Picked $WP_LOC/$NEW_WP with effect ${transition[$index]}"
swww img $WP_LOC/$NEW_WP --transition-type ${transition[$index]}
PREV_WP=$NEW_WP
sleep 120
done

View File

@ -0,0 +1,6 @@
#!/usr/bin/bash
if cat /proc/acpi/button/lid/*/state | grep -q open; then
swaymsg output eDP-1 enable
else
swaymsg output eDP-1 disable
fi

View File

@ -0,0 +1,15 @@
#!/bin/sh
# usage: import-gsettings
config="${XDG_CONFIG_HOME:-$HOME/.config}/gtk-3.0/settings.ini"
if [ ! -f "$config" ]; then exit 1; fi
gnome_schema="org.gnome.desktop.interface"
gtk_theme="$(grep 'gtk-theme-name' "$config" | cut -d'=' -f2)"
icon_theme="$(grep 'gtk-icon-theme-name' "$config" | cut -d'=' -f2)"
cursor_theme="$(grep 'gtk-cursor-theme-name' "$config" | cut -d'=' -f2)"
font_name="$(grep 'gtk-font-name' "$config" | cut -d'=' -f2)"
gsettings set "$gnome_schema" gtk-theme "$gtk_theme"
gsettings set "$gnome_schema" icon-theme "$icon_theme"
gsettings set "$gnome_schema" cursor-theme "$cursor_theme"
gsettings set "$gnome_schema" font-name "$font_name"

View File

@ -0,0 +1,9 @@
#!/bin/sh
# Times the screen off and puts it to background
swayidle \
timeout 300 'swaymsg "output * power off"' \
resume 'swaymsg "output * power on"' &
# Locks the screen immediately
swaylock
# Kills last background task so idle timer doesn't keep running
kill %%

32
dotfiles/sway/scripts/scale.sh Executable file
View File

@ -0,0 +1,32 @@
#!/bin/bash
SCALE_FILE="scale.txt"
DIRNAME="/tmp/$(ls /tmp | grep scale.sh | head -n 1)"
CUR_SCALE=$(swaymsg -t get_outputs | grep -oP "scale\": \K\d.\d+")
NEW_SCALE=""
if [[ $DIRNAME == "/tmp/" ]]; then
DIRNAME=$(mktemp -d "${TMPDIR:-/tmp/}$(basename $0).XXXXXXXXXXXX")
echo $CUR_SCALE > $DIRNAME/$SCALE_FILE
else
CUR_SCALE=$(cat $DIRNAME/$SCALE_FILE)
fi
if [[ $1 == "inc" ]]; then
NEW_SCALE=$(echo $CUR_SCALE + 0.25 | bc)
elif [[ $1 == "dec" ]]; then
NEW_SCALE=$(echo $CUR_SCALE - 0.25 | bc)
else
echo "No op provided, pass in 'inc' or 'dec' to change scale"
fi
if [[ $NEW_SCALE < 0.50 ]]; then
NEW_SCALE=0.50
elif [[ $NEW_SCALE > 2 ]]; then
NEW_SCALE=2.00
fi
echo $NEW_SCALE > $DIRNAME/$SCALE_FILE
notify-send -t 1000 "Scale set to $NEW_SCALE"
swaymsg "output * scale $NEW_SCALE"

View File

@ -0,0 +1,18 @@
#!/bin/bash
entries="Active Screen Output Area Window"
selected=$(printf '%s\n' $entries | wofi --style=$HOME/.config/wofi/style.widgets.css --conf=$HOME/.config/wofi/config.screenshot | awk '{print tolower($1)}')
case $selected in
active)
/usr/share/sway/scripts/grimshot --notify save active;;
screen)
/usr/share/sway/scripts/grimshot --notify save screen;;
output)
/usr/share/sway/scripts/grimshot --notify save output;;
area)
/usr/share/sway/scripts/grimshot --notify save area;;
window)
/usr/share/sway/scripts/grimshot --notify save window;;
esac

View File

@ -0,0 +1,229 @@
from i3ipc import Connection, Event
from threading import Thread
from time import sleep
FRAME_T = 0.01 # time taken between each frame of fade
# transparency values
CON_AC = 1 # active window
CON_INAC = 0.5 # inactive window
FLOAT_AC = 1 # active floating window
FLOAT_INAC = 0.5 # inactive floating window
BOT_INAC = 0.9 # bottom window
# fade durations
FADE_TIME = 0.2
ALT_FADE_TIME = 0.1
CON_OUT = FADE_TIME # window fading out
CON_IN = 0.15 # window fading in
FLOAT_OUT = ALT_FADE_TIME # floating window fading out
FLOAT_IN = ALT_FADE_TIME # floating window fading in
BOT_OUT = ALT_FADE_TIME # bottom window fading out
BOT_IN = ALT_FADE_TIME # bottom window fading in
BOT_SWITCH_IN = FADE_TIME # window becoming bottom window
BOT_SWITCH_OUT = FADE_TIME # bottom window becoming window
FLOAT_BOT_OUT = FADE_TIME # floating window fading out from bottom
FLOAT_BOT_IN = FADE_TIME # floating window fading in from bottom
class Fader:
def __init__(self):
self.floating_windows = []
self.fader_running = False
self.fade_queue = []
self.fade_data = {}
self.bottom_win = None
self.old_win = None
self.active_win = None
ipc = Connection()
ipc.on(Event.WINDOW_FOCUS, self.on_window_focus)
ipc.on(Event.WINDOW_NEW, self.on_window_new)
ipc.on(Event.WINDOW_FLOATING, self.on_window_floating)
for win in ipc.get_tree():
if win.type == "floating_con":
self.floating_windows.append(win.id)
if win.focused:
change_opacity(win, FLOAT_AC)
self.active_win = win
else:
change_opacity(win, FLOAT_INAC)
elif win.type == "con":
if win.focused:
self.active_win = win
change_opacity(win, CON_AC)
else:
change_opacity(win, CON_INAC)
ipc.main()
def add_fade(self, win, start, target, duration):
if not duration:
if win.id in self.fade_queue:
self.fade_queue.remove(win.id)
del self.fade_data[win.id]
change_opacity(win, target)
return
if win.id in self.fade_queue:
f = self.fade_data[win.id]
change = (FRAME_T / duration) * (target - f["opacity"])
f["change"] = change
f["target"] = target
return
change_opacity(win, start)
change = (FRAME_T / duration) * (target - start)
fade_data = {"opacity": start, "change": change, "target": target, "win": win}
self.fade_queue.append(win.id)
self.fade_data[win.id] = fade_data
def start_fader(self):
if not self.fader_running:
self.fader_running = True
Thread(target=self.fader).start()
def fader(self):
while self.fade_queue:
for win_id in self.fade_queue.copy():
try:
f = self.fade_data[win_id]
except KeyError:
continue
f["opacity"] += f["change"]
finished = False
if f["change"] > 0:
if f["opacity"] >= f["target"]:
finished = True
elif f["opacity"] <= f["target"]:
finished = True
if finished:
change_opacity(f["win"], f["target"])
try:
self.fade_queue.remove(win_id)
del self.fade_data[win_id]
except (KeyError, ValueError):
continue
else:
change_opacity(f["win"], f["opacity"])
sleep(FRAME_T)
self.fader_running = False
def on_window_focus(self, ipc, e):
if self.active_win.id == e.container.id:
return
if self.active_win.type == "con":
if e.container.type == "con":
self.add_fade(
e.container, CON_INAC,
CON_AC, CON_IN)
self.add_fade(
self.active_win, CON_AC,
CON_INAC, CON_OUT)
else:
self.add_fade(
e.container, FLOAT_INAC,
FLOAT_AC, FLOAT_IN)
self.add_fade(
self.active_win, CON_AC,
BOT_INAC, BOT_OUT)
self.bottom_win = self.active_win
else:
if e.container.type == "con":
self.add_fade(
self.active_win, FLOAT_AC,
FLOAT_INAC, FLOAT_BOT_OUT)
if not self.bottom_win:
self.add_fade(
e.container, CON_INAC,
CON_AC, CON_IN)
elif e.container.id != self.bottom_win.id:
self.add_fade(
self.bottom_win, BOT_INAC,
CON_INAC, BOT_SWITCH_OUT)
self.add_fade(
e.container, CON_INAC,
CON_AC, BOT_SWITCH_IN)
self.bottom_win = e.container
else:
self.add_fade(
self.bottom_win, BOT_INAC,
CON_AC, BOT_IN)
else:
self.add_fade(
self.active_win, FLOAT_AC,
FLOAT_INAC, FLOAT_OUT)
self.add_fade(
e.container, FLOAT_INAC,
FLOAT_AC, FLOAT_IN)
self.start_fader()
self.active_win = e.container
def on_window_new(self, ipc, e):
if self.active_win:
if self.active_win.type == "con":
change_opacity(self.active_win, CON_INAC)
else:
change_opacity(self.active_win, FLOAT_INAC)
if self.bottom_win:
change_opacity(self.bottom_win, CON_INAC)
elif self.active_win and self.active_win.type == "con":
self.bottom_win = self.active_win
change_opacity(self.bottom_win, CON_INAC)
change_opacity(e.container, CON_AC)
self.old_win = self.active_win
self.active_win = e.container
def on_window_floating(self, ipc, e):
c_id = e.container.id
if c_id not in self.floating_windows:
self.floating_windows.append(c_id)
if self.active_win.id != e.container.id:
change_opacity(e.container, FLOAT_INAC)
else:
if self.old_win and self.bottom_win:
if self.old_win.type == "con":
self.bottom_win = self.old_win
change_opacity(self.bottom_win, BOT_INAC)
change_opacity(e.container, FLOAT_AC)
else:
self.floating_windows.remove(c_id)
if self.active_win.id != e.container.id:
change_opacity(e.container, CON_INAC)
else:
if self.old_win and self.old_win.type == "con":
change_opacity(self.old_win, CON_INAC)
change_opacity(self.active_win, CON_AC)
self.active_win = e.container
def change_opacity(win, trans):
win.command("opacity " + str(trans))
if __name__ == "__main__":
Fader()

View File

@ -0,0 +1,15 @@
#!/bin/bash
LOC="$1"
# HTML encode string as %20
LOCATION=$(sed -e "s/ /%20/g" <<<"$LOC")
content=$(curl -sS "https://thisdavej.azurewebsites.net/api/weather/current?loc=NewYork&deg=C")
ICON=$(curl -s 'https://wttr.in/?format=1' | sed 's/[+0-9a-cA-Z°-]//g' )
# echo $ICON
TEMP=$(echo $content | jq -r '. | "\(.temperature)°\(.degType)"' | sed 's/"//g')
TOOLTIP=$(echo $content | jq -r '. | "\(.temperature)°\(.degType)\n\(.skytext)"' | sed 's/"//g')
CLASS=$(echo $content | jq .skytext)
echo '{"text": "'$TEMP'", "tooltip": "'$ICON $TOOLTIP $LOC'", "class": '$CLASS' }'

BIN
dotfiles/sway/swaylock.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 221 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 150 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 218 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 772 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 344 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 591 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 138 KiB

229
dotfiles/waybar/config Normal file
View File

@ -0,0 +1,229 @@
// Global
{
"layer": "top",
"position": "top",
"margin-top": 8,
"margin-left": 10,
"margin-right": 10,
"margin-bottom": 8,
// If height property would be not present, it'd be calculated dynamically
"height": 30,
"modules-left": [
"custom/launcher",
"sway/workspaces",
"sway/mode",
],
"modules-center": [
],
"modules-right": [
"network",
"idle_inhibitor",
"memory",
"cpu",
"pulseaudio",
"custom/spotify",
"custom/keyboard-layout",
"battery",
//"custom/PBPbattery",
"backlight#icon",
"backlight#value",
"clock",
"tray",
//"custom/weather",
"custom/power",
],
// Modules
"idle_inhibitor": {
"format": "{icon} ",
"format-icons":{
"activated": "",
"deactivated": ""
}
},
"battery": {
"states": {
// "good": 95,
"warning": 30,
"critical": 15
},
"format": "{capacity}% {icon}",
"format-charging": "{capacity}% ",
"format-plugged": "{capacity}% ",
// "format-good": "", // An empty format will hide the module
// "format-full": "",
"format-icons": ["", "", "", "", ""]
},
"custom/PBPbattery": {
"exec": "~/.config/waybar/scripts/PBPbattery.sh",
"format": "{}",
},
"clock": {
"interval": 10,
"format-alt": " {:%e %b %Y}", // Icon: calendar-alt
"format": "{:%I:%M %p}",
"tooltip-format": "{:%e %B %Y}"
},
"cpu": {
"interval": 5,
"format": " {usage}% ({load})", // Icon: microchip
"states": {
"warning": 70,
"critical": 90,
},
"on-click": "xfce4-terminal -e 'htop'",
},
"custom/keyboard-layout": {
"exec": "swaymsg -t get_inputs | grep -m1 'xkb_active_layout_name' | cut -d '\"' -f4",
// Interval set only as a fallback, as the value is updated by signal
"interval": 30,
"format": " {}", // Icon: keyboard
// Signal sent by Sway key binding (~/.config/sway/key-bindings)
"signal": 1, // SIGHUP
"tooltip": false,
"on-click": "~/.config/waybar/scripts/keyboard_layout.sh",
},
"memory": {
"interval": 5,
"format": " {}%", // Icon: memory
"on-click": "xfce4-terminal -e 'htop'",
"states": {
"warning": 70,
"critical": 90
}
},
"network": {
"interval": 5,
"format-wifi": " {essid} ({signalStrength}%)", // Icon: wifi
"format-ethernet": " {ifname}: {ipaddr}/{cidr}", // Icon: ethernet
"format-disconnected": "⚠ Disconnected",
"tooltip-format": "{ifname}: {ipaddr}",
"on-click": "xfce4-terminal -e 'nmtui'",
},
"network#vpn": {
"interface": "tun0",
"format": " {essid} ({signalStrength}%)",
"format-disconnected": "⚠ Disconnected",
"tooltip-format": "{ifname}: {ipaddr}/{cidr}",
},
"sway/mode": {
"format": "{}",
"tooltip": false
},
"sway/window": {
"format": "{}",
"max-length": 120
},
"sway/workspaces": {
"disable-scroll": true,
"disable-markup" : false,
"all-outputs": true,
"format": " {icon} ",
//"format":"{icon}",
"format-icons": {
"1": "",
"2": "",
"3": "",
"4": "",
}
},
"pulseaudio": {
"scroll-step": 1, // %, can be a float
"format": "{volume}% {icon}",
"format-bluetooth": "{volume}% {icon}  {format_source}",
"format-bluetooth-muted": " {icon}  {format_source}",
"format-muted": "婢 {format_source}",
"format-source": "{volume}% ",
"format-source-muted": "",
"format-icons": {
"headphone": "",
"hands-free": "וֹ",
"headset": "  ",
"phone": "",
"portable": "",
"car": "",
"default": [""]
},
"on-click": "pavucontrol",
"on-scroll-up": "pactl set-sink-volume @DEFAULT_SINK@ +2%",
"on-scroll-down": "pactl set-sink-volume @DEFAULT_SINK@ -2%",
},
// to use the weather module replace <your_location> with your city or town
// note: do not use spaces: new york would be newyork
"custom/weather": {
"exec": "~/.config/waybar/scripts/weather.sh <your_location>",
"return-type": "json",
"interval": 600,
},
"tray": {
"icon-size": 18,
"spacing":10,
},
"backlight#icon": {
"format": "{icon}",
"format-icons": [""],
"on-scroll-down": "brightnessctl -c backlight set 1%-",
"on-scroll-up": "brightnessctl -c backlight set +1%"
},
"backlight#value" :{
"format": "{percent}%",
"on-scroll-down": "brightnessctl -c backlight set 1%-",
"on-scroll-up": "brightnessctl -c backlight set +1%"
},
"custom/firefox": {
"format": " ",
"on-click": "exec firefox",
"tooltip": false
},
"custom/spotify": {
"format": " ",
"on-click": "xfce4-terminal -e 'ncspot'",
"tooltip": false
},
"custom/terminal": {
"format": " ",
"on-click": "exec xfce4-terminal",
"tooltip": false
},
"custom/files": {
"format": " ",
"on-click": "exec thunar",
"tooltip": false
},
"custom/launcher": {
"format":" ",
"on-click": "exec wofi -c ~/.config/wofi/config -I",
"tooltip": false,
},
"custom/power": {
"format":"⏻",
"on-click": "exec ~/.config/waybar/scripts/power-menu.sh",
"tooltip": false,
},
}

View File

@ -0,0 +1,21 @@
#!/bin/bash
#simple Shellscript for waybar/i3blocks/polybar on Pinebook pro
#05012020 geri123@gmx.net Gerhard S.
PERCENT=$(cat /sys/class/power_supply/cw2015-battery/capacity)
STATUS=$(cat /sys/class/power_supply/cw2015-battery/status)
case $((
$PERCENT >= 0 && $PERCENT <= 20 ? 1 :
$PERCENT > 20 && $PERCENT <= 40 ? 2 :
$PERCENT > 40 && $PERCENT <= 60 ? 3 :
$PERCENT > 60 && $PERCENT <= 80 ? 4 : 5)) in
#
(1) echo $STATUS:"":$PERCENT%;;
(2) echo $STATUS:"":$PERCENT%;;
(3) echo $STATUS:"":$PERCENT%;;
(4) echo $STATUS:"":$PERCENT%;;
(5) echo $STATUS:"":$PERCENT%;;
esac

View File

@ -0,0 +1,16 @@
#!/bin/bash
entries="Default Colemak"
selected=$(printf '%s\n' $entries | wofi --conf=$HOME/.config/wofi/config.power --style=$HOME/.config/wofi/style.widgets.css | awk '{print tolower($1)}')
case $selected in
default)
swaymsg input type:keyboard xkb_layout "us"
swaymsg input type:keyboard xkb_variant '""'
;;
colemak)
swaymsg input type:keyboard xkb_layout "us"
swaymsg input type:keyboard xkb_variant "colemak_dh"
;;
esac

View File

@ -0,0 +1,2 @@
#!/bin/sh
yad --title="EndeavourOS Sway-WM keybindings:" --no-buttons --geometry=400x345-15-400 --list --column=key: --column=description: --column=command: "ESC" "close this app" "" "=" "modkey" "(set mod Mod4)" "+enter" "Terminal" "(xfce4-terminal)" "+d" "Application Menu" "(wofi)" "+p" "Activities" "(wofi)" "+o" "" "Open Broswer" "+n" "" "Open Files" "+q" "close focused app" "(kill)" "[Shift]+Print-key" "screenshot" "(grim)" "+Shift+e" "power-menu" "(wofi)" "+t" "open keybinding helper" "full list"

View File

@ -0,0 +1,16 @@
#!/bin/bash
entries="Logout Suspend Reboot Shutdown"
selected=$(printf '%s\n' $entries | wofi --conf=$HOME/.config/wofi/config.power --style=$HOME/.config/wofi/style.widgets.css | awk '{print tolower($1)}')
case $selected in
logout)
swaymsg exit;;
suspend)
exec systemctl suspend;;
reboot)
exec systemctl reboot;;
shutdown)
exec systemctl poweroff -i;;
esac

View File

@ -0,0 +1,13 @@
#!/bin/bash
LOC="$1"
# HTML encode string as %20
LOCATION=$(sed -e "s/ /%20/g" <<<"$LOC")
content=$(curl -sS "https://thisdavej.azurewebsites.net/api/weather/current?loc=$LOCATION&deg=C")
ICON=$(curl -s 'https://wttr.in/?format=1' | sed 's/[+0-9a-cA-Z°-]//g' )
# echo $ICON
TEMP=$(echo $content | jq -r '. | "\(.temperature)°\(.degType)"' | sed 's/"//g')
TOOLTIP=$(echo $content | jq -r '. | "\(.temperature)°\(.degType)\n\(.skytext)"' | sed 's/"//g')
CLASS=$(echo $content | jq .skytext)
echo '{"text": "'$TEMP'", "tooltip": "'$ICON $TOOLTIP $LOC'", "class": '$CLASS' }'

219
dotfiles/waybar/style.css Normal file
View File

@ -0,0 +1,219 @@
/* =============================================================================
*
* Waybar configuration
*
* Configuration reference: https://github.com/Alexays/Waybar/wiki/Configuration
*
* =========================================================================== */
/* -----------------------------------------------------------------------------
* Keyframes
* -------------------------------------------------------------------------- */
/*
Nordic Color Scheme
*/
@define-color nord2 #434c5e;
@define-color nord3 #4c566a;
@define-color nord4 #d8dee9;
@define-color nord8 #88c0d0;
@define-color nord9 #81a1c1;
@define-color nord_cyan #8fbcbb;
@define-color nord_orange #d08770;
@define-color nord_red #bf616a;
@define-color nord_green #a3be8c;
@define-color nord_yellow #ebcb8b;
@keyframes blink-warning {
70% {
color: white;
}
to {
color: white;
background-color: @nord_orange;
}
}
@keyframes blink-critical {
70% {
color: white;
}
to {
color: white;
background-color: @nord_red;
}
}
/* -----------------------------------------------------------------------------
* Base styles
* -------------------------------------------------------------------------- */
/* Reset all styles */
* {
border: none;
border-radius: 0;
min-height: 0;
margin: 1px;
padding: 0;
}
/* The whole bar */
#waybar {
background: transparent;
color: @nord4;
background-color: @nord3;
font-family: Overpass Nerd Font;
font-size: 16px;
border-radius: 15px;
}
/* Every modules */
#battery,
#clock,
#backlight,
#cpu,
#custom-keyboard-layout,
#memory,
#mode,
#custom-weather,
#network,
#pulseaudio,
#temperature,
#tray,
#idle_inhibitor,
#custom-PBPbattery {
padding:0.5rem 0.6rem;
margin: 1px 0px;
}
/* -----------------------------------------------------------------------------
* Modules styles
* -------------------------------------------------------------------------- */
#battery {
animation-timing-function: linear;
animation-iteration-count: infinite;
animation-direction: alternate;
}
#battery.warning {
color: @nord_orange;
}
#battery.critical {
color: @nord_red;
}
#battery.warning.discharging {
animation-name: blink-warning;
animation-duration: 3s;
}
#battery.critical.discharging {
animation-name: blink-critical;
animation-duration: 2s;
}
#cpu.warning {
color: @nord_orange;
}
#cpu.critical {
color: @nord_red;
}
#memory {
animation-timing-function: linear;
animation-iteration-count: infinite;
animation-direction: alternate;
}
#memory.warning {
color: @nord_orange;
}
#memory.critical {
color: @nord_red;
animation-name: blink-critical;
animation-duration: 2s;
padding-left:5px;
padding-right:5px;
}
#mode {
background: @nord8;
border-bottom: 3px transparent;
color:white;
margin-left: 5px;
padding: 7px;
}
#network.disconnected {
color: @nord_orange;
}
#pulseaudio {
padding-top:6px;
}
#pulseaudio.muted {
color: @nord_cyan;
}
#temperature.critical {
color: @nord_red;
}
#window {
font-weight: bold;
}
#workspaces {
font-size:13px;
}
#workspaces button {
border-bottom: 3px solid transparent;
margin-bottom: 0px;
padding:0px;
}
#custom-launcher {
color: @nord9;
}
#custom-spotify {
color: @nord_green;
}
#workspaces button.focused {
border-bottom: 3px solid @nord_green;
margin-bottom: 1px;
padding-left:0;
}
#workspaces button.urgent {
border-color: @nord2;
color: @nord_yellow;
}
#custom-power {
margin-left:15px;
margin-right:15px;
font-size:15px;
color: @nord_orange;
}
#custom-launcher {
font-size:15px;
margin-left:15px;
margin-right:10px;
}
#backlight.icon {
padding-right:1px;
font-size: 13px;
}

17
dotfiles/wofi/config Normal file
View File

@ -0,0 +1,17 @@
hide_scroll=true
show=drun
width=25%
lines=10
line_wrap=word
term=xfce4-terminal
allow_markup=true
always_parse_args=true
show_all=true
print_command=true
layer=overlay
allow_images=true
insensitive=true
prompt=
image_size=15
display_generic=true
location=center

View File

@ -0,0 +1,9 @@
hide_search=true
hide_scroll=true
insensitive=true
show=dmenu
width=100
lines=4
location=top_right
x=-120
y=10

View File

@ -0,0 +1,9 @@
hide_search=true
hide_scroll=true
insensitive=true
width=1
show=dmenu
lines=5
location=centre
x=870
y=455

70
dotfiles/wofi/style.css Normal file
View File

@ -0,0 +1,70 @@
/*
Nordic Color Scheme
*/
@define-color nord2 #434c5e;
@define-color nord3 #4c566a;
@define-color nord4 #d8dee9;
@define-color nord8 #88c0d0;
@define-color nord_cyan #8fbcbb;
@define-color nord_orange #d08770;
@define-color nord_red #bf616a;
@define-color nord_green #a3be8c;
@define-color nord_yellow #ebcb8b;
@define-color nord_purple #b48ead;
*{
font-family: Overpass Nerd Font;
font-size: 16;
}
window {
border-radius: 10px;
border: 2px solid @nord_purple;
padding: 5px;
}
#input {
margin-bottom: 15px;
padding:6px;
border-radius: 20px;
border:none;
color: @nord4;
font-family: Overpass Nerd Font 18;
}
#inner-box {
border-radius: 10px;
background-color: @nord3;
}
#outer-box {
border-radius: 10px;
margin: 5px;
padding:15px;
background-color: @nord2;
}
#text {
padding: 5px;
color: @nord4;
}
#entry:nth-child(even) {
background-color: @nord2;
}
#entry:selected {
color: @nord_cyan;
background-color: @nord_cyan;
}
#text:selected {
color: @nord_2;
background-color: @nord_cyan;
}
#scroll {
margin: -2px 0px;
}

View File

@ -0,0 +1,45 @@
/*
Arc-Dark Color Scheme
*/
@define-color highlight #5294e2;
@define-color base1 #404552;
@define-color base2 #40455;
@define-color base3 #4b5160;
*{
font-family: UbuntuMono;
}
#window {
border: 1px solid @highlight;
margin: 0px 5px 0px 5px;
}
#inner-box {
background-color: @base2;
}
#outer-box {
margin: 5px;
padding:10px;
background-color: @base2;
margin-top: -22px;
}
#text {
padding: 5px;
color: white;
}
#entry:nth-child(even) {
background-color: @base1;
}
#entry {
background-color: @base3;
}
#entry:selected {
background-color: @highlight;
}

119
dotfiles/wofi/windows.py Executable file
View File

@ -0,0 +1,119 @@
#!/bin/python3
import json
import subprocess
from argparse import ArgumentParser
ENTER = "\n"
def get_windows():
command = "swaymsg -t get_tree"
process = subprocess.Popen(
command, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE
)
process = subprocess.Popen(
command, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE
)
data = json.loads(process.communicate()[0])
# Select outputs that are active
windows = []
for output in data["nodes"]:
# The scratchpad (under __i3) is not supported
if output.get("name") != "__i3" and output.get("type") == "output":
workspaces = output.get("nodes", [])
for ws in workspaces:
if ws.get("type") == "workspace":
windows.extend(extract_nodes_iterative(ws))
return windows
# Extracts all windows from a sway workspace json object
def extract_nodes_iterative(workspace):
all_nodes = []
floating_nodes = workspace.get("floating_nodes", [])
for floating_node in floating_nodes:
all_nodes.append(floating_node)
nodes = workspace.get("nodes", [])
for node in nodes:
# Leaf node
if not node.get("nodes"):
all_nodes.append(node)
# Nested node, handled iterative
else:
for inner_node in node.get("nodes"):
nodes.append(inner_node)
return all_nodes
# Returns an array of all windows
def parse_windows(windows):
return [window.get("name") for window in windows]
# Returns a newline seperated UFT-8 encoded string of all windows for wofi
def build_wofi_string(windows):
return ENTER.join(windows).encode("UTF-8")
# Executes wofi with the given input string
def show_wofi(windows):
command = 'wofi -c ~/.config/wofi/menu -s ~/.config/wofi/style.css -p "Windows: " -d -i --hide-scroll'
process = subprocess.Popen(
command, shell=True, stdin=subprocess.PIPE, stdout=subprocess.PIPE
)
return process.communicate(input=windows)[0]
# Returns the sway window id of the window that was selected by the user inside wofi
def parse_id(windows, parsed_windows, selected):
if not selected:
return None
else:
selected = (selected.decode("UTF-8"))[:-1] # Remove new line character
window_index = int(
parsed_windows.index(selected)
) # Get index of selected window in the parsed window array
return str(
windows[window_index].get("id")
) # Get sway window id based on the index
# Switches the focus to the given id
def switch_window(id):
command = "swaymsg [con_id={}] focus".format(id)
process = subprocess.Popen(command, shell=True, stdout=subprocess.PIPE)
process.communicate()[0]
# Entry point
if __name__ == "__main__":
parser = ArgumentParser(description="Wofi based window switcher")
windows = get_windows()
parsed_windows = parse_windows(windows)
wofi_string = build_wofi_string(parsed_windows)
selected = show_wofi(wofi_string)
# Otherwise no point in running
if selected:
selected_id = parse_id(windows, parsed_windows, selected)
switch_window(selected_id)

48
flake.lock Normal file
View File

@ -0,0 +1,48 @@
{
"nodes": {
"home-manager": {
"inputs": {
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1702538064,
"narHash": "sha256-At5GwJPu2tzvS9dllhBoZmqK6lkkh/sOp2YefWRlaL8=",
"owner": "nix-community",
"repo": "home-manager",
"rev": "0e2e443ff24f9d75925e91b89d1da44b863734af",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "home-manager",
"type": "github"
}
},
"nixpkgs": {
"locked": {
"lastModified": 1702312524,
"narHash": "sha256-gkZJRDBUCpTPBvQk25G0B7vfbpEYM5s5OZqghkjZsnE=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "a9bf124c46ef298113270b1f84a164865987a91c",
"type": "github"
},
"original": {
"owner": "nixos",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"root": {
"inputs": {
"home-manager": "home-manager",
"nixpkgs": "nixpkgs"
}
}
},
"root": "root",
"version": 7
}

54
flake.nix Normal file
View File

@ -0,0 +1,54 @@
{
description = "NixOS system flake.";
inputs = {
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
home-manager = {
url = "github:nix-community/home-manager";
inputs.nixpkgs.follows = "nixpkgs";
};
};
outputs = inputs@{ self, nixpkgs, home-manager, ... }:
let
system = "x86_64-linux";
userName = "nate";
hostName = "winmax";
pkgs = nixpkgs.legacyPackages.${system};
in
{
nixosConfigurations = {
nixServer = nixpkgs.lib.nixosSystem {
specialArgs = { inherit inputs; };
modules = [
./nixos/configuration.nix
inputs.home-manager.nixosModules.default
];
};
nixSway = nixpkgs.lib.nixosSystem {
# Pass args to sway_configuration
specialArgs = {
inherit userName;
inherit hostName;
};
modules = [
./nixos/sway_configuration.nix
# Setup home manager
home-manager.nixosModules.home-manager {
home-manager.useGlobalPkgs = true;
home-manager.useUserPackages = true;
home-manager.users.${userName} = import ./modules/home-manager/home.nix;
# Pass args to home.nix
home-manager.extraSpecialArgs = {
inherit inputs;
inherit userName;
inherit hostName;
};
}
];
};
};
};
}

View File

@ -0,0 +1,113 @@
{ config, pkgs, userName, hostName, ... }:
{
# Home Manager needs a bit of information about you and the paths it should
# manage.
home.username = userName;
home.homeDirectory = "/home/${userName}";
programs.home-manager.enable = true;
home.stateVersion = "23.11"; # Please read the comment before changing.
# The home.packages option allows you to install Nix packages into your
# environment.
fonts.fontconfig.enable = true;
home.packages = with pkgs; [
bat
corectrl
fd
firefox
foot
fzf
kakoune
keepassxc
mako
networkmanagerapplet
xfce.thunar
thunar
waybar
wofi
# Install fonts
(nerdfonts.override { fonts = [ "Hermit" ]; })
overpass
# # You can also create simple shell scripts directly inside your
# # configuration. For example, this adds a command 'my-hello' to your
# # environment:
# (pkgs.writeShellScriptBin "my-hello" ''
# echo "Hello, ${config.home.username}!"
# '')
];
# Home Manager is pretty good at managing dotfiles. The primary way to manage
# plain files is through 'home.file'.
home.file."${config.xdg.configHome}" = {
# # Building this configuration will create a copy of 'dotfiles/screenrc' in
# # the Nix store. Activating the configuration will then make '~/.screenrc' a
# # symlink to the Nix store copy.
# ".screenrc".source = dotfiles/screenrc;
source = ../../dotfiles;
recursive = true;
# # You can also set the file content immediately.
# ".gradle/gradle.properties".text = ''
# org.gradle.console=verbose
# org.gradle.daemon.idletimeout=3600000
# '';
};
# Home Manager can also manage your environment variables through
# 'home.sessionVariables'. If you don't want to manage your shell through Home
# Manager then you have to manually source 'hm-session-vars.sh' located at
# either
#
# ~/.nix-profile/etc/profile.d/hm-session-vars.sh
#
# or
#
# /etc/profiles/per-user/nate/etc/profile.d/hm-session-vars.sh
#
home.sessionVariables = {
EDITOR = "kak";
};
wayland.windowManager.sway = {
enable = true;
config = rec {
modifier = "Mod4";
terminal = "foot";
# startup = [
# {command = "firefox";}
# ];
};
};
# kdeconnect setup
services.kdeconnect = {
enabled = true;
indicator = true;
};
# Git setup
programs.git = {
enabled = true;
};
# Zsh setup
programs.zsh = {
enable = true;
#history = {
# Size = 10000;
#};
oh-my-zsh = {
enable = true;
plugins = [ "git" ];
theme = "half-life";
};
};
}

View File

View File

@ -0,0 +1,50 @@
{ lib, config, pkgs, ... }:
let
cfg = config.main_user;
in
{
options.main_user = {
enable = lib.mkEnableOption "enable user module";
isDesktopUser = lib.mkOption {
default = false;
example = true;
description = "Add additional user groups for desktop users";
};
userName = lib.mkOption {
default = "mainuser";
description = "username";
};
};
config = lib.mkIf cfg.enable {
users.users.${cfg.userName} = lib.mkMerge [
{
isNormalUser = true;
initialPassword = "password";
description = "main user";
shell = pkgs.zsh;
}
(lib.mkIf (!cfg.isDesktopUser) {
extraGroups = [
"wheel"
"networkmanager"
cfg.userName
];
})
(lib.mkIf cfg.isDesktopUser {
extraGroups = [
"wheel"
"networkmanager"
cfg.userName
"video"
"audio"
];
})
];
};
}

141
nixos/configuration.nix Normal file
View File

@ -0,0 +1,141 @@
# Edit this configuration file to define what should be installed on
# your system. Help is available in the configuration.nix(5) man page, on
# https://search.nixos.org/options and in the NixOS manual (`nixos-help`).
{ config, lib, pkgs, inputs, ... }:
{
imports =
[ # Include the results of the hardware scan.
./hardware-configuration.nix
./modules/user/main_user.nix
inputs.home-manager.nixosModules.default
];
# Enable flakes feature
nix.settings.experimental-features = [
"nix-command" "flakes"
];
# Use the systemd-boot EFI boot loader.
boot.loader.systemd-boot.enable = true;
boot.loader.efi.canTouchEfiVariables = true;
# networking.hostName = "nixos"; # Define your hostname.
# Pick only one of the below networking options.
# networking.wireless.enable = true; # Enables wireless support via wpa_supplicant.
# networking.networkmanager.enable = true; # Easiest to use and most distros use this by default.
# Set your time zone.
time.timeZone = "America/Denver";
# Configure network proxy if necessary
# networking.proxy.default = "http://user:password@proxy:port/";
# networking.proxy.noProxy = "127.0.0.1,localhost,internal.domain";
# Select internationalisation properties.
# i18n.defaultLocale = "en_US.UTF-8";
# console = {
# font = "Lat2-Terminus16";
# keyMap = "us";
# useXkbConfig = true; # use xkb.options in tty.
# };
# Enable the X11 windowing system.
# services.xserver.enable = true;
# Configure keymap in X11
# services.xserver.xkb.layout = "us";
# services.xserver.xkb.options = "eurosign:e,caps:escape";
# Enable CUPS to print documents.
# services.printing.enable = true;
# Enable sound.
# sound.enable = true;
# hardware.pulseaudio.enable = true;
# Enable touchpad support (enabled default in most desktopManager).
# services.xserver.libinput.enable = true;
# Define a user account. Don't forget to set a password with passwd.
# users.users.nate = {
# initialPassword = "password";
# extraGroups = [ "wheel" ];
# isNormalUser = true;
# };
# Use main user module
main_user.enable = true;
main_user.userName = "natea";
# Sets up programs in /etc/profile instead of ~/.profile
home-manager.useUserPackages = true;
# Uses system nixpkgs instead of private, adds consistency and removes NIX_PATH dependency
home-manager.useGlobalPkgs = true;
home-manager.users.nate = { pkgs, ... }: {
programs.bash.enable = true;
home.packages = with pkgs; [
firefox
kakoune
curl
];
home.stateVersion = "23.11";
};
# List packages installed in system profile. To search, run:
# $ nix search wget
# environment.systemPackages = with pkgs; [
# vim # Do not forget to add an editor to edit configuration.nix! The Nano editor is also installed by default.
# wget
# ];
# Some programs need SUID wrappers, can be configured further or are
# started in user sessions.
# programs.mtr.enable = true;
# programs.gnupg.agent = {
# enable = true;
# enableSSHSupport = true;
# };
# List services that you want to enable:
# Enable the OpenSSH daemon.
services.openssh.enable = true;
# Open ports in the firewall.
# networking.firewall.allowedTCPPorts = [ ... ];
# networking.firewall.allowedUDPPorts = [ ... ];
# Or disable the firewall altogether.
# networking.firewall.enable = false;
# Copy the NixOS configuration file and link it from the resulting system
# (/run/current-system/configuration.nix). This is useful in case you
# accidentally delete configuration.nix.
# system.copySystemConfiguration = true;
# This option defines the first version of NixOS you have installed on this particular machine,
# and is used to maintain compatibility with application data (e.g. databases) created on older NixOS versions.
#
# Most users should NEVER change this value after the initial install, for any reason,
# even if you've upgraded your system to a new NixOS release.
#
# This value does NOT affect the Nixpkgs version your packages and OS are pulled from,
# so changing it will NOT upgrade your system.
#
# This value being lower than the current NixOS release does NOT mean your system is
# out of date, out of support, or vulnerable.
#
# Do NOT change this value unless you have manually inspected all the changes it would make to your configuration,
# and migrated your data accordingly.
#
# For more information, see `man configuration.nix` or https://nixos.org/manual/nixos/stable/options#opt-system.stateVersion .
system.stateVersion = "23.11"; # Did you read the comment?
}

View File

@ -0,0 +1,39 @@
# Do not modify this file! It was generated by nixos-generate-config
# and may be overwritten by future invocations. Please make changes
# to /etc/nixos/configuration.nix instead.
{ config, lib, pkgs, modulesPath, ... }:
{
imports =
[ (modulesPath + "/installer/scan/not-detected.nix")
];
boot.initrd.availableKernelModules = [ "xhci_pci" "ahci" "usbhid" "usb_storage" "uas" "sd_mod" ];
boot.initrd.kernelModules = [ ];
boot.kernelModules = [ "kvm-amd" ];
boot.extraModulePackages = [ ];
fileSystems."/" =
{ device = "/dev/disk/by-uuid/e48c53a4-6e7d-4b12-a46e-a408956268ea";
fsType = "ext4";
};
fileSystems."/boot" =
{ device = "/dev/disk/by-uuid/82B2-9D40";
fsType = "vfat";
};
swapDevices = [ ];
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking
# (the default) this is the recommended approach. When using systemd-networkd it's
# still possible to use this option, but it's recommended to use it in conjunction
# with explicit per-interface declarations with `networking.interfaces.<interface>.useDHCP`.
networking.useDHCP = lib.mkDefault true;
# networking.interfaces.enp1s0f0u2u1u4.useDHCP = lib.mkDefault true;
# networking.interfaces.enp3s0.useDHCP = lib.mkDefault true;
# networking.interfaces.wlp4s0.useDHCP = lib.mkDefault true;
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
}

View File

@ -0,0 +1,154 @@
# Edit this configuration file to define what should be installed on
# your system. Help is available in the configuration.nix(5) man page, on
# https://search.nixos.org/options and in the NixOS manual (`nixos-help`).
{ config, lib, pkgs, userName, hostName, ... }:
{
imports =
[ # Include the results of the hardware scan.
./hardware-configuration.nix
../modules/user/main_user.nix
];
# Enable flakes feature
nix.settings.experimental-features = [
"nix-command" "flakes"
];
# Use the systemd-boot EFI boot loader.
boot.loader.systemd-boot.enable = true;
boot.loader.efi.canTouchEfiVariables = true;
networking.hostName = hostName; # Define your hostname.
# networking.wireless.enable = true; # Enables wireless support via wpa_supplicant.
networking.networkmanager.enable = true; # Easiest to use and most distros use this by default.
# Set your time zone.
time.timeZone = "America/Denver";
# Configure network proxy if necessary
# networking.proxy.default = "http://user:password@proxy:port/";
# networking.proxy.noProxy = "127.0.0.1,localhost,internal.domain";
# Select internationalisation properties.
# i18n.defaultLocale = "en_US.UTF-8";
# console = {
# font = "Lat2-Terminus16";
# keyMap = "us";
# useXkbConfig = true; # use xkb.options in tty.
# };
# Enable the X11 windowing system.
# services.xserver.enable = true;
# Configure keymap in X11
# services.xserver.xkb.layout = "us";
# services.xserver.xkb.options = "eurosign:e,caps:escape";
# Enable CUPS to print documents.
# services.printing.enable = true;
# Enable sound.
sound.enable = true;
# hardware.pulseaudio.enable = true;
# Enable touchpad support (enabled default in most desktopManager).
# services.xserver.libinput.enable = true;
# Define a user account. Don't forget to set a password with passwd.
# users.users.userName = {
# initialPassword = "password";
# extraGroups = [ "wheel" ];
# isNormalUser = true;
# };
# enable polkit for sway
security.polkit.enable = true;
hardware.opengl = {
enable = true;
driSupport = true;
};
# Setup xdg portal for screen share
xdg.portal = {
wlr.enable = true;
};
xdg.sounds.enable = true;
# Sets up programs in /etc/profile instead of ~/.profile
# home-manager.useUserPackages = true;
# Uses system nixpkgs instead of private, adds consistency and removes NIX_PATH dependency
# home-manager.useGlobalPkgs = true;
main_user = {
enable = true;
userName = userName;
isDesktopUser = true;
};
programs.zsh.enable = true;
# List packages installed in system profile. To search, run:
# $ nix search wget
environment.systemPackages = with pkgs; [
git
wget
zsh
];
# Some programs need SUID wrappers, can be configured further or are
# started in user sessions.
# programs.mtr.enable = true;
# programs.gnupg.agent = {
# enable = true;
# enableSSHSupport = true;
# };
# Services
services.openssh.enable = true;
services.dbus.enable = true;
services.pipewire = {
enable = true;
};
# Firewall
networking.firewall = {
enable = true;
allowedTCPPortRanges = [
{from = 1714; to = 1764;} # KDE Connnect
];
allowedUDPPortRanges = [
{from = 1714; to = 1764;} # KDE Connnect
];
};
# Copy the NixOS configuration file and link it from the resulting system
# (/run/current-system/configuration.nix). This is useful in case you
# accidentally delete configuration.nix.
# system.copySystemConfiguration = true;
# This option defines the first version of NixOS you have installed on this particular machine,
# and is used to maintain compatibility with application data (e.g. databases) created on older NixOS versions.
#
# Most users should NEVER change this value after the initial install, for any reason,
# even if you've upgraded your system to a new NixOS release.
#
# This value does NOT affect the Nixpkgs version your packages and OS are pulled from,
# so changing it will NOT upgrade your system.
#
# This value being lower than the current NixOS release does NOT mean your system is
# out of date, out of support, or vulnerable.
#
# Do NOT change this value unless you have manually inspected all the changes it would make to your configuration,
# and migrated your data accordingly.
#
# For more information, see `man configuration.nix` or https://nixos.org/manual/nixos/stable/options#opt-system.stateVersion .
system.stateVersion = "23.11"; # Did you read the comment?
}