diff --git a/dot_config/sway/cheatsheet b/dot_config/sway/cheatsheet new file mode 100644 index 0000000..ef2704f --- /dev/null +++ b/dot_config/sway/cheatsheet @@ -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 + + + + + diff --git a/dot_config/sway/config b/dot_config/sway/config new file mode 100644 index 0000000..bf26ee3 --- /dev/null +++ b/dot_config/sway/config @@ -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 diff --git a/dot_config/sway/config.d/application_defaults b/dot_config/sway/config.d/application_defaults new file mode 100644 index 0000000..4491928 --- /dev/null +++ b/dot_config/sway/config.d/application_defaults @@ -0,0 +1,51 @@ +# 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 + +for_window [app_id="Alacritty"] opacity 0.95 +# 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 + +# 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 [title="htop"] 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 diff --git a/dot_config/sway/config.d/autostart_applications b/dot_config/sway/config.d/autostart_applications new file mode 100644 index 0000000..50e91cb --- /dev/null +++ b/dot_config/sway/config.d/autostart_applications @@ -0,0 +1,19 @@ +# 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 + +# Welcome App +exec dex -a -s /etc/xdg/autostart/:~/.config/autostart/ + +# Sway Fader +# exec python3 ~/.config/sway/scripts/swayfader.py diff --git a/dot_config/sway/config.d/clamshell b/dot_config/sway/config.d/clamshell new file mode 100644 index 0000000..cd7cc46 --- /dev/null +++ b/dot_config/sway/config.d/clamshell @@ -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 diff --git a/dot_config/sway/config.d/default b/dot_config/sway/config.d/default new file mode 100644 index 0000000..a8f7a1f --- /dev/null +++ b/dot_config/sway/config.d/default @@ -0,0 +1,227 @@ +# Logo key. Use Mod1 for Alt. +set $mod Mod4 + +# Home row direction keys, like vim +set $left h +set $down j +set $up k +set $right l + +# 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 alacritty + +# 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 1070 'swaylock -f -C ~/.config/swaylock/config'\ + timeout 770 'swaymsg "output * power off"' \ + resume 'swaymsg "output * power on"' \ + before-sleep 'swaylock -C ~/.config/swaylock/config' +# This will lock your screen after 300 seconds of inactivity, then turn off +# your displays after another 300 seconds, and turn your screens back on when +# resumed. It will also lock your screen before your computer goes to sleep. + +## 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+e 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: +# + # Move 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+Shift+Left move left + bindsym $mod+Shift+Down move down + bindsym $mod+Shift+Up move up + bindsym $mod+Shift+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+b splith + bindsym $mod+v splitv + + # Switch the current container between different layout styles + bindsym $mod+s layout stacking + bindsym $mod+w layout tabbed + bindsym $mod+e 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 +# +# 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 10px + bindsym $right resize grow width 10px + bindsym $up resize shrink height 10px + bindsym $down resize grow height 10px + + # Ditto, with arrow keys + bindsym Left resize shrink width 10px + bindsym Right resize grow width 10px + bindsym Up resize shrink height 10px + bindsym Down resize grow height 10px + + # 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+n exec thunar + bindsym $mod+o exec firefox +# +# Screenshots +# + bindsym print exec /usr/share/sway/scripts/grimshot --notify save output + bindsym Shift+print exec ~/.config/sway/scripts/screenshot.sh +# +# Keybindings List +# + bindsym $mod+t exec xed ~/.config/sway/cheatsheet diff --git a/dot_config/sway/config.d/input b/dot_config/sway/config.d/input new file mode 100644 index 0000000..cce0c64 --- /dev/null +++ b/dot_config/sway/config.d/input @@ -0,0 +1,22 @@ +### 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" + +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://")"' +} + +output DP-2 transform 270 diff --git a/dot_config/sway/config.d/output b/dot_config/sway/config.d/output new file mode 100644 index 0000000..828880b --- /dev/null +++ b/dot_config/sway/config.d/output @@ -0,0 +1,11 @@ +### 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 diff --git a/dot_config/sway/config.d/theme b/dot_config/sway/config.d/theme new file mode 100644 index 0000000..6251660 --- /dev/null +++ b/dot_config/sway/config.d/theme @@ -0,0 +1,41 @@ +# Apply gtk theming +exec_always ~/.config/sway/scripts/import-gsettings + +# Set inner/outer gaps +gaps inner 10 +gaps outer 5 + +# Hide titlebar on windows: +default_border pixel 1 + +# Default Font +font pango:Noto Sans Regular 10 + +# Thin borders: +smart_borders on + +# Set wallpaper: +#exec swaybg -i ~/Desktop/Wallpapers/plants-001.jpg + +output HDMI-A-1 background ~/Desktop/Wallpapers/plants-001.jpg fill +output DP-2 background ~/Desktop/Wallpapers/plants-001.jpg fill + +# 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 #6272A4 #6272A4 #F8F8F2 #6272A4 #6272A4 +client.focused_inactive #44475A #44475A #F8F8F2 #44475A #44475A +client.unfocused #282A36 #282A36 #BFBFBF #282A36 #282A36 +client.urgent #44475A #FF5555 #F8F8F2 #FF5555 #FF5555 +client.placeholder #282A36 #282A36 #F8F8F2 #282A36 #282A36 +client.background #F8F8F2 + +# +# Status Bar: +# +# Read `man 5 sway-bar` for more information about this section. +bar { + swaybar_command waybar +} diff --git a/dot_config/sway/keyboard.conf b/dot_config/sway/keyboard.conf new file mode 100644 index 0000000..0c034fd --- /dev/null +++ b/dot_config/sway/keyboard.conf @@ -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 <\|> 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) diff --git a/dot_config/sway/scripts/executable_clamshell.sh b/dot_config/sway/scripts/executable_clamshell.sh new file mode 100644 index 0000000..e25072a --- /dev/null +++ b/dot_config/sway/scripts/executable_clamshell.sh @@ -0,0 +1,8 @@ +#!/usr/bin/bash +if [-d "/proc/acpi" ]; then + if cat /proc/acpi/button/lid/*/state | grep -q open; then + swaymsg output eDP-1 enable + else + swaymsg output eDP-1 disable + fi +fi diff --git a/dot_config/sway/scripts/executable_import-gsettings b/dot_config/sway/scripts/executable_import-gsettings new file mode 100644 index 0000000..e1257df --- /dev/null +++ b/dot_config/sway/scripts/executable_import-gsettings @@ -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" diff --git a/dot_config/sway/scripts/executable_lockman.sh b/dot_config/sway/scripts/executable_lockman.sh new file mode 100644 index 0000000..69edccf --- /dev/null +++ b/dot_config/sway/scripts/executable_lockman.sh @@ -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 %% diff --git a/dot_config/sway/scripts/executable_screenshot.sh b/dot_config/sway/scripts/executable_screenshot.sh new file mode 100644 index 0000000..d946a21 --- /dev/null +++ b/dot_config/sway/scripts/executable_screenshot.sh @@ -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 diff --git a/dot_config/sway/scripts/executable_swayfader.py b/dot_config/sway/scripts/executable_swayfader.py new file mode 100644 index 0000000..b2920b6 --- /dev/null +++ b/dot_config/sway/scripts/executable_swayfader.py @@ -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() + diff --git a/dot_config/sway/scripts/executable_weather.sh b/dot_config/sway/scripts/executable_weather.sh new file mode 100644 index 0000000..ce0f458 --- /dev/null +++ b/dot_config/sway/scripts/executable_weather.sh @@ -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°=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' }' + + + diff --git a/dot_config/sway/sway.png b/dot_config/sway/sway.png new file mode 100644 index 0000000..7a6bb5e Binary files /dev/null and b/dot_config/sway/sway.png differ diff --git a/dot_config/sway/swaylock.png b/dot_config/sway/swaylock.png new file mode 100644 index 0000000..ac82334 Binary files /dev/null and b/dot_config/sway/swaylock.png differ