From 07eb59bf2abb72889a38c825bbedff1524c4db3d Mon Sep 17 00:00:00 2001 From: Rostyslav Hnatyshyn Date: Mon, 8 Jun 2026 15:09:08 -0700 Subject: [PATCH] add waybar eww and sway --- Xresources | 2 +- alacritty/alacritty.toml | 2 - eww/eww.scss | 377 +++++++++++++++++++++++++++++++++ eww/eww.yuck | 61 ++++++ i3/config | 2 +- mako/config | 7 + mako/launch.sh | 4 + nvim/lazy-lock.json | 47 ++-- nvim/lua/plugins/lspconfig.lua | 9 + rofi/config.rasi | 2 +- rofi/rofi-themes-collection | 1 + scripts/set_wallpaper.sh | 9 + sway/config | 202 ++++++++++++++++++ sway/import_gsettings.sh | 15 ++ sway/set_wallpaper.sh | 8 + sway/sway-contrib | 1 + waybar/config | 90 ++++++++ waybar/launch.sh | 11 + waybar/style.css | 57 +++++ xinitrc | 1 + zshrc | 6 +- 21 files changed, 881 insertions(+), 33 deletions(-) create mode 100644 eww/eww.scss create mode 100644 eww/eww.yuck create mode 100644 mako/config create mode 100755 mako/launch.sh create mode 160000 rofi/rofi-themes-collection create mode 100755 scripts/set_wallpaper.sh create mode 100644 sway/config create mode 100755 sway/import_gsettings.sh create mode 100755 sway/set_wallpaper.sh create mode 160000 sway/sway-contrib create mode 100644 waybar/config create mode 100755 waybar/launch.sh create mode 100644 waybar/style.css diff --git a/Xresources b/Xresources index 2e4652b..4e69796 100644 --- a/Xresources +++ b/Xresources @@ -6,5 +6,5 @@ Xft.hintstyle: hintfull Xft.hinting: 1 Xft.antialias: 1 Xft.rgba: rgb - +URxvt.font: xft:Hack Nerd Font:size=16 rofi.color-enabled: true diff --git a/alacritty/alacritty.toml b/alacritty/alacritty.toml index 2ac29aa..cfccdb6 100644 --- a/alacritty/alacritty.toml +++ b/alacritty/alacritty.toml @@ -28,5 +28,3 @@ live_config_reload = true import = [ "~/.config/alacritty/my_theme.toml" ] - -[terminal] diff --git a/eww/eww.scss b/eww/eww.scss new file mode 100644 index 0000000..a8bbc69 --- /dev/null +++ b/eww/eww.scss @@ -0,0 +1,377 @@ +/** Global *******************************************/ +*{ + all: unset; + font-family: feather; + font-family: Iosevka; +} + +/** Background ************************************** +.bg { + background-image: url("images/bg.png"); + background-color: #474D59; + opacity: 1; +} */ + +/** Generic window ***********************************/ +.genwin { + background-color: #15161E; + border-radius: 16px; +} + +/** Profile ******************************************/ +.face { + background-size: 200px; + min-height: 200px; + min-width: 200px; + margin: 65px 0px 0px 0px; + border-radius: 100%; +} + +.fullname { + color: #ef596f; + font-size : 30px; + font-weight : bold; +} + +.username { + color: #6BB2C0; + font-size : 22px; + font-weight : bold; + margin : -15px 0px 0px 0px; +} + +/** System ********************************************/ +.iconcpu, .iconmem, .iconbright, .iconbat { + font-size : 32px; + font-weight : normal; +} +.iconcpu { + color: #f7768e; +} +.iconmem { + color: #9ece6a; +} +.iconbright { + color: #e0af68; +} +.iconbat { + color: #7aa2f7; +} + +.cpu_bar, .mem_bar, .bright_bar, .bat_bar, scale trough { + all: unset; + background-color: #282C34; + border-radius: 16px; + min-height: 28px; + min-width: 240px; +} + +.cpu_bar, .mem_bar, .bright_bar, .bat_bar, scale trough highlight { + all: unset; + border-radius: 16px; +} + +.cpu_bar scale trough highlight { + background-color: #f7768e; +} +.mem_bar scale trough highlight { + background-color: #9ece6a; +} +.bright_bar scale trough highlight { + background-color: #e0af68; +} +.bat_bar scale trough highlight { + background-color: #7aa2f7; +} + +/** Clock ********************************************/ +.time_hour, .time_min { + color: #7dcfff; + font-size : 70px; + font-weight : bold; +} +.time_hour { + margin : 15px 0px 0px 20px; +} +.time_min { + margin : 0px 0px 10px 0px; +} + +.time_mer { + color: #9ece6a; + font-size : 40px; + font-weight : bold; + margin : 20px 0px 0px 0px; +} + +.time_day { + color: #e0af68; + font-size : 30px; + font-weight : normal; + margin : 0px 0px 20px -20px; +} + +/** Uptime ********************************************/ +.icontimer { + color: #bb9af7; + font-size : 90px; + font-weight : normal; +} + +.uphour { + color: #c0caf5; + font-size : 42px; + font-weight : bold; +} + +.upmin { + color: #c0caf5; + font-size : 32px; + font-weight : bold; +} + +/** Music ***************************************/ +.album_art { + background-size: 240px; + min-height: 240px; + min-width: 240px; + margin: 20px; + border-radius: 14px; +} + +.song { + color: #6BB2C0; + font-size : 24px; + font-weight : bold; + margin : 40px 0px 0px 0px; +} + +.artist { + color: #e0af68; + font-size : 16px; + font-weight : normal; + margin : 0px 0px 15px 0px; +} + +.btn_prev, .btn_play, .btn_next { + font-family: Iosevka Nerd Font; +} +.btn_prev { + color: #e0af68; + font-size : 32px; + font-weight : normal; +} +.btn_play { + color: #9ece6a; + font-size : 48px; + font-weight : bold; +} +.btn_next { + color: #e0af68; + font-size : 32px; + font-weight : normal; +} + +.music_bar scale trough highlight { + all: unset; + background-color: #bb9af7; + border-radius: 8px; +} +.music_bar scale trough { + all: unset; + background-color: #282C34; + border-radius: 8px; + min-height: 20px; + min-width: 310px; + margin : 10px 0px 0px 0px; +} + +/** Weather ***************************************/ +.iconweather { + font-family: Iosevka Nerd Font; + font-size : 120px; + font-weight : normal; + margin : 15px 0px 0px 30px; +} + +.label_temp { + color : #7dcfff; + font-size : 80px; + font-weight : bold; + margin : -15px 30px 0px 0px; +} + +.label_stat { + color : #f7768e; + font-size : 38px; + font-weight : bold; +} + +.label_quote { + color : #a9b1d6; + font-size : 18px; + font-weight : normal; +} + +/** Applications ***************************************/ +.appbox { + margin : 15px 0px 0px 25px; +} + +.app_fox, .app_telegram, .app_discord, .app_terminal, +.app_files, .app_geany, .app_code, .app_gimp, .app_vbox { + background-repeat: no-repeat; + background-size: 64px; + min-height: 64px; + min-width: 64px; + margin: 8px 8px 0px 8px; +} + +.app_fox {} +.app_telegram {} +.app_discord {} +.app_terminal {} +.app_files {} +.app_geany {} +.app_code {} +.app_gimp {} +.app_vbox {} + +/** Links ***************************************/ +.iconweb, .iconmail { + color: #FFFFFF; + font-family: Iosevka Nerd Font; + font-size : 70px; + font-weight : normal; +} +.iconmail { + color: #DF584E; +} + +.github { + background-color: #24292E; + border-radius: 16px; +} +.reddit { + background-color: #E46231; + border-radius: 16px; +} +.twitter { + background-color: #61AAD6; + border-radius: 16px; +} +.youtube { + background-color: #DF584E; + border-radius: 16px; +} +.mail { + background-color: #FFFFFF; + border-radius: 16px; +} + +.mailbox { + background-color: #E5E5E5; + border-radius: 10px; + margin: 48px 0px 48px 0px; +} +.label_mails { + color: #404040; + font-size : 32px; + font-weight : bold; + margin: 0px 12px 0px 12px; +} + +/** Power buttons ***************************************/ +.btn_logout, .btn_sleep, .btn_reboot, .btn_poweroff { + font-size : 48px; + font-weight : bold; +} + +.btn_logout { + color: #f7768e; +} +.btn_sleep { + color: #9ece6a; +} +.btn_reboot { + color: #e0af68; +} +.btn_poweroff { + color: #7aa2f7; +} + +/** Home folders ***************************************/ +.hddbox { + background-color: #282C34; + border-radius: 10px; + margin : 15px; +} +.hddicon { + color: #7dcfff; + font-family: Iosevka Nerd Font; + font-size : 70px; + font-weight : normal; + margin : 25px 20px 25px 40px; +} +.hdd_label { + color: #c0caf5; + font-size : 48px; + font-weight : bold; + margin : 0px 0px 0px 15px; +} +.fs_sep { + color: #15161E; + font-size : 36px; + font-weight : bold; +} + +.iconfolder1, .iconfolder2, .iconfolder3, .iconfolder4, .iconfolder5, .iconfolder6 { + font-family: Iosevka Nerd Font; + font-size : 32px; + font-weight : normal; + margin : 0px 0px 0px 75px; +} +.iconfolder1 { + color: #f7768e; +} +.iconfolder2 { + color: #9ece6a; +} +.iconfolder3 { + color: #e0af68; +} +.iconfolder4 { + color: #7dcfff; +} +.iconfolder5 { + color: #bb9af7; +} +.iconfolder6 { + color: #7aa2f7; +} + +.label_folder1, .label_folder2, .label_folder3, .label_folder4, .label_folder5, .label_folder6 { + font-size : 22px; + font-weight : normal; + margin : 0px 0px 0px 30px; +} +.label_folder1 { + color: #f7768e; +} +.label_folder2 { + color: #9ece6a; +} +.label_folder3 { + color: #e0af68; +} +.label_folder4 { + color: #7dcfff; +} +.label_folder5 { + color: #bb9af7; +} +.label_folder6 { + color: #7aa2f7; +} + +/** EOF *************************************************/} diff --git a/eww/eww.yuck b/eww/eww.yuck new file mode 100644 index 0000000..40e04ac --- /dev/null +++ b/eww/eww.yuck @@ -0,0 +1,61 @@ + +(defpoll calendar_day :interval "20h" "date '+%d'") +(defpoll calendar_year :interval "20h" "date '+%Y'") +(defpoll HOUR :interval "5s" `date +\"%I\"`) +(defpoll MIN :interval "5s" `date +\"%M\"`) +(defpoll MER :interval "5s" `date +\"%p\"`) +(defpoll DAY :interval "5s" `date +\"%A\"`) + + + +(defwindow example + :monitor 0 + :geometry (geometry :width "100%" + :anchor "top left") + (cal) +) + +(defwidget cal [] + (box :class "cal" :orientation "v" + (box :class "cal-in" + (calendar :class "cal" + :day calendar_day + :year calendar_year)))) + +(defwindow quote + :wm-ignore true + :monitor 0 + :windowtype "dock" + :geometry (geometry :x "200px" + :y "65px" + :width "170px" + :height "200px" + :anchor "top left") +(clock)) + + +;(defwindow searchapps +; :wm-ignore: true +; :monitor 0 +; :windowtype "normal" +; :geometry (geometry :x "40%" +; :y "30%" +; :width "20%" +; :height "50%" +; :anchor "top left") +;(searchapps)) + +(defpoll quote_text :interval "3600s" `curl ifconfig.me`) + +(defwidget clock [] + (box :class "genwin" :orientation "h" :spacing 50 :space-evenly false :vexpand "false" :hexpand "false" + (box :orientation "h" :spacing 0 + (label :class "time_hour" :valign "start" :wrap "true" :limit-width 25 :text HOUR) + (label :class "time_min" :valign "end" :wrap "true" :limit-width 25 :text MIN)) + (box :orientation "v" :spacing 0 + (label :class "time_mer" :valign "start" :halign "end" :wrap "true" :limit-width 25 :text MER) + (label :class "time_day" :valign "end" :halign "end" :wrap "true" :limit-width 25 :text DAY)))) + +(defwidget quote[] + (box :class "quote" :orientation "v" :space-evenly false :halign "center" :valign "center" + (label :class "quote-text" :text "${quote_text}" :wrap true))) diff --git a/i3/config b/i3/config index 04285f6..4106ea2 100644 --- a/i3/config +++ b/i3/config @@ -27,7 +27,7 @@ bindsym XF86AudioMicMute exec --no-startup-id pactl set-source-mute @DEFAULT_SOU floating_modifier $mod # start a terminal -bindsym $mod+Return exec alacritty +bindsym $mod+Return exec prime-run alacritty # kill focused window bindsym $mod+Shift+q kill diff --git a/mako/config b/mako/config new file mode 100644 index 0000000..22f10db --- /dev/null +++ b/mako/config @@ -0,0 +1,7 @@ +background-color=#4A4A4A +border-size=0 +font=Mononoki Nerd Font 14 +default-timeout=10000 +max-visible=3 +layer=overlay +border-radius=5 diff --git a/mako/launch.sh b/mako/launch.sh new file mode 100755 index 0000000..369295d --- /dev/null +++ b/mako/launch.sh @@ -0,0 +1,4 @@ +#!/bin/bash + +trap "killall -q mako" EXIT +mako diff --git a/nvim/lazy-lock.json b/nvim/lazy-lock.json index 6804239..cb194cf 100644 --- a/nvim/lazy-lock.json +++ b/nvim/lazy-lock.json @@ -1,9 +1,9 @@ { "Comment.nvim": { "branch": "master", "commit": "e30b7f2008e52442154b66f7c519bfd2f1e32acb" }, - "LuaSnip": { "branch": "master", "commit": "3732756842a2f7e0e76a7b0487e9692072857277" }, + "LuaSnip": { "branch": "master", "commit": "0abc8f390b278c3b4aabc4c004ac8a088b65cf24" }, "bufferline.nvim": { "branch": "main", "commit": "655133c3b4c3e5e05ec549b9f8cc2894ac6f51b3" }, "cheatsheet.nvim": { "branch": "master", "commit": "9716f9aaa94dd1fd6ce59b5aae0e5f25e2a463ef" }, - "clangd_extensions.nvim": { "branch": "main", "commit": "b67cc417d9020fb4b83d46662351b4d16894905e" }, + "clangd_extensions.nvim": { "branch": "main", "commit": "78c2ecd659d54972be17aa6ba2deac3c53223b80" }, "cmp-buffer": { "branch": "main", "commit": "b74fab3656eea9de20a9b8116afa3cfc4ec09657" }, "cmp-calc": { "branch": "main", "commit": "5947b412da67306c5b68698a02a846760059be2e" }, "cmp-cmdline": { "branch": "main", "commit": "d126061b624e0af6c3a556428712dd4d4194ec6d" }, @@ -12,28 +12,29 @@ "cmp-path": { "branch": "main", "commit": "c642487086dbd9a93160e1679a1327be111cbc25" }, "cmp-spell": { "branch": "master", "commit": "694a4e50809d6d645c1ea29015dad0c293f019d6" }, "dressing.nvim": { "branch": "master", "commit": "2d7c2db2507fa3c4956142ee607431ddb2828639" }, - "fidget.nvim": { "branch": "main", "commit": "e32b672d8fd343f9d6a76944fedb8c61d7d8111a" }, - "friendly-snippets": { "branch": "main", "commit": "572f5660cf05f8cd8834e096d7b4c921ba18e175" }, - "gitsigns.nvim": { "branch": "main", "commit": "5813e4878748805f1518cee7abb50fd7205a3a48" }, - "lazy.nvim": { "branch": "main", "commit": "85c7ff3711b730b4030d03144f6db6375044ae82" }, - "lualine.nvim": { "branch": "master", "commit": "47f91c416daef12db467145e16bed5bbfe00add8" }, - "mini.icons": { "branch": "main", "commit": "ff2e4f1d29f659cc2bad0f9256f2f6195c6b2428" }, - "neogen": { "branch": "main", "commit": "d7f9461727751fb07f82011051338a9aba07581d" }, - "nightfox.nvim": { "branch": "main", "commit": "ba47d4b4c5ec308718641ba7402c143836f35aa9" }, - "none-ls-extras.nvim": { "branch": "main", "commit": "70659cc3d38151424298ab46b0f67f2251cef231" }, - "none-ls.nvim": { "branch": "main", "commit": "1917c86818b5e058f53c2ea0ad38fc57534d62fc" }, - "nvim-cmp": { "branch": "main", "commit": "d97d85e01339f01b842e6ec1502f639b080cb0fc" }, - "nvim-colorizer.lua": { "branch": "master", "commit": "81e676d3203c9eb6e4c0ccf1eba1679296ef923f" }, - "nvim-lspconfig": { "branch": "master", "commit": "effe4bf2e1afb881ea67291c648b68dd3dfc927a" }, - "nvim-surround": { "branch": "main", "commit": "fcfa7e02323d57bfacc3a141f8a74498e1522064" }, - "nvim-tree.lua": { "branch": "master", "commit": "776a5cdfac948b490e06f1d1d22c4cb986e40699" }, - "nvim-treesitter": { "branch": "master", "commit": "42fc28ba918343ebfd5565147a42a26580579482" }, - "nvim-web-devicons": { "branch": "master", "commit": "8dcb311b0c92d460fac00eac706abd43d94d68af" }, - "outline.nvim": { "branch": "main", "commit": "6b62f73a6bf317531d15a7ae1b724e85485d8148" }, - "plenary.nvim": { "branch": "master", "commit": "b9fd5226c2f76c951fc8ed5923d85e4de065e509" }, + "fidget.nvim": { "branch": "main", "commit": "82404b196e73a00b1727a91903beef5ddc319d22" }, + "friendly-snippets": { "branch": "main", "commit": "6cd7280adead7f586db6fccbd15d2cac7e2188b9" }, + "gitsigns.nvim": { "branch": "main", "commit": "25050e4ed39e628282831d4cbecb1850454ce915" }, + "lazy.nvim": { "branch": "main", "commit": "306a05526ada86a7b30af95c5cc81ffba93fef97" }, + "lualine.nvim": { "branch": "master", "commit": "221ce6b2d999187044529f49da6554a92f740a96" }, + "mini.icons": { "branch": "main", "commit": "520995f1d75da0e4cc901ee95080b1ff2bc46b94" }, + "neogen": { "branch": "main", "commit": "23e7e9f883d01289ebd90e98025acc860ea26366" }, + "nightfox.nvim": { "branch": "main", "commit": "26b61b1f856ec37cae3cb64f5690adb955f246a1" }, + "none-ls-extras.nvim": { "branch": "main", "commit": "167f29529ff1438e673b1792a71aaf79ddd6c74f" }, + "none-ls.nvim": { "branch": "main", "commit": "01f8e62ea11603e59ad9ff7afcfa94fd183f76d6" }, + "nvim-cmp": { "branch": "main", "commit": "a1d504892f2bc56c2e79b65c6faded2fd21f3eca" }, + "nvim-colorizer.lua": { "branch": "master", "commit": "664c0b7cea1de71f8b65dfe951b7996fc3e6ccde" }, + "nvim-lspconfig": { "branch": "master", "commit": "229b79051b380377664edc4cbd534930154921a1" }, + "nvim-surround": { "branch": "main", "commit": "2e93e154de9ff326def6480a4358bfc149d5da2c" }, + "nvim-tree.lua": { "branch": "master", "commit": "07f541fcaa4a5ae019598240362449ab7e9812b3" }, + "nvim-treesitter": { "branch": "master", "commit": "cf12346a3414fa1b06af75c79faebe7f76df080a" }, + "nvim-web-devicons": { "branch": "master", "commit": "dfbfaa967a6f7ec50789bead7ef87e336c1fa63c" }, + "outline.nvim": { "branch": "main", "commit": "2a132953b944561d45b52e4541ebfff71934a742" }, + "plenary.nvim": { "branch": "master", "commit": "74b06c6c75e4eeb3108ec01852001636d85a932b" }, "popup.nvim": { "branch": "master", "commit": "b7404d35d5d3548a82149238289fa71f7f6de4ac" }, - "telescope.nvim": { "branch": "master", "commit": "e69b434b968a33815e2f02a5c7bd7b8dd4c7d4b2" }, - "vim-floaterm": { "branch": "master", "commit": "a11b930f55324e9b05e2ef16511fe713f1b456a7" }, + "roslyn.nvim": { "branch": "main", "commit": "dedfc3f539c51a5841feb572e8b73ec58ff2ca9d" }, + "telescope.nvim": { "branch": "master", "commit": "7d324792b7943e4aa16ad007212e6acc6f9fe335" }, + "vim-floaterm": { "branch": "master", "commit": "bb4ba7952e906408e1f83b215f55ffe57efcade6" }, "vim-illuminate": { "branch": "master", "commit": "0d1e93684da00ab7c057410fecfc24f434698898" }, "which-key.nvim": { "branch": "main", "commit": "3aab2147e74890957785941f0c1ad87d0a44c15a" } } diff --git a/nvim/lua/plugins/lspconfig.lua b/nvim/lua/plugins/lspconfig.lua index e5bd95d..5e5ad79 100644 --- a/nvim/lua/plugins/lspconfig.lua +++ b/nvim/lua/plugins/lspconfig.lua @@ -77,6 +77,7 @@ return { 'neovim/nvim-lspconfig', event = { "BufReadPre", "BufNewFile" }, dependencies = { + "seblyng/roslyn.nvim", 'hrsh7th/nvim-cmp', 'RRethy/vim-illuminate', 'j-hui/fidget.nvim', @@ -169,8 +170,15 @@ return { }, }) + vim.lsp.config("bashls", { + cmd = {'bash-language-server', 'start' }, + filetypes = {'bash', 'sh'} + }) + + require("roslyn").setup() vim.lsp.enable({ "lua_ls", "clangd", + "bashls", "ts_ls", "hls", "ruff", @@ -178,6 +186,7 @@ return { "marksman", "tailwindcss", "rust_analyzer", + "wgsl_analyzer", "julials", "pyright" }) diff --git a/rofi/config.rasi b/rofi/config.rasi index 27b354e..9c8b768 100644 --- a/rofi/config.rasi +++ b/rofi/config.rasi @@ -2,7 +2,7 @@ configuration { show-icons: true; - icon-theme: "Papirus"; + icon-theme: "kora"; } @theme "~/.config/rofi/tokyonight.rasi" diff --git a/rofi/rofi-themes-collection b/rofi/rofi-themes-collection new file mode 160000 index 0000000..c8239a4 --- /dev/null +++ b/rofi/rofi-themes-collection @@ -0,0 +1 @@ +Subproject commit c8239a45edced3502894e1716a8b661fdea8f1c9 diff --git a/scripts/set_wallpaper.sh b/scripts/set_wallpaper.sh new file mode 100755 index 0000000..869daaf --- /dev/null +++ b/scripts/set_wallpaper.sh @@ -0,0 +1,9 @@ +#!/bin/bash +# randomly selects a wallpaper from wallpapers directory + +dir="$HOME/.wallpapers" +wallpapers=("$dir"/*) +idx=$(( RANDOM % ${#wallpapers[@]})) +selected="${wallpapers[$idx]}" + +awww img "$selected" diff --git a/sway/config b/sway/config new file mode 100644 index 0000000..c8ee004 --- /dev/null +++ b/sway/config @@ -0,0 +1,202 @@ +include /etc/sway/config.d/* +output * allow_tearing yes +output * max_render_time off + +xwayland enable + +set $mod Mod4 +# Font for window titles. Will also be used by the bar unless a different font +# is used in the bar {} block below. +font pango:Noto Sans Nerd Font 12 + +# Use pactl to adjust volume in PulseAudio. +#set $refresh_i3status killall -SIGUSR1 i3status +bindsym XF86AudioRaiseVolume exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ +5% +bindsym XF86AudioLowerVolume exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ -5% +bindsym XF86AudioMute exec --no-startup-id pactl set-sink-mute @DEFAULT_SINK@ toggle +bindsym XF86AudioMicMute exec --no-startup-id pactl set-source-mute @DEFAULT_SOURCE@ toggle +# Use Mouse+$mod to drag floating windows to their wanted position +floating_modifier $mod + +# start a terminal +bindsym $mod+Return exec alacritty + +# kill focused window +bindsym $mod+Shift+q kill + +# custom bindings +# start dmenu (a program launcher) +bindsym $mod+d exec --no-startup-id "rofi -combi-modi window,drun -show combi -modi combi -show-icons" +# bindsym $mod+d exec vicinae toggle; exec swaymsg +bindsym $mod+p exec bwmenu +bindsym --release Print exec --no-startup-id ~/.config/scripts/grimshot copy area +bindsym $mod+Print exec --no-startup-id ~/.config/scripts/grimshot save area + +bindsym $mod+x [urgent=latest] focus +bindsym $mod+c exec "rofi -show calc -modi calc -no-show-match -no-sort" +# Make the currently focused window a scratchpad +bindsym $mod+Shift+minus move scratchpad + +# Show the first scratchpad window +bindsym $mod+minus scratchpad show + +# change focus +bindsym $mod+j focus left +bindsym $mod+k focus down +bindsym $mod+l focus up +bindsym $mod+semicolon focus right + +# alternatively, you can use the cursor keys: +bindsym $mod+Left focus left +bindsym $mod+Down focus down +bindsym $mod+Up focus up +bindsym $mod+Right focus right + +# move focused window +bindsym $mod+Shift+j move left +bindsym $mod+Shift+k move down +bindsym $mod+Shift+l move up +bindsym $mod+Shift+semicolon move right + +# alternatively, you can use the cursor 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 +bindsym $mod+Shift+n exec swaync-client -t -sw + +# split in horizontal orientation +bindsym $mod+h split h + +# split in vertical orientation +bindsym $mod+v split v + +# enter fullscreen mode for the focused container +bindsym $mod+f fullscreen toggle + +# change container layout (stacked, tabbed, toggle split) +bindsym $mod+s layout stacking +bindsym $mod+w layout tabbed +bindsym $mod+e layout toggle split + +bindsym $mod+Home exec swaylock --screenshots --effect-pixelate 10 --clock + +# toggle tiling / floating +bindsym $mod+Shift+space floating toggle + +# change focus between tiling / floating windows +bindsym $mod+space focus mode_toggle + +# focus the parent container +bindsym $mod+a focus parent + +# focus the child container +#bindsym $mod+d focus child + +# Define names for default workspaces for which we configure key bindings later on. +# We use variables to avoid repeating the names in multiple places. +set $ws1 "1" +set $ws2 "2" +set $ws3 "3" +set $ws4 "4" +set $ws5 "5" +set $ws6 "6" +set $ws7 "7" +set $ws8 "8" +set $ws9 "9" +set $ws10 "10" + +# switch to workspace +bindsym $mod+1 workspace number $ws1 +bindsym $mod+2 workspace number $ws2 +bindsym $mod+3 workspace number $ws3 +bindsym $mod+4 workspace number $ws4 +bindsym $mod+5 workspace number $ws5 +bindsym $mod+6 workspace number $ws6 +bindsym $mod+7 workspace number $ws7 +bindsym $mod+8 workspace number $ws8 +bindsym $mod+9 workspace number $ws9 +bindsym $mod+0 workspace number $ws10 + +# move focused container to workspace +bindsym $mod+Shift+1 move container to workspace number $ws1 +bindsym $mod+Shift+2 move container to workspace number $ws2 +bindsym $mod+Shift+3 move container to workspace number $ws3 +bindsym $mod+Shift+4 move container to workspace number $ws4 +bindsym $mod+Shift+5 move container to workspace number $ws5 +bindsym $mod+Shift+6 move container to workspace number $ws6 +bindsym $mod+Shift+7 move container to workspace number $ws7 +bindsym $mod+Shift+8 move container to workspace number $ws8 +bindsym $mod+Shift+9 move container to workspace number $ws9 +bindsym $mod+Shift+0 move container to workspace number $ws10 + +bindsym $mod+Shift+r sway reload +#bindsym $mod+Shift+e exec "i3-nagbar -t warning -m 'You pressed the exit shortcut. Do you really want to exit i3? This will end your X session.' -B 'Yes, exit i3' 'i3-msg exit'" + +# resize window (you can also use the mouse for that) +mode "resize" { + # These bindings trigger as soon as you enter the resize mode + + # Pressing left will shrink the window’s width. + # Pressing right will grow the window’s width. + # Pressing up will shrink the window’s height. + # Pressing down will grow the window’s height. + bindsym j resize shrink width 10 px or 10 ppt + bindsym k resize grow height 10 px or 10 ppt + bindsym l resize shrink height 10 px or 10 ppt + bindsym semicolon resize grow width 10 px or 10 ppt + + # same bindings, but for the arrow keys + bindsym Left resize shrink width 10 px or 10 ppt + bindsym Down resize grow height 10 px or 10 ppt + bindsym Up resize shrink height 10 px or 10 ppt + bindsym Right resize grow width 10 px or 10 ppt + + # back to normal: Enter or Escape or $mod+r + bindsym Return mode "default" + bindsym Escape mode "default" + bindsym $mod+r mode "default" +} + +bindsym $mod+r mode "resize" + +focus_follows_mouse no + +# default colors +# border background text indicator child border +client.focused #EA4335 #285577 #ffffff #2e9ef4 #285577 +client.focused_inactive #333333 #222222 #888888 #292d2e #222222 +client.unfocused #333333 #222222 #888888 #292d2e #222222 + +title_align center +for_window [class="^.*"] border pixel 1 +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 [shell="xwayland"] title_format "[XWayland] %title" + +default_floating_border none +hide_edge_borders none +gaps inner 0 +gaps outer 0 + +# seat seat0 xcursor_theme my_cursor_theme my_cursor_size + +# copying +exec_always --no-startup-id ~/.config/sway/import_gsettings.sh + +set $clipboard cliphist list | rofi | cliphist decode | wl-copy +exec --no-startup-id kanshi +exec --no-startup-id ~/.config/waybar/launch.sh + +exec --no-startup-id wl-paste --watch cliphist store +exec --no-startup-id awww-daemon --no-cache +exec --no-startup-id udiskie --tray + +exec --no-startup-id swaync + +# set a random wallpaper on reload +exec_always --no-startup-id ~/.config/sway/set_wallpaper.sh diff --git a/sway/import_gsettings.sh b/sway/import_gsettings.sh new file mode 100755 index 0000000..967620f --- /dev/null +++ b/sway/import_gsettings.sh @@ -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" | sed 's/.*\s*=\s*//')" +icon_theme="$(grep 'gtk-icon-theme-name' "$config" | sed 's/.*\s*=\s*//')" +cursor_theme="$(grep 'gtk-cursor-theme-name' "$config" | sed 's/.*\s*=\s*//')" +font_name="$(grep 'gtk-font-name' "$config" | sed 's/.*\s*=\s*//')" +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/sway/set_wallpaper.sh b/sway/set_wallpaper.sh new file mode 100755 index 0000000..773af12 --- /dev/null +++ b/sway/set_wallpaper.sh @@ -0,0 +1,8 @@ +#!/bin/bash + +dir="$HOME/.wallpapers" +wallpapers=("$dir"/*) +idx=$(( RANDOM % ${#wallpapers[@]})) +selected="${wallpapers[$idx]}" + +awww img "$selected" diff --git a/sway/sway-contrib b/sway/sway-contrib new file mode 160000 index 0000000..2d6e5a9 --- /dev/null +++ b/sway/sway-contrib @@ -0,0 +1 @@ +Subproject commit 2d6e5a9dfba137251547f99befc330ef93d70551 diff --git a/waybar/config b/waybar/config new file mode 100644 index 0000000..aea7978 --- /dev/null +++ b/waybar/config @@ -0,0 +1,90 @@ +{ + "layer": "top", + "position": "bottom", + "spacing": 5, + + "modules-left": ["sway/workspaces", "sway/mode", "wlr/taskbar", "sway/window"], + "modules-center": ["clock"], + "modules-right": ["cpu", "memory", "network", "pulseaudio", "battery", "tray", "custom/poweroff"], + + "sway/workspaces": { + "disable-scroll": true, + "format": "{name}" + }, + "wlr/taskbar" : { + "format": "{icon}", + "icon-size": 20, + "spacing": 3, + "on-click": "activate", + "on-click-middle": "close", + }, + "cpu": { + "format": " {usage}%", + "tooltip": false + }, + "memory": { + "format": "\uf4bc {used:0.1f}G | {avail:0.1f}G", + "tooltip": false, + }, + "network": { + "family": "ipv4", + // "interface": "wlp2*", // (Optional) To force the use of this interface + "format-wifi": " {essid}", + "format-ethernet": "{ifname}: {ipaddr}/{cidr} ", + "format-disconnected": "Disconnected ⚠", + "tooltip-format": "{ifname}: {ipaddr}/{cidr}", + "interval": 5 + }, + "pulseaudio": { + "format": "{icon} {volume}%", + "format-muted": "\ueee8 ", + "format-source": "{volume}%", + "format-source-muted": "", + "on-click": "pactl set-sink-mute @DEFAULT_SINK@ toggle", + "format-icons": { + "headphones": "", + "handsfree": "", + "headset": "", + "phone": "", + "portable": "", + "car": "", + "default": ["\uf027", "\uf028 "] + }, + }, + "clock": { + "interval": 1, + "format": "{:%r}", + "format-alt": "{:%A, %B %d, %Y | %r}", + "tooltip-format": "{calendar}", + "calendar": { + "format": { + "today": "{}", + } + }, + }, + "battery": { + "states": { + // "good": 95, + "warning": 20, + "critical": 10 + }, + "format": " {capacity}%", + "format-charging": "\udb80\udc85 {capacity}%", + "format-plugged": "", + "format-icons": ["", "", "", "", ""] + }, + "sway/window": { + "format": "{app_id}", + "icon" : true + }, + "tray": { + "icon-size": 18, + "spacing": 5, + "show-passive-items": "true" + }, + /*"custom/poweroff": { + "format": "\udb81\udc25 ", + "on-click": "wlogout", + "tooltip": false, + }*/ +} diff --git a/waybar/launch.sh b/waybar/launch.sh new file mode 100755 index 0000000..066b0c4 --- /dev/null +++ b/waybar/launch.sh @@ -0,0 +1,11 @@ +#!/bin/bash + +CONFIG_FILES="$HOME/.config/waybar/config $HOME/.config/waybar/style.css" + +trap "killall waybar" EXIT + +while true; do + waybar & + inotifywait -e create,modify $CONFIG_FILES + killall waybar +done diff --git a/waybar/style.css b/waybar/style.css new file mode 100644 index 0000000..d07a9b7 --- /dev/null +++ b/waybar/style.css @@ -0,0 +1,57 @@ +@define-color foreground #eff0f1; +@define-color foreground-inactive #7f8c8d; +@define-color background #161616; +@define-color background-alt #31363b; + +* { + font-family: "NotoSans Nerd Font"; + font-size: 16px; +} +window#waybar { + background-image: linear-gradient(to right, + #161616 0%, + #31363b 51%, + #161616 100%); + + color: #ffffff; + transition-property: background-color; + transition-duration: .5s; +} +#waybar { + background-color: @background; + color: @foreground; +} + +#workspaces button { + padding-left: 1em; + padding-right: 1.3em; + color: @foreground-inactive; +} + +#workspaces button.focused { + background-color: @background-alt; + color: @foreground; + border-radius: 1px; +} + +#taskbar { + color: @foreground; +} + +#clock, #battery, #cpu, #memory, #network, #pulseaudio, #tray, #mode, #custom-poweroff { + padding-left: 0.25em; + padding-right: 0.25em; +} + +#window { + padding-left: 0.25em; + padding-right: 0.5em; +} + +#custom-poweroff { + padding-left: 0; + font-size: 22; +} +#custom-poweroff:hover { + color: red; +} diff --git a/xinitrc b/xinitrc index 37ee3bb..7ce9208 100755 --- a/xinitrc +++ b/xinitrc @@ -2,6 +2,7 @@ export QT_STYLE_OVERRIDE=kvantum export XDG_SESSION_TYPE=X11 systemctl --user import-environment DISPLAY #xrandr --setprovideroutputsource modesetting NVIDIA-0 +#xrandr --auto autorandr --change xset -dpms diff --git a/zshrc b/zshrc index a2504b2..8cfdf93 100644 --- a/zshrc +++ b/zshrc @@ -10,13 +10,10 @@ CASE_SENSITIVE="true" zstyle ':omz:update' mode auto # update automatically without asking zstyle ':omz:update' frequency 7 -plugins=(zsh-autosuggestions sudo web-search poetry copypath gitignore) +plugins=(zsh-autosuggestions sudo web-search copypath gitignore) source $ZSH/oh-my-zsh.sh -export LANG=en_US.UTF-8 -export EDITOR='nvim' -export VISUAL='nvim-qt' alias vim='nvim' alias ws='web_search' alias ncspot='~/.config/ncspot/playerctl_notifier.sh & ncspot' @@ -57,4 +54,3 @@ export PATH ## Completion scripts setup. Remove the following line to uninstall [[ -f /home/frosty/.dart-cli-completion/zsh-config.zsh ]] && . /home/frosty/.dart-cli-completion/zsh-config.zsh || true ## [/Completion] -