From 24706d35f722baa10ad989378f87cf40b61f11fb Mon Sep 17 00:00:00 2001 From: Cynthia Foxwell Date: Sun, 23 Oct 2022 21:06:06 -0600 Subject: [PATCH] awesomewm files --- .gitmodules | 6 + linux/.config/awesome/config.lua | 25 + linux/.config/awesome/freedesktop | 1 + linux/.config/awesome/icons.lua | 48 + linux/.config/awesome/icons/bar/clock.png | Bin 0 -> 175 bytes linux/.config/awesome/icons/bar/cpu.png | Bin 0 -> 180 bytes linux/.config/awesome/icons/bar/gpu.png | Bin 0 -> 207 bytes linux/.config/awesome/icons/bar/memory.png | Bin 0 -> 158 bytes linux/.config/awesome/icons/bar/music.png | Bin 0 -> 174 bytes linux/.config/awesome/icons/bar/temp.png | Bin 0 -> 182 bytes linux/.config/awesome/icons/bar/volume.png | Bin 0 -> 183 bytes .../awesome/icons/bar/volume_muted.png | Bin 0 -> 182 bytes .../awesome/icons/layouts/cornerne.png | Bin 0 -> 177 bytes .../awesome/icons/layouts/cornernw.png | Bin 0 -> 179 bytes .../awesome/icons/layouts/cornerse.png | Bin 0 -> 170 bytes .../awesome/icons/layouts/cornersw.png | Bin 0 -> 171 bytes .../.config/awesome/icons/layouts/dwindle.png | Bin 0 -> 174 bytes linux/.config/awesome/icons/layouts/fairh.png | Bin 0 -> 162 bytes linux/.config/awesome/icons/layouts/fairv.png | Bin 0 -> 176 bytes .../awesome/icons/layouts/floating.png | Bin 0 -> 173 bytes .../awesome/icons/layouts/fullscreen.png | Bin 0 -> 178 bytes .../awesome/icons/layouts/magnifier.png | Bin 0 -> 165 bytes linux/.config/awesome/icons/layouts/max.png | Bin 0 -> 180 bytes .../.config/awesome/icons/layouts/spiral.png | Bin 0 -> 173 bytes linux/.config/awesome/icons/layouts/tile.png | Bin 0 -> 148 bytes .../awesome/icons/layouts/tilebottom.png | Bin 0 -> 155 bytes .../awesome/icons/layouts/tileleft.png | Bin 0 -> 149 bytes .../.config/awesome/icons/layouts/tiletop.png | Bin 0 -> 157 bytes linux/.config/awesome/icons/submenu.png | Bin 0 -> 170 bytes .../.config/awesome/icons/titlebar/close.png | Bin 0 -> 180 bytes .../icons/titlebar/floating_active.png | Bin 0 -> 173 bytes .../icons/titlebar/floating_inactive.png | Bin 0 -> 140 bytes .../icons/titlebar/maximized_active.png | Bin 0 -> 183 bytes .../icons/titlebar/maximized_inactive.png | Bin 0 -> 155 bytes .../awesome/icons/titlebar/minimize.png | Bin 0 -> 145 bytes .../awesome/icons/titlebar/ontop_active.png | Bin 0 -> 155 bytes .../awesome/icons/titlebar/ontop_inactive.png | Bin 0 -> 163 bytes .../awesome/icons/titlebar/sticky_active.png | Bin 0 -> 178 bytes .../icons/titlebar/sticky_inactive.png | Bin 0 -> 179 bytes linux/.config/awesome/lain | 1 + linux/.config/awesome/rc.lua | 1128 +++++++++++++++++ linux/.config/awesome/scripts/cmus.sh | 44 + linux/.config/awesome/themes/tokyo_night.lua | 143 +++ linux/.local/bin/cmus-notify.sh | 36 + linux/.local/bin/cmus-xfcebar.sh | 51 + linux/.local/bin/generic_autostart.sh | 2 + 46 files changed, 1485 insertions(+) create mode 100644 .gitmodules create mode 100644 linux/.config/awesome/config.lua create mode 160000 linux/.config/awesome/freedesktop create mode 100644 linux/.config/awesome/icons.lua create mode 100644 linux/.config/awesome/icons/bar/clock.png create mode 100644 linux/.config/awesome/icons/bar/cpu.png create mode 100644 linux/.config/awesome/icons/bar/gpu.png create mode 100644 linux/.config/awesome/icons/bar/memory.png create mode 100644 linux/.config/awesome/icons/bar/music.png create mode 100644 linux/.config/awesome/icons/bar/temp.png create mode 100644 linux/.config/awesome/icons/bar/volume.png create mode 100644 linux/.config/awesome/icons/bar/volume_muted.png create mode 100644 linux/.config/awesome/icons/layouts/cornerne.png create mode 100644 linux/.config/awesome/icons/layouts/cornernw.png create mode 100644 linux/.config/awesome/icons/layouts/cornerse.png create mode 100644 linux/.config/awesome/icons/layouts/cornersw.png create mode 100644 linux/.config/awesome/icons/layouts/dwindle.png create mode 100644 linux/.config/awesome/icons/layouts/fairh.png create mode 100644 linux/.config/awesome/icons/layouts/fairv.png create mode 100644 linux/.config/awesome/icons/layouts/floating.png create mode 100644 linux/.config/awesome/icons/layouts/fullscreen.png create mode 100644 linux/.config/awesome/icons/layouts/magnifier.png create mode 100644 linux/.config/awesome/icons/layouts/max.png create mode 100644 linux/.config/awesome/icons/layouts/spiral.png create mode 100644 linux/.config/awesome/icons/layouts/tile.png create mode 100644 linux/.config/awesome/icons/layouts/tilebottom.png create mode 100644 linux/.config/awesome/icons/layouts/tileleft.png create mode 100644 linux/.config/awesome/icons/layouts/tiletop.png create mode 100644 linux/.config/awesome/icons/submenu.png create mode 100644 linux/.config/awesome/icons/titlebar/close.png create mode 100644 linux/.config/awesome/icons/titlebar/floating_active.png create mode 100644 linux/.config/awesome/icons/titlebar/floating_inactive.png create mode 100644 linux/.config/awesome/icons/titlebar/maximized_active.png create mode 100644 linux/.config/awesome/icons/titlebar/maximized_inactive.png create mode 100644 linux/.config/awesome/icons/titlebar/minimize.png create mode 100644 linux/.config/awesome/icons/titlebar/ontop_active.png create mode 100644 linux/.config/awesome/icons/titlebar/ontop_inactive.png create mode 100644 linux/.config/awesome/icons/titlebar/sticky_active.png create mode 100644 linux/.config/awesome/icons/titlebar/sticky_inactive.png create mode 160000 linux/.config/awesome/lain create mode 100644 linux/.config/awesome/rc.lua create mode 100755 linux/.config/awesome/scripts/cmus.sh create mode 100644 linux/.config/awesome/themes/tokyo_night.lua create mode 100755 linux/.local/bin/cmus-notify.sh create mode 100755 linux/.local/bin/cmus-xfcebar.sh diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..4669ce2 --- /dev/null +++ b/.gitmodules @@ -0,0 +1,6 @@ +[submodule "linux/.config/awesome/freedesktop"] + path = linux/.config/awesome/freedesktop + url = https://github.com/lcpz/awesome-freedesktop.git +[submodule "linux/.config/awesome/lain"] + path = linux/.config/awesome/lain + url = https://github.com/lcpz/lain.git diff --git a/linux/.config/awesome/config.lua b/linux/.config/awesome/config.lua new file mode 100644 index 0000000..4531da7 --- /dev/null +++ b/linux/.config/awesome/config.lua @@ -0,0 +1,25 @@ +local HOME = os.getenv("HOME") + +return { + terminal = "wezterm", + terminal_separator = "start", + editor = "nvim", + launcher = "rofi -show combi", + modkey = "Mod4", + theme = "tokyo_night", + font = "Terminus 8", + gap = 4, + border_width = 1, + icon_theme = "Chicago95-tux", + wallpaper = HOME .. "/Pictures/pixelart_night_stars_clouds_trees_cozy.png", + layouts = { + "fair", + "fair.horizontal", + "floating", + }, + autostart = { + "xrdb " .. HOME .. "/.config/xrdb/main.xrdb", + "xrdb -merge " .. HOME .. "/.config/xrdb/colors/tokyonight.xrdb", + "sh ~/.local/generic_autostart.sh", + }, +} diff --git a/linux/.config/awesome/freedesktop b/linux/.config/awesome/freedesktop new file mode 160000 index 0000000..c82ad29 --- /dev/null +++ b/linux/.config/awesome/freedesktop @@ -0,0 +1 @@ +Subproject commit c82ad2960c5f0c84e765df68554c266ea7e9464d diff --git a/linux/.config/awesome/icons.lua b/linux/.config/awesome/icons.lua new file mode 100644 index 0000000..1be1670 --- /dev/null +++ b/linux/.config/awesome/icons.lua @@ -0,0 +1,48 @@ +return function(path, theme) + -- Define the image to load + theme.menu_submenu_icon = path .. "/submenu.png" + + theme.titlebar_close_button_normal = path .. "/titlebar/close.png" + theme.titlebar_close_button_focus = path .. "/titlebar/close.png" + + theme.titlebar_minimize_button_normal = path .. "/titlebar/minimize.png" + theme.titlebar_minimize_button_focus = path .. "/titlebar/minimize.png" + + theme.titlebar_ontop_button_normal_inactive = path .. "/titlebar/ontop_inactive.png" + theme.titlebar_ontop_button_focus_inactive = path .. "/titlebar/ontop_inactive.png" + theme.titlebar_ontop_button_normal_active = path .. "/titlebar/ontop_active.png" + theme.titlebar_ontop_button_focus_active = path .. "/titlebar/ontop_active.png" + + theme.titlebar_sticky_button_normal_inactive = path .. "/titlebar/sticky_inactive.png" + theme.titlebar_sticky_button_focus_inactive = path .. "/titlebar/sticky_inactive.png" + theme.titlebar_sticky_button_normal_active = path .. "/titlebar/sticky_active.png" + theme.titlebar_sticky_button_focus_active = path .. "/titlebar/sticky_active.png" + + theme.titlebar_floating_button_normal_inactive = path .. "/titlebar/floating_inactive.png" + theme.titlebar_floating_button_focus_inactive = path .. "/titlebar/floating_inactive.png" + theme.titlebar_floating_button_normal_active = path .. "/titlebar/floating_active.png" + theme.titlebar_floating_button_focus_active = path .. "/titlebar/floating_active.png" + + theme.titlebar_maximized_button_normal_inactive = path .. "/titlebar/maximized_inactive.png" + theme.titlebar_maximized_button_focus_inactive = path .. "/titlebar/maximized_inactive.png" + theme.titlebar_maximized_button_normal_active = path .. "/titlebar/maximized_active.png" + theme.titlebar_maximized_button_focus_active = path .. "/titlebar/maximized_active.png" + + -- You can use your own layout icons like this: + theme.layout_fairh = path .. "/layouts/fairh.png" + theme.layout_fairv = path .. "/layouts/fairv.png" + theme.layout_floating = path .. "/layouts/floating.png" + theme.layout_magnifier = path .. "/layouts/magnifier.png" + theme.layout_max = path .. "/layouts/max.png" + theme.layout_fullscreen = path .. "/layouts/fullscreen.png" + theme.layout_tilebottom = path .. "/layouts/tilebottom.png" + theme.layout_tileleft = path .. "/layouts/tileleft.png" + theme.layout_tile = path .. "/layouts/tile.png" + theme.layout_tiletop = path .. "/layouts/tiletop.png" + theme.layout_spiral = path .. "/layouts/spiral.png" + theme.layout_dwindle = path .. "/layouts/dwindle.png" + theme.layout_cornernw = path .. "/layouts/cornernw.png" + theme.layout_cornerne = path .. "/layouts/cornerne.png" + theme.layout_cornersw = path .. "/layouts/cornersw.png" + theme.layout_cornerse = path .. "/layouts/cornerse.png" +end diff --git a/linux/.config/awesome/icons/bar/clock.png b/linux/.config/awesome/icons/bar/clock.png new file mode 100644 index 0000000000000000000000000000000000000000..ad337321db827e6371ad0497a798155eb5a685d9 GIT binary patch literal 175 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1qucK^IRK#}EtuWC>QDo&YJnf6R!c&fMeUM~huHaQ*6EI{Ch(YnQ W`^j|^`hEiqW$<+Mb6Mw<&;$Uf-Z)zT literal 0 HcmV?d00001 diff --git a/linux/.config/awesome/icons/bar/gpu.png b/linux/.config/awesome/icons/bar/gpu.png new file mode 100644 index 0000000000000000000000000000000000000000..f69e4b2621d577f23a2539a433267fe96a801708 GIT binary patch literal 207 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1quc!4yvy#}Etuw-ZkD9#G(McK&{U=g|{xYAh?6 zKj{4wnC%d=$k6Ye-|G!Brk5M%H?|i#D!F!Ul8`Z<5D}6TAZ0LD>8sY{x13ie6cm4~ zmN@p}DRbP0l+XkKj!Z}C literal 0 HcmV?d00001 diff --git a/linux/.config/awesome/icons/bar/memory.png b/linux/.config/awesome/icons/bar/memory.png new file mode 100644 index 0000000000000000000000000000000000000000..cb73548f1c1544f70bfe814ab478ff086de5c764 GIT binary patch literal 158 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1qucL1RxB#}EtuWC_+859~!ABnOKcIAvNWq;M+> yILu5qz_Rot8*@IxS4N9<4Gi+tA_~lGYz(6O#y50N#^(UFGkCiCxvXQDo&YK4KkQ5z!h8~q45wO{ z)iiu-8{RSH=rJ*N#Wq}JNXlhr$irl@w?XdFjidyT09FG728K1x(tjrTYUl%v OWAJqKb6Mw<&;$T=z$?T6 literal 0 HcmV?d00001 diff --git a/linux/.config/awesome/icons/bar/temp.png b/linux/.config/awesome/icons/bar/temp.png new file mode 100644 index 0000000000000000000000000000000000000000..6f8d6b026d3fd442d5d816d05e976a3a364194eb GIT binary patch literal 182 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1qucL2pkN#}Etuw-*j_F(_~_2fY6Of9ISv1{}h> ze(9Y{VD;?eJ(?l8Bd^!^Nw=@ztaFtgT37tpa_ZkC5s`#c>ocEPeSZF8zyHCgKv!`h YXGNa%C3OxfkV6S#}Etux91(X7!){I9Nzw~U)Q6W;yiJk zsrb|^!=FX9PSRN`*z06kHD4VQFLl~|?oZAkUK_rzUW_w?7}m!oWlQ(GGzopr05&H$KL7v# literal 0 HcmV?d00001 diff --git a/linux/.config/awesome/icons/bar/volume_muted.png b/linux/.config/awesome/icons/bar/volume_muted.png new file mode 100644 index 0000000000000000000000000000000000000000..ada69a405bac8af2238ababfe4b209756178f09e GIT binary patch literal 182 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1qucL2pkN#}Etux91KD0gYn0@Z*2|u~|mER~gOk zEloRa_M&@gTX^`hof}StO{?Jhy!c9j()8Hk`URD#9Q+GJruu3$ys^DgxU{C^iKL5Y Y^?TzNS2Rt9fyOd;y85}Sb4q9e03t~|rT_o{ literal 0 HcmV?d00001 diff --git a/linux/.config/awesome/icons/layouts/cornerne.png b/linux/.config/awesome/icons/layouts/cornerne.png new file mode 100644 index 0000000000000000000000000000000000000000..3d6322a5f276ad71983f25237e6b0871ef162919 GIT binary patch literal 177 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1qucK{rnq#}EtuWC>QDo&YJnf6R;>X)H_<(vl5F z7Wx<@G+jzz<`Gw5-W0=diG?XZ&(UF{_zM07b_~^wr;a2jH#@#)UC1UO!4R9H{rXt+ S)JH%Q89ZJ6T-G@yGywodNiS*u literal 0 HcmV?d00001 diff --git a/linux/.config/awesome/icons/layouts/cornernw.png b/linux/.config/awesome/icons/layouts/cornernw.png new file mode 100644 index 0000000000000000000000000000000000000000..598640f7f477795d33b12c3ec64eaa403f3fc005 GIT binary patch literal 179 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1qucK@U$C#}EtuWC>QDo&YJnf6RbP0l+XkK87(pt literal 0 HcmV?d00001 diff --git a/linux/.config/awesome/icons/layouts/cornerse.png b/linux/.config/awesome/icons/layouts/cornerse.png new file mode 100644 index 0000000000000000000000000000000000000000..0a28e5b511b5cab592410b21803bcaff50d32384 GIT binary patch literal 170 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1qucL3>XZ#}EtuWC_+859~!ABr7wkY1kGt2zni6 zJTtS$q2cUFg+dKs9*u8IZQK(WBlQ?EnHV*uD@go^koeTl$jC5JS^IUBMPe_|Cm-P!Eo`4_G_ybWmAD>F?hQA KxvXQDo&YJnf6R`4;36HiEr51roy~oXM%`<0RzMGBNFVEUMp?_ Pjbre1^>bP0l+XkK^Ghy{ literal 0 HcmV?d00001 diff --git a/linux/.config/awesome/icons/layouts/fairh.png b/linux/.config/awesome/icons/layouts/fairh.png new file mode 100644 index 0000000000000000000000000000000000000000..6d20563552f84aa9106fa4e89c6a6fc80b36ed2f GIT binary patch literal 162 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1qucL32+R#}EtuWC>QDo&YJnf6RQDo&YJnf6RNHlOAWQ@C<$PlT#tDEf}x5)8B8VLyu42hGpzp`nG R1_BLa@O1TaS?83{1OS-ZFbn_y literal 0 HcmV?d00001 diff --git a/linux/.config/awesome/icons/layouts/floating.png b/linux/.config/awesome/icons/layouts/floating.png new file mode 100644 index 0000000000000000000000000000000000000000..daf21931563fdb211bc87adcbc2a4e77c1d309be GIT binary patch literal 173 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1qucK_^ca#}EtuWC>QDo&YJnf6R#8op){70d<X*;`NP-m TbUe}pG?Ky7)z4*}Q$iB}`Drj` literal 0 HcmV?d00001 diff --git a/linux/.config/awesome/icons/layouts/magnifier.png b/linux/.config/awesome/icons/layouts/magnifier.png new file mode 100644 index 0000000000000000000000000000000000000000..8aed9ad11f530a278e2f5d3998b429437abd6986 GIT binary patch literal 165 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1qucK`T!e#}EtuWC_+859|dTW=b&3mQkMK#<+tg zk%dV^*#1BogP!xu1tvEW9`G)xQ+RZVhv~-?H@$=e1_lR4`H!Ogb4~+IVeoYIb6Mw< G&;$T}BrK!= literal 0 HcmV?d00001 diff --git a/linux/.config/awesome/icons/layouts/max.png b/linux/.config/awesome/icons/layouts/max.png new file mode 100644 index 0000000000000000000000000000000000000000..bce66f9006383b198624c66231e7bba239957c31 GIT binary patch literal 180 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1qucK~GN?#}EtuWC_+859~!ABr7wkY4nO3I5AG? z7JV?qWjpV5M+vQDo&YJnf6R`4;37yF#d>foW$+MXm;QL1HiP`v3p{ literal 0 HcmV?d00001 diff --git a/linux/.config/awesome/icons/layouts/tilebottom.png b/linux/.config/awesome/icons/layouts/tilebottom.png new file mode 100644 index 0000000000000000000000000000000000000000..3016195975bf4da04335a37c53b16304da2bdd00 GIT binary patch literal 155 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1qucK?6@0#}EtuWC>QDo&YJnf6R=NmDAWJ| literal 0 HcmV?d00001 diff --git a/linux/.config/awesome/icons/submenu.png b/linux/.config/awesome/icons/submenu.png new file mode 100644 index 0000000000000000000000000000000000000000..3c2cd2bd033618ee676c2d07f97ff5c18f7a3ccd GIT binary patch literal 170 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1qucL3>XZ#}Etuw-+`FGAM93UwrY;TKi7oQZ>nj z>kfzY9ezhI49mJ!Q>0`vA;g7Es5^r37*|igYge`#hD+yN=SyJrj2B_dFh8OWG>XB~ L)z4*}Q$iB}iR3aQ literal 0 HcmV?d00001 diff --git a/linux/.config/awesome/icons/titlebar/close.png b/linux/.config/awesome/icons/titlebar/close.png new file mode 100644 index 0000000000000000000000000000000000000000..5ec8846dceeec9eb1b5c6c53e4b368e516960e69 GIT binary patch literal 180 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBufiR<}hF1en(9_e!F~q|E?Kwj}1_cfl#~=R}Po2Qq>fYEo z_woxtkvGBIN1P&G=~k_tdBd*Euh8zpfl|HWY)P-rvRRr5xX%`;S~~O7o5}CnZnF7Z W^54Bt{o^H|p$wj`elF{r5}E+L^E%D| literal 0 HcmV?d00001 diff --git a/linux/.config/awesome/icons/titlebar/floating_active.png b/linux/.config/awesome/icons/titlebar/floating_active.png new file mode 100644 index 0000000000000000000000000000000000000000..daf21931563fdb211bc87adcbc2a4e77c1d309be GIT binary patch literal 173 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1qucK_^ca#}EtuWC>QDo&YJnf6RS#}EtuWQku5f?mlD{~Z`o7csagG#DLh z;PeWXPbg+IGvv`v2xehYSl;|3<2`GR9z*9rh7b<(1Isw(yLIh#2vTsGxtM{~z<`0F Y=C1xL)1HpUKyw*9UHx3vIVCg!02DSeA^-pY literal 0 HcmV?d00001 diff --git a/linux/.config/awesome/icons/titlebar/maximized_inactive.png b/linux/.config/awesome/icons/titlebar/maximized_inactive.png new file mode 100644 index 0000000000000000000000000000000000000000..856072e5ea65da46e3e178677a00ae377b198795 GIT binary patch literal 155 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBufiR<}hF1en(7@BhF~q_@S>jiNpjY$3dW8m~LMAsLd9Z=g tE0|rNh|#RFE7l;3LG;o=jf4aS2DkG9?8|w=(t&yzJYD@<);T3K0RVVaCUO7( literal 0 HcmV?d00001 diff --git a/linux/.config/awesome/icons/titlebar/minimize.png b/linux/.config/awesome/icons/titlebar/minimize.png new file mode 100644 index 0000000000000000000000000000000000000000..9998ef6126bba8fc3897996d7c2c362075ced475 GIT binary patch literal 145 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBufiR<}hF1enP|efDF~q_@S%P(OLI8uCMlaJpX2vOQDo&YJnf6RSgeB^>bP0l+XkKbsr{c literal 0 HcmV?d00001 diff --git a/linux/.config/awesome/icons/titlebar/ontop_inactive.png b/linux/.config/awesome/icons/titlebar/ontop_inactive.png new file mode 100644 index 0000000000000000000000000000000000000000..5d8c72e721ad2e6bc8029b56509b9d6753ca2d64 GIT binary patch literal 163 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1qucK?_e8#}EtuWC>QDo&YJnf6ROdyB5~En~NN+gOu1=KN{bN TzU{aSXe5KDtDnm{r-UW|;)ykH literal 0 HcmV?d00001 diff --git a/linux/.config/awesome/icons/titlebar/sticky_inactive.png b/linux/.config/awesome/icons/titlebar/sticky_inactive.png new file mode 100644 index 0000000000000000000000000000000000000000..ae298206f4244cfe66abbbe1575ccdf9130a4fa2 GIT binary patch literal 179 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1qucK@U$C#}Etuw-+3_7!){I9Nzw~U)SdwPXn;tZJ-JIm;J(W>^pZ&&8oy#`r VAJeK?8-Qjqc)I$ztaD0e0sy{9IOG5T literal 0 HcmV?d00001 diff --git a/linux/.config/awesome/lain b/linux/.config/awesome/lain new file mode 160000 index 0000000..438dd74 --- /dev/null +++ b/linux/.config/awesome/lain @@ -0,0 +1 @@ +Subproject commit 438dd7481026519f1e924a2b3087e7cda559df57 diff --git a/linux/.config/awesome/rc.lua b/linux/.config/awesome/rc.lua new file mode 100644 index 0000000..57020ef --- /dev/null +++ b/linux/.config/awesome/rc.lua @@ -0,0 +1,1128 @@ +-- If LuaRocks is installed, make sure that packages installed through it are +-- found (e.g. lgi). If LuaRocks is not installed, do nothing. +pcall(require, "luarocks.loader") + +-- Standard awesome library +local gears = require("gears") +local awful = require("awful") +require("awful.autofocus") +-- Widget and layout library +local wibox = require("wibox") +-- Themehandling library +local beautiful = require("beautiful") +-- Notification library +local naughty = require("naughty") +local menubar = require("menubar") +local lain = require("lain") +local freedesktop = require("freedesktop") +local hotkeys_popup = require("awful.hotkeys_popup") +-- Enable hotkeys help widget for VIM and other apps +-- when client with a matching name is opened: +require("awful.hotkeys_popup.keys") + +-- {{{ Error handling +-- Checkif awesome encountered an error during startup and fell back to +-- another config (This code will only ever execute for the fallback config) +if awesome.startup_errors then + naughty.notify({ + preset = naughty.config.presets.critical, + title = "Oops, there were errors during startup!", + text = awesome.startup_errors + }) +end + +-- Handle runtime errors after startup +do + local in_error = false + awesome.connect_signal("debug::error", function (err) + -- Make sure we don't go into an endless error loop + if in_error then return end + + in_error = true + naughty.notify({ + preset = naughty.config.presets.critical, + title = "Oops, an error happened!", + text = tostring(err) + }) + in_error = false + end) +end +-- }}} + +-- {{{ helpers +function debug_print(val) + naughty.notify({ + title = "debug", + text = tostring(val), + preset = naughty.config.presets.critical, + }) +end +-- }}} + +-- {{{ Variable definitions +local HOME = os.getenv("HOME") +local CONFIG_DIR = gears.filesystem.get_xdg_config_home() .. "awesome/" +local ICON_DIR = CONFIG_DIR .. "icons" + +local config = require("config") +local terminal = config.terminal or "xterm" +local terminal_separator = config.terminal_separator or "-e" +local editor = config.editor or os.getenv("EDITOR") or "nano" +local editor_cmd = terminal .. " " .. terminal_separator .. " " .. editor +local modkey = config.modkey or "Mod4" +local altkey = config.altkey or "Mod1" + +-- Themes define colours, icons, font and wallpapers. +do + local theme = require("themes/".. config.theme) + + require("icons")(ICON_DIR, theme) + + if config.font then + theme.font = config.font + end + if config.gap then + theme.useless_gap = config.gap + end + if config.border_width then + theme.border_width = config.border_width + theme.menu_border_width = config.border_width + theme.notification_border_width = config.border_width + end + if config.icon_theme then + theme.icon_theme = config.icon_theme + end + + theme.menu_height = 16 + theme.menu_width = 128 + + theme.wibar_height = 20 + + theme = beautiful.theme_assets.recolor_titlebar(theme, theme.fg_normal, "normal") + theme = beautiful.theme_assets.recolor_titlebar(theme, theme.fg_focus, "focus") + theme = beautiful.theme_assets.recolor_layout(theme, theme.layout_fg) + + do + local image = gears.surface.duplicate_surface(theme.menu_submenu_icon) + theme.menu_submenu_icon = gears.color.recolor_image(image, theme.menu_fg_normal) + end + + local bar_icons = { + clock = { + path = "clock", + color = theme.widget_clock, + }, + volume = { + path = "volume", + color = theme.widget_volume, + }, + volume_muted = { + path = "volume_muted", + color = theme.widget_volume_muted, + }, + memory = { + path = "memory", + color = theme.widget_memory, + }, + gpu = { + path = "gpu", + color = theme.widget_gpu, + }, + gpu_temp = { + path = "temp", + color = theme.widget_gpu, + }, + cpu = { + path = "cpu", + color = theme.widget_cpu, + }, + cpu_temp = { + path = "temp", + color = theme.widget_cpu, + }, + music = { + path = "music", + color = theme.widget_music, + }, + } + + for key, icon in pairs(bar_icons) do + local image = gears.surface.duplicate_surface(ICON_DIR .. "/bar/" .. icon.path .. ".png") + theme["bar_" .. key] = gears.color.recolor_image(image, icon.color or theme.wibar_fg) + end + + theme.tasklist_floating = "~" + + if not beautiful.init(theme) then + beautiful.init(gears.filesystem.get_themes_dir() .. "default/theme.lua") + end +end +if config.wallpaper then + beautiful.wallpaper = config.wallpaper +end +-- Table of layouts to cover with awful.layout.inc, order matters. +awful.layout.layouts = {} +for _, layout in ipairs(config.layouts) do + if layout:find("%.") then + local perStart, perEnd = layout:find("%.") + local first = layout:sub(1, perStart - 1) + local second = layout:sub(perEnd + 1, #layout) + + table.insert(awful.layout.layouts, awful.layout.suit[first][second]) + else + table.insert(awful.layout.layouts, awful.layout.suit[layout]) + end +end +-- }}} + +-- {{{ Menu +-- Create a launcher widget and a main menu +local awesomemenu = { + { "hotkeys", function() hotkeys_popup.show_help(nil, awful.screen.focused()) end }, + { "manual", terminal .. " " .. terminal_separator .. " man awesome" }, + { "edit config", editor_cmd .. " " .. awesome.conffile }, + { "restart", awesome.restart }, + { "quit", function() awesome.quit() end }, +} + +local mainmenu = freedesktop.menu.build({ + before = { + { "awesome", awesomemenu, beautiful.awesome_icon }, + }, + after = { + { "open terminal", terminal }, + }, +}) + +local launcher = awful.widget.launcher({ + image = beautiful.awesome_icon, + menu = mainmenu +}) + +-- Menubar configuration +menubar.utils.terminal = terminal -- Set the terminal for applications that require it +-- }}} + +local function set_wallpaper(s) + -- Wallpaper + if beautiful.wallpaper then + local wallpaper = beautiful.wallpaper + -- If wallpaper is a function, call it with the screen + if type(wallpaper) == "function" then + wallpaper = wallpaper(s) + end + gears.wallpaper.maximized(wallpaper, s, true) + end +end + +-- Re-set wallpaper when a screen's geometry changes (e.g. different resolution) +screen.connect_signal("property::geometry", set_wallpaper) + +-- {{{ Bar +local markup = lain.util.markup + +-- Create a wibox for each screen and add it +local taglist_buttons = gears.table.join( + awful.button({}, 1, function(t) + t:view_only() + end), + awful.button({modkey}, 1, function(t) + if client.focus then + client.focus:move_to_tag(t) + end + end), + awful.button({}, 3, awful.tag.viewtoggle), + awful.button({modkey}, 3, function(t) + if client.focus then + client.focus:toggle_tag(t) + end + end), + awful.button({}, 4, function(t) + awful.tag.viewnext(t.screen) + end), + awful.button({}, 5, function(t) + awful.tag.viewprev(t.screen) + end) +) + +local tasklist_buttons = gears.table.join( + awful.button({}, 1, function(c) + if c == client.focus then + c.minimized = true + else + c:emit_signal( + "request::activate", + "tasklist", + {raise = true} + ) + end + end), + awful.button({}, 3, function() + awful.menu.client_list({ + theme = { + width = 256 + } + }) + end), + awful.button({}, 4, function() + awful.client.focus.byidx(1) + end), + awful.button({}, 5, function() + awful.client.focus.byidx(-1) + end) +) + +local layout_buttons = gears.table.join( + awful.button({}, 1, function() + awful.layout.inc(1) + end), + awful.button({}, 3, function() + awful.layout.inc(-1) + end), + awful.button({}, 4, function() + awful.layout.inc(1) + end), + awful.button({}, 5, function() + awful.layout.inc(-1) + end) +) + +local function makeBarIcon(icon) + local img = wibox.widget.imagebox(beautiful["bar_" .. icon], false) + img.forced_height = 18 + img.forced_width = 18 + return img +end + +-- Widgets +local volume_icon = makeBarIcon("volume") +local volume = lain.widget.alsa({ + settings = function() + if volume_now.status == "off" then + volume_now.level = "MUTE" + else + volume_now.level = volume_now.level .. "%" + end + + volume_icon.image = volume_now.status == "off" and beautiful.bar_volume_muted or beautiful.bar_volume + + widget:set_markup(markup(volume_now.status == "off" and beautiful.widget_volume_muted or beautiful.widget_volume, volume_now.level)) + end, +}) +local volume_buttons = awful.util.table.join( + awful.button({}, 1, function() -- left click + os.execute(string.format("%s set %s toggle", volume.cmd, volume.togglechannel or volume.channel)) + volume.update() + end), + awful.button({}, 4, function() -- scroll up + os.execute(string.format("%s set %s 1%%+", volume.cmd, volume.channel)) + volume.update() + end), + awful.button({}, 5, function() -- scroll down + os.execute(string.format("%s set %s 1%%-", volume.cmd, volume.channel)) + volume.update() + end) +) +volume.widget:buttons(volume_buttons) +volume_icon:buttons(volume_buttons) + +local memory = lain.widget.mem({ + settings = function() + widget:set_markup(markup(beautiful.widget_memory or beautiful.wibar_fg, mem_now.used .. " MB, " .. mem_now.swapused .. " MB")) + end +}) + +local cpu = lain.widget.cpu({ + settings = function() + widget:set_markup(markup(beautiful.widget_cpu or beautiful.wibar_fg, cpu_now.usage .. "%")) + end +}) + +local cpu_temp = lain.widget.temp({ + settings = function() + widget:set_markup(markup(beautiful.widget_cpu or beautiful.wibar_fg, coretemp_now .. " °C")) + end +}) + +local music_icon = makeBarIcon("music") +local music = wibox.widget.textbox() +awful.widget.watch( + 'bash -c "~/.config/awesome/scripts/cmus.sh"', + 1, + function(widget, stdout, stderr) + if stdout == "" then + music_icon._private.image = nil + music_icon:emit_signal("widget::redraw_needed") + music_icon:emit_signal("widget::layout_changed") + + widget:set_markup("") + else + music_icon.image = beautiful.bar_music + + widget:set_markup(markup(beautiful.widget_music, stdout)) + end + end, + music +) + +awful.screen.connect_for_each_screen(function(s) + -- Wallpaper + set_wallpaper(s) + + -- Each screen has its own tag table. + awful.tag({ "1", "2", "3", "4", "5", "6", "7", "8", "9" }, s, awful.layout.layouts[1]) + + -- Create a promptbox for each screen + s.__promptbox = awful.widget.prompt() + + -- Create an imagebox widget which will contain an icon indicating which layout we're using. + -- We need one layoutbox per screen. + s.__layoutbox = awful.widget.layoutbox(s) + s.__layoutbox:buttons(layout_buttons) + + -- Create a taglist widget + s.__taglist = awful.widget.taglist({ + screen = s, + filter = awful.widget.taglist.filter.all, + buttons = taglist_buttons + }) + + -- Create a tasklist widget + s.__tasklist = awful.widget.tasklist({ + screen = s, + filter = awful.widget.tasklist.filter.currenttags, + buttons = tasklist_buttons, + widget_template = { + { + { + { + id = "icon_role", + widget = wibox.widget.imagebox, + }, + margins = 2, + widget = wibox.container.margin, + }, + { + { + id = "text_role", + widget = wibox.widget.textbox, + }, + left = 2, + widget = wibox.container.margin, + }, + layout = wibox.layout.fixed.horizontal + }, + id = "background_role", + widget = wibox.container.background, + }, + }) + + -- Create the wibox + s.__bar = awful.wibar({ + position = "top", + screen = s + }) + + -- Add widgets to the wibox + s.__bar:setup({ + layout = wibox.layout.align.horizontal, + + -- Left widgets + { + layout = wibox.layout.fixed.horizontal, + launcher, + s.__taglist, + { + s.__layoutbox, + margins = 2, + layout = wibox.container.margin, + }, + s.__promptbox, + }, + + -- Middle widgets + s.__tasklist, + + -- Right widgets + { + { + { + music_icon, + music, + layout = wibox.layout.fixed.horizontal, + }, + top = 2, + bottom = 2, + left = 4, + right = 4, + layout = wibox.container.margin, + }, + { + { + makeBarIcon("cpu"), + cpu.widget, + layout = wibox.layout.fixed.horizontal, + }, + top = 2, + bottom = 2, + left = 4, + right = 4, + layout = wibox.container.margin, + }, + { + { + makeBarIcon("cpu_temp"), + cpu_temp.widget, + layout = wibox.layout.fixed.horizontal, + }, + top = 2, + bottom = 2, + left = 4, + right = 4, + layout = wibox.container.margin, + }, + -- TODO: GPU + Temp when not in VM + { + { + makeBarIcon("memory"), + memory.widget, + layout = wibox.layout.fixed.horizontal, + }, + top = 2, + bottom = 2, + left = 4, + right = 4, + layout = wibox.container.margin, + }, + { + { + volume_icon, + volume.widget, + layout = wibox.layout.fixed.horizontal, + }, + top = 2, + bottom = 2, + left = 4, + right = 4, + layout = wibox.container.margin, + }, + { + { + makeBarIcon("clock"), + wibox.widget.textclock(markup(beautiful.widget_clock or beautiful.wibar_fg, "%H:%M:%S"), 1), + layout = wibox.layout.fixed.horizontal, + }, + top = 2, + bottom = 2, + left = 4, + right = 4, + layout = wibox.container.margin, + }, + { + wibox.widget.systray(), + margins = 2, + layout = wibox.container.margin, + }, + layout = wibox.layout.fixed.horizontal, + }, + }) +end) +-- }}} + +-- {{{ Mouse bindings +root.buttons(gears.table.join( + awful.button({}, 3, function() + mainmenu:toggle() + end), + awful.button({}, 4, awful.tag.viewnext), + awful.button({}, 5, awful.tag.viewprev) +)) +-- }}} + +-- {{{ Key bindings +globalkeys = gears.table.join( + -- awesome + awful.key( + {modkey, altkey}, "r", + awesome.restart, + { + description = "reload awesome", + group = "awesome", + } + ), + awful.key( + {modkey, altkey}, "q", + awesome.quit, + { + description = "quit awesome", + group = "awesome", + } + ), + awful.key( + {modkey}, "s", + hotkeys_popup.show_help, + { + description="show help", + group = "awesome", + } + ), + awful.key( + {modkey}, "w", + function() + mainmenu:show() + end, + { + description = "show main menu", + group = "awesome", + } + ), + awful.key( + {modkey}, "x", + function() + awful.prompt.run({ + prompt = "Run Lua code: ", + textbox = awful.screen.focused().__promptbox.widget, + exe_callback = awful.util.eval, + history_path = awful.util.get_cache_dir() .. "/history_eval" + }) + end, + { + description = "lua execute prompt", + group = "awesome", + } + ), + + -- launcher + awful.key( + {modkey}, "Return", + function() + awful.spawn(terminal) + end, + { + description = "open a terminal", + group = "launcher", + } + ), + awful.key( + {"Control", altkey}, "p", + function() + menubar.show() + end, + { + description = "open launcher", + group = "launcher", + } + ), + awful.key( + {modkey}, "r", + function() + awful.screen.focused().__promptbox:run() + end, + { + description = "run prompt", + group = "launcher", + } + ), + + -- client + awful.key( + {modkey}, "Up", + function() + awful.client.focus.byidx(1) + end, + { + description = "focus next by index", + group = "client", + } + ), + awful.key( + {modkey}, "Down", + function() + awful.client.focus.byidx(-1) + end, + { + description = "focus previous by index", + group = "client", + } + ), + awful.key( + {modkey, "Shift"}, "Up", + function() + awful.client.swap.byidx(1) + end, + { + description = "swap with next client by index", + group = "client", + } + ), + awful.key( + {modkey, "Shift"}, "Down", + function() + awful.client.swap.byidx(-1) + end, + { + description = "swap with previous client by index", + group = "client", + } + ), + awful.key( + {modkey}, "u", + awful.client.urgent.jumpto, + { + description = "jump to urgent client", + group = "client", + } + ), + awful.key( + {altkey}, "Tab", + function() + awful.client.focus.history.previous() + if client.focus then + client.focus:raise() + end + end, + { + description = "go back", + group = "client", + } + ), + + -- layout + awful.key( + {modkey}, "Right", + function() + awful.tag.incmwfact(0.05) + end, + { + description = "increase master width factor", + group = "layout", + } + ), + awful.key( + {modkey}, "Left", + function() + awful.tag.incmwfact(-0.05) + end, + { + description = "decrease master width factor", + group = "layout", + } + ), + awful.key( + {modkey, "Control"}, "Up", + function() + awful.tag.incnmaster(1, nil, true) + end, + { + description = "increase the number of master clients", + group = "layout", + } + ), + awful.key( + {modkey, "Control"}, "Down", + function() + awful.tag.incnmaster(-1, nil, true) + end, + { + description = "decrease the number of master clients", + group = "layout", + } + ), + awful.key( + {modkey, "Control"}, "Right", + function() + awful.tag.incncol(1, nil, true) + end, + { + description = "increase the number of columns", + group = "layout", + } + ), + awful.key( + {modkey, "Control"}, "Left", + function() + awful.tag.incncol(-1, nil, true) + end, + { + description = "decrease the number of columns", + group = "layout", + } + ), + awful.key( + {modkey}, "Tab", + function() + awful.layout.inc(1) + end, + { + description = "select next layout", + group = "layout", + } + ), + awful.key( + {modkey, "Shift"}, "Tab", + function() + awful.layout.inc(-1) + end, + { + description = "select previous layout", + group = "layout", + } + ), + + -- cmus + awful.key( + {}, "XF86AudioPlay", + function() + awful.spawn("cmus-remote -u") + end, + { + description = "play/pause", + group = "cmus", + } + ), + awful.key( + {}, "XF86AudioPrev", + function() + awful.spawn("cmus-remote -r") + end, + { + description = "previous track", + group = "cmus", + } + ), + awful.key( + {}, "XF86AudioNext", + function() + awful.spawn("cmus-remote -n") + end, + { + description = "next track", + group = "cmus", + } + ) +) + +clientkeys = gears.table.join( + awful.key( + {modkey, "Shift"}, "f", + function(c) + c.fullscreen = not c.fullscreen + c:raise() + end, + { + description = "toggle fullscreen", + group = "client", + } + ), + awful.key( + {modkey}, "q", + function(c) + c:kill() + end, + { + description = "close", + group = "client", + } + ), + awful.key( + {modkey}, "f", + awful.client.floating.toggle , + { + description = "toggle floating", + group = "client", + } + ), + awful.key( + {modkey}, "t", + function(c) + c.sticky = not c.sticky + end, + { + description = "toggle sticky", + group = "client", + } + ), + awful.key( + {modkey, "Shift"}, "t", + function(c) + c.ontop = not c.ontop + end, + { + description = "toggle keep on top", + group = "client", + } + ), + awful.key( + {modkey}, "m", + function(c) + c.maximized = not c.maximized + c:raise() + end, + { + description = "(un)maximize", + group = "client", + } + ), + awful.key( + {modkey, "Control"}, "m", + function (c) + c.maximized_vertical = not c.maximized_vertical + c:raise() + end, + { + description = "(un)maximize vertically", + group = "client", + } + ), + awful.key( + {modkey, "Shift"}, "m", + function(c) + c.maximized_horizontal = not c.maximized_horizontal + c:raise() + end, + { + description = "(un)maximize horizontally", + group = "client", + } + ) +) + +-- Bind all key numbers to tags. +-- Be careful: we use keycodes to make it work on any keyboard layout. +-- This should map on the top row of your keyboard, usually 1 to 9. +for i = 1, 9 do + globalkeys = gears.table.join(globalkeys, + -- View tag only. + awful.key( + {modkey}, "#" .. i + 9, + function() + local screen = awful.screen.focused() + local tag = screen.tags[i] + if tag then + tag:view_only() + end + end, + { + description = "view tag #"..i, + group = "tag", + } + ), + -- Toggle tag display. + awful.key( + {modkey, "Control"}, "#" .. i + 9, + function() + local screen = awful.screen.focused() + local tag = screen.tags[i] + if tag then + awful.tag.viewtoggle(tag) + end + end, + { + description = "toggle tag #" .. i, + group = "tag" + } + ), + -- Move client to tag. + awful.key( + {modkey, "Shift"}, "#" .. i + 9, + function () + if client.focus then + local tag = client.focus.screen.tags[i] + if tag then + client.focus:move_to_tag(tag) + end + end + end, + { + description = "move focused client to tag #"..i, + group = "tag", + } + ), + -- Toggle tag on focused client. + awful.key( + {modkey, "Control", "Shift"}, "#" .. i + 9, + function () + if client.focus then + local tag = client.focus.screen.tags[i] + if tag then + client.focus:toggle_tag(tag) + end + end + end, + { + description = "toggle focused client on tag #" .. i, + group = "tag", + } + ) + ) +end + +clientbuttons = gears.table.join( + awful.button({}, 1, function(c) + c:emit_signal("request::activate", "mouse_click", {raise = true}) + end), + awful.button({modkey}, 1, function(c) + c:emit_signal("request::activate", "mouse_click", {raise = true}) + awful.mouse.client.move(c) + end), + awful.button({modkey}, 3, function(c) + c:emit_signal("request::activate", "mouse_click", {raise = true}) + awful.mouse.client.resize(c) + end) +) + +-- Set keys +root.keys(globalkeys) +-- }}} + +-- {{{ Rules +-- Rules to apply to new clients (through the "manage" signal). +awful.rules.rules = { + -- All clients will match this rule. + { + rule = {}, + properties = { + border_width = beautiful.border_width, + border_color = beautiful.border_normal, + focus = awful.client.focus.filter, + raise = true, + keys = clientkeys, + buttons = clientbuttons, + screen = awful.screen.preferred, + placement = awful.placement.no_overlap + awful.placement.no_offscreen, + } + }, + + -- Floating clients. + { + rule_any = { + instance = { + "DTA", -- Firefox addon DownThemAll. + "copyq", -- Includes session name in class. + "pinentry", + }, + class = { + "Arandr", + "Blueman-manager", + "Gpick", + "Kruler", + "MessageWin", -- kalarm. + "Sxiv", + "Tor Browser", -- Needs a fixed window size to avoid fingerprinting by screen size. + "Wpa_gui", + "veromix", + "xtightvncviewer" + }, + + -- Note that the name property shown in xprop might be set slightly after creation of the client + -- and the name shown there might not match defined rules here. + name = { + "Event Tester", -- xev. + }, + role = { + "AlarmWindow", -- Thunderbird's calendar. + "ConfigManager", -- Thunderbird's about:config. + "pop-up", -- e.g. Google Chrome's (detached) Developer Tools. + } + }, + properties = { + floating = true + } + }, + + -- Add titlebars to normal clients and dialogs + { + rule_any = { + type = { + "normal", + "dialog", + } + }, + properties = { + titlebars_enabled = true + }, + }, +} +-- }}} + +-- {{{ Signals +-- Signal function to execute when a new client appears. +client.connect_signal("manage", function (c) + -- Set the windows at the slave, + -- i.e. put it at the end of others instead of setting it master. + -- if not awesome.startup then awful.client.setslave(c) end + + if + awesome.startup + and not c.size_hints.user_position + and not c.size_hints.program_position + then + -- Prevent clients from being unreachable after screen count changes. + awful.placement.no_offscreen(c) + end +end) + +-- Add a titlebar if titlebars_enabled is set to true in the rules. +client.connect_signal("request::titlebars", function(c) + -- buttons for the titlebar + local buttons = gears.table.join( + awful.button({}, 1, function() + c:emit_signal("request::activate", "titlebar", {raise = true}) + awful.mouse.client.move(c) + end), + awful.button({}, 3, function() + c:emit_signal("request::activate", "titlebar", {raise = true}) + awful.mouse.client.resize(c) + end) + ) + + awful.titlebar(c):setup({ + { -- Left + { + awful.titlebar.widget.iconwidget(c), + margins = 2, + layout = wibox.container.margin, + }, + { + awful.titlebar.widget.titlewidget(c), + left = 2, + layout = wibox.container.margin, + }, + buttons = buttons, + layout = wibox.layout.fixed.horizontal + }, + { -- Middle + buttons = buttons, + layout = wibox.layout.flex.horizontal + }, + { -- Right + { + awful.titlebar.widget.ontopbutton(c), + awful.titlebar.widget.stickybutton(c), + awful.titlebar.widget.floatingbutton(c), + awful.titlebar.widget.minimizebutton(c), + awful.titlebar.widget.maximizedbutton(c), + awful.titlebar.widget.closebutton(c), + layout = wibox.layout.fixed.horizontal + }, + margins = 2, + layout = wibox.container.margin, + }, + layout = wibox.layout.align.horizontal, + }) +end) + +-- Enable sloppy focus, so that focus follows mouse. +--[[client.connect_signal("mouse::enter", function(c) + c:emit_signal("request::activate", "mouse_enter", {raise = false}) +end)--]] + +client.connect_signal("focus", function(c) c.border_color = beautiful.border_focus end) +client.connect_signal("unfocus", function(c) c.border_color = beautiful.border_normal end) +-- }}} + +--{{{ Autostart +for _, program in ipairs(config.autostart) do + awful.spawn(program) +end +--}}} diff --git a/linux/.config/awesome/scripts/cmus.sh b/linux/.config/awesome/scripts/cmus.sh new file mode 100755 index 0000000..b514aa1 --- /dev/null +++ b/linux/.config/awesome/scripts/cmus.sh @@ -0,0 +1,44 @@ +#!/bin/bash +if [ "`pgrep -x cmus`" == "" ]; then + echo "" + exit 0 +fi + +data="$(cmus-remote -Q)" + +status=$(echo "$data" | awk '/status / {print $2}') +artist=$(echo "$data" | awk '/tag artist / {$1="";$2="";print substr($0,3)}') +title=$(echo "$data" | awk '/tag title / {$1="";$2="";print substr($0,3)}') +duration=$(echo "$data" | awk '/duration/ {print $2}') +position=$(echo "$data" | awk '/position/ {print $2}') + +nowplaying="$artist - $title" + +position_formatted="" +duration_formatted="" + +if [ "$position" != "" ]; then + if [ $position -ge 3600 ]; then + position_formatted+=$(printf '%02d:' $(($position/3600))) + fi + + position_formatted+=$(printf '%02d:%02d' $(($position%3600/60)) $(($position%60))) +fi + +if [ "$duration" != "" ]; then + if [ $duration -ge 3600 ]; then + duration_formatted+=$(printf '%02d:' $(($duration/3600))) + fi + + duration_formatted+=$(printf '%02d:%02d' $(($duration%3600/60)) $(($duration%60))) +fi + +nowplaying+=" [$position_formatted/$duration_formatted]" + +if [ "$status" == "paused" ]; then + nowplaying+=" [paused]" +elif [ "$status" == "stopped" ]; then + nowplaying+=" [stopped]" +fi + +echo "$nowplaying" diff --git a/linux/.config/awesome/themes/tokyo_night.lua b/linux/.config/awesome/themes/tokyo_night.lua new file mode 100644 index 0000000..ed1c525 --- /dev/null +++ b/linux/.config/awesome/themes/tokyo_night.lua @@ -0,0 +1,143 @@ +--------------------------- +-- Default awesome theme -- +--------------------------- + +local theme_assets = require("beautiful.theme_assets") +local xresources = require("beautiful.xresources") +local dpi = xresources.apply_dpi + +local gfs = require("gears.filesystem") +local themes_path = gfs.get_themes_dir() + +local colors = { + background = "#1a1b26", + foreground = "#a9b1d6", + secondary = "#16161e", + tertiary = "#101014", + accent = "#3d59a1", + + color0 = "#32344a", + color1 = "#f7768e", + color2 = "#9ece6a", + color3 = "#e0af68", + color4 = "#7aa2f7", + color5 = "#ad8ee6", + color6 = "#449dab", + color7 = "#787c99", + + color8 = "#444b6a", + color9 = "#ff7a93", + color10 = "#b9f27c", + color11 = "#ff9e64", + color12 = "#7da6ff", + color13 = "#bb9af7", + color14 = "#0db9d7", + color15 = "#acb0d0", +} + +local theme = dofile(themes_path .. "default/theme.lua") + +theme.__colors = colors + +theme.bg_normal = colors.secondary +theme.bg_focus = colors.background +theme.bg_urgent = colors.color0 +theme.bg_minimize = colors.tertiary +theme.bg_systray = colors.background + +theme.fg_normal = colors.color7 +theme.fg_focus = colors.foreground +theme.fg_urgent = colors.color1 +theme.fg_minimize = colors.color0 + +theme.border_normal = theme.bg_normal +theme.border_focus = colors.color5 +theme.border_marked = colors.color2 + +-- There are other variable sets +-- overriding the default one when +-- defined, the sets are: +-- taglist_[bg|fg]_[focus|urgent|occupied|empty|volatile] +-- tasklist_[bg|fg]_[focus|urgent] +-- titlebar_[bg|fg]_[normal|focus] +-- tooltip_[font|opacity|fg_color|bg_color|border_width|border_color] +-- mouse_finder_[color|timeout|animate_timeout|radius|factor] +-- prompt_[fg|bg|fg_cursor|bg_cursor|font] +-- hotkeys_[bg|fg|border_width|border_color|shape|opacity|modifiers_fg|label_bg|label_fg|group_margin|font|description_font] +-- Example: +--theme.taglist_bg_focus = "#ff0000" + +theme.taglist_bg_focus = colors.background +theme.taglist_bg_urgent = theme.taglist_bg_focus +theme.taglist_bg_occupied = theme.taglist_bg_focus +theme.taglist_bg_empty = theme.taglist_bg_focus +theme.taglist_bg_volatile = theme.taglist_bg_focus + +theme.taglist_fg_focus = colors.color5 +theme.taglist_fg_urgent = colors.color1 +theme.taglist_fg_occupied = colors.color2 +theme.taglist_fg_empty = colors.foreground +theme.taglist_fg_volatile = colors.color3 + +theme.tasklist_fg_focus = colors.color5 +theme.tasklist_fg_urgent = colors.color1 + +theme.wibar_bg = colors.background +theme.wibar_fg = colors.foreground + +theme.layout_fg = colors.foreground + +-- bar items +theme.widget_clock = colors.color6 +theme.widget_volume = colors.color4 +theme.widget_volume_muted = colors.color1 +theme.widget_cpu = colors.color2 +theme.widget_gpu = colors.color4 +theme.widget_memory = colors.color3 +theme.widget_music = colors.color5 + +-- Generate taglist squares: +--[[local taglist_square_size = dpi(4) +theme.taglist_squares_sel = theme_assets.taglist_squares_sel( + taglist_square_size, theme.fg_normal +) +theme.taglist_squares_unsel = theme_assets.taglist_squares_unsel( + taglist_square_size, theme.fg_normal +)--]] +theme.taglist_squares_sel = nil +theme.taglist_squares_unsel = nil + +-- Variables set for theming notifications: +-- notification_font +-- notification_[bg|fg] +-- notification_[width|height|margin] +-- notification_[border_color|border_width|shape|opacity] + +theme.notification_bg = colors.background +theme.notification_fg = colors.foreground +theme.notification_border_color = colors.color5 + +-- Variables set for theming the menu: +-- menu_[bg|fg]_[normal|focus] +-- menu_[border_color|border_width] +theme.menu_bg_normal = colors.background +theme.menu_bg_focus = colors.accent + +theme.menu_fg_normal = colors.foreground +theme.menu_fg_focus = "#ffffff" + +theme.menu_border_color = colors.background + +-- Generate Awesome icon: +theme.awesome_icon = theme_assets.awesome_icon( + 16, colors.background, colors.accent +) + +-- You can add as many variables as +-- you wish and access them by using +-- beautiful.variable in your rc.lua +--theme.bg_widget = "#cc0000" + +return theme + +-- vim: filetype=lua:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:textwidth=80 diff --git a/linux/.local/bin/cmus-notify.sh b/linux/.local/bin/cmus-notify.sh new file mode 100755 index 0000000..eb9aba4 --- /dev/null +++ b/linux/.local/bin/cmus-notify.sh @@ -0,0 +1,36 @@ +#!/bin/bash +[ $# -eq 0 ] && exit 0 + +get_albumart() { + rm /tmp/albumart.jpg + local dir_name=$( dirname "$1" ) + local names=(folder cover albumart front "$2") + for item in "${names[@]}" ; do + img_file=$( find "$dir_name" -maxdepth 1 -iregex ".*$item*\.\(jpg\|jpeg\|gif\|png\|\)$" -print -quit ) + [ -n "$img_file" ] && cp "$img_file" /tmp/_albumart.jpg && break + done + [ -z "$img_file" ] && ffmpeg -i "$1" -an -v:c copy "/tmp/_albumart.jpg" -y && img_file="/tmp/_albumart.jpg" + [ -n "$img_file" ] && ffmpeg -i /tmp/_albumart.jpg -vf scale=72:-1 /tmp/albumart.jpg && rm /tmp/_albumart.jpg +} + +if [ $2 == "playing" ]; then + while [ $# -ge 2 ] ; do + eval _$1='$2' + shift + shift + done + + get_albumart "$_file" "$_album" + + duration_formatted="" + + if [ "$_duration" != "" ]; then + if [ $_duration -ge 3600 ]; then + duration_formatted+=$(printf '%02d:' $(($_duration/3600))) + fi + + duration_formatted+=$(printf '%02d:%02d' $(($_duration%3600/60)) $(($_duration%60))) + fi + + notify-send -t 5000 -i /tmp/albumart.jpg "$_title" "$_artist\n$_album\n$duration_formatted" +fi diff --git a/linux/.local/bin/cmus-xfcebar.sh b/linux/.local/bin/cmus-xfcebar.sh new file mode 100755 index 0000000..2bf700a --- /dev/null +++ b/linux/.local/bin/cmus-xfcebar.sh @@ -0,0 +1,51 @@ +#!/bin/bash +if [ "`pgrep -x cmus`" == "" ]; then + echo "" + exit 0 +fi + +status=$(cmus-remote -Q | awk '/status / {print $2}') +albumartist=$(cmus-remote -Q | awk '/tag albumartist / {$1="";$2="";print substr($0,3)}') +artist=$(cmus-remote -Q | awk '/tag artist / {$1="";$2="";print substr($0,3)}') +title=$(cmus-remote -Q | awk '/tag title / {$1="";$2="";print substr($0,3)}') +duration=$(cmus-remote -Q | awk '/duration/ {print $2}') +position=$(cmus-remote -Q | awk '/position/ {print $2}') + +nowplaying="" + +if [ "$albumartist" != "" ]; then + nowplaying+="$albumartist" +else + nowplaying+="$artist" +fi +nowplaying+=" - $title" + +position_formatted="" +duration_formatted="" + +if [ "$position" != "" ]; then + if [ $position -ge 3600 ]; then + position_formatted+=$(printf '%02d:' $(($position/3600))) + fi + + position_formatted+=$(printf '%02d:%02d' $(($position%3600/60)) $(($position%60))) +fi + +if [ "$duration" != "" ]; then + if [ $duration -ge 3600 ]; then + duration_formatted+=$(printf '%02d:' $(($duration/3600))) + fi + + duration_formatted+=$(printf '%02d:%02d' $(($duration%3600/60)) $(($duration%60))) +fi + +nowplaying+=" [$position_formatted/$duration_formatted]" + +if [ "$status" == "paused" ]; then + nowplaying+=" [paused]" +elif [ "$status" == "stopped" ]; then + nowplaying+=" [stopped]" +fi + +echo "mplayer" +echo " $nowplaying" diff --git a/linux/.local/bin/generic_autostart.sh b/linux/.local/bin/generic_autostart.sh index f01b1c4..519f957 100755 --- a/linux/.local/bin/generic_autostart.sh +++ b/linux/.local/bin/generic_autostart.sh @@ -4,8 +4,10 @@ pkill -9 pipewire pkill -9 pipewire-pulse pkill -9 vmware-user-suid-wrapper pkill -9 xmousepasteblock +pkill -9 xscreensaver pipewire & pipewire-pulse & vmware-user-suid-wrapper & xmousepasteblock & +xscreensaver &