├── .config ├── Kvantum │ ├── Graphite │ │ ├── Graphite.kvconfig │ │ ├── Graphite.svg │ │ ├── GraphiteDark.kvconfig │ │ └── GraphiteDark.svg │ ├── GraphiteNord │ │ ├── GraphiteNord.kvconfig │ │ ├── GraphiteNord.svg │ │ ├── GraphiteNordDark.kvconfig │ │ └── GraphiteNordDark.svg │ ├── Layan-Dark │ │ ├── Layan.kvconfig │ │ ├── Layan.svg │ │ ├── LayanDark.kvconfig │ │ └── LayanDark.svg │ ├── MoeDark │ │ ├── MoeDark.kvconfig │ │ └── MoeDark.svg │ └── kvantum.kvconfig ├── alacritty │ ├── alacritty.tar.gz │ ├── alacritty.yml │ └── alacritty.yml.save ├── awesome │ ├── README.md │ ├── bindings │ │ ├── client │ │ │ ├── key.lua │ │ │ └── mouse.lua │ │ ├── global │ │ │ ├── key.lua │ │ │ └── mouse.lua │ │ ├── init.lua │ │ └── mod.lua │ ├── config │ │ ├── apps.lua │ │ ├── init.lua │ │ └── vars.lua │ ├── helpers │ │ └── init.lua │ ├── misc │ │ ├── bling.lua │ │ └── menus.lua │ ├── modules │ │ ├── animation │ │ │ ├── init.lua │ │ │ ├── subscribable.lua │ │ │ └── tween.lua │ │ ├── bling │ │ │ ├── .editorconfig │ │ │ ├── AUTHORS.md │ │ │ ├── CODEOWNERS │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ ├── bling-dev-1.rockspec │ │ │ ├── docs │ │ │ │ ├── .nojekyll │ │ │ │ ├── _sidebar.md │ │ │ │ ├── home.md │ │ │ │ ├── index.html │ │ │ │ ├── javacafe.css │ │ │ │ ├── layouts │ │ │ │ │ └── layout.md │ │ │ │ ├── module │ │ │ │ │ ├── flash.md │ │ │ │ │ ├── scratch.md │ │ │ │ │ ├── swal.md │ │ │ │ │ ├── tabbed.md │ │ │ │ │ ├── twall.md │ │ │ │ │ └── wall.md │ │ │ │ ├── signals │ │ │ │ │ └── pctl.md │ │ │ │ ├── theme.md │ │ │ │ └── widgets │ │ │ │ │ ├── app_launcher.md │ │ │ │ │ ├── tabbed_misc.md │ │ │ │ │ ├── tag_preview.md │ │ │ │ │ ├── task_preview.md │ │ │ │ │ └── window_switcher.md │ │ │ ├── helpers │ │ │ │ ├── client.lua │ │ │ │ ├── color.lua │ │ │ │ ├── filesystem.lua │ │ │ │ ├── icon_theme.lua │ │ │ │ ├── init.lua │ │ │ │ ├── shape.lua │ │ │ │ └── time.lua │ │ │ ├── icons │ │ │ │ └── layouts │ │ │ │ │ ├── centered.png │ │ │ │ │ ├── deck.png │ │ │ │ │ ├── equalarea.png │ │ │ │ │ ├── horizontal.png │ │ │ │ │ ├── mstab.png │ │ │ │ │ └── vertical.png │ │ │ ├── images │ │ │ │ ├── bling_banner-2x.png │ │ │ │ └── bling_banner.png │ │ │ ├── init.lua │ │ │ ├── layout │ │ │ │ ├── centered.lua │ │ │ │ ├── deck.lua │ │ │ │ ├── equalarea.lua │ │ │ │ ├── horizontal.lua │ │ │ │ ├── init.lua │ │ │ │ ├── mstab.lua │ │ │ │ └── vertical.lua │ │ │ ├── module │ │ │ │ ├── flash_focus.lua │ │ │ │ ├── init.lua │ │ │ │ ├── scratchpad.lua │ │ │ │ ├── tabbed.lua │ │ │ │ ├── tiled_wallpaper.lua │ │ │ │ ├── wallpaper.lua │ │ │ │ └── window_swallowing.lua │ │ │ ├── signal │ │ │ │ ├── init.lua │ │ │ │ └── playerctl │ │ │ │ │ ├── init.lua │ │ │ │ │ ├── playerctl_cli.lua │ │ │ │ │ └── playerctl_lib.lua │ │ │ ├── theme-var-template.lua │ │ │ └── widget │ │ │ │ ├── app_launcher │ │ │ │ ├── init.lua │ │ │ │ └── prompt.lua │ │ │ │ ├── init.lua │ │ │ │ ├── tabbar │ │ │ │ ├── boxes.lua │ │ │ │ ├── default.lua │ │ │ │ ├── modern.lua │ │ │ │ └── pure.lua │ │ │ │ ├── tabbed_misc │ │ │ │ ├── custom_tasklist.lua │ │ │ │ ├── init.lua │ │ │ │ └── titlebar_indicator.lua │ │ │ │ ├── tag_preview.lua │ │ │ │ ├── task_preview.lua │ │ │ │ └── window_switcher.lua │ │ └── icon_customizer │ │ │ ├── README.md │ │ │ ├── dynamictitles.bash │ │ │ ├── dynamictitles.zsh │ │ │ └── init.lua │ ├── rc.lua │ ├── rules │ │ └── init.lua │ ├── scripts │ │ ├── airplanemode │ │ ├── bluetooth │ │ ├── picom │ │ ├── redshift │ │ ├── toggle │ │ └── wifi │ ├── signals │ │ ├── airplane.lua │ │ ├── battery.lua │ │ ├── bluetooth.lua │ │ ├── bright.lua │ │ ├── client │ │ │ └── init.lua │ │ ├── cpu.lua │ │ ├── disk.lua │ │ ├── dnd.lua │ │ ├── init.lua │ │ ├── mem.lua │ │ ├── mic.lua │ │ ├── network.lua │ │ ├── night.lua │ │ ├── picom.lua │ │ ├── ruled │ │ │ └── init.lua │ │ ├── screen │ │ │ └── init.lua │ │ ├── tag │ │ │ └── init.lua │ │ ├── tog.lua │ │ ├── uptime.lua │ │ └── volume.lua │ ├── theme │ │ ├── icons │ │ │ ├── awesomewm.svg │ │ │ ├── circle.svg │ │ │ ├── floating.png │ │ │ ├── menu.svg │ │ │ ├── pause.svg │ │ │ ├── play.svg │ │ │ ├── systray.png │ │ │ └── tile.png │ │ ├── init.lua │ │ ├── notifs │ │ │ └── def.svg │ │ ├── pics │ │ │ ├── hi.jpg │ │ │ ├── nosong.jpg │ │ │ ├── pfp.jpg │ │ │ └── profile.jpg │ │ └── wallpapers │ │ │ ├── beach.png │ │ │ ├── f2.jpg │ │ │ ├── flower.jpg │ │ │ ├── forest.png │ │ │ ├── lush.png │ │ │ ├── panda.png │ │ │ ├── rocky.png │ │ │ ├── sky.jpg │ │ │ ├── space.jpg │ │ │ └── wall.png │ └── ui │ │ ├── bar │ │ ├── init.lua │ │ └── modules │ │ │ ├── layout.lua │ │ │ ├── misc.lua │ │ │ ├── music.lua │ │ │ ├── status.lua │ │ │ ├── tags.lua │ │ │ ├── tasklist.lua │ │ │ ├── time.lua │ │ │ └── tray.lua │ │ ├── dings │ │ ├── actions │ │ │ ├── init.lua │ │ │ └── music.lua │ │ ├── base.lua │ │ └── init.lua │ │ ├── exitscreen │ │ └── init.lua │ │ ├── init.lua │ │ ├── mainframe │ │ ├── init.lua │ │ └── modules │ │ │ ├── footer.lua │ │ │ ├── music.lua │ │ │ ├── profile.lua │ │ │ ├── settings.lua │ │ │ └── sliders.lua │ │ ├── moment │ │ ├── init.lua │ │ └── modules │ │ │ └── calendar.lua │ │ ├── notify │ │ ├── init.lua │ │ └── modules │ │ │ └── notifs │ │ │ ├── box.lua │ │ │ ├── empty.lua │ │ │ └── make.lua │ │ └── titlebars │ │ ├── init.lua │ │ ├── main.lua │ │ └── music.lua ├── dunst │ └── dunstrc ├── eww │ ├── assets │ │ ├── empty-notification.svg │ │ ├── nosong.jpg │ │ └── profile.jpg │ ├── eww.scss │ ├── eww.yuck │ ├── scripts │ │ ├── airplanemode │ │ ├── bluetooth │ │ ├── donotdisturb │ │ ├── music │ │ ├── notification_logger.zsh │ │ ├── picom │ │ └── wifi │ └── src │ │ ├── scss │ │ ├── _vars.scss │ │ ├── disclose │ │ │ └── _index.scss │ │ ├── mainframe │ │ │ └── _index.scss │ │ └── moment │ │ │ └── _index.scss │ │ └── yuck │ │ ├── _vars.yuck │ │ ├── disclose │ │ ├── _widgets.yuck │ │ └── _window.yuck │ │ ├── mainframe │ │ ├── _widgets.yuck │ │ └── _window.yuck │ │ └── moment │ │ ├── _widgets.yuck │ │ └── _window.yuck ├── gammastep │ └── config.ini ├── hypr │ ├── hyprland.conf │ ├── hyprpaper.conf │ └── scripts │ │ ├── convertMkvToMp4 │ │ ├── hyprInit │ │ ├── launchUpdater │ │ ├── launchWallpaper │ │ ├── restartPipeWire │ │ ├── swayIdleLauncher │ │ ├── swayIdleLocker │ │ ├── swayLocker │ │ ├── swayLocker-old │ │ └── wobFormat ├── kitty │ ├── colors-dracula.conf │ ├── colors-fullmono.conf │ ├── colors-monochrome.conf │ ├── kitty.conf │ ├── kitty.conf.user │ └── test.conf ├── mimeapps.list ├── neofetch │ ├── config-old.conf │ └── config.conf ├── picom │ └── picom.conf ├── qt5ct │ └── qt5ct.conf ├── qt6ct │ └── qt6ct.conf ├── rofi │ ├── askpass.rasi │ ├── back.png │ ├── battery.rasi │ ├── cal.rasi │ ├── colors.rasi │ ├── config.rasi │ ├── generic.rasi │ └── power.rasi ├── swaync │ ├── config.json │ ├── configSchema.json │ ├── style.css │ └── swaync │ │ ├── config.json │ │ ├── configSchema.json │ │ └── style.css ├── sxhkd │ ├── sxhkdrc │ └── sxhkdrc-awesome ├── waybar │ ├── config │ ├── config.jsonc │ └── style.css ├── wlogout │ ├── icons │ │ ├── hibernate.png │ │ ├── lock.png │ │ ├── logout.png │ │ ├── reboot.png │ │ ├── shutdown.png │ │ └── suspend.png │ ├── layout │ └── style.css ├── wofi │ └── style.css ├── wpaperd │ └── output.conf └── zsh │ ├── .p10k.zsh │ ├── .zshenv │ ├── .zshrc │ ├── aliases.zsh │ ├── functions │ ├── ffmpeg.zsh │ ├── paclog.zsh │ └── timezsh.zsh │ ├── oh-my-zsh.zsh │ └── plugins │ ├── conda.zsh │ ├── p10k.zsh │ └── pnpm.zsh ├── .github └── assets │ ├── logout.png │ ├── main.png │ ├── terminals.png │ └── wofi.png ├── .gitignore ├── .local └── bin │ ├── Hyprlaunch │ ├── barinfo │ ├── battery │ ├── blockunsafe │ ├── bloks │ ├── brightness │ ├── bunnyfetch │ ├── changebrightness │ ├── changevolume │ ├── dotenv │ ├── eww │ ├── fetch │ ├── fetch2 │ ├── getroot │ ├── hostsafe │ ├── httpx │ ├── lfub │ ├── lock │ ├── lvim │ ├── mov-cli │ ├── notify-action.sh │ ├── notify-send.sh │ ├── pluck │ ├── rofi-bluetooth │ ├── rofiscripts │ ├── askpass │ ├── battery │ ├── bluetoothmenu │ ├── popcal │ ├── powermenu │ ├── rofi-todo │ ├── ssmenu │ └── wifimenu │ ├── roundvalue │ ├── samloader │ ├── screenrecord.sh │ ├── statusbar │ ├── battery │ ├── calendar │ ├── mincalendar │ ├── mindash │ ├── notifications │ ├── power │ ├── sound │ ├── statusbtn │ └── wifi │ ├── takeshot │ ├── unblocksafe │ ├── volume │ └── wifistronk ├── Hyprland ├── README.md └── Scripts └── install.sh /.config/Kvantum/kvantum.kvconfig: -------------------------------------------------------------------------------- 1 | [General] 2 | theme=GraphiteDark 3 | 4 | [Applications] 5 | GraphiteDark=Dolphin, dolphin, Nextcloud, nextcloud, qt5ct, org.kde.dolphin, org.kde.kalendar, kalendar, Kalendar, qbittorrent, org.qbittorrent.qBittorrent 6 | -------------------------------------------------------------------------------- /.config/alacritty/alacritty.tar.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NotAShelf/dotfiles/9c40e15577251d9a480ddf6a530eb25929c6f2ba/.config/alacritty/alacritty.tar.gz -------------------------------------------------------------------------------- /.config/alacritty/alacritty.yml: -------------------------------------------------------------------------------- 1 | env: 2 | # Even if `alacritty` is available, set to `xterm-256color` for connecting 3 | # to remote hosts 4 | TERM: xterm-256color 5 | 6 | window: 7 | padding: 8 | x: 10 9 | y: 10 10 | 11 | font: 12 | normal: 13 | style: Regular 14 | family: Jetbrains Mono Nerd Font 15 | size: 14 16 | 17 | colors: 18 | primary: 19 | background: '#000000' #'#080808' 20 | 21 | shell: 22 | program: /usr/bin/zsh 23 | 24 | draw_bold_text_with_bright_colors: false 25 | 26 | # Colors 27 | colors: 28 | # Default colors 29 | primary: 30 | background: '#191919' #'#080808' 31 | foreground: '#ffffff' #'#b2b2b2' 32 | bright_foreground: '#eeeeee' 33 | 34 | # Cursor colors 35 | cursor: 36 | text: '#080808' 37 | cursor: '#9e9e9e' 38 | 39 | # Selection colors 40 | selection: 41 | text: '#000000' 42 | background: '#ffffff' 43 | 44 | # Normal colors 45 | normal: 46 | black: '#323437' 47 | red: '#ff5454' 48 | green: '#8cc85f' 49 | yellow: '#e3c78a' 50 | blue: '#80a0ff' 51 | magenta: '#d183e8' 52 | cyan: '#79dac8' 53 | white: '#c6c6c6' 54 | 55 | # Bright colors 56 | bright: 57 | black: '#949494' 58 | red: '#ff5189' 59 | green: '#36c692' 60 | yellow: '#c2c292' 61 | blue: '#74b2ff' 62 | magenta: '#ae81ff' 63 | cyan: '#85dc85' 64 | white: '#e4e4e4' 65 | -------------------------------------------------------------------------------- /.config/alacritty/alacritty.yml.save: -------------------------------------------------------------------------------- 1 | env: 2 | # Even if `alacritty` is available, set to `xterm-256color` for connecting 3 | # to remote hosts 4 | TERM: xterm-256color 5 | 6 | window: 7 | padding: 8 | x: 8 9 | y: 8 10 | 11 | # opacity: 0.85 12 | 13 | font: 14 | normal: 15 | style: Regular 16 | family: Jetbrains Mono Nerd Font 17 | 18 | size: 11 19 | 20 | colors: 21 | primary: 22 | background: '#080808' 23 | 24 | shell: 25 | program: /usr/bin/zsh 26 | # args: 27 | # - --login 28 | 29 | draw_bold_text_with_bright_colors: false 30 | 31 | # Colors 32 | colors: 33 | # Default colors 34 | primary: 35 | background: '#080808' 36 | foreground: '#b2b2b2' 37 | bright_foreground: '#eeeeee' 38 | 39 | # Cursor colors 40 | cursor: 41 | text: '#080808' 42 | cursor: '#9e9e9e' 43 | 44 | # Selection colors 45 | selection: 46 | text: '#080808' 47 | background: '#b2ceee' 48 | 49 | # Normal colors 50 | normal: 51 | black: '#323437' 52 | red: '#ff5454' 53 | green: '#8cc85f' 54 | yellow: '#e3c78a' 55 | blue: '#80a0ff' 56 | magenta: '#d183e8' 57 | cyan: '#79dac8' 58 | white: '#c6c6c6' 59 | 60 | # Bright colors 61 | bright: 62 | black: '#949494' 63 | red: '#ff5189' 64 | green: '#36c692' 65 | yellow: '#c2c292' 66 | blue: '#74b2ff' 67 | magenta: '#ae81ff' 68 | cyan: '#85dc85' 69 | white: '#e4e4e4' 70 | -------------------------------------------------------------------------------- /.config/awesome/README.md: -------------------------------------------------------------------------------- 1 | ### Todo 2 | + [ ] add something below notifbox 3 | + [x] rofi sidebar custom ui thingy 4 | + [x] better notifications 5 | + [x] a simple powermenu 6 | -------------------------------------------------------------------------------- /.config/awesome/bindings/client/mouse.lua: -------------------------------------------------------------------------------- 1 | local awful = require'awful' 2 | 3 | local mod = require'bindings.mod' 4 | 5 | client.connect_signal('request::default_mousebindings', function() 6 | awful.mouse.append_client_mousebindings{ 7 | awful.button{ 8 | modifiers = {}, 9 | button = 1, 10 | on_press = function(c) c:activate{context = 'mouse_click'} end 11 | }, 12 | awful.button{ 13 | modifiers = {mod.super}, 14 | button = 1, 15 | on_press = function(c) c:activate{context = 'mouse_click', action = 'mouse_move'} end 16 | }, 17 | awful.button{ 18 | modifiers = {mod.super}, 19 | button = 3, 20 | on_press = function(c) c:activate{context = 'mouse_click', action = 'mouse_resize'} end 21 | }, 22 | } 23 | end) 24 | -------------------------------------------------------------------------------- /.config/awesome/bindings/global/mouse.lua: -------------------------------------------------------------------------------- 1 | local awful = require 'awful' 2 | local widgets = require 'misc.menus' 3 | 4 | awful.mouse.append_global_mousebindings { 5 | awful.button { 6 | modifiers = {}, 7 | button = 3, 8 | on_press = function() widgets.mainmenu:toggle() end 9 | }, 10 | awful.button { 11 | modifiers = {}, 12 | button = 4, 13 | on_press = awful.tag.viewprev 14 | }, 15 | awful.button { 16 | modifiers = {}, 17 | button = 5, 18 | on_press = awful.tag.viewnext 19 | }, 20 | } 21 | -------------------------------------------------------------------------------- /.config/awesome/bindings/init.lua: -------------------------------------------------------------------------------- 1 | return { 2 | client = { 3 | key = require'bindings.client.key', 4 | mouse = require'bindings.client.mouse', 5 | }, 6 | global = { 7 | key = require'bindings.global.key', 8 | mouse = require'bindings.global.mouse', 9 | }, 10 | mod = require'bindings.mod' 11 | } 12 | 13 | -------------------------------------------------------------------------------- /.config/awesome/bindings/mod.lua: -------------------------------------------------------------------------------- 1 | return { 2 | alt = 'Mod1', 3 | super = 'Mod4', 4 | shift = 'Shift', 5 | ctrl = 'Control', 6 | } 7 | -------------------------------------------------------------------------------- /.config/awesome/config/apps.lua: -------------------------------------------------------------------------------- 1 | local _M = { 2 | terminal = 'kitty', 3 | floatingTerminal = 'alacritty', 4 | editor = 'nvim', 5 | } 6 | 7 | _M.editor_cmd = _M.terminal .. ' -e ' .. _M.editor 8 | _M.manual_cmd = _M.terminal .. ' -e man awesome' 9 | 10 | return _M 11 | -------------------------------------------------------------------------------- /.config/awesome/config/init.lua: -------------------------------------------------------------------------------- 1 | return { 2 | apps = require 'config.apps', 3 | vars = require 'config.vars', 4 | } 5 | -------------------------------------------------------------------------------- /.config/awesome/config/vars.lua: -------------------------------------------------------------------------------- 1 | local _M = {} 2 | 3 | local awful = require 'awful' 4 | 5 | _M.layouts = { 6 | awful.layout.suit.tile, 7 | awful.layout.suit.floating, 8 | -- awful.layout.suit.tile.left, 9 | -- awful.layout.suit.tile.bottom, 10 | -- awful.layout.suit.tile.top, 11 | -- awful.layout.suit.fair, 12 | -- awful.layout.suit.fair.horizontal, 13 | -- awful.layout.suit.spiral, 14 | -- awful.layout.suit.spiral.dwindle, 15 | -- awful.layout.suit.max, 16 | -- awful.layout.suit.max.fullscreen, 17 | -- awful.layout.suit.magnifier, 18 | -- awful.layout.suit.corner.nw, 19 | } 20 | 21 | _M.tags = { '1', '2', '3', '4', '5' } 22 | return _M 23 | -------------------------------------------------------------------------------- /.config/awesome/helpers/init.lua: -------------------------------------------------------------------------------- 1 | local helpers = {} 2 | local awful = require("awful") 3 | local beautiful = require("beautiful") 4 | local gears = require("gears") 5 | local dpi = beautiful.xresources.apply_dpi 6 | 7 | helpers.rrect = function(radius) 8 | radius = radius or dpi(4) 9 | return function(cr, width, height) 10 | gears.shape.rounded_rect(cr, width, height, radius) 11 | end 12 | end 13 | 14 | helpers.prect = function(tl, tr, br, bl, radius) 15 | radius = radius or dpi(4) 16 | return function(cr, width, height) 17 | gears.shape.partially_rounded_rect(cr, width, height, tl, tr, br, bl, radius) 18 | end 19 | end 20 | helpers.clickKey = function(c, key) 21 | awful.spawn.with_shell("xdotool type --window " .. tostring(c.window) .. " '" .. key .. "'") 22 | end 23 | 24 | helpers.colorizeText = function(txt, fg) 25 | if fg == "" then 26 | fg = "#ffffff" 27 | end 28 | 29 | return "" .. txt .. "" 30 | end 31 | 32 | return helpers 33 | -------------------------------------------------------------------------------- /.config/awesome/misc/menus.lua: -------------------------------------------------------------------------------- 1 | local _M = {} 2 | local hotkeys_popup = require 'awful.hotkeys_popup' 3 | local awful = require("awful") 4 | local beautiful = require("beautiful") 5 | local apps = require 'config.apps' 6 | _M.awesomemenu = { 7 | { 'hotkeys', function() hotkeys_popup.show_help(nil, awful.screen.focused()) end }, 8 | { 'manual', apps.manual_cmd }, 9 | { 'edit config', apps.editor_cmd .. ' ' .. awesome.conffile }, 10 | { 'restart', awesome.restart }, 11 | { 'quit', awesome.quit }, 12 | } 13 | _M.mainmenu = awful.menu { 14 | items = { 15 | { 'awesome', _M.awesomemenu, beautiful.awesome_icon }, 16 | { 'terminal', apps.terminal } 17 | } 18 | } 19 | 20 | return _M 21 | -------------------------------------------------------------------------------- /.config/awesome/modules/animation/subscribable.lua: -------------------------------------------------------------------------------- 1 | ------------------------------------------- 2 | -- @author https://github.com/Kasper24 3 | -- @copyright 2021-2022 Kasper24 4 | -- Adopted from rubato 5 | ------------------------------------------- 6 | 7 | 8 | local gobject = require("gears.object") 9 | 10 | -- Kidna copying awesotre's stores on a surface level for added compatibility 11 | local function subscribable(args) 12 | local ret = gobject {} 13 | local subscribed = {} 14 | 15 | -- Subscrubes a function to the object so that it's called when `fire` is 16 | -- Calls subscribe_callback if it exists as well 17 | function ret:subscribe(func) 18 | local id = tostring(func):gsub("function: ", "") 19 | subscribed[id] = func 20 | 21 | if self.subscribe_callback then self.subscribe_callback(func) end 22 | end 23 | 24 | -- Unsubscribes a function and calls unsubscribe_callback if it exists 25 | function ret:unsubscribe(func) 26 | if not func then 27 | subscribed = {} 28 | else 29 | local id = tostring(func):gsub("function: ", "") 30 | subscribed[id] = nil 31 | end 32 | 33 | if self.unsubscribe_callback then self.unsubscribe_callback(func) end 34 | end 35 | 36 | function ret:fire(...) for _, func in pairs(subscribed) do func(...) end end 37 | 38 | return ret 39 | end 40 | 41 | return subscribable 42 | -------------------------------------------------------------------------------- /.config/awesome/modules/bling/.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | charset = utf-8 5 | end_of_line = lf 6 | indent_size = 4 7 | indent_style = tab 8 | trim_trailing_whitespace = true 9 | 10 | [*.lua] 11 | indent_size = 4 12 | indent_style = space 13 | max_line_length = 80 14 | 15 | [*.yml] 16 | indent_size = 2 17 | indent_style = space 18 | 19 | [*.{html,css}] 20 | indent_size = 2 21 | indent_style = space 22 | 23 | [*.md] 24 | trim_trailing_whitespace = false 25 | -------------------------------------------------------------------------------- /.config/awesome/modules/bling/AUTHORS.md: -------------------------------------------------------------------------------- 1 | The following developers have contributed major code to bling: 2 | 3 | * [Nooo37](https://github.com/Nooo37) 4 | * [JavaCafe01](https://github.com/JavaCafe01) 5 | * [Grumph](https://github.com/Grumph) 6 | * [Bysmutheye](https://github.com/Bysmutheye) 7 | * [HumblePresent](https://github.com/HumblePresent) 8 | * [Kasper24](https://github.com/Kasper24) 9 | * [undefinedDarkness](https://github.com/undefinedDarkness) 10 | * [eylles](https://github.com/eylles) 11 | -------------------------------------------------------------------------------- /.config/awesome/modules/bling/CODEOWNERS: -------------------------------------------------------------------------------- 1 | /module/* @Nooo37 2 | /widget/* @JavaCafe01 3 | -------------------------------------------------------------------------------- /.config/awesome/modules/bling/LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2021 BlingCorp 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /.config/awesome/modules/bling/README.md: -------------------------------------------------------------------------------- 1 |

2 | 3 |

4 |

5 | 6 | All documentation, instructions, and previews are [here](https://blingcorp.github.io/bling/). 7 | 8 | ## Features 9 | 10 | - Layouts 11 | - mstab (master-slave tab layout) 12 | - centered 13 | - vertical 14 | - horizontal 15 | - equalarea 16 | - Modules 17 | - Flash Focus 18 | - Tabbed container 19 | - Tiled Wallpaper 20 | - Wallpaper Easy Setup 21 | - Window Swallowing 22 | - Scratchpad 23 | - Signals 24 | - Playerctl 25 | - Widgets 26 | - Tag Preview 27 | - Task Preview 28 | 29 | All naming credit goes to [JavaCafe01](https://github.com/JavaCafe01). 30 | 31 | ### Dependencies 32 | 33 | In order to use the `tabbed` modules `pick` function, you need to install `xwininfo`. 34 | 35 | ## Contributing 36 | 37 | Contributions are welcome 💛 38 | 39 | Before requesting changes, makes sure that your editor has an "editorconfig" extension installed, this will use our code style everytime when you edit in the `bling` folder. 40 | 41 | When adding a layout/module/signal/widget, please add theme variables for customization and add the according documentation under `docs`. 42 | -------------------------------------------------------------------------------- /.config/awesome/modules/bling/bling-dev-1.rockspec: -------------------------------------------------------------------------------- 1 | package = "bling" 2 | version = "dev-1" 3 | 4 | source = { 5 | url = "git://github.com/BlingCorp/bling", 6 | branch = "master", 7 | } 8 | 9 | description = { 10 | summary = "Utilities for the AwesomeWM", 11 | detailed = [[ 12 | This module extends the Awesome window manager with alternative layouts, 13 | flash focus, tabbing, a simple tiling wallpaper generator, a declarative 14 | wallpaper setter, window swallowing and a playerctl signal. 15 | ]], 16 | homepage = "https://github.com/BlingCorp/bling", 17 | license = "MIT", 18 | } 19 | 20 | dependencies = { 21 | "lua >= 5.1", 22 | } 23 | 24 | build = { 25 | type = "builtin", 26 | modules = { 27 | ["bling"] = "init.lua", 28 | ["bling.helpers"] = "helpers/init.lua", 29 | ["bling.helpers.client"] = "helpers/client.lua", 30 | ["bling.helpers.color"] = "helpers/color.lua", 31 | ["bling.helpers.filesystem"] = "helpers/filesystem.lua", 32 | ["bling.helpers.shape"] = "helpers/shape.lua", 33 | ["bling.helpers.time"] = "helpers/time.lua", 34 | ["bling.layout"] = "layout/init.lua", 35 | ["bling.layout.centered"] = "layout/centered.lua", 36 | ["bling.layout.deck"] = "layout/deck.lua", 37 | ["bling.layout.equalarea"] = "layout/equalarea.lua", 38 | ["bling.layout.horizontal"] = "layout/horizontal.lua", 39 | ["bling.layout.mstab"] = "layout/mstab.lua", 40 | ["bling.layout.vertical"] = "layout/vertical.lua", 41 | ["bling.module"] = "module/init.lua", 42 | ["bling.module.flash_focus"] = "module/flash_focus.lua", 43 | ["bling.module.scratchpad"] = "module/scratchpad.lua", 44 | ["bling.module.tabbed"] = "module/tabbed.lua", 45 | ["bling.module.tiled_wallpaper"] = "module/tiled_wallpaper.lua", 46 | ["bling.module.wallpaper"] = "module/wallpaper.lua", 47 | ["bling.module.window_swallowing"] = "module/window_swallowing.lua", 48 | ["bling.signal"] = "signal/init.lua", 49 | ["bling.signal.playerctl"] = "signal/playerctl/init.lua", 50 | ["bling.signal.playerctl.playerctl_cli"] = "signal/playerctl/playerctl_cli.lua", 51 | ["bling.signal.playerctl.playerctl_lib"] = "signal/playerctl/playerctl_lib.lua", 52 | ["bling.widget"] = "widget/init.lua", 53 | ["bling.widget.tabbar.boxes"] = "widget/tabbar/boxes.lua", 54 | ["bling.widget.tabbar.default"] = "widget/tabbar/default.lua", 55 | ["bling.widget.tabbar.modern"] = "widget/tabbar/modern.lua", 56 | ["bling.widget.tabbed_misc"] = "widget/tabbed_misc/init.lua", 57 | ["bling.widget.tabbed_misc.custom_tasklist"] = "widget/tabbed_misc/custom_tasklist.lua", 58 | ["bling.widget.tabbed_misc.titlebar_indicator"] = "widget/tabbed_misc/titlebar_indicator.lua", 59 | ["bling.widget.tag_preview"] = "widget/tag_preview.lua", 60 | ["bling.widget.task_preview"] = "widget/task_preview.lua", 61 | ["bling.widget.window_switcher"] = "widget/window_switcher.lua", 62 | }, 63 | } 64 | -------------------------------------------------------------------------------- /.config/awesome/modules/bling/docs/.nojekyll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NotAShelf/dotfiles/9c40e15577251d9a480ddf6a530eb25929c6f2ba/.config/awesome/modules/bling/docs/.nojekyll -------------------------------------------------------------------------------- /.config/awesome/modules/bling/docs/_sidebar.md: -------------------------------------------------------------------------------- 1 | - [Home](home.md) 2 | 3 | - [Layouts](layouts/layout.md) 4 | 5 | - Modules 6 | - [Flash Focus](module/flash.md) 7 | - [Tabbed](module/tabbed.md) 8 | - [Tiled Wallpaper](module/twall.md) 9 | - [Wallpaper Easy Setup](module/wall.md) 10 | - [Window Swallowing](module/swal.md) 11 | - [Scratchpad](module/scratch.md) 12 | 13 | - Signals 14 | - [Playerctl](signals/pctl.md) 15 | 16 | - Widgets 17 | - [App Launcher](widgets/app_launcher.md) 18 | - [Tag Preview](widgets/tag_preview.md) 19 | - [Task Preview](widgets/task_preview.md) 20 | - [Tabbed Misc](widgets/tabbed_misc.md) 21 | - [Window Switcher](widgets/window_switcher.md) 22 | 23 | - Extra 24 | - [Theme Variable Template](theme.md) 25 | -------------------------------------------------------------------------------- /.config/awesome/modules/bling/docs/home.md: -------------------------------------------------------------------------------- 1 | #
🌟 Bling - Utilities for AwesomeWM 🌟
2 | 3 | ## Why 4 | 5 | [AwesomeWM](https://awesomewm.org/) is literally what it stands for, an awesome window manager. 6 | 7 | Its unique selling point has always been the widget system, which allows for fancy buttons, sliders, bars, dashboards and anything you can imagine. But that feature can be a curse. Most modules focus on the widget side of things which leave the actual window managing part of AwesomeWM underdeveloped compared to, for example, [xmonad](https://xmonad.org/) even though it's probably just as powerfull in that area. 8 | 9 | This project focuses on that problem - adding new layouts and modules that make use of the widget system, but primarily focus on the new window managing features. 10 | 11 | ## Installation 12 | - clone this repo into your `~/.config/awesome` folder 13 | - `git clone https://github.com/BlingCorp/bling.git ~/.config/awesome/bling` 14 | - require the module in your `rc.lua`, and make sure it's under the beautiful module initialization 15 | 16 | ```lua 17 | -- other imports 18 | 19 | local beautiful = require("beautiful") 20 | 21 | -- other configuration stuff here 22 | 23 | beautiful.init("some_theme.lua") 24 | local bling = require("bling") 25 | ``` 26 | 27 | ## Contributors 28 | A special thanks to all our contributors... 29 | 30 | 31 | 32 | 33 | 34 | Made with [contributors-img](https://contrib.rocks). 35 | -------------------------------------------------------------------------------- /.config/awesome/modules/bling/docs/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Bling Docs 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 24 | 25 | 26 | 27 | 28 | 29 | -------------------------------------------------------------------------------- /.config/awesome/modules/bling/docs/layouts/layout.md: -------------------------------------------------------------------------------- 1 | ## 📎 Layouts 2 | 3 | Choose layouts from the list below and add them to to your `awful.layouts` list in your `rc.lua`. 4 | 5 | Everyone of them supports multiple master clients and master width factor making them easy to use. 6 | 7 | The mstab layout uses the tab theme from the tabbed module. 8 | 9 | ```lua 10 | bling.layout.mstab 11 | bling.layout.centered 12 | bling.layout.vertical 13 | bling.layout.horizontal 14 | bling.layout.equalarea 15 | bling.layout.deck 16 | ``` 17 | 18 | ### Theme Variables 19 | 20 | ```lua 21 | -- mstab 22 | theme.mstab_bar_disable = false -- disable the tabbar 23 | theme.mstab_bar_ontop = false -- whether you want to allow the bar to be ontop of clients 24 | theme.mstab_dont_resize_slaves = false -- whether the tabbed stack windows should be smaller than the 25 | -- currently focused stack window (set it to true if you use 26 | -- transparent terminals. False if you use shadows on solid ones 27 | theme.mstab_bar_padding = "default" -- how much padding there should be between clients and your tabbar 28 | -- by default it will adjust based on your useless gaps. 29 | -- If you want a custom value. Set it to the number of pixels (int) 30 | theme.mstab_border_radius = 0 -- border radius of the tabbar 31 | theme.mstab_bar_height = 40 -- height of the tabbar 32 | theme.mstab_tabbar_position = "top" -- position of the tabbar (mstab currently does not support left,right) 33 | theme.mstab_tabbar_style = "default" -- style of the tabbar ("default", "boxes" or "modern") 34 | -- defaults to the tabbar_style so only change if you want a 35 | -- different style for mstab and tabbed 36 | ``` 37 | 38 | ### Previews 39 | 40 | #### Mstab (dynamic tabbing layout) 41 | 42 | ![](https://imgur.com/HZRgApE.png) 43 | 44 | *screenshot by [JavaCafe01](https://github.com/JavaCafe01)* 45 | 46 | #### Centered 47 | 48 | ![](https://media.discordapp.net/attachments/769673106842845194/780095998239834142/unknown.png) 49 | 50 | *screenshot by [HeavyRain266](https://github.com/HeavyRain266)* 51 | 52 | #### Equal area 53 | 54 | ![](https://imgur.com/JCFFywv.png) 55 | 56 | *screenshot by [bysmutheye](https://github.com/bysmutheye)* 57 | 58 | #### Deck 59 | 60 | The left area shows the deck layout in action. In this screenshot it is used together with [layout machi](https://github.com/xinhaoyuan/layout-machi) and its sublayout support. 61 | 62 | ![](https://cdn.discordapp.com/attachments/635625954219261982/877957824225894430/unknown.png) 63 | 64 | *screenshot by [JavaCafe01](https://github.com/JavaCafe01)* 65 | 66 | -------------------------------------------------------------------------------- /.config/awesome/modules/bling/docs/module/flash.md: -------------------------------------------------------------------------------- 1 | ## 🔦 Flash Focus 2 | 3 | Flash focus does an opacity animation effect on a client when it is focused. 4 | 5 | 6 | ### Usage 7 | 8 | There are two ways in which you can use this module. You can enable it by calling the `enable()` function: 9 | ```lua 10 | bling.module.flash_focus.enable() 11 | ``` 12 | This connects to the focus signal of a client, which means that the flash focus will activate however you focus the client. 13 | 14 | The other way is to call the function itself like this: `bling.module.flash_focus.flashfocus(someclient)`. This allows you to activate on certain keybinds like so: 15 | ```lua 16 | awful.key({modkey}, "Up", 17 | function() 18 | awful.client.focus.bydirection("up") 19 | bling.module.flash_focus.flashfocus(client.focus) 20 | end, {description = "focus up", group = "client"}) 21 | ``` 22 | 23 | ### Theme Variables 24 | ```lua 25 | theme.flash_focus_start_opacity = 0.6 -- the starting opacity 26 | theme.flash_focus_step = 0.01 -- the step of animation 27 | ``` 28 | 29 | ### Preview 30 | 31 | ![](https://imgur.com/5txYrlV.gif) 32 | 33 | *gif by [JavaCafe01](https://github.com/JavaCafe01)* 34 | -------------------------------------------------------------------------------- /.config/awesome/modules/bling/docs/module/swal.md: -------------------------------------------------------------------------------- 1 | ## 😋 Window Swallowing 2 | 3 | Can your window manager swallow? It probably can... 4 | 5 | ### Usage 6 | 7 | To activate and deactivate window swallowing here are the following functions. If you want to activate it, just call the `start` function once in your `rc.lua`. 8 | ```lua 9 | bling.module.window_swallowing.start() -- activates window swallowing 10 | bling.module.window_swallowing.stop() -- deactivates window swallowing 11 | bling.module.window_swallowing.toggle() -- toggles window swallowing 12 | ``` 13 | 14 | ### Theme Variables 15 | ```lua 16 | theme.parent_filter_list = {"firefox", "Gimp"} -- class names list of parents that should not be swallowed 17 | theme.child_filter_list = { "Dragon" } -- class names list that should not swallow their parents 18 | theme.swallowing_filter = true -- whether the filters above should be active 19 | ``` 20 | 21 | ### Preview 22 | 23 | ![](https://media.discordapp.net/attachments/635625813143978012/769180910683684864/20-10-23-14-40-32.gif) 24 | 25 | *gif by [Nooo37](https://github.com/Nooo37)* 26 | -------------------------------------------------------------------------------- /.config/awesome/modules/bling/docs/module/twall.md: -------------------------------------------------------------------------------- 1 | ## 🏬 Tiled Wallpaper 2 | 3 | ### Usage 4 | 5 | The function to set an automatically created tiled wallpaper can be called the following way (you don't need to set every option in the table): 6 | ```lua 7 | awful.screen.connect_for_each_screen(function(s) -- that way the wallpaper is applied to every screen 8 | bling.module.tiled_wallpaper("x", s, { -- call the actual function ("x" is the string that will be tiled) 9 | fg = "#ff0000", -- define the foreground color 10 | bg = "#00ffff", -- define the background color 11 | offset_y = 25, -- set a y offset 12 | offset_x = 25, -- set a x offset 13 | font = "Hack", -- set the font (without the size) 14 | font_size = 14, -- set the font size 15 | padding = 100, -- set padding (default is 100) 16 | zickzack = true -- rectangular pattern or criss cross 17 | }) 18 | end) 19 | ``` 20 | 21 | ### Preview 22 | 23 | ![](https://media.discordapp.net/attachments/702548913999314964/773887721294135296/tiled-wallpapers.png?width=1920&height=1080) 24 | 25 | *screenshots by [Nooo37](https://github.com/Nooo37)* 26 | 27 | -------------------------------------------------------------------------------- /.config/awesome/modules/bling/helpers/filesystem.lua: -------------------------------------------------------------------------------- 1 | local Gio = require("lgi").Gio 2 | local awful = require("awful") 3 | local string = string 4 | 5 | local _filesystem = {} 6 | 7 | --- Get a list of files from a given directory. 8 | -- @string path The directory to search. 9 | -- @tparam[opt] table exts Specific extensions to limit the search to. eg:`{ "jpg", "png" }` 10 | -- If ommited, all files are considered. 11 | -- @bool[opt=false] recursive List files from subdirectories 12 | -- @staticfct bling.helpers.filesystem.get_random_file_from_dir 13 | function _filesystem.list_directory_files(path, exts, recursive) 14 | recursive = recursive or false 15 | local files, valid_exts = {}, {} 16 | 17 | -- Transforms { "jpg", ... } into { [jpg] = #, ... } 18 | if exts then 19 | for i, j in ipairs(exts) do 20 | valid_exts[j:lower()] = i 21 | end 22 | end 23 | 24 | -- Build a table of files from the path with the required extensions 25 | local file_list = Gio.File.new_for_path(path):enumerate_children( 26 | "standard::*", 27 | 0 28 | ) 29 | if file_list then 30 | for file in function() 31 | return file_list:next_file() 32 | end do 33 | local file_type = file:get_file_type() 34 | if file_type == "REGULAR" then 35 | local file_name = file:get_display_name() 36 | if 37 | not exts 38 | or valid_exts[file_name:lower():match(".+%.(.*)$") or ""] 39 | then 40 | table.insert(files, file_name) 41 | end 42 | elseif recursive and file_type == "DIRECTORY" then 43 | local file_name = file:get_display_name() 44 | files = gears.table.join( 45 | files, 46 | list_directory_files(file_name, exts, recursive) 47 | ) 48 | end 49 | end 50 | end 51 | 52 | return files 53 | end 54 | 55 | function _filesystem.save_image_async_curl(url, filepath, callback) 56 | awful.spawn.with_line_callback(string.format("curl -L -s %s -o %s", url, filepath), 57 | { 58 | exit=callback 59 | }) 60 | end 61 | 62 | return _filesystem 63 | -------------------------------------------------------------------------------- /.config/awesome/modules/bling/helpers/init.lua: -------------------------------------------------------------------------------- 1 | return { 2 | client = require(... .. ".client"), 3 | color = require(... .. ".color"), 4 | filesystem = require(... .. ".filesystem"), 5 | shape = require(... .. ".shape"), 6 | time = require(... .. ".time"), 7 | } 8 | -------------------------------------------------------------------------------- /.config/awesome/modules/bling/helpers/shape.lua: -------------------------------------------------------------------------------- 1 | local gears = require("gears") 2 | 3 | local shape = {} 4 | 5 | -- Create rounded rectangle shape (in one line) 6 | 7 | function shape.rrect(radius) 8 | return function(cr, width, height) 9 | gears.shape.rounded_rect(cr, width, height, radius) 10 | end 11 | end 12 | 13 | -- Create partially rounded rect 14 | 15 | function shape.prrect(radius, tl, tr, br, bl) 16 | return function(cr, width, height) 17 | gears.shape.partially_rounded_rect( 18 | cr, 19 | width, 20 | height, 21 | tl, 22 | tr, 23 | br, 24 | bl, 25 | radius 26 | ) 27 | end 28 | end 29 | 30 | return shape 31 | -------------------------------------------------------------------------------- /.config/awesome/modules/bling/helpers/time.lua: -------------------------------------------------------------------------------- 1 | local time = {} 2 | 3 | --- Parse a time string to seconds (from midnight) 4 | -- 5 | -- @string time The time (`HH:MM:SS`) 6 | -- @treturn int The number of seconds since 00:00:00 7 | function time.hhmmss_to_seconds(time) 8 | hour_sec = tonumber(string.sub(time, 1, 2)) * 3600 9 | min_sec = tonumber(string.sub(time, 4, 5)) * 60 10 | get_sec = tonumber(string.sub(time, 7, 8)) 11 | return (hour_sec + min_sec + get_sec) 12 | end 13 | 14 | --- Get time difference in seconds. 15 | -- 16 | -- @tparam string base The time to compare from (`HH:MM:SS`). 17 | -- @tparam string base The time to compare to (`HH:MM:SS`). 18 | -- @treturn int Number of seconds between the two times. 19 | function time.time_diff(base, compare) 20 | local diff = time.hhmmss_to_seconds(base) - time.hhmmss_to_seconds(compare) 21 | return diff 22 | end 23 | 24 | return time 25 | -------------------------------------------------------------------------------- /.config/awesome/modules/bling/icons/layouts/centered.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NotAShelf/dotfiles/9c40e15577251d9a480ddf6a530eb25929c6f2ba/.config/awesome/modules/bling/icons/layouts/centered.png -------------------------------------------------------------------------------- /.config/awesome/modules/bling/icons/layouts/deck.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NotAShelf/dotfiles/9c40e15577251d9a480ddf6a530eb25929c6f2ba/.config/awesome/modules/bling/icons/layouts/deck.png -------------------------------------------------------------------------------- /.config/awesome/modules/bling/icons/layouts/equalarea.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NotAShelf/dotfiles/9c40e15577251d9a480ddf6a530eb25929c6f2ba/.config/awesome/modules/bling/icons/layouts/equalarea.png -------------------------------------------------------------------------------- /.config/awesome/modules/bling/icons/layouts/horizontal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NotAShelf/dotfiles/9c40e15577251d9a480ddf6a530eb25929c6f2ba/.config/awesome/modules/bling/icons/layouts/horizontal.png -------------------------------------------------------------------------------- /.config/awesome/modules/bling/icons/layouts/mstab.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NotAShelf/dotfiles/9c40e15577251d9a480ddf6a530eb25929c6f2ba/.config/awesome/modules/bling/icons/layouts/mstab.png -------------------------------------------------------------------------------- /.config/awesome/modules/bling/icons/layouts/vertical.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NotAShelf/dotfiles/9c40e15577251d9a480ddf6a530eb25929c6f2ba/.config/awesome/modules/bling/icons/layouts/vertical.png -------------------------------------------------------------------------------- /.config/awesome/modules/bling/images/bling_banner-2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NotAShelf/dotfiles/9c40e15577251d9a480ddf6a530eb25929c6f2ba/.config/awesome/modules/bling/images/bling_banner-2x.png -------------------------------------------------------------------------------- /.config/awesome/modules/bling/images/bling_banner.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NotAShelf/dotfiles/9c40e15577251d9a480ddf6a530eb25929c6f2ba/.config/awesome/modules/bling/images/bling_banner.png -------------------------------------------------------------------------------- /.config/awesome/modules/bling/init.lua: -------------------------------------------------------------------------------- 1 | --[[ 2 | Bling 3 | Layouts, widgets and utilities for Awesome WM 4 | --]] 5 | return { 6 | layout = require(... .. ".layout"), 7 | module = require(... .. ".module"), 8 | helpers = require(... .. ".helpers"), 9 | signal = require(... .. ".signal"), 10 | widget = require(... .. ".widget"), 11 | } 12 | -------------------------------------------------------------------------------- /.config/awesome/modules/bling/layout/centered.lua: -------------------------------------------------------------------------------- 1 | local awful = require("awful") 2 | local math = math 3 | 4 | local mylayout = {} 5 | 6 | mylayout.name = "centered" 7 | 8 | function mylayout.arrange(p) 9 | local area = p.workarea 10 | local t = p.tag or screen[p.screen].selected_tag 11 | local nmaster = math.min(t.master_count, #p.clients) 12 | local nslaves = #p.clients - nmaster 13 | 14 | local master_area_width = area.width * t.master_width_factor 15 | if t.master_count == 0 then master_area_width = 0 end 16 | local slave_width = 0.5 * (area.width - master_area_width) 17 | local master_area_x = area.x + slave_width 18 | 19 | 20 | -- Special case: few slaves -> make masters take more space - unless requested otherwise! 21 | if nslaves < 2 and t.master_fill_policy ~= "master_width_factor" then 22 | master_area_x = area.x 23 | 24 | if nslaves == 1 then 25 | slave_width = area.width - master_area_width 26 | else 27 | master_area_width = area.width 28 | end 29 | end 30 | 31 | 32 | -- iterate through masters 33 | for idx = 1, nmaster do 34 | local c = p.clients[idx] 35 | local g 36 | g = { 37 | x = master_area_x, 38 | y = area.y + (nmaster - idx) * (area.height / nmaster), 39 | width = master_area_width, 40 | height = area.height / nmaster, 41 | } 42 | p.geometries[c] = g 43 | end 44 | 45 | 46 | -- iterate through slaves 47 | local number_of_left_sided_slaves = math.floor(nslaves / 2) 48 | local number_of_right_sided_slaves = nslaves - number_of_left_sided_slaves 49 | local left_iterator = 0 50 | local right_iterator = 0 51 | 52 | for idx = 1, nslaves do 53 | local c = p.clients[idx + nmaster] 54 | local g 55 | if idx % 2 == 0 then 56 | g = { 57 | x = area.x, 58 | y = area.y 59 | + left_iterator 60 | * (area.height / number_of_left_sided_slaves), 61 | width = slave_width, 62 | height = area.height / number_of_left_sided_slaves, 63 | } 64 | left_iterator = left_iterator + 1 65 | else 66 | g = { 67 | x = master_area_x + master_area_width, 68 | y = area.y 69 | + right_iterator 70 | * (area.height / number_of_right_sided_slaves), 71 | width = slave_width, 72 | height = area.height / number_of_right_sided_slaves, 73 | } 74 | right_iterator = right_iterator + 1 75 | end 76 | p.geometries[c] = g 77 | end 78 | end 79 | 80 | return mylayout 81 | -------------------------------------------------------------------------------- /.config/awesome/modules/bling/layout/deck.lua: -------------------------------------------------------------------------------- 1 | local mylayout = {} 2 | 3 | mylayout.name = "deck" 4 | 5 | function mylayout.arrange(p) 6 | local area = p.workarea 7 | local t = p.tag or screen[p.screen].selected_tag 8 | local client_count = #p.clients 9 | 10 | if client_count == 1 then 11 | local c = p.clients[1] 12 | local g = { 13 | x = area.x, 14 | y = area.y, 15 | width = area.width, 16 | height = area.height, 17 | } 18 | p.geometries[c] = g 19 | return 20 | end 21 | 22 | local xoffset = area.width * 0.1 / (client_count - 1) 23 | local yoffset = area.height * 0.1 / (client_count - 1) 24 | 25 | for idx = 1, client_count do 26 | local c = p.clients[idx] 27 | local g = { 28 | x = area.x + (idx - 1) * xoffset, 29 | y = area.y + (idx - 1) * yoffset, 30 | width = area.width - (xoffset * (client_count - 1)), 31 | height = area.height - (yoffset * (client_count - 1)), 32 | } 33 | p.geometries[c] = g 34 | end 35 | end 36 | 37 | return mylayout 38 | -------------------------------------------------------------------------------- /.config/awesome/modules/bling/layout/equalarea.lua: -------------------------------------------------------------------------------- 1 | local math = math 2 | local screen = screen 3 | local mylayout = {} 4 | mylayout.name = "equalarea" 5 | 6 | local function divide(p, g, low, high, cls, mwfact, mcount) 7 | if low == high then 8 | p.geometries[cls[low]] = g 9 | else 10 | local masters = math.max(0, math.min(mcount, high) - low + 1) 11 | local numblock = high - low + 1 12 | local slaves = numblock - masters 13 | local smalldiv 14 | if numblock > 5 and (numblock % 5) == 0 then 15 | smalldiv = math.floor(numblock / 5) 16 | else 17 | if (numblock % 3) == 0 then 18 | smalldiv = math.floor(numblock / 3) 19 | else 20 | smalldiv = math.floor(numblock / 2) 21 | end 22 | end 23 | local bigdiv = numblock - smalldiv 24 | local smallmasters = math.min(masters, smalldiv) 25 | local bigmasters = masters - smallmasters 26 | local smallg = {} 27 | local bigg = {} 28 | smallg.x = g.x 29 | smallg.y = g.y 30 | if g.width > (g.height * 1.3) then 31 | smallg.height = g.height 32 | bigg.height = g.height 33 | bigg.width = math.floor( 34 | g.width 35 | * (bigmasters * (mwfact - 1) + bigdiv) 36 | / (slaves + mwfact * masters) 37 | ) 38 | smallg.width = g.width - bigg.width 39 | bigg.y = g.y 40 | bigg.x = g.x + smallg.width 41 | else 42 | smallg.width = g.width 43 | bigg.width = g.width 44 | bigg.height = math.floor( 45 | g.height 46 | * (bigmasters * (mwfact - 1) + bigdiv) 47 | / (slaves + mwfact * masters) 48 | ) 49 | smallg.height = g.height - bigg.height 50 | bigg.x = g.x 51 | bigg.y = g.y + smallg.height 52 | end 53 | divide(p, smallg, low, high - bigdiv, cls, mwfact, mcount) 54 | divide(p, bigg, low + smalldiv, high, cls, mwfact, mcount) 55 | end 56 | return 57 | end 58 | 59 | function mylayout.arrange(p) 60 | local t = p.tag or screen[p.screen].selected_tag 61 | local wa = p.workarea 62 | local cls = p.clients 63 | 64 | if #cls == 0 then 65 | return 66 | end 67 | local mwfact = t.master_width_factor * 2 68 | local mcount = t.master_count 69 | local g = {} 70 | g.height = wa.height 71 | g.width = wa.width 72 | g.x = wa.x 73 | g.y = wa.y 74 | divide(p, g, 1, #cls, cls, mwfact, mcount) 75 | end 76 | 77 | return mylayout 78 | -------------------------------------------------------------------------------- /.config/awesome/modules/bling/layout/horizontal.lua: -------------------------------------------------------------------------------- 1 | local math = math 2 | 3 | local mylayout = {} 4 | 5 | mylayout.name = "horizontal" 6 | 7 | function mylayout.arrange(p) 8 | local area = p.workarea 9 | local t = p.tag or screen[p.screen].selected_tag 10 | local mwfact = t.master_width_factor 11 | local nmaster = math.min(t.master_count, #p.clients) 12 | local nslaves = #p.clients - nmaster 13 | 14 | local master_area_height = area.height * mwfact 15 | local slave_area_height = area.height - master_area_height 16 | 17 | -- Special case: no slaves 18 | if nslaves == 0 then 19 | master_area_height = area.height 20 | slave_area_height = 0 21 | end 22 | 23 | -- Special case: no masters 24 | if nmaster == 0 then 25 | master_area_height = 0 26 | slave_area_height = area.height 27 | end 28 | 29 | -- itearte through masters 30 | for idx = 1, nmaster do 31 | local c = p.clients[idx] 32 | local g = { 33 | x = area.x + (idx - 1) * (area.width / nmaster), 34 | y = area.y, 35 | width = area.width / nmaster, 36 | height = master_area_height, 37 | } 38 | p.geometries[c] = g 39 | end 40 | 41 | -- iterate through slaves 42 | for idx = 1, nslaves do 43 | local c = p.clients[idx + nmaster] 44 | local g = { 45 | x = area.x, 46 | y = area.y 47 | + master_area_height 48 | + (idx - 1) * (slave_area_height / nslaves), 49 | width = area.width, 50 | height = slave_area_height / nslaves, 51 | } 52 | p.geometries[c] = g 53 | end 54 | end 55 | 56 | return mylayout 57 | -------------------------------------------------------------------------------- /.config/awesome/modules/bling/layout/init.lua: -------------------------------------------------------------------------------- 1 | local beautiful = require("beautiful") 2 | local gears = require("gears") 3 | 4 | local M = {} 5 | local relative_lua_path = tostring(...) 6 | 7 | local function get_layout_icon_path(name) 8 | local relative_icon_path = relative_lua_path 9 | :match("^.*bling"):gsub("%.", "/") 10 | .. "/icons/layouts/" .. name .. ".png" 11 | 12 | for p in package.path:gmatch('([^;]+)') do 13 | p = p:gsub("?.*", "") 14 | local absolute_icon_path = p .. relative_icon_path 15 | if gears.filesystem.file_readable(absolute_icon_path) then 16 | return absolute_icon_path 17 | end 18 | end 19 | end 20 | 21 | local function get_icon(icon_raw) 22 | if icon_raw ~= nil then 23 | return gears.color.recolor_image(icon_raw, beautiful.fg_normal) 24 | else 25 | return nil 26 | end 27 | end 28 | 29 | local layouts = { 30 | "mstab", 31 | "vertical", 32 | "horizontal", 33 | "centered", 34 | "equalarea", 35 | "deck" 36 | } 37 | 38 | for _, layout_name in ipairs(layouts) do 39 | local icon_raw = get_layout_icon_path(layout_name) 40 | if beautiful["layout_" .. layout_name] == nil then 41 | beautiful["layout_" .. layout_name] = get_icon(icon_raw) 42 | end 43 | M[layout_name] = require(... .. "." .. layout_name) 44 | end 45 | 46 | return M 47 | -------------------------------------------------------------------------------- /.config/awesome/modules/bling/layout/vertical.lua: -------------------------------------------------------------------------------- 1 | local math = math 2 | 3 | local mylayout = {} 4 | 5 | mylayout.name = "vertical" 6 | 7 | function mylayout.arrange(p) 8 | local area = p.workarea 9 | local t = p.tag or screen[p.screen].selected_tag 10 | local mwfact = t.master_width_factor 11 | local nmaster = math.min(t.master_count, #p.clients) 12 | local nslaves = #p.clients - nmaster 13 | 14 | local master_area_width = area.width * mwfact 15 | local slave_area_width = area.width - master_area_width 16 | 17 | -- Special case: no slaves 18 | if nslaves == 0 then 19 | master_area_width = area.width 20 | slave_area_width = 0 21 | end 22 | 23 | -- Special case: no masters 24 | if nmaster == 0 then 25 | master_area_width = 0 26 | slave_area_width = area.width 27 | end 28 | 29 | -- iterate through masters 30 | for idx = 1, nmaster do 31 | local c = p.clients[idx] 32 | local g = { 33 | x = area.x, 34 | y = area.y + (idx - 1) * (area.height / nmaster), 35 | width = master_area_width, 36 | height = area.height / nmaster, 37 | } 38 | p.geometries[c] = g 39 | end 40 | 41 | -- itearte through slaves 42 | for idx = 1, nslaves do 43 | local c = p.clients[idx + nmaster] 44 | local g = { 45 | x = area.x 46 | + master_area_width 47 | + (idx - 1) * (slave_area_width / nslaves), 48 | y = area.y, 49 | width = slave_area_width / nslaves, 50 | height = area.height, 51 | } 52 | p.geometries[c] = g 53 | end 54 | end 55 | 56 | return mylayout 57 | -------------------------------------------------------------------------------- /.config/awesome/modules/bling/module/flash_focus.lua: -------------------------------------------------------------------------------- 1 | local gears = require("gears") 2 | local beautiful = require("beautiful") 3 | 4 | local op = beautiful.flash_focus_start_opacity or 0.6 5 | local stp = beautiful.flash_focus_step or 0.01 6 | 7 | local flashfocus = function(c) 8 | if c and #c.screen.clients > 1 then 9 | c.opacity = op 10 | local q = op 11 | local g = gears.timer({ 12 | timeout = stp, 13 | call_now = false, 14 | autostart = true, 15 | }) 16 | 17 | g:connect_signal("timeout", function() 18 | if not c.valid then 19 | return 20 | end 21 | if q >= 1 then 22 | c.opacity = 1 23 | g:stop() 24 | else 25 | c.opacity = q 26 | q = q + stp 27 | end 28 | end) 29 | end 30 | end 31 | 32 | local enable = function() 33 | client.connect_signal("focus", flashfocus) 34 | end 35 | local disable = function() 36 | client.disconnect_signal("focus", flashfocus) 37 | end 38 | 39 | return { enable = enable, disable = disable, flashfocus = flashfocus } 40 | -------------------------------------------------------------------------------- /.config/awesome/modules/bling/module/init.lua: -------------------------------------------------------------------------------- 1 | return { 2 | window_swallowing = require(... .. ".window_swallowing"), 3 | tiled_wallpaper = require(... .. ".tiled_wallpaper"), 4 | wallpaper = require(... .. ".wallpaper"), 5 | flash_focus = require(... .. ".flash_focus"), 6 | tabbed = require(... .. ".tabbed"), 7 | scratchpad = require(... .. ".scratchpad"), 8 | } 9 | -------------------------------------------------------------------------------- /.config/awesome/modules/bling/module/tiled_wallpaper.lua: -------------------------------------------------------------------------------- 1 | --[[ 2 | This module makes use of cairo surfaces 3 | For documentation take a look at the C docs: 4 | https://www.cairographics.org/ 5 | They can be applied to lua by changing the naming conventions 6 | and adjusting for the missing namespaces (and classes) 7 | for example: 8 | cairo_rectangle(cr, 1, 1, 1, 1) in C would be written as 9 | cr:rectangle(1, 1, 1, 1) in lua 10 | and 11 | cairo_fill(cr) in C would be written as 12 | cr:fill() in lua 13 | --]] 14 | 15 | local cairo = require("lgi").cairo 16 | local gears = require("gears") 17 | 18 | function create_tiled_wallpaper(str, s, args_table) 19 | -- user input 20 | args_table = args_table or {} 21 | local fg = args_table.fg or "#ff0000" 22 | local bg = args_table.bg or "#00ffff" 23 | local offset_x = args_table.offset_x 24 | local offset_y = args_table.offset_y 25 | local font = args_table.font or "Hack" 26 | local font_size = tonumber(args_table.font_size) or 16 27 | local zickzack_bool = args_table.zickzack or false 28 | local padding = args_table.padding or 100 29 | 30 | -- create cairo image wallpaper 31 | local img = cairo.ImageSurface(cairo.Format.RGB24, padding, padding) 32 | cr = cairo.Context(img) 33 | 34 | cr:set_source(gears.color(bg)) 35 | cr:paint() 36 | 37 | cr:set_source(gears.color(fg)) 38 | 39 | cr:set_font_size(font_size) 40 | cr:select_font_face(font) 41 | 42 | if zickzack_bool then 43 | cr:set_source(gears.color(fg)) 44 | cr:move_to(padding / 2 + font_size, padding / 2 + font_size) 45 | cr:show_text(str) 46 | end 47 | 48 | cr:set_source(gears.color(fg)) 49 | cr:move_to(font_size, font_size) 50 | cr:show_text(str) 51 | 52 | -- tile cairo image 53 | gears.wallpaper.tiled(img, s, { x = offset_x, y = offset_y }) 54 | end 55 | 56 | return create_tiled_wallpaper 57 | -------------------------------------------------------------------------------- /.config/awesome/modules/bling/signal/init.lua: -------------------------------------------------------------------------------- 1 | return { 2 | playerctl = require(... .. ".playerctl"), 3 | } 4 | -------------------------------------------------------------------------------- /.config/awesome/modules/bling/signal/playerctl/init.lua: -------------------------------------------------------------------------------- 1 | local awful = require("awful") 2 | local gtimer = require("gears.timer") 3 | local beautiful = require("beautiful") 4 | local naughty = require("naughty") 5 | 6 | -- Use CLI backend as default as it is supported on most if not all systems 7 | local backend_config = beautiful.playerctl_backend or "playerctl_cli" 8 | local backends = { 9 | playerctl_cli = require(... .. ".playerctl_cli"), 10 | playerctl_lib = require(... .. ".playerctl_lib"), 11 | } 12 | 13 | local backend = nil 14 | 15 | local function enable_wrapper(args) 16 | local open = naughty.action { name = "Open" } 17 | 18 | open:connect_signal("invoked", function() 19 | awful.spawn("xdg-open https://blingcorp.github.io/bling/#/signals/pctl") 20 | end) 21 | 22 | gtimer.delayed_call(function() 23 | naughty.notify({ 24 | title = "Bling Error", 25 | text = "Global signals are deprecated! Please take a look at the playerctl documentation.", 26 | app_name = "Bling Error", 27 | app_icon = "system-error", 28 | actions = { open } 29 | }) 30 | end) 31 | 32 | backend_config = (args and args.backend) or backend_config 33 | backend = backends[backend_config](args) 34 | return backend 35 | end 36 | 37 | local function disable_wrapper() 38 | backend:disable() 39 | end 40 | 41 | return { 42 | lib = backends.playerctl_lib, 43 | cli = backends.playerctl_cli, 44 | enable = enable_wrapper, 45 | disable = disable_wrapper 46 | } -------------------------------------------------------------------------------- /.config/awesome/modules/bling/widget/init.lua: -------------------------------------------------------------------------------- 1 | return { 2 | tag_preview = require(... .. ".tag_preview"), 3 | task_preview = require(... .. ".task_preview"), 4 | window_switcher = require(... .. ".window_switcher"), 5 | tabbed_misc = require(... .. ".tabbed_misc"), 6 | app_launcher = require(... .. ".app_launcher"), 7 | } 8 | -------------------------------------------------------------------------------- /.config/awesome/modules/bling/widget/tabbar/boxes.lua: -------------------------------------------------------------------------------- 1 | local awful = require("awful") 2 | local gears = require("gears") 3 | local wibox = require("wibox") 4 | 5 | local beautiful = require("beautiful") 6 | 7 | local bg_normal = beautiful.tabbar_bg_normal or beautiful.bg_normal or "#ffffff" 8 | local fg_normal = beautiful.tabbar_fg_normal or beautiful.fg_normal or "#000000" 9 | local bg_focus = beautiful.tabbar_bg_focus or beautiful.bg_focus or "#000000" 10 | local fg_focus = beautiful.tabbar_fg_focus or beautiful.fg_focus or "#ffffff" 11 | local bg_focus_inactive = beautiful.tabbar_bg_focus_inactive or bg_focus 12 | local fg_focus_inactive = beautiful.tabbar_fg_focus_inactive or fg_focus 13 | local bg_normal_inactive = beautiful.tabbar_bg_normal_inactive or bg_normal 14 | local fg_normal_inactive = beautiful.tabbar_fg_normal_inactive or fg_normal 15 | local font = beautiful.tabbar_font or beautiful.font or "Hack 15" 16 | local size = beautiful.tabbar_size or 40 17 | local position = beautiful.tabbar_position or "bottom" 18 | 19 | local function create(c, focused_bool, buttons, inactive_bool) 20 | local bg_temp = inactive_bool and bg_normal_inactive or bg_normal 21 | local fg_temp = inactive_bool and fg_normal_inactive or fg_normal 22 | if focused_bool then 23 | bg_temp = inactive_bool and bg_focus_inactive or bg_focus 24 | fg_temp = inactive_bool and fg_focus_inactive or fg_focus 25 | end 26 | local wid_temp = wibox.widget({ 27 | { 28 | { 29 | awful.widget.clienticon(c), 30 | left = 10, 31 | right = 10, 32 | bottom = 10, 33 | top = 10, 34 | widget = wibox.container.margin(), 35 | }, 36 | widget = wibox.container.place(), 37 | }, 38 | buttons = buttons, 39 | bg = bg_temp, 40 | widget = wibox.container.background(), 41 | }) 42 | return wid_temp 43 | end 44 | 45 | local layout = wibox.layout.fixed.horizontal 46 | if position == "left" or position == "right" then 47 | layout = wibox.layout.fixed.vertical 48 | end 49 | 50 | return { 51 | layout = layout, 52 | create = create, 53 | position = position, 54 | size = size, 55 | bg_normal = bg_normal, 56 | bg_focus = bg_normal, 57 | } 58 | -------------------------------------------------------------------------------- /.config/awesome/modules/bling/widget/tabbar/default.lua: -------------------------------------------------------------------------------- 1 | local gears = require("gears") 2 | local wibox = require("wibox") 3 | 4 | local beautiful = require("beautiful") 5 | 6 | local bg_normal = beautiful.tabbar_bg_normal or beautiful.bg_normal or "#ffffff" 7 | local fg_normal = beautiful.tabbar_fg_normal or beautiful.fg_normal or "#000000" 8 | local bg_focus = beautiful.tabbar_bg_focus or beautiful.bg_focus or "#000000" 9 | local fg_focus = beautiful.tabbar_fg_focus or beautiful.fg_focus or "#ffffff" 10 | local bg_focus_inactive = beautiful.tabbar_bg_focus_inactive or bg_focus 11 | local fg_focus_inactive = beautiful.tabbar_fg_focus_inactive or fg_focus 12 | local bg_normal_inactive = beautiful.tabbar_bg_normal_inactive or bg_normal 13 | local fg_normal_inactive = beautiful.tabbar_fg_normal_inactive or fg_normal 14 | local font = beautiful.tabbar_font or beautiful.font or "Hack 15" 15 | local size = beautiful.tabbar_size or 20 16 | local position = beautiful.tabbar_position or "top" 17 | 18 | local function create(c, focused_bool, buttons, inactive_bool) 19 | local flexlist = wibox.layout.flex.horizontal() 20 | local title_temp = c.name or c.class or "-" 21 | local bg_temp = inactive_bool and bg_normal_inactive or bg_normal 22 | local fg_temp = inactive_bool and fg_normal_inactive or fg_normal 23 | if focused_bool then 24 | bg_temp = inactive_bool and bg_focus_inactive or bg_focus 25 | fg_temp = inactive_bool and fg_focus_inactive or fg_focus 26 | end 27 | local text_temp = wibox.widget.textbox() 28 | text_temp.align = "center" 29 | text_temp.valign = "center" 30 | text_temp.font = font 31 | text_temp.markup = "" 34 | .. title_temp 35 | .. "" 36 | c:connect_signal("property::name", function(_) 37 | local title_temp = c.name or c.class or "-" 38 | text_temp.markup = "" 41 | .. title_temp 42 | .. "" 43 | end) 44 | local wid_temp = wibox.widget({ 45 | text_temp, 46 | buttons = buttons, 47 | bg = bg_temp, 48 | widget = wibox.container.background(), 49 | }) 50 | return wid_temp 51 | end 52 | 53 | return { 54 | layout = wibox.layout.flex.horizontal, 55 | create = create, 56 | position = position, 57 | size = size, 58 | bg_normal = bg_normal, 59 | bg_focus = bg_focus, 60 | } 61 | -------------------------------------------------------------------------------- /.config/awesome/modules/bling/widget/tabbed_misc/custom_tasklist.lua: -------------------------------------------------------------------------------- 1 | local wibox = require("wibox") 2 | local awful = require("awful") 3 | local gears = require("gears") 4 | local beautiful = require("beautiful") 5 | local dpi = require("beautiful.xresources").apply_dpi 6 | 7 | local function tabobj_support(self, c, index, clients) 8 | -- Self is the background widget in this context 9 | if not c.bling_tabbed and #c.bling_tabbed.clients > 1 then 10 | return 11 | end 12 | 13 | local group = c.bling_tabbed 14 | 15 | -- TODO: Allow customization here 16 | local layout_v = wibox.widget { 17 | vertical_spacing = dpi(2), 18 | horizontal_spacing = dpi(2), 19 | layout = wibox.layout.grid.horizontal, 20 | forced_num_rows = 2, 21 | forced_num_cols = 2, 22 | homogeneous = true 23 | } 24 | 25 | local wrapper = wibox.widget({ 26 | layout_v, 27 | id = "click_role", 28 | widget = wibox.container.margin, 29 | margins = dpi(5), 30 | }) 31 | 32 | -- To get the ball rolling. 33 | for idx, c in ipairs(group.clients) do 34 | if not (c and c.icon) then goto skip end 35 | 36 | -- Add to the last layout 37 | layout_v:add(wibox.widget { 38 | { 39 | widget = awful.widget.clienticon, 40 | client = c 41 | }, 42 | widget = wibox.container.constraint, 43 | width = dpi(24), 44 | height = dpi(24) 45 | }) 46 | ::skip:: 47 | end 48 | self.widget = wrapper 49 | end 50 | 51 | return tabobj_support 52 | -------------------------------------------------------------------------------- /.config/awesome/modules/bling/widget/tabbed_misc/init.lua: -------------------------------------------------------------------------------- 1 | return { 2 | titlebar_indicator = require( 3 | tostring(...):match(".*bling") 4 | .. ".widget.tabbed_misc.titlebar_indicator" 5 | ), 6 | custom_tasklist = require( 7 | tostring(...):match(".*bling") .. ".widget.tabbed_misc.custom_tasklist" 8 | ), 9 | } 10 | -------------------------------------------------------------------------------- /.config/awesome/modules/icon_customizer/README.md: -------------------------------------------------------------------------------- 1 | icon_customizer for awesomewm 2 | ================== 3 | 4 |

5 | 6 |

7 | 8 | Features: 9 | ------------ 10 | - Define your own icons for applications 11 | - Set custom icons for terminal applications based on client title 12 | 13 | Prerequisite: 14 | ------------ 15 | Dynamic terminal icons (as shown on gif) require you to have a shell-terminal-stack that supports dynamic titles (the title of the client (`WM_NAME`) changes based on the running app or pwd). 16 | Not every terminal or shell supports dynamic titles or is configured correctly out of the box. 17 | 18 | Minimal configurations are provided for `bash` and `zsh`: 19 | 20 | ``` 21 | echo "source ~/.config/awesome/icon_customizer/dynamictitles.bash" >> ~/.bashrc 22 | echo "source ~/.config/awesome/icon_customizer/dynamictitles.zsh" >> ~/.zshrc 23 | ``` 24 | 25 | 26 | Installation: 27 | ------------ 28 | 29 | Clone the repo and import the module: 30 | 31 | 1. `git clone https://github.com/intrntbrn/icon_customizer ~/.config/awesome/icon_customizer` 32 | 1. `echo "require('icon_customizer'){ delay = 0.2 }" >> ~/.config/awesome/rc.lua` 33 | 34 | Example Configuration: 35 | ------------ 36 | Define your custom icons in `theme.lua`: 37 | ``` 38 | local icon_dir = os.getenv("HOME") .. "/.config/awesome/icons/" 39 | theme.ic_icons = { 40 | ["Chromium"] = icon_dir .. "chromium.png", 41 | ["firefox"] = icon_dir .. "firefox.png", 42 | ["Zathura"] = icon_dir .. "zathura.png", 43 | ["Steam"] = icon_dir .. "steam.png", 44 | ["discord"] = icon_dir .. "discord.png", 45 | ["Alacritty"] = icon_dir .. "terminal.png", 46 | ["kitty"] = icon_dir .. "terminal.png" 47 | } 48 | 49 | theme.ic_dynamic_classes = { "Alacritty", "kitty", "St", "URxvt", "Termite" } 50 | theme.ic_dynamic_icons = { 51 | ["- NVIM$"] = icon_dir .. "vim.png", 52 | ["- VIM$"] = icon_dir .. "vim.png", 53 | ["- TMUX$"] = icon_dir .. "tmux.png", 54 | ["^ranger$"] = icon_dir .. "file-manager.png", 55 | ["^spt$"] = icon_dir .. "spotify.png", 56 | ["^googler$"] = icon_dir .. "google.png", 57 | ["- rtv"] = icon_dir .. "reddit.png" 58 | } 59 | 60 | theme.ic_fallback_icon = icon_dir .. "default_icon.png" 61 | 62 | ``` 63 | 64 | Get application class names or titles by using `xprop`. 65 | 66 | Limitations: 67 | ------------ 68 | Applications can still overwrite your custom icon. 69 | 70 | Related Work: 71 | ------------ 72 | 73 | * icons: [numix circle](https://github.com/numixproject/numix-icon-theme-circle) 74 | * awesomewm taglist: [fancy_taglist](https://gist.github.com/intrntbrn/08af1058d887f4d10a464c6f272ceafa) 75 | -------------------------------------------------------------------------------- /.config/awesome/modules/icon_customizer/dynamictitles.bash: -------------------------------------------------------------------------------- 1 | trap 'echo -ne "\033]0;$BASH_COMMAND\007"' DEBUG 2 | function show_name(){ 3 | if [[ -n "$BASH_COMMAND" ]]; 4 | then 5 | echo -en "\033]0;`pwd`\007"; 6 | else 7 | echo -en "\033]0;$BASH_COMMAND\007"; 8 | fi 9 | } 10 | export PROMPT_COMMAND='show_name' 11 | -------------------------------------------------------------------------------- /.config/awesome/rc.lua: -------------------------------------------------------------------------------- 1 | -- awesome_mode: api-level=4:screen=on 2 | local awful = require('awful') 3 | -- load luarocks if installed 4 | pcall(require, 'luarocks.loader') 5 | 6 | -- load theme 7 | local beautiful = require 'beautiful' 8 | beautiful.init('~/.config/awesome/theme/init.lua') 9 | 10 | require "modules.icon_customizer" { delay = 0 } 11 | 12 | -- load key and mouse bindings 13 | require 'bindings' 14 | 15 | -- load rules 16 | require 'rules' 17 | -- load signals 18 | require 'signals' 19 | 20 | require 'ui' 21 | 22 | require 'misc.bling' 23 | awful.spawn.with_shell('~/.awesome/autostart.sh') 24 | -------------------------------------------------------------------------------- /.config/awesome/rules/init.lua: -------------------------------------------------------------------------------- 1 | local awful = require 'awful' 2 | local ruled = require 'ruled' 3 | 4 | ruled.client.connect_signal('request::rules', function() 5 | -- All clients will match this rule. 6 | ruled.client.append_rule({ 7 | rule_any = { 8 | floating = true, 9 | }, 10 | properties = { 11 | placement = awful.placement.centered, 12 | }, 13 | }) 14 | ruled.client.append_rule { 15 | id = 'global', 16 | rule = {}, 17 | properties = { 18 | focus = awful.client.focus.filter, 19 | raise = true, 20 | screen = awful.screen.preferred, 21 | placement = awful.placement.centered + awful.placement.no_offscreen 22 | } 23 | } 24 | 25 | -- Floating clients. 26 | ruled.client.append_rule { 27 | id = 'floating', 28 | rule_any = { 29 | instance = { 'copyq', 'pinentry' }, 30 | class = { 31 | 'Arandr', 32 | 'Blueman-manager', 33 | 'Gpick', 34 | 'Kruler', 35 | 'Sxiv', 36 | 'Tor Browser', 37 | 'Wpa_gui', 38 | 'veromix', 39 | 'ncmpcpppad', 40 | 'xtightvncviewer', 41 | }, 42 | -- Note that the name property shown in xprop might be set slightly after creation of the client 43 | -- and the name shown there might not match defined rules here. 44 | name = { 45 | 'Event Tester', -- xev. 46 | }, 47 | role = { 48 | 'AlarmWindow', -- Thunderbird's calendar. 49 | 'ConfigManager', -- Thunderbird's about:config. 50 | 'pop-up', -- e.g. Google Chrome's (detached) Developer Tools. 51 | } 52 | }, 53 | properties = { floating = true } 54 | } 55 | 56 | -- Add titlebars to normal clients and dialogs 57 | ruled.client.append_rule { 58 | id = 'titlebars', 59 | rule_any = { type = { 'normal', 'dialog' } }, 60 | properties = { titlebars_enabled = true }, 61 | } 62 | 63 | -- Set Firefox to always map on the tag named '2' on screen 1. 64 | -- ruled.client.append_rule { 65 | -- rule = {class = 'Firefox'}, 66 | -- properties = {screen = 1, tag = '2'} 67 | -- } 68 | end) 69 | -------------------------------------------------------------------------------- /.config/awesome/scripts/airplanemode: -------------------------------------------------------------------------------- 1 | #!/usr/bin/bash 2 | STATUS="$(rfkill list | sed -n 2p | awk '{print $3}')" 3 | 4 | 5 | toggle() { 6 | if [[ $STATUS == "no" ]]; then 7 | getroot 'pkexec rfkill block all' 8 | notify-send --urgency=normal "Airplane Mode" "Airplane mode has been turned on!" 9 | else 10 | getroot 'pkexec rfkill unblock all' 11 | notify-send --urgency=normal "Airplane Mode" "Airplane mode has been turned off!" 12 | fi 13 | } 14 | 15 | 16 | if [[ $1 == "--toggle" ]]; then 17 | toggle 18 | fi 19 | -------------------------------------------------------------------------------- /.config/awesome/scripts/bluetooth: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | toggle() { 4 | STATUS="$(bluetoothctl show | grep Powered | awk '{print $2}')" 5 | if [ $STATUS == "yes" ]; then 6 | bluetoothctl power off 7 | notify-send -a "Bluetooth" --urgency=normal "Bluetooth" "Bluetooth has been turned off." 8 | else 9 | bluetoothctl power on 10 | notify-send -a "Bluetooth" --urgency=normal "Bluetooth" "Bluetooth has been turned on." 11 | fi 12 | } 13 | 14 | 15 | if [[ $1 == "--toggle" ]]; then 16 | toggle 17 | fi 18 | -------------------------------------------------------------------------------- /.config/awesome/scripts/picom: -------------------------------------------------------------------------------- 1 | #!/usr/bin/bash 2 | toggle(){ 3 | if [[ ! `pidof picom` ]]; then 4 | picom & 5 | else 6 | pkill -9 picom 7 | fi 8 | } 9 | 10 | if [[ $1 == "--toggle" ]]; then 11 | toggle 12 | fi 13 | 14 | -------------------------------------------------------------------------------- /.config/awesome/scripts/redshift: -------------------------------------------------------------------------------- 1 | #!/usr/bin/bash 2 | 3 | is_active=$(pidof redshift) 4 | 5 | toggle() { 6 | if [[ -n $is_active ]]; then 7 | pkill redshift 8 | else 9 | redshift & 10 | fi 11 | } 12 | 13 | status() { 14 | if [[ -n $is_active ]]; then 15 | echo "Turned on" 16 | exit 1 17 | else 18 | echo "Turned off" 19 | exit 1 20 | fi 21 | } 22 | 23 | if [[ $1 == "--toggle" ]]; then 24 | toggle 25 | elif [[ $1 == "--status" ]]; then 26 | status 27 | fi 28 | -------------------------------------------------------------------------------- /.config/awesome/scripts/toggle: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | CUR=$(cat ~/.cache/tog) 3 | 4 | toggle() { 5 | if [[ $CUR == "false" ]]; then 6 | rm ~/.cache/tog 7 | echo "true" >> ~/.cache/tog 8 | else 9 | rm ~/.cache/tog 10 | echo "false" >> ~/.cache/tog 11 | fi 12 | } 13 | stat() { 14 | echo $CUR 15 | } 16 | 17 | 18 | if [[ $1 == "--toggle" ]]; then 19 | toggle 20 | elif [[ $1 == "--stat" ]]; then 21 | stat 22 | fi 23 | -------------------------------------------------------------------------------- /.config/awesome/scripts/wifi: -------------------------------------------------------------------------------- 1 | #!/usr/bin/bash 2 | STATUS=$(nmcli | grep wlan0 | awk 'FNR == 1 {print $2}') 3 | SSID=$(iwgetid -r) 4 | STRENGTH=$(awk 'NR==3 {printf("%.0f",$3*10/7)}' /proc/net/wireless) 5 | 6 | toggle() { 7 | if [[ $STATUS == "connected" ]]; then 8 | nmcli radio wifi off 9 | notify-send -a "wifi" --urgency=normal "Wi-Fi" "Wi-Fi has been turned off!" 10 | else 11 | nmcli radio wifi on 12 | notify-send -a "wifi" --urgency=normal "Wi-Fi" "Wi-Fi has been turned on, you are back online!" 13 | fi 14 | } 15 | 16 | 17 | if [[ $1 == "--toggle" ]]; then 18 | toggle 19 | fi 20 | -------------------------------------------------------------------------------- /.config/awesome/signals/airplane.lua: -------------------------------------------------------------------------------- 1 | local awful = require('awful') 2 | local gears = require('gears') 3 | local naughty = require("naughty") 4 | 5 | local function emit_airplane_status() 6 | awful.spawn.easy_async_with_shell( 7 | "bash -c \"rfkill list | sed -n 2p | awk '{print $3}'\" ", function(stdout) 8 | local status = stdout:match("yes") -- boolean 9 | awesome.emit_signal('signal::airplane', status) 10 | end) 11 | end 12 | 13 | gears.timer { 14 | timeout = 2, 15 | call_now = true, 16 | autostart = true, 17 | callback = function() 18 | emit_airplane_status() 19 | end 20 | } 21 | -------------------------------------------------------------------------------- /.config/awesome/signals/battery.lua: -------------------------------------------------------------------------------- 1 | local awful = require('awful') 2 | local gears = require('gears') 3 | local gfs = gears.filesystem 4 | 5 | -- Battery Fetching and Signal Emitting 6 | --------------------------------------- 7 | -- Battery information script 8 | local battery_script = "bash -c 'echo $(cat /sys/class/power_supply/BAT0/capacity) echo $(cat /sys/class/power_supply/BAT0/status)'" 9 | 10 | local function battery_emit() 11 | awful.spawn.easy_async_with_shell( 12 | battery_script, function(stdout) 13 | -- The battery level and status are saved as a string. Then the level 14 | -- is stored separately as a string, then converted to int. The status 15 | -- is stored as a bool, and also as an int for registering changes in 16 | -- battery status. 17 | local level = string.match(stdout:match('(%d+)'), '(%d+)') 18 | local level_int = tonumber(level) -- integer 19 | local power = not stdout:match('Discharging') -- boolean 20 | awesome.emit_signal('signal::battery', level_int, power) 21 | end) 22 | end 23 | 24 | -- Refreshing 25 | ------------- 26 | gears.timer { 27 | timeout = 20, 28 | call_now = true, 29 | autostart = true, 30 | callback = function() 31 | battery_emit() 32 | end 33 | } 34 | -------------------------------------------------------------------------------- /.config/awesome/signals/bluetooth.lua: -------------------------------------------------------------------------------- 1 | local awful = require('awful') 2 | local gears = require('gears') 3 | 4 | local function emit_bluetooth_status() 5 | awful.spawn.easy_async_with_shell( 6 | "bash -c 'bluetoothctl show | grep -i powered:'", function(stdout) 7 | local status = stdout:match("yes") -- boolean 8 | awesome.emit_signal('signal::bluetooth', status) 9 | end) 10 | end 11 | 12 | -- Refreshing 13 | ------------- 14 | gears.timer { 15 | timeout = 2, 16 | call_now = true, 17 | autostart = true, 18 | callback = function() 19 | emit_bluetooth_status() 20 | end 21 | } 22 | -------------------------------------------------------------------------------- /.config/awesome/signals/bright.lua: -------------------------------------------------------------------------------- 1 | local awful = require('awful') 2 | local gears = require('gears') 3 | 4 | local brightness_script = "bash -c 'echo $(($(cat /sys/class/backlight/*/brightness) * 100 / $(cat /sys/class/backlight/*/max_brightness)))'" 5 | 6 | local function emit_brightness() 7 | awful.spawn.easy_async_with_shell( 8 | brightness_script, function(stdout) 9 | local level_cur = tonumber(stdout) 10 | awesome.emit_signal('signal::brightness', level_cur) 11 | end) 12 | end 13 | 14 | -- Refreshing 15 | ------------- 16 | gears.timer { 17 | timeout = 1, 18 | call_now = true, 19 | autostart = true, 20 | callback = function() 21 | emit_brightness() 22 | end 23 | } 24 | -------------------------------------------------------------------------------- /.config/awesome/signals/client/init.lua: -------------------------------------------------------------------------------- 1 | require 'awful.autofocus' 2 | 3 | client.connect_signal('mouse::enter', function(c) 4 | c:activate { context = 'mouse_enter', raise = false } 5 | end) 6 | -------------------------------------------------------------------------------- /.config/awesome/signals/cpu.lua: -------------------------------------------------------------------------------- 1 | local awful = require('awful') 2 | local gears = require('gears') 3 | local function emit_cpu_status() 4 | awful.spawn.easy_async_with_shell( 5 | "bash -c \"roundvalue $(grep 'cpu ' /proc/stat | awk '{usage=($2+$4)*100/($2+$4+$5)} END {print usage}')\"" 6 | , 7 | function(stdout) 8 | stdout = tonumber(stdout) 9 | awesome.emit_signal('signal::cpu', stdout) 10 | end) 11 | end 12 | 13 | gears.timer { 14 | timeout = 60, 15 | call_now = true, 16 | autostart = true, 17 | callback = function() 18 | emit_cpu_status() 19 | end 20 | } 21 | -------------------------------------------------------------------------------- /.config/awesome/signals/disk.lua: -------------------------------------------------------------------------------- 1 | local awful = require('awful') 2 | local gears = require('gears') 3 | local function emit_disk_status() 4 | awful.spawn.easy_async_with_shell( 5 | "bash -c \"df --output=pcent / | sed '1d;s/^ //;s/%//'\"" 6 | , 7 | function(stdout) 8 | stdout = stdout:gsub("%s+", "") 9 | stdout = tonumber(stdout) 10 | awesome.emit_signal('signal::disk', stdout) 11 | end) 12 | end 13 | 14 | gears.timer { 15 | timeout = 600, 16 | call_now = true, 17 | autostart = true, 18 | callback = function() 19 | emit_disk_status() 20 | end 21 | } 22 | -------------------------------------------------------------------------------- /.config/awesome/signals/dnd.lua: -------------------------------------------------------------------------------- 1 | local gears = require('gears') 2 | local naughty = require("naughty") 3 | -- Network Fetching and Signal Emitting 4 | --------------------------------------- 5 | local function emit_dnd_status() 6 | local status = naughty.is_suspended() 7 | awesome.emit_signal('signal::dnd', status) 8 | end 9 | 10 | -- Refreshing 11 | ------------- 12 | gears.timer { 13 | timeout = 2, 14 | call_now = true, 15 | autostart = true, 16 | callback = function() 17 | emit_dnd_status() 18 | end 19 | } 20 | -------------------------------------------------------------------------------- /.config/awesome/signals/init.lua: -------------------------------------------------------------------------------- 1 | require("signals.battery") 2 | require("signals.network") 3 | require("signals.bright") 4 | require("signals.volume") 5 | require("signals.bluetooth") 6 | require("signals.dnd") 7 | require("signals.airplane") 8 | require("signals.tog") 9 | require("signals.picom") 10 | require("signals.mic") 11 | require("signals.night") 12 | require("signals.uptime") 13 | require("signals.disk") 14 | require("signals.cpu") 15 | require("signals.mem") 16 | require 'signals.tag' 17 | require 'signals.screen' 18 | require 'signals.client' 19 | require 'signals.ruled' 20 | -------------------------------------------------------------------------------- /.config/awesome/signals/mem.lua: -------------------------------------------------------------------------------- 1 | local awful = require('awful') 2 | local gears = require('gears') 3 | local function emit_mem_status() 4 | awful.spawn.easy_async_with_shell( 5 | "bash -c \"roundvalue $(free | grep Mem | awk '{print $3/$2 * 100.0}')\"" 6 | , 7 | function(stdout) 8 | stdout = tonumber(stdout) 9 | awesome.emit_signal('signal::memory', stdout) 10 | end) 11 | end 12 | 13 | gears.timer { 14 | timeout = 60, 15 | call_now = true, 16 | autostart = true, 17 | callback = function() 18 | emit_mem_status() 19 | end 20 | } 21 | -------------------------------------------------------------------------------- /.config/awesome/signals/mic.lua: -------------------------------------------------------------------------------- 1 | local awful = require('awful') 2 | local gears = require('gears') 3 | 4 | local function volume_emit() 5 | awful.spawn.easy_async_with_shell( 6 | "bash -c 'pamixer --source 1 --get-mute'", function(value) 7 | local stringtoboolean = { ["true"] = true, ["false"] = false } 8 | value = value:gsub("%s+", "") 9 | value = stringtoboolean[value] 10 | awesome.emit_signal('signal::mic', value) -- integer 11 | end) 12 | end 13 | 14 | gears.timer { 15 | timeout = 1, 16 | call_now = true, 17 | autostart = true, 18 | callback = function() 19 | volume_emit() 20 | end 21 | } 22 | -------------------------------------------------------------------------------- /.config/awesome/signals/network.lua: -------------------------------------------------------------------------------- 1 | local awful = require('awful') 2 | local gears = require('gears') 3 | 4 | -- Network Fetching and Signal Emitting 5 | --------------------------------------- 6 | local function emit_network_status() 7 | awful.spawn.easy_async_with_shell( 8 | "bash -c 'nmcli networking connectivity check'", function(stdout) 9 | local status = not stdout:match("none") -- boolean 10 | awesome.emit_signal('signal::network', status) 11 | end) 12 | end 13 | 14 | -- Refreshing 15 | ------------- 16 | gears.timer { 17 | timeout = 2, 18 | call_now = true, 19 | autostart = true, 20 | callback = function() 21 | emit_network_status() 22 | end 23 | } 24 | -------------------------------------------------------------------------------- /.config/awesome/signals/night.lua: -------------------------------------------------------------------------------- 1 | local awful = require('awful') 2 | local gears = require('gears') 3 | local function emit_redshift_status() 4 | awful.spawn.easy_async_with_shell( 5 | "bash -c 'pidof redshift'", function(stdout) 6 | stdout = stdout:gsub("%s+", "") 7 | if stdout == "" then 8 | awesome.emit_signal('signal::night', false) 9 | else 10 | awesome.emit_signal('signal::night', true) 11 | end 12 | 13 | end) 14 | end 15 | 16 | gears.timer { 17 | timeout = 2, 18 | call_now = true, 19 | autostart = true, 20 | callback = function() 21 | emit_redshift_status() 22 | end 23 | } 24 | -------------------------------------------------------------------------------- /.config/awesome/signals/picom.lua: -------------------------------------------------------------------------------- 1 | local awful = require('awful') 2 | local gears = require('gears') 3 | local function emit_picom_status() 4 | awful.spawn.easy_async_with_shell( 5 | "bash -c 'pidof picom'", function(stdout) 6 | stdout = stdout:gsub("%s+", "") 7 | if stdout == "" then 8 | awesome.emit_signal('signal::picom', false) 9 | else 10 | awesome.emit_signal('signal::picom', true) 11 | end 12 | 13 | end) 14 | end 15 | 16 | gears.timer { 17 | timeout = 2, 18 | call_now = true, 19 | autostart = true, 20 | callback = function() 21 | emit_picom_status() 22 | end 23 | } 24 | -------------------------------------------------------------------------------- /.config/awesome/signals/ruled/init.lua: -------------------------------------------------------------------------------- 1 | local awful = require'awful' 2 | local ruled = require'ruled' 3 | 4 | ruled.notification.connect_signal('request::rules', function() 5 | -- All notifications will match this rule. 6 | ruled.notification.append_rule { 7 | rule = {}, 8 | properties = { 9 | screen = awful.screen.preferred, 10 | implicit_timeout = 5, 11 | } 12 | } 13 | end) 14 | -------------------------------------------------------------------------------- /.config/awesome/signals/screen/init.lua: -------------------------------------------------------------------------------- 1 | local awful = require 'awful' 2 | local beautiful = require 'beautiful' 3 | local wibox = require 'wibox' 4 | local vars = require 'config.vars' 5 | 6 | 7 | screen.connect_signal('request::desktop_decoration', function(s) 8 | awful.tag(vars.tags, s, awful.layout.layouts[1]) 9 | end) 10 | -------------------------------------------------------------------------------- /.config/awesome/signals/tag/init.lua: -------------------------------------------------------------------------------- 1 | local awful = require'awful' 2 | 3 | local vars = require'config.vars' 4 | 5 | tag.connect_signal('request::default_layouts', function() 6 | awful.layout.append_default_layouts(vars.layouts) 7 | end) 8 | -------------------------------------------------------------------------------- /.config/awesome/signals/tog.lua: -------------------------------------------------------------------------------- 1 | local awful = require('awful') 2 | local gears = require('gears') 3 | 4 | 5 | local function tog_emit() 6 | awful.spawn.easy_async_with_shell( 7 | "bash -c '~/.config/awesome/scripts/toggle --stat'", function(value) 8 | local stringtoboolean = { ["true"] = true, ["false"] = false } 9 | value = value:gsub("%s+", "") 10 | value = stringtoboolean[value] 11 | 12 | -- awful.spawn.with_shell('notify-send ' .. tostring(value)) 13 | awesome.emit_signal('signal::toggler', value) -- integer 14 | end) 15 | end 16 | 17 | gears.timer { 18 | timeout = 1, 19 | call_now = true, 20 | autostart = true, 21 | callback = function() 22 | tog_emit() 23 | end 24 | } 25 | -------------------------------------------------------------------------------- /.config/awesome/signals/uptime.lua: -------------------------------------------------------------------------------- 1 | local awful = require('awful') 2 | local gears = require('gears') 3 | local function emit_uptime_status() 4 | awful.spawn.easy_async_with_shell( 5 | "bash -c \"uptime -p | sed 's/up\\s*//g' | sed 's/\\s*days/d/g' | sed 's/\\s*hours/h/g' | sed 's/\\s*minutes/m/g'\"" 6 | , 7 | function(stdout) 8 | stdout = stdout:gsub("%s+", "") 9 | awesome.emit_signal('signal::uptime', stdout) 10 | end) 11 | end 12 | 13 | gears.timer { 14 | timeout = 60, 15 | call_now = true, 16 | autostart = true, 17 | callback = function() 18 | emit_uptime_status() 19 | end 20 | } 21 | -------------------------------------------------------------------------------- /.config/awesome/signals/volume.lua: -------------------------------------------------------------------------------- 1 | local awful = require('awful') 2 | local gears = require('gears') 3 | 4 | local function volume_emit() 5 | awful.spawn.easy_async_with_shell( 6 | "bash -c 'pamixer --get-volume'", function(stdout) 7 | local volume_int = tonumber(stdout) -- integer 8 | awesome.emit_signal('signal::volume', volume_int) -- integer 9 | end) 10 | end 11 | 12 | -- Microphone Fetching and Signal Emitting 13 | -- Refreshing 14 | ------------- 15 | gears.timer { 16 | timeout = 1, 17 | call_now = true, 18 | autostart = true, 19 | callback = function() 20 | volume_emit() 21 | end 22 | } 23 | -------------------------------------------------------------------------------- /.config/awesome/theme/icons/awesomewm.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /.config/awesome/theme/icons/circle.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /.config/awesome/theme/icons/floating.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NotAShelf/dotfiles/9c40e15577251d9a480ddf6a530eb25929c6f2ba/.config/awesome/theme/icons/floating.png -------------------------------------------------------------------------------- /.config/awesome/theme/icons/menu.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /.config/awesome/theme/icons/pause.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /.config/awesome/theme/icons/play.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /.config/awesome/theme/icons/systray.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NotAShelf/dotfiles/9c40e15577251d9a480ddf6a530eb25929c6f2ba/.config/awesome/theme/icons/systray.png -------------------------------------------------------------------------------- /.config/awesome/theme/icons/tile.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NotAShelf/dotfiles/9c40e15577251d9a480ddf6a530eb25929c6f2ba/.config/awesome/theme/icons/tile.png -------------------------------------------------------------------------------- /.config/awesome/theme/notifs/def.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /.config/awesome/theme/pics/hi.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NotAShelf/dotfiles/9c40e15577251d9a480ddf6a530eb25929c6f2ba/.config/awesome/theme/pics/hi.jpg -------------------------------------------------------------------------------- /.config/awesome/theme/pics/nosong.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NotAShelf/dotfiles/9c40e15577251d9a480ddf6a530eb25929c6f2ba/.config/awesome/theme/pics/nosong.jpg -------------------------------------------------------------------------------- /.config/awesome/theme/pics/pfp.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NotAShelf/dotfiles/9c40e15577251d9a480ddf6a530eb25929c6f2ba/.config/awesome/theme/pics/pfp.jpg -------------------------------------------------------------------------------- /.config/awesome/theme/pics/profile.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NotAShelf/dotfiles/9c40e15577251d9a480ddf6a530eb25929c6f2ba/.config/awesome/theme/pics/profile.jpg -------------------------------------------------------------------------------- /.config/awesome/theme/wallpapers/beach.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NotAShelf/dotfiles/9c40e15577251d9a480ddf6a530eb25929c6f2ba/.config/awesome/theme/wallpapers/beach.png -------------------------------------------------------------------------------- /.config/awesome/theme/wallpapers/f2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NotAShelf/dotfiles/9c40e15577251d9a480ddf6a530eb25929c6f2ba/.config/awesome/theme/wallpapers/f2.jpg -------------------------------------------------------------------------------- /.config/awesome/theme/wallpapers/flower.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NotAShelf/dotfiles/9c40e15577251d9a480ddf6a530eb25929c6f2ba/.config/awesome/theme/wallpapers/flower.jpg -------------------------------------------------------------------------------- /.config/awesome/theme/wallpapers/forest.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NotAShelf/dotfiles/9c40e15577251d9a480ddf6a530eb25929c6f2ba/.config/awesome/theme/wallpapers/forest.png -------------------------------------------------------------------------------- /.config/awesome/theme/wallpapers/lush.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NotAShelf/dotfiles/9c40e15577251d9a480ddf6a530eb25929c6f2ba/.config/awesome/theme/wallpapers/lush.png -------------------------------------------------------------------------------- /.config/awesome/theme/wallpapers/panda.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NotAShelf/dotfiles/9c40e15577251d9a480ddf6a530eb25929c6f2ba/.config/awesome/theme/wallpapers/panda.png -------------------------------------------------------------------------------- /.config/awesome/theme/wallpapers/rocky.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NotAShelf/dotfiles/9c40e15577251d9a480ddf6a530eb25929c6f2ba/.config/awesome/theme/wallpapers/rocky.png -------------------------------------------------------------------------------- /.config/awesome/theme/wallpapers/sky.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NotAShelf/dotfiles/9c40e15577251d9a480ddf6a530eb25929c6f2ba/.config/awesome/theme/wallpapers/sky.jpg -------------------------------------------------------------------------------- /.config/awesome/theme/wallpapers/space.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NotAShelf/dotfiles/9c40e15577251d9a480ddf6a530eb25929c6f2ba/.config/awesome/theme/wallpapers/space.jpg -------------------------------------------------------------------------------- /.config/awesome/theme/wallpapers/wall.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NotAShelf/dotfiles/9c40e15577251d9a480ddf6a530eb25929c6f2ba/.config/awesome/theme/wallpapers/wall.png -------------------------------------------------------------------------------- /.config/awesome/ui/bar/init.lua: -------------------------------------------------------------------------------- 1 | local awful = require("awful") 2 | local wibox = require("wibox") 3 | local beautiful = require("beautiful") 4 | local dpi = require("beautiful").xresources.apply_dpi 5 | 6 | -- Importing all the compoments 7 | local layoutbox = require("ui.bar.modules.layout") 8 | local taglist = require("ui.bar.modules.tags") 9 | local systraybox = require("ui.bar.modules.tray") 10 | local tasklist = require("ui.bar.modules.tasklist") 11 | local status = require("ui.bar.modules.status") 12 | local time = require("ui.bar.modules.time") 13 | local music = require("ui.bar.modules.music") 14 | local launcher = require("ui.bar.modules.misc").launcher 15 | local powerbutton = require("ui.bar.modules.misc").powerbutton 16 | 17 | local function init(s) 18 | local wibar = awful.wibar { 19 | position = "bottom", 20 | height = dpi(50), 21 | bg = beautiful.bg, 22 | fg = beautiful.fg1, 23 | screen = s, 24 | widget = { 25 | layout = wibox.layout.align.horizontal, 26 | { 27 | -- Left 28 | { 29 | layout = wibox.layout.fixed.horizontal, 30 | launcher, 31 | { 32 | { 33 | { 34 | taglist(s), 35 | forced_width = 159, 36 | widget = wibox.container.margin, 37 | margins = { left = dpi(12), right = dpi(12) }, 38 | }, 39 | widget = wibox.container.place 40 | }, 41 | bg = beautiful.bg2 .. 'cc', 42 | widget = wibox.container.background 43 | }, 44 | layoutbox, 45 | spacing = 7, 46 | }, 47 | top = dpi(8), 48 | bottom = dpi(5), 49 | right = dpi(7), 50 | left = dpi(7), 51 | widget = wibox.container.margin 52 | }, 53 | { 54 | -- Middle 55 | { tasklist(s), 56 | halign = 'left', 57 | layout = wibox.container.place, 58 | }, 59 | top = dpi(8), 60 | bottom = dpi(6), 61 | widget = wibox.container.margin 62 | }, 63 | { 64 | --Right 65 | { 66 | systraybox, 67 | status, 68 | music, 69 | time, 70 | powerbutton, 71 | spacing = 7, 72 | layout = wibox.layout.fixed.horizontal, 73 | }, 74 | top = dpi(8), 75 | bottom = dpi(5), 76 | right = dpi(7), 77 | left = dpi(7), 78 | widget = wibox.container.margin 79 | }, 80 | } 81 | } 82 | return wibar 83 | end 84 | 85 | screen.connect_signal('request::desktop_decoration', function(s) 86 | s.wibox = init(s) 87 | end) 88 | -------------------------------------------------------------------------------- /.config/awesome/ui/bar/modules/layout.lua: -------------------------------------------------------------------------------- 1 | local awful = require("awful") 2 | local wibox = require("wibox") 3 | local beautiful = require("beautiful") 4 | local helpers = require('helpers') 5 | local layouts = awful.widget.layoutbox { 6 | buttons = { 7 | awful.button { 8 | modifiers = {}, 9 | button = 1, 10 | on_press = function() awful.layout.inc(1) end, 11 | }, 12 | awful.button { 13 | modifiers = {}, 14 | button = 3, 15 | on_press = function() awful.layout.inc(-1) end, 16 | }, 17 | awful.button { 18 | modifiers = {}, 19 | button = 4, 20 | on_press = function() awful.layout.inc(-1) end, 21 | }, 22 | awful.button { 23 | modifiers = {}, 24 | button = 5, 25 | on_press = function() awful.layout.inc(1) end, 26 | }, 27 | } 28 | } 29 | local widget = { 30 | { 31 | { 32 | layouts, 33 | clip_shape = helpers.rrect(3), 34 | widget = wibox.container.margin 35 | }, 36 | margins = 10, 37 | widget = wibox.container.margin 38 | }, 39 | bg = beautiful.bg3 .. 'cc', 40 | widget = wibox.container.background 41 | } 42 | return widget 43 | -------------------------------------------------------------------------------- /.config/awesome/ui/bar/modules/misc.lua: -------------------------------------------------------------------------------- 1 | local M = {} 2 | 3 | local awful = require("awful") 4 | local wibox = require("wibox") 5 | local beautiful = require("beautiful") 6 | local helpers = require("helpers") 7 | local app = require("misc.bling").app_launcher 8 | M.launcher = wibox.widget { 9 | { 10 | { 11 | buttons = { 12 | awful.button({}, 1, function() 13 | app:toggle() 14 | end) 15 | }, 16 | font = beautiful.icofont .. " 18", 17 | markup = " 󰍉 ", 18 | valign = "center", 19 | align = "center", 20 | widget = wibox.widget.textbox, 21 | }, 22 | bg = beautiful.bg3, 23 | widget = wibox.container.background 24 | }, 25 | widget = wibox.container.margin 26 | } 27 | 28 | M.powerbutton = wibox.widget { 29 | { 30 | { 31 | { 32 | font = beautiful.icofont .. " 16", 33 | markup = helpers.colorizeText('󰐥', beautiful.err), 34 | valign = "center", 35 | align = "center", 36 | widget = wibox.widget.textbox, 37 | }, 38 | margins = 8, 39 | widget = wibox.container.margin 40 | }, 41 | bg = beautiful.bg3, 42 | widget = wibox.container.background 43 | }, 44 | buttons = { 45 | awful.button({}, 1, function() 46 | awesome.emit_signal('show::exit') 47 | --awful.spawn.with_shell('~/.local/bin/rofiscripts/powermenu') 48 | end) 49 | }, 50 | widget = wibox.container.margin 51 | } 52 | 53 | 54 | return M 55 | -------------------------------------------------------------------------------- /.config/awesome/ui/bar/modules/music.lua: -------------------------------------------------------------------------------- 1 | local beautiful = require("beautiful") 2 | local awful = require("awful") 3 | local helpers = require("helpers") 4 | local wibox = require("wibox") 5 | local dpi = require("beautiful").xresources.apply_dpi 6 | local bling = require("modules.bling") 7 | 8 | local playerctl = bling.signal.playerctl.cli() 9 | 10 | local songname = wibox.widget { 11 | font = beautiful.font, 12 | markup = " None ", 13 | valign = "center", 14 | align = "center", 15 | widget = wibox.widget.textbox, 16 | } 17 | 18 | local songnamebox = wibox.widget { 19 | songname, 20 | width = dpi(100), 21 | widget = wibox.container.constraint 22 | 23 | } 24 | local play_button = wibox.widget { 25 | buttons = { 26 | awful.button({}, 1, function() 27 | awesome.emit_signal('song::toggle') 28 | end) 29 | }, 30 | image = beautiful.play, 31 | widget = wibox.widget.imagebox 32 | } 33 | 34 | local toggle = wibox.widget { 35 | play_button, 36 | margins = 4, 37 | widget = wibox.container.margin 38 | } 39 | 40 | local music_control = wibox.widget { 41 | songnamebox, 42 | toggle, 43 | spacing = 10, 44 | layout = wibox.layout.fixed.horizontal, 45 | } 46 | 47 | local widget = wibox.widget { 48 | { 49 | { 50 | music_control, 51 | layout = wibox.layout.fixed.horizontal, 52 | }, 53 | margins = 6, 54 | widget = wibox.container.margin, 55 | }, 56 | bg = beautiful.bg2 .. 'cc', 57 | widget = wibox.container.background, 58 | } 59 | 60 | playerctl:connect_signal("playback_status", function(_, playing, _) 61 | if playing then 62 | play_button.image = beautiful.pause 63 | else 64 | play_button.image = beautiful.play 65 | end 66 | end) 67 | 68 | playerctl:connect_signal("metadata", function(_, title) 69 | if title == "" then 70 | title = " None " 71 | end 72 | 73 | songname:set_markup_silently(" " .. title .. " ") 74 | end) 75 | 76 | awesome.connect_signal("song::toggle", function() 77 | playerctl:play_pause() 78 | end) 79 | 80 | 81 | return widget 82 | -------------------------------------------------------------------------------- /.config/awesome/ui/bar/modules/status.lua: -------------------------------------------------------------------------------- 1 | -- Status 2 | local awful = require("awful") 3 | local wibox = require("wibox") 4 | local beautiful = require("beautiful") 5 | local dpi = require("beautiful").xresources.apply_dpi 6 | local helpers = require("helpers") 7 | 8 | local wifi = wibox.widget { 9 | font = beautiful.icofont .. " 14", 10 | markup = "󰤨", 11 | widget = wibox.widget.textbox, 12 | valign = "center", 13 | align = "center" 14 | } 15 | local battery = wibox.widget { 16 | widget = wibox.container.arcchart, 17 | max_value = 100, 18 | min_value = 0, 19 | value = 69, 20 | thickness = dpi(3), 21 | rounded_edge = true, 22 | bg = beautiful.ok .. "4D", 23 | colors = { beautiful.ok }, 24 | start_angle = math.pi + math.pi / 2, 25 | forced_width = dpi(17), 26 | forced_height = dpi(17) 27 | } 28 | 29 | local status = wibox.widget { 30 | { 31 | { 32 | { 33 | battery, 34 | wifi, 35 | layout = wibox.layout.fixed.horizontal, 36 | spacing = dpi(15) 37 | }, 38 | margins = { left = dpi(12), right = dpi(12) }, 39 | widget = wibox.container.margin 40 | }, 41 | layout = wibox.layout.stack 42 | }, 43 | buttons = { 44 | awful.button({}, 1, function() 45 | awesome.emit_signal('toggle::dashboard') 46 | end) 47 | }, 48 | widget = wibox.container.background, 49 | shape = helpers.rrect(2), 50 | bg = beautiful.bg3 .. "cc" 51 | } 52 | 53 | awesome.connect_signal("signal::network", function(value) 54 | if value then 55 | wifi.markup = helpers.colorizeText("󰤨", beautiful.fg) 56 | else 57 | wifi.markup = helpers.colorizeText("󰤮", beautiful.fg .. "99") 58 | end 59 | end) 60 | 61 | 62 | 63 | awesome.connect_signal("signal::battery", function(value) 64 | battery.value = value 65 | end) 66 | 67 | return status 68 | -------------------------------------------------------------------------------- /.config/awesome/ui/bar/modules/tags.lua: -------------------------------------------------------------------------------- 1 | local awful = require("awful") 2 | local wibox = require("wibox") 3 | local gears = require("gears") 4 | local helpers = require("helpers") 5 | local animation = require("modules.animation") 6 | 7 | return function(s) 8 | local taglist = awful.widget.taglist { 9 | layout = { 10 | spacing = 15, 11 | layout = wibox.layout.fixed.horizontal, 12 | }, 13 | style = { 14 | shape = helpers.rrect(50) 15 | }, 16 | screen = s, 17 | filter = awful.widget.taglist.filter.all, 18 | buttons = { 19 | awful.button({}, 1, function(t) t:view_only() end), 20 | awful.button({}, 4, function(t) 21 | awful.tag.viewprev(t.screen) 22 | end), 23 | awful.button({}, 5, function(t) 24 | awful.tag.viewnext(t.screen) 25 | end) 26 | }, 27 | widget_template = { 28 | { 29 | markup = '', 30 | shape = helpers.rrect(20), 31 | widget = wibox.widget.textbox, 32 | }, 33 | valign = 'center', 34 | id = 'background_role', 35 | shape = gears.shape.circle, 36 | widget = wibox.container.background, 37 | forced_width = 10, 38 | forced_height = 11, 39 | create_callback = function(self, tag) 40 | 41 | self.taganim = animation:new({ 42 | duration = 0.12, 43 | easing = animation.easing.linear, 44 | update = function(_, pos) 45 | self:get_children_by_id('background_role')[1].forced_width = pos 46 | end, 47 | }) 48 | self.update = function() 49 | if tag.selected then 50 | self.taganim:set(30) 51 | elseif #tag:clients() > 0 then 52 | self.taganim:set(11) 53 | else 54 | self.taganim:set(11) 55 | end 56 | end 57 | 58 | self.update() 59 | end, 60 | update_callback = function(self) 61 | self.update() 62 | end, 63 | } 64 | --widget_template = { 65 | -- { 66 | -- { 67 | -- id = 'text_role', 68 | -- widget = wibox.widget.textbox, 69 | -- }, 70 | -- margins = { 71 | -- left = 12, 72 | -- right = 12 73 | -- }, 74 | -- widget = wibox.container.margin, 75 | -- }, 76 | -- id = 'background_role', 77 | -- widget = wibox.container.background, 78 | -- } 79 | } 80 | return taglist 81 | end 82 | -------------------------------------------------------------------------------- /.config/awesome/ui/bar/modules/tasklist.lua: -------------------------------------------------------------------------------- 1 | local awful = require("awful") 2 | local wibox = require("wibox") 3 | local helpers = require("helpers") 4 | local beautiful = require("beautiful") 5 | local dpi = beautiful.xresources.apply_dpi 6 | 7 | return function(s) 8 | local tasklst = awful.widget.tasklist { 9 | screen = s, 10 | filter = awful.widget.tasklist.filter.currenttags, 11 | buttons = { 12 | awful.button({}, 1, function(c) 13 | c:activate { context = "tasklist", action = "toggle_minimization" } 14 | end), 15 | }, 16 | layout = { 17 | layout = wibox.layout.fixed.horizontal, 18 | spacing = 5, 19 | }, 20 | widget_template = { 21 | { 22 | { 23 | { 24 | { 25 | awful.widget.clienticon, 26 | forced_height = dpi(35), 27 | forced_width = dpi(35), 28 | halign = "center", 29 | valign = "center", 30 | widget = wibox.container.place, 31 | }, 32 | margins = { 33 | left = dpi(3), 34 | }, 35 | widget = wibox.container.margin, 36 | }, 37 | { 38 | { 39 | { 40 | id = "text_role", 41 | forced_height = dpi(20), 42 | widget = wibox.widget.textbox, 43 | }, 44 | widget = wibox.container.constraint, 45 | width = dpi(150) 46 | }, 47 | margins = { 48 | left = dpi(10), 49 | right = dpi(10) 50 | }, 51 | widget = wibox.container.margin, 52 | }, 53 | spacing = dpi(10), 54 | layout = wibox.layout.align.horizontal, 55 | }, 56 | margins = dpi(4), 57 | bg = beautiful.bg2, 58 | widget = wibox.container.margin, 59 | }, 60 | id = "background_role", 61 | widget = wibox.container.background, 62 | } 63 | 64 | } 65 | return tasklst 66 | end 67 | -------------------------------------------------------------------------------- /.config/awesome/ui/bar/modules/time.lua: -------------------------------------------------------------------------------- 1 | -- Time Widget 2 | local awful = require("awful") 3 | local wibox = require("wibox") 4 | local beautiful = require("beautiful") 5 | local dpi = require("beautiful").xresources.apply_dpi 6 | local helpers = require("helpers") 7 | local hourminutes = wibox.widget { 8 | { 9 | { 10 | font = beautiful.font, 11 | format = "%I : %M", 12 | align = "center", 13 | valign = "center", 14 | widget = wibox.widget.textclock 15 | }, 16 | margins = { left = dpi(12), right = dpi(12) }, 17 | widget = wibox.container.margin 18 | }, 19 | buttons = { 20 | awful.button({}, 1, function() 21 | awesome.emit_signal('toggle::notify') 22 | end) 23 | }, 24 | widget = wibox.container.background, 25 | shape = helpers.rrect(2), 26 | bg = beautiful.bg3 .. "cc" 27 | } 28 | 29 | local daymonths = wibox.widget { 30 | { 31 | { 32 | font = beautiful.font, 33 | format = "%A, %d %b", 34 | align = "center", 35 | valign = "center", 36 | widget = wibox.widget.textclock 37 | }, 38 | margins = { left = dpi(12), right = dpi(12) }, 39 | widget = wibox.container.margin 40 | }, 41 | buttons = { 42 | awful.button({}, 1, function() 43 | awesome.emit_signal('toggle::moment') 44 | end) 45 | }, 46 | widget = wibox.container.background, 47 | shape = helpers.rrect(2), 48 | bg = beautiful.bg3 .. "cc" 49 | } 50 | 51 | local finaltimewidget = wibox.widget { 52 | { 53 | hourminutes, 54 | layout = wibox.layout.fixed.horizontal, 55 | }, 56 | { 57 | daymonths, 58 | layout = wibox.layout.fixed.horizontal, 59 | }, 60 | spacing = 6, 61 | layout = wibox.layout.fixed.horizontal, 62 | } 63 | 64 | return finaltimewidget 65 | -------------------------------------------------------------------------------- /.config/awesome/ui/bar/modules/tray.lua: -------------------------------------------------------------------------------- 1 | -- THIS WAS ENTIRELY WRITTEN BY ME SO IT WILL CONTAIN UNREADABEL / WORST CODE EVER SEEN 2 | 3 | local awful = require("awful") 4 | local beautiful = require("beautiful") 5 | local helpers = require("helpers") 6 | local wibox = require("wibox") 7 | local dpi = require("beautiful").xresources.apply_dpi 8 | 9 | -- TOGGLER 10 | 11 | local togglertext = wibox.widget { 12 | font = beautiful.icofont .. " 20", 13 | text = "󰅁", 14 | valign = "center", 15 | align = "center", 16 | buttons = { 17 | awful.button({}, 1, function() 18 | awesome.emit_signal('systray::toggle') 19 | end) 20 | }, 21 | widget = wibox.widget.textbox, 22 | } 23 | 24 | 25 | -- TRAY 26 | 27 | local systray = wibox.widget { 28 | { 29 | widget = wibox.widget.systray, 30 | }, 31 | top = dpi(9), 32 | bottom = dpi(9), 33 | visible = false, 34 | left = dpi(4), 35 | right = dpi(4), 36 | widget = wibox.container.margin 37 | } 38 | 39 | awesome.connect_signal('systray::toggle', function() 40 | if systray.visible then 41 | systray.visible = false 42 | togglertext.text = '󰅁' 43 | else 44 | systray.visible = true 45 | togglertext.text = '󰅂' 46 | end 47 | end) 48 | 49 | local widget = wibox.widget { 50 | { 51 | { 52 | systray, 53 | togglertext, 54 | layout = wibox.layout.fixed.horizontal, 55 | }, 56 | shape = helpers.rrect(2), 57 | bg = beautiful.bg2 .. "cc", 58 | widget = wibox.container.background, 59 | }, 60 | margins = 0, 61 | widget = wibox.container.margin, 62 | } 63 | return widget 64 | 65 | -------------------------------------------------------------------------------- /.config/awesome/ui/dings/actions/init.lua: -------------------------------------------------------------------------------- 1 | require("ui.dings.actions.music") 2 | -------------------------------------------------------------------------------- /.config/awesome/ui/dings/actions/music.lua: -------------------------------------------------------------------------------- 1 | local naughty = require("naughty") 2 | local bling = require("modules.bling") 3 | local playerctl = bling.signal.playerctl.lib() 4 | 5 | playerctl:connect_signal("metadata", 6 | function(_, title, artist, album_path, album, new, player_name) 7 | if new == true then 8 | naughty.notify({ title = 'New Song', text = title .. " by " .. artist, image = album_path }) 9 | end 10 | end) 11 | -------------------------------------------------------------------------------- /.config/awesome/ui/dings/init.lua: -------------------------------------------------------------------------------- 1 | require("ui.dings.actions") 2 | require("ui.dings.base") 3 | -------------------------------------------------------------------------------- /.config/awesome/ui/init.lua: -------------------------------------------------------------------------------- 1 | require('ui.bar') 2 | require('ui.titlebars') 3 | require("ui.mainframe") 4 | require("ui.dings") 5 | require("ui.notify") 6 | require("ui.moment") 7 | require("ui.exitscreen") 8 | -------------------------------------------------------------------------------- /.config/awesome/ui/mainframe/init.lua: -------------------------------------------------------------------------------- 1 | local awful = require("awful") 2 | local beautiful = require("beautiful") 3 | local dpi = beautiful.xresources.apply_dpi 4 | local helpers = require("helpers") 5 | local wibox = require("wibox") 6 | 7 | local profile = require("ui.mainframe.modules.profile") 8 | local sliders = require("ui.mainframe.modules.sliders") 9 | local music = require("ui.mainframe.modules.music") 10 | local settings = require("ui.mainframe.modules.settings") 11 | -- not using footer at the moment 12 | 13 | --local height = 720 14 | awful.screen.connect_for_each_screen(function(s) 15 | local mainframe = wibox({ 16 | type = "dock", 17 | shape = helpers.rrect(4), 18 | screen = s, 19 | width = dpi(480), 20 | height = 725, 21 | bg = beautiful.bg, 22 | ontop = true, 23 | visible = false, 24 | }) 25 | mainframe:setup { 26 | { 27 | profile, 28 | sliders, 29 | music, 30 | settings, 31 | --footer, 32 | spacing = 20, 33 | layout = wibox.layout.fixed.vertical, 34 | }, 35 | margins = dpi(15), 36 | widget = wibox.container.margin, 37 | } 38 | 39 | awful.placement.bottom_right(mainframe, { honor_workarea = true, margins = beautiful.useless_gap * 2 }) 40 | awesome.connect_signal("toggle::dashboard", function() 41 | mainframe.visible = not mainframe.visible 42 | end) 43 | -- awesome.connect_signal("signal::toggler", function(val) 44 | -- if val then 45 | -- mainframe.height = dpi(mainframe.height + 98) 46 | -- else 47 | -- mainframe.height = dpi(1000) 48 | -- awful.placement.bottom_right(mainframe, { honor_workarea = true, margins = beautiful.useless_gap * 2 }) 49 | -- end 50 | -- end) 51 | end) 52 | -------------------------------------------------------------------------------- /.config/awesome/ui/moment/init.lua: -------------------------------------------------------------------------------- 1 | local awful = require("awful") 2 | local beautiful = require("beautiful") 3 | local dpi = beautiful.xresources.apply_dpi 4 | local helpers = require("helpers") 5 | local wibox = require("wibox") 6 | 7 | local calendar = require("ui.moment.modules.calendar") 8 | 9 | awful.screen.connect_for_each_screen(function(s) 10 | local moment = wibox({ 11 | type = "dock", 12 | shape = helpers.rrect(4), 13 | screen = s, 14 | width = dpi(355), 15 | height = 325, 16 | bg = beautiful.bg, 17 | ontop = true, 18 | visible = false 19 | }) 20 | 21 | moment:setup { 22 | { 23 | nil, 24 | calendar, 25 | layout = wibox.layout.align.vertical, 26 | }, 27 | margins = dpi(15), 28 | widget = wibox.container.margin, 29 | } 30 | 31 | awful.placement.bottom_right(moment, { honor_workarea = true, margins = beautiful.useless_gap * 2 }) 32 | awesome.connect_signal("toggle::moment", function() 33 | moment.visible = not moment.visible 34 | end) 35 | 36 | end) 37 | -------------------------------------------------------------------------------- /.config/awesome/ui/moment/modules/calendar.lua: -------------------------------------------------------------------------------- 1 | local beautiful = require 'beautiful' 2 | local wibox = require 'wibox' 3 | local gears = require 'gears' 4 | local dpi = beautiful.xresources.apply_dpi 5 | local calendar = wibox.widget { 6 | date = os.date('*t'), 7 | spacing = dpi(2), 8 | font = beautiful.font, 9 | widget = wibox.widget.calendar.month, 10 | fn_embed = function(widget, flag, date) 11 | local focus_widget = wibox.widget { 12 | text = date.day, 13 | align = 'center', 14 | widget = wibox.widget.textbox, 15 | } 16 | local torender = flag == 'focus' and focus_widget or widget 17 | if flag == 'header' then 18 | torender.font = beautiful.font .. " Bold 14" 19 | end 20 | local colors = { 21 | header = beautiful.pri, 22 | focus = beautiful.err, 23 | weekday = beautiful.ok 24 | } 25 | 26 | local color = colors[flag] or beautiful.fg 27 | return wibox.widget { 28 | { 29 | { 30 | torender, 31 | margins = dpi(7), 32 | widget = wibox.container.margin, 33 | }, 34 | bg = flag == 'focus' and beautiful.bg2 or beautiful.bg, 35 | fg = color, 36 | widget = wibox.container.background, 37 | shape = flag == 'focus' and gears.shape.circle or nil, 38 | }, 39 | widget = wibox.container.margin, 40 | margins = { 41 | left = 5, 42 | right = 5, 43 | } 44 | } 45 | end 46 | } 47 | 48 | 49 | 50 | return calendar 51 | -------------------------------------------------------------------------------- /.config/awesome/ui/notify/init.lua: -------------------------------------------------------------------------------- 1 | local awful = require("awful") 2 | local beautiful = require("beautiful") 3 | local dpi = beautiful.xresources.apply_dpi 4 | local helpers = require("helpers") 5 | local wibox = require("wibox") 6 | 7 | local notifbox = require("ui.notify.modules.notifs.box") 8 | 9 | awful.screen.connect_for_each_screen(function(s) 10 | local moment = wibox({ 11 | type = "dock", 12 | shape = helpers.rrect(4), 13 | screen = s, 14 | width = dpi(480), 15 | height = 800, 16 | bg = beautiful.bg, 17 | ontop = true, 18 | visible = false 19 | }) 20 | 21 | 22 | moment:setup { 23 | { 24 | nil, 25 | notifbox, 26 | nil, 27 | layout = wibox.layout.align.vertical, 28 | }, 29 | margins = dpi(15), 30 | widget = wibox.container.margin, 31 | } 32 | 33 | awful.placement.bottom_right(moment, { honor_workarea = true, margins = beautiful.useless_gap * 2 }) 34 | awesome.connect_signal("toggle::notify", function() 35 | moment.visible = not moment.visible 36 | end) 37 | 38 | end) 39 | -------------------------------------------------------------------------------- /.config/awesome/ui/notify/modules/notifs/empty.lua: -------------------------------------------------------------------------------- 1 | local awful = require("awful") 2 | local beautiful = require("beautiful") 3 | local dpi = beautiful.xresources.apply_dpi 4 | local helpers = require("helpers") 5 | local wibox = require("wibox") 6 | 7 | return wibox.widget { 8 | { 9 | widget = wibox.widget.textbox, 10 | markup = helpers.colorizeText("You are completely caught up :)", beautiful.fg .. "4D"), 11 | font = beautiful.font .. " 14", 12 | valign = "center", 13 | align = "center" 14 | }, 15 | margins = { top = dpi(15) }, 16 | widget = wibox.container.margin 17 | } 18 | -------------------------------------------------------------------------------- /.config/awesome/ui/titlebars/init.lua: -------------------------------------------------------------------------------- 1 | require("ui.titlebars.main") 2 | require("ui.titlebars.music") 3 | -------------------------------------------------------------------------------- /.config/awesome/ui/titlebars/main.lua: -------------------------------------------------------------------------------- 1 | local awful = require 'awful' 2 | require 'awful.autofocus' 3 | local wibox = require 'wibox' 4 | local gears = require 'gears' 5 | local xresources = require("beautiful.xresources") 6 | local dpi = xresources.apply_dpi 7 | local beautiful = require("beautiful") 8 | local ruled = require("ruled") 9 | client.connect_signal("request::titlebars", function(c) 10 | -- buttons for the titlebar 11 | local buttons = gears.table.join( 12 | awful.button({}, 1, function() 13 | client.focus = c 14 | c:raise() 15 | awful.mouse.client.move(c) 16 | end), 17 | awful.button({}, 3, function() 18 | client.focus = c 19 | c:raise() 20 | awful.mouse.client.resize(c) 21 | end) 22 | ) 23 | awful.titlebar(c, { 24 | size = 30, 25 | }):setup { 26 | { 27 | { -- Right 28 | { 29 | awful.titlebar.widget.closebutton(c), 30 | awful.titlebar.widget.maximizedbutton(c), 31 | awful.titlebar.widget.minimizebutton(c), 32 | spacing = dpi(8), 33 | layout = wibox.layout.fixed.horizontal 34 | }, 35 | top = dpi(5), 36 | bottom = dpi(5), 37 | widget = wibox.container.margin 38 | }, 39 | { -- Middle 40 | buttons = buttons, 41 | layout = wibox.layout.flex.horizontal 42 | }, 43 | { -- Left 44 | { -- Title 45 | { 46 | align = 'center', 47 | widget = awful.titlebar.widget.titlewidget(c) 48 | }, 49 | widget = wibox.container.constraint, 50 | width = dpi(350) 51 | 52 | }, 53 | -- awful.titlebar.widget.iconwidget(c), 54 | buttons = buttons, 55 | layout = wibox.layout.fixed.horizontal, 56 | }, 57 | layout = wibox.layout.align.horizontal 58 | }, 59 | right = dpi(10), 60 | left = dpi(10), 61 | top = dpi(0), 62 | bottom = dpi(5), 63 | widget = wibox.container.margin 64 | } 65 | end) 66 | -------------------------------------------------------------------------------- /.config/dunst/dunstrc: -------------------------------------------------------------------------------- 1 | [global] 2 | monitor = 0 3 | follow = mouse 4 | width = (150,350) 5 | height = (200,500) 6 | progress_bar = true 7 | progress_bar_height = 18 8 | progress_bar_frame_width = 1 9 | progress_bar_min_width = 150 10 | progress_bar_max_width = 300 11 | highlight = "#8fa176" 12 | indicate_hidden = true 13 | shrink = true 14 | transparency = 0 15 | separator_height = 15 16 | padding = 18 17 | horizontal_padding = 18 18 | text_icon_padding = 8 19 | gap_size = 2 20 | frame_width = 1 21 | frame_color = "#1a1a1a" 22 | sort = true 23 | idle_threshold = 0 24 | font = Iosevka Nerd Font 14 25 | line_height = 4 26 | markup = full 27 | origin = "top-left" 28 | offset = "9x46" 29 | format = "%s\n%b" 30 | alignment = left 31 | show_age_threshold = 60 32 | word_wrap = true 33 | ignore_newline = true 34 | stack_duplicates = true 35 | hide_duplicate_count = true 36 | show_indicators = true 37 | icon_position = off 38 | max_icon_size = 80 39 | min_icon_size = 50 40 | icon_theme = "Zafiro-Icons-Dark" 41 | enable_recursive_icon_lookup = true 42 | sticky_history = true 43 | history_length = 50 44 | browser = firefox 45 | always_run_script = true 46 | title = Dunst 47 | class = Dunst 48 | notification_limit = 5 49 | mouse_left_click = do_action 50 | mouse_middle_click = close_current 51 | mouse_right_click = context_all 52 | ignore_dbusclose = true 53 | ellipsize = end 54 | 55 | [urgency_low] 56 | timeout = 4 57 | background = "#121111" 58 | frame_color = "#8fa176" 59 | foreground = "#8fa176" 60 | 61 | [urgency_normal] 62 | timeout = 8 63 | background = "#121111" 64 | frame_color = "#809fbe" 65 | foreground = "#809fbe" 66 | 67 | [urgency_critical] 68 | timeout = 30 69 | background = "#121111" 70 | frame_color = "#c15a5e" 71 | foreground = "#c15a5e" 72 | 73 | [fullscreen_show_critical] 74 | msg_urgency = critical 75 | fullscreen = pushback 76 | 77 | [logger] 78 | summary = "*" 79 | body = "*" 80 | script = "~/.config/eww/scripts/notification_logger.zsh" 81 | -------------------------------------------------------------------------------- /.config/eww/assets/empty-notification.svg: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 8 | 11 | 14 | 15 | 18 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /.config/eww/assets/nosong.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NotAShelf/dotfiles/9c40e15577251d9a480ddf6a530eb25929c6f2ba/.config/eww/assets/nosong.jpg -------------------------------------------------------------------------------- /.config/eww/assets/profile.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NotAShelf/dotfiles/9c40e15577251d9a480ddf6a530eb25929c6f2ba/.config/eww/assets/profile.jpg -------------------------------------------------------------------------------- /.config/eww/eww.scss: -------------------------------------------------------------------------------- 1 | @import "./src/scss/vars"; 2 | @import "./src/scss/mainframe/index"; 3 | @import "./src/scss/moment/index"; 4 | @import "./src/scss/disclose/index"; 5 | -------------------------------------------------------------------------------- /.config/eww/eww.yuck: -------------------------------------------------------------------------------- 1 | (include "./src/yuck/_vars.yuck") 2 | 3 | (include "./src/yuck/mainframe/_widgets.yuck") 4 | (include "./src/yuck/mainframe/_window.yuck") 5 | 6 | (include "./src/yuck/moment/_widgets.yuck") 7 | (include "./src/yuck/moment/_window.yuck") 8 | 9 | 10 | (include "./src/yuck/disclose/_widgets.yuck") 11 | (include "./src/yuck/disclose/_window.yuck") 12 | -------------------------------------------------------------------------------- /.config/eww/scripts/airplanemode: -------------------------------------------------------------------------------- 1 | #!/usr/bin/bash 2 | STATUS="$(rfkill list | sed -n 2p | awk '{print $3}')" 3 | 4 | 5 | toggle() { 6 | if [[ $STATUS == "no" ]]; then 7 | getroot 'pkexec rfkill block all' 8 | notify-send --urgency=normal "Airplane Mode" "Airplane mode has been turned on!" 9 | else 10 | getroot 'pkexec rfkill unblock all' 11 | notify-send --urgency=normal "Airplane Mode" "Airplane mode has been turned off!" 12 | fi 13 | } 14 | 15 | class() { 16 | if [[ $STATUS == "no" ]]; then 17 | echo "inactive" 18 | else 19 | echo "active" 20 | fi 21 | } 22 | 23 | if [[ $1 == "--toggle" ]]; then 24 | toggle 25 | elif [[ $1 == "--class" ]]; then 26 | class 27 | fi 28 | -------------------------------------------------------------------------------- /.config/eww/scripts/bluetooth: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | toggle() { 4 | STATUS="$(bluetoothctl show | grep Powered | awk '{print $2}')" 5 | if [ $STATUS == "yes" ]; then 6 | bluetoothctl power off 7 | notify-send --icon=bluetooth-offline --urgency=normal "Bluetooth" "Bluetooth has been turned off." 8 | else 9 | bluetoothctl power on 10 | notify-send --icon=volume-level-high --urgency=normal "Bluetooth" "Bluetooth has been turned on." 11 | fi 12 | } 13 | 14 | class() { 15 | # off 16 | if [ $(bluetoothctl show | grep "Powered: yes" | wc -c) -eq 0 ] 17 | then 18 | echo inactive 19 | else 20 | echo active 21 | fi 22 | } 23 | 24 | status() { 25 | # not connected 26 | if [ $(bluetoothctl show | grep "Powered: yes" | wc -c) -eq 0 ]; then 27 | echo "Off" 28 | else 29 | # on 30 | if [ $(echo info | bluetoothctl | grep 'Device' | wc -c) -eq 0 ]; then 31 | echo "On" 32 | else 33 | # get device alias 34 | DEVICE=`echo info | bluetoothctl | grep 'Alias:' | awk -F: '{ print $2 }'` 35 | echo "$DEVICE" 36 | fi 37 | fi 38 | } 39 | 40 | 41 | if [[ $1 == "--status" ]]; then 42 | status 43 | elif [[ $1 == "--icon" ]]; then 44 | icon 45 | elif [[ $1 == "--toggle" ]]; then 46 | toggle 47 | elif [[ $1 == "--class" ]]; then 48 | class 49 | elif [[ $1 == "--battery" ]]; then 50 | battery 51 | fi 52 | -------------------------------------------------------------------------------- /.config/eww/scripts/donotdisturb: -------------------------------------------------------------------------------- 1 | #!/usr/bin/bash 2 | 3 | STATUS=$(dunstctl is-paused) 4 | 5 | toggle() { 6 | if [ $STATUS == "false" ]; then 7 | dunstctl set-paused true 8 | else 9 | dunstctl set-paused false 10 | fi 11 | } 12 | 13 | 14 | class() { 15 | if [ $STATUS == "false" ]; then 16 | echo "inactive" 17 | else 18 | echo "active" 19 | fi 20 | } 21 | 22 | if [[ $1 == "--toggle" ]]; then 23 | toggle 24 | elif [[ $1 == "--class" ]]; then 25 | class 26 | fi 27 | -------------------------------------------------------------------------------- /.config/eww/scripts/picom: -------------------------------------------------------------------------------- 1 | #!/usr/bin/bash 2 | toggle(){ 3 | if [[ ! `pidof picom` ]]; then 4 | picom & 5 | else 6 | pkill -9 picom 7 | fi 8 | } 9 | 10 | class(){ 11 | if [[ ! `pidof picom` ]]; then 12 | echo inactive 13 | else 14 | echo active 15 | fi 16 | } 17 | 18 | if [[ $1 == "--toggle" ]]; then 19 | toggle 20 | elif [[ $1 == "--class" ]]; then 21 | class 22 | fi 23 | -------------------------------------------------------------------------------- /.config/eww/scripts/wifi: -------------------------------------------------------------------------------- 1 | #!/usr/bin/bash 2 | STATUS=$(nmcli | grep wlan0 | awk 'FNR == 1 {print $2}') 3 | SSID=$(iwgetid -r) 4 | STRENGTH=$(awk 'NR==3 {printf("%.0f",$3*10/7)}' /proc/net/wireless) 5 | 6 | toggle() { 7 | if [[ $STATUS == "connected" ]]; then 8 | getroot 'nmcli radio wifi off' 9 | notify-send --urgency=normal "Wi-Fi" "Wi-Fi has been turned off!" 10 | else 11 | getroot 'nmcli radio wifi on' 12 | notify-send --urgency=normal "Wi-Fi" "Wi-Fi has been turned on, you are back online!" 13 | fi 14 | } 15 | 16 | 17 | class() { 18 | if [[ $STATUS == "connected" ]]; then 19 | echo "active" 20 | else 21 | echo "inactive" 22 | fi 23 | } 24 | 25 | speed() { 26 | s1=$(awk 'NR==3 {print $3}''' /proc/net/wireless) 27 | s2=${s1::-1} 28 | echo $s2 29 | } 30 | 31 | ssid() { 32 | if [[ $STATUS == "connected" ]]; then 33 | echo $(iwgetid -r) 34 | 35 | else 36 | echo "Wifi" 37 | fi 38 | } 39 | color() { 40 | if [[ $STATUS == "connected" ]]; then 41 | echo "green" 42 | 43 | else 44 | echo "red" 45 | fi 46 | } 47 | icon() { 48 | if [[ $STATUS == "connected" ]]; then 49 | echo "󰤨" 50 | 51 | else 52 | echo "󰤮" 53 | fi 54 | } 55 | 56 | 57 | if [[ $1 == "--toggle" ]]; then 58 | toggle 59 | elif [[ $1 == "--class" ]]; then 60 | class 61 | elif [[ $1 == "--ssid" ]]; then 62 | ssid 63 | elif [[ $1 == "--color" ]]; then 64 | color 65 | elif [[ $1 == "--icon" ]]; then 66 | icon 67 | elif [[ $1 == "--speed" ]]; then 68 | speed 69 | fi 70 | -------------------------------------------------------------------------------- /.config/eww/src/scss/_vars.scss: -------------------------------------------------------------------------------- 1 | * { 2 | all: unset; 3 | } 4 | 5 | $background : #121111; 6 | $foreground : #dbdfdf; 7 | $background-alt : #191919; 8 | $background-light : #252525; 9 | $foreground-alt : #b7b7b7; 10 | $red : #af575b; 11 | $red-light : #c15a5e; 12 | 13 | $green : #7d8a6b; 14 | $green-light : #8fa176; 15 | 16 | 17 | $yellow : #caac79; 18 | $yellow-light : #d8b170; 19 | 20 | $orange: #eaac79; 21 | 22 | $blue : #7d95ae; 23 | $blue-light : #809fbe; 24 | 25 | $cyan : #6b8f8a; 26 | $cyan-light : #8cb5af; 27 | 28 | $magenta : #a07ea7; 29 | $magenta-light : #b183ba; 30 | 31 | $comment : #5a5858; 32 | $comment-light : #838383; 33 | // $accent : #738c64; 34 | $accent : $blue-light; 35 | 36 | .commentlight { 37 | color: $comment-light 38 | } 39 | 40 | .accent { 41 | color: $accent; 42 | } 43 | 44 | .comment { 45 | color: $comment; 46 | } 47 | 48 | .red { 49 | color: $red; 50 | } 51 | 52 | .yellow { 53 | color: $yellow; 54 | } 55 | 56 | .green { 57 | color: $green; 58 | } 59 | 60 | .magenta { 61 | color: $magenta; 62 | } 63 | 64 | .blue { 65 | color: $blue; 66 | } 67 | 68 | .cyan { 69 | color: $cyan; 70 | } 71 | 72 | .white { 73 | color: $foreground-alt; 74 | } 75 | -------------------------------------------------------------------------------- /.config/eww/src/scss/disclose/_index.scss: -------------------------------------------------------------------------------- 1 | .control-center { 2 | padding: 1rem; 3 | background-color: $background; 4 | color: $foreground-alt; 5 | 6 | font-family: "Iosevka Nerd Font"; 7 | 8 | &-card-box { 9 | font-size: 1.1rem; 10 | font-weight: 300; 11 | } 12 | 13 | &-card-notify-close { 14 | font-size: 1.3rem; 15 | } 16 | 17 | &-titlebar { 18 | background-color: $background-light; 19 | padding: 1rem; 20 | 21 | } 22 | 23 | &-content { 24 | padding: 1rem; 25 | } 26 | 27 | &-card-eventbox { 28 | background-color: $background-alt; 29 | padding: 1rem; 30 | } 31 | 32 | &-glyph { 33 | font-size: 2.4rem; 34 | padding: 1.7rem; 35 | margin-right: 1rem; 36 | background-color: $background-light; 37 | font-family: "Material Design Icons Desktop"; 38 | } 39 | 40 | &-changebrightness { 41 | color: $yellow; 42 | } 43 | 44 | &-empty-label { 45 | font-size: 1.3rem; 46 | } 47 | 48 | &-changevolume { 49 | color: $cyan; 50 | } 51 | 52 | &-Spotify { 53 | color: $green; 54 | } 55 | 56 | &-firefox { 57 | color: $orange; 58 | } 59 | 60 | &-screenshot { 61 | color: $magenta; 62 | } 63 | 64 | &-separator { 65 | background-color: $comment; 66 | } 67 | 68 | &-title { 69 | font-size: 1.5rem; 70 | font-weight: 300; 71 | 72 | } 73 | 74 | &-header { 75 | padding: 0.5rem 0rem; 76 | margin-bottom: 0.5rem; 77 | } 78 | 79 | &-clear-all { 80 | background-color: $background-alt; 81 | padding: .8rem; 82 | } 83 | 84 | font-family: "Iosevka Nerd Font"; 85 | } 86 | 87 | .statcard { 88 | &-box { 89 | padding: 0 1rem 1rem 1rem; 90 | background-color: $background; 91 | } 92 | 93 | &-icon { 94 | font-family: "Iosevka Nerd Font"; 95 | margin-bottom: 2rem; 96 | } 97 | 98 | &-value { 99 | font-family: "Iosevka Nerd Font"; 100 | font-size: 2rem; 101 | margin-bottom: 3rem; 102 | } 103 | 104 | &-scale trough { 105 | min-height: 0.2rem; 106 | background-color: $background-light; 107 | } 108 | 109 | &-scale-red trough highlight { 110 | background-color: $red; 111 | } 112 | 113 | 114 | &-scale-blue trough highlight { 115 | background-color: $blue; 116 | } 117 | 118 | &-scale-green trough highlight { 119 | background-color: $green; 120 | } 121 | 122 | padding: 1rem; 123 | background-color: $background-alt; 124 | } 125 | -------------------------------------------------------------------------------- /.config/eww/src/scss/moment/_index.scss: -------------------------------------------------------------------------------- 1 | .moment { 2 | background-color: $background; 3 | border-radius: 4px; 4 | } 5 | 6 | calendar { 7 | font-family: "Iosevka Nerd Font"; 8 | 9 | &:selected { 10 | color: $accent; 11 | } 12 | 13 | &:indeterminate { 14 | color: rgba(205, 219, 249, 0.3); 15 | } 16 | } 17 | 18 | .moment_calendar { 19 | background-color: $background; 20 | border-radius: 10px; 21 | 22 | .moment_cal-box { 23 | background-color: $background; 24 | border-radius: inherit; 25 | 26 | margin: 1em; 27 | 28 | .moment_month-year { 29 | font-family: "Iosevka Nerd Font"; 30 | font-size: 1.3rem; 31 | font-weight: bold; 32 | margin: 0.5em 0em 0em; 33 | } 34 | 35 | .moment_day-names { 36 | font-family: "Iosevka Nerd Font"; 37 | margin: 1em 1em 0em; 38 | font-size: 1.1rem; 39 | font-weight: bold; 40 | color: $green; 41 | } 42 | 43 | .moment_cal { 44 | font-size: 1.0rem; 45 | padding: 1em .75em 0em; 46 | } 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /.config/eww/src/yuck/_vars.yuck: -------------------------------------------------------------------------------- 1 | (defpoll thourtime :interval "40s" `date +"%a %I:%M %p"`) 2 | (defpoll day :interval "1m" `date +"%A"`) 3 | (defpoll apactive :interval '1s' "~/.config/eww/scripts/airplanemode --class") 4 | (defpoll dndactive :interval '1s' "~/.config/eww/scripts/donotdisturb --class") 5 | (defpoll wifiactive :interval '1s' "~/.config/eww/scripts/wifi --class") 6 | (defpoll btactive :interval '1s' "~/.config/eww/scripts/bluetooth --class") 7 | (defpoll picomactive :interval '1s' "~/.config/eww/scripts/picom --class") 8 | (defpoll micmute :interval '1s' 'pamixer --source 1 --get-mute') 9 | 10 | (defpoll ssid :interval '3s' `~/.config/eww/scripts/wifi --ssid`) 11 | 12 | (defpoll user :interval '5m' `echo $USER`) 13 | (defpoll host :interval '5m' `cat /etc/hostname`) 14 | 15 | (defpoll brightness :interval "1s" `brillo`) 16 | (defpoll volume :interval "1s" `pamixer --get-volume`) 17 | 18 | (defpoll battery_icon :interval "1m" `~/.local/bin/battery --icon`) 19 | (defpoll battery_perc :interval "1m" `~/.local/bin/battery --val`) 20 | 21 | (defpoll songname :interval "1s" "~/.config/eww/scripts/music --song") 22 | (defpoll artist :interval "1s" "~/.config/eww/scripts/music --artist") 23 | (defpoll icon :interval "1s" "~/.config/eww/scripts/music --status") 24 | (defpoll songimage :interval "1s" "~/.config/eww/scripts/music --cover") 25 | (defpoll ctime :interval "1s" "~/.config/eww/scripts/music --ctime") 26 | (defpoll ttime :interval "1s" "~/.config/eww/scripts/music --ttime") 27 | (defpoll ptime :interval "1s" "~/.config/eww/scripts/music --time") 28 | (defpoll random :interval "1s" "~/.config/eww/scripts/music --getrandom") 29 | (defpoll repeat :interval "1s" "~/.config/eww/scripts/music --getrepeat") 30 | (defpoll single :interval "1s" "~/.config/eww/scripts/music --getsingle") 31 | 32 | (deflisten cards "~/.config/eww/scripts/notification_logger.zsh subscribe") 33 | (defpoll critical :interval "1s" "~/.config/eww/scripts/notification_logger.zsh crits") 34 | 35 | (defpoll focusmode :interval "1s" `~/.local/bin/hostsafe status`) 36 | -------------------------------------------------------------------------------- /.config/eww/src/yuck/disclose/_widgets.yuck: -------------------------------------------------------------------------------- 1 | (defwidget card [?class summary body glyph ?glyph_class ?SL ?M ?L ?R] 2 | (eventbox :onmiddleclick M 3 | :onclick L 4 | :onrightclick R 5 | :class "control-center-card-eventbox" 6 | (box :space-evenly false :orientation '' 7 | 8 | (box :orientation "vertical" 9 | :class class 10 | :hexpand true 11 | :space-evenly false 12 | :class "control-center-card-box" 13 | 14 | (box :space-evenly false 15 | :class "control-center-titlebar" 16 | (label :limit-width 25 17 | :wrap true 18 | :text summary 19 | :class "control-center-summary" 20 | :halign "start" 21 | :hexpand true) 22 | (button :onclick "~/.config/eww/scripts/notification_logger.zsh rm_id ${SL}" 23 | :class "red control-center-card-notify-close" 24 | :halign "end" 25 | (label :text "x"))) 26 | (box :class "control-center-content" :space-evenly false 27 | (label :class "control-center-glyph ${glyph_class}" 28 | :text glyph) 29 | (label :limit-width 40 30 | :halign "start" 31 | :wrap true 32 | :text body 33 | :class "control-center-body")) 34 | ) 35 | ) 36 | ) 37 | ) 38 | 39 | (defwidget statcard[icon value color] 40 | (box :orientation 'v' :class 'statcard' :space-evenly false 41 | (box :halign 'start' :class '${color} statcard-icon' icon) 42 | (box :class 'white statcard-value' '${value}%') 43 | (scale :class 'statcard-scale statcard-scale-${color}' :min 0 :max 100 :active false :value value) 44 | ) 45 | ) 46 | (defwidget disclose[] 47 | (box :class 'disclose' :orientation 'v' :space-evenly false 48 | (box :class "control-center" :space-evenly false :orientation 'v' :width 430 49 | (box :class "control-center-header" :space-evenly false :hexpand true 50 | (box :halign 'start' :hexpand true :class "control-center-title" "Notifications") 51 | (button :class "control-center-clear-all" :onclick '~/.config/eww/scripts/notification_logger.zsh clear' "Clear All") 52 | ) 53 | (literal :content cards) 54 | ) 55 | (box :class 'statcard-box' :spacing 10 56 | (statcard :icon 'RAM' :color 'red' :value {round(EWW_RAM.used_mem_perc, 0)}) 57 | (statcard :icon 'CPU' :color 'green' :value {round(EWW_CPU.avg, 0)}) 58 | (statcard :icon 'DISK' :color 'blue' :value {round(EWW_DISK['/'].used_perc, 0)}) 59 | ) 60 | ) 61 | ) 62 | -------------------------------------------------------------------------------- /.config/eww/src/yuck/disclose/_window.yuck: -------------------------------------------------------------------------------- 1 | (defwindow disclose 2 | :monitor 0 3 | :geometry (geometry :x "-6px" 4 | :y "43px" 5 | :anchor "top right") 6 | :stacking "fg" 7 | (disclose)) 8 | -------------------------------------------------------------------------------- /.config/eww/src/yuck/mainframe/_window.yuck: -------------------------------------------------------------------------------- 1 | (defwindow mainframe 2 | :monitor 0 3 | :geometry (geometry :x "-6px" 4 | :y "43px" 5 | :anchor "top right") 6 | :stacking "fg" 7 | (mainframe)) 8 | -------------------------------------------------------------------------------- /.config/eww/src/yuck/moment/_widgets.yuck: -------------------------------------------------------------------------------- 1 | (defwidget moment[] 2 | (box :orientation 'v' :class 'moment' :space-evenly false 3 | (moment_calendar) 4 | ) 5 | ) 6 | 7 | (defwidget moment_calendar[] 8 | (box :class " white moment_calendar" :orientation "v" 9 | (box :class "moment_cal-box" 10 | :orientation "v" 11 | :space-evenly "false" 12 | (label :class "moment_month-year" :text thourtime) 13 | (box :class "moment_day-names" :orientation "h" :space-evenly "true" 14 | (label :text "Su") 15 | (label :text "Mo") 16 | (label :text "Tu") 17 | (label :text "We") 18 | (label :text "Th") 19 | (label :text "Fr") 20 | (label :text "Sa") 21 | ) 22 | (calendar :class "moment_cal" 23 | :show-details false :show-heading false :show-day-names false) 24 | ) 25 | ) 26 | ) 27 | -------------------------------------------------------------------------------- /.config/eww/src/yuck/moment/_window.yuck: -------------------------------------------------------------------------------- 1 | (defwindow moment 2 | :monitor 0 3 | :geometry (geometry :x "-6px" 4 | :y "43px" 5 | :anchor "top right") 6 | :wm-ignore true 7 | :stacking "fg" 8 | (moment)) 9 | -------------------------------------------------------------------------------- /.config/gammastep/config.ini: -------------------------------------------------------------------------------- 1 | ; Global settings 2 | [general] 3 | ; Set the day and night screen temperatures 4 | temp-day=5700 5 | temp-night=3500 6 | 7 | ; Disable the smooth fade between temperatures when Redshift starts and stops. 8 | ; 0 will cause an immediate change between screen temperatures. 9 | ; 1 will gradually apply the new screen temperature over a couple of seconds. 10 | fade=1 11 | 12 | ; Solar elevation thresholds. 13 | ; By default, Redshift will use the current elevation of the sun to determine 14 | ; whether it is daytime, night or in transition (dawn/dusk). When the sun is 15 | ; above the degrees specified with elevation-high it is considered daytime and 16 | ; below elevation-low it is considered night. 17 | ;elevation-high=3 18 | ;elevation-low=-6 19 | 20 | ; Custom dawn/dusk intervals. 21 | ; Instead of using the solar elevation, the time intervals of dawn and dusk 22 | ; can be specified manually. The times must be specified as HH:MM in 24-hour 23 | ; format. 24 | ;dawn-time=6:00-7:45 25 | ;dusk-time=18:35-20:15 26 | 27 | ; Set the screen brightness. Default is 1.0. 28 | ;brightness=0.9 29 | ; It is also possible to use different settings for day and night 30 | ; since version 1.8. 31 | ;brightness-day=0.7 32 | ;brightness-night=0.4 33 | ; Set the screen gamma (for all colors, or each color channel 34 | ; individually) 35 | gamma=0.8 36 | ;gamma=0.8:0.7:0.8 37 | ; This can also be set individually for day and night since 38 | ; version 1.10. 39 | ;gamma-day=0.8:0.7:0.8 40 | ;gamma-night=0.6 41 | 42 | ; Set the location-provider: 'geoclue2', 'manual'. 43 | ; The location provider settings are in a different section. 44 | location-provider=manual 45 | 46 | ; Set the adjustment-method: 'randr', 'vidmode', 'drm', 'wayland'. 47 | ; 'randr' is the preferred X11 method, 'vidmode' is an older API 48 | ; that works in some cases when 'randr' does not. 49 | ; The adjustment method settings are in a different section. 50 | ;adjustment-method=wayland 51 | adjustment-method=randr 52 | 53 | ; Configuration of the location-provider: 54 | ; type 'gammastep -l PROVIDER:help' to see the settings. 55 | ; ex: 'gammastep -l manual:help' 56 | ; Keep in mind that longitudes west of Greenwich (e.g. the Americas) 57 | ; are negative numbers. 58 | [manual] 59 | lat=48.1 60 | lon=11.6 61 | 62 | ; Configuration of the adjustment-method 63 | ; type 'gammastep -m METHOD:help' to see the settings. 64 | ; ex: 'gammastep -m randr:help' 65 | ; In this example, randr is configured to adjust only screen 0. 66 | ; Note that the numbering starts from 0, so this is actually the first screen. 67 | ; If this option is not specified, Redshift will try to adjust _all_ screens. 68 | [randr] 69 | screen=0 70 | -------------------------------------------------------------------------------- /.config/hypr/hyprpaper.conf: -------------------------------------------------------------------------------- 1 | #preload = /home/notashelf/Pictures/Wallpapers/Colored/1146917.jpg 2 | #preload = /home/notashelf/Pictures/Wallpapers/Colored/wallhaven-zmw7dw.png 3 | preload = /home/notashelf/Pictures/Wallpapers/Monochrome/Light/Raven.png 4 | 5 | #wallpaper = HDMI-A-1,/home/notashelf/Pictures/Wallpapers/Colored/1146917.jpg 6 | #wallpaper = HDMI-A-1,/home/notashelf/Pictures/Wallpapers/Colored/wallhaven-zmw7dw.png 7 | wallpaper = HDMI-A-1,/home/notashelf/Pictures/Wallpapers/Monochrome/Light/Raven.png 8 | 9 | -------------------------------------------------------------------------------- /.config/hypr/scripts/convertMkvToMp4: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | # Receive the mkv file to convert to mp4 4 | mkvFile=$1 5 | 6 | # Convert the mkv file to mp4 7 | ffmpeg -i "$mkvFile" -c:v libx264 -c:a aac -strict -2 "${mkvFile%.*}.mp4" 8 | 9 | 10 | # Convert 11 | #ffmpeg -i $1 -codec copy $2.mp4 12 | -------------------------------------------------------------------------------- /.config/hypr/scripts/hyprInit: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | sleep 4 3 | 4 | killall xdg-desktop-portal-wlr 5 | killall xdg-desktop-portal 6 | killall xdg-desktop-portal-gtk 7 | 8 | /usr/lib/xdg-desktop-portal-wlr & 9 | 10 | sleep 4 11 | 12 | /usr/lib/xdg-desktop-portal & 13 | -------------------------------------------------------------------------------- /.config/hypr/scripts/launchUpdater: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | kitty -T sysupdate --class sysupdate \ 4 | -e yay -Syu || notify-send 'System upgrade has failed' && \ 5 | notify-send 'The system has been updated' && \ 6 | echo -e "System updated successfully." || \ 7 | echo -e "System update failed!" 8 | -------------------------------------------------------------------------------- /.config/hypr/scripts/restartPipeWire: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | echo -en "Restarting pipewire & pipewire-pulse\n" 4 | time systemctl --user restart pipewire pipewire-pulse 5 | echo -en "\n" 6 | 7 | echo -en "Reloading daemon\n" 8 | time systemctl --user daemon-reload 9 | echo -en "\n" 10 | -------------------------------------------------------------------------------- /.config/hypr/scripts/swayIdleLauncher: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | swayidle -w \ 4 | timeout 300 'echo "Activating idle lock!" ; ~/.config/hypr/scripts/swayIdleLocker &' \ 5 | timeout 600 'echo "Turning dpms off" ; hyprctl dispatch dpms off' \ 6 | resume 'echo "Turning dpms on" ; hyprctl dispatch dpms on' \ 7 | before-sleep 'echo "Activating sleep lock!" ; ~/.config/hypr/scripts/swayLocker &' 8 | -------------------------------------------------------------------------------- /.config/hypr/scripts/swayIdleLocker: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # get the current desktop screen and blur it 4 | monitors="$(hyprctl monitors -j | jq -r '.[] | .name' | tr '\n' ' ')" 5 | 6 | screenshot_dir="$(mktemp -d)" 7 | 8 | swaylock_args=( 9 | --fade-in 5 10 | --grace 10 11 | --daemonize 12 | 13 | --clock 14 | --indicator 15 | --indicator-idle-visible 16 | --indicator-caps-lock 17 | 18 | --indicator-radius 90 19 | 20 | --font MesloLGSNF 21 | 22 | --inside-color 282828 23 | --inside-clear-color 282828 24 | --inside-caps-lock-color 282828 25 | --inside-ver-color 282828 26 | --inside-wrong-color 282828 27 | 28 | --key-hl-color ebdbb2 29 | 30 | --line-color 3c3c3c 31 | --line-clear-color 3c3c3c 32 | --line-caps-lock-color 3c3c3c 33 | --line-ver-color 3c3c3c 34 | --line-wrong-color 3c3c3c 35 | 36 | --ring-color 282828 37 | --ring-clear-color 282828 38 | --ring-caps-lock-color c89038 39 | --ring-ver-color 282828 40 | --ring-wrong-color 282828 41 | 42 | --separator-color 8b7b52 43 | 44 | --text-color ebdbb2 45 | --text-clear-color ebdbb2 46 | --text-caps-lock-color ebdbb2 47 | --text-ver-color ebdbb2 48 | --text-wrong-color ebdbb2 49 | ) 50 | 51 | for monitor in ${monitors}; do 52 | screenshot_file="${screenshot_dir}/${monitor}.png" 53 | 54 | grim -o "${monitor}" "${screenshot_file}" 55 | convert -filter Gaussian -resize 20% -blur 10x3 -resize 500% "${screenshot_file}" "${screenshot_file}" 56 | 57 | swaylock_args+=("--image=${monitor}:${screenshot_file}") 58 | done 59 | 60 | swaylock ${swaylock_args[@]} 61 | 62 | rm -r "${screenshot_dir}" 63 | -------------------------------------------------------------------------------- /.config/hypr/scripts/swayLocker: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # get the current desktop screen and blur it 4 | monitors="$(hyprctl monitors -j | jq -r '.[] | .name' | tr '\n' ' ')" 5 | 6 | screenshot_dir="$(mktemp -d)" 7 | 8 | swaylock_args=( 9 | --clock 10 | --indicator 11 | --indicator-idle-visible 12 | --indicator-caps-lock 13 | 14 | --indicator-radius 90 15 | 16 | --font MesloLGSNF 17 | 18 | --inside-color 282828 19 | --inside-clear-color 282828 20 | --inside-caps-lock-color 282828 21 | --inside-ver-color 282828 22 | --inside-wrong-color 282828 23 | 24 | --key-hl-color ebdbb2 25 | 26 | --line-color 3c3c3c 27 | --line-clear-color 3c3c3c 28 | --line-caps-lock-color 3c3c3c 29 | --line-ver-color 3c3c3c 30 | --line-wrong-color 3c3c3c 31 | 32 | --ring-color 282828 33 | --ring-clear-color 282828 34 | --ring-caps-lock-color c89038 35 | --ring-ver-color 282828 36 | --ring-wrong-color 282828 37 | 38 | --separator-color 8b7b52 39 | 40 | --text-color ebdbb2 41 | --text-clear-color ebdbb2 42 | --text-caps-lock-color ebdbb2 43 | --text-ver-color ebdbb2 44 | --text-wrong-color ebdbb2 45 | 46 | --grace 3 47 | --daemonize 48 | ) 49 | 50 | for monitor in ${monitors}; do 51 | screenshot_file="${screenshot_dir}/${monitor}.png" 52 | 53 | grim -o "${monitor}" "${screenshot_file}" 54 | convert -filter Gaussian -resize 20% -blur 10x3 -resize 500% "${screenshot_file}" "${screenshot_file}" 55 | 56 | swaylock_args+=("--image=${monitor}:${screenshot_file}") 57 | done 58 | 59 | # not sure why i didnt just do `swayidle ... &`; this is 60 | # how i wrote it as i was going but I think it looks nice 61 | # so im just keeping it 62 | #{ 63 | # swayidle -w timeout 300 'hyprctl dispatch dpms off' 64 | #} & 65 | 66 | swaylock ${swaylock_args[@]} 67 | 68 | rm -r "${screenshot_dir}" 69 | -------------------------------------------------------------------------------- /.config/hypr/scripts/swayLocker-old: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | # Take a screenshot and save it to /tmp/lockscreen.png 4 | grim -t png -l 0 /tmp/lockscreen.png 5 | 6 | # Lock the screen with the screenshot as the background 7 | # add as many options as you like 8 | swaylock \ 9 | --image /tmp/lockscreen.png \ 10 | --clock \ 11 | --indicator \ 12 | --indicator-radius 100 \ 13 | --indicator-thickness 7 \ 14 | --effect-blur 7x5 \ 15 | --effect-vignette 0.5:0.5 \ 16 | --ring-color 00000020 \ 17 | --key-hl-color FFFFFFFF \ 18 | --line-color 00000000 \ 19 | --inside-color 00000088 \ 20 | --separator-color 00000000 \ 21 | --grace 3 \ 22 | --fade-in 0.2 \ 23 | --daemonize 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /.config/hypr/scripts/wobFormat: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # Get current volume from the piped input 4 | volume=$(cat) 5 | 6 | # Remove "Volume:" from the output using regex 7 | volume=$(echo "${volume}" | sed 's/Volume: //') 8 | 9 | # Convert volume to percentage 10 | volume=$(echo "scale=2; ${volume} * 100" | bc) 11 | 12 | # Remove trailing zeros 13 | volume=$(echo "${volume}" | sed 's/\.00//') 14 | 15 | 16 | echo "${volume}" 17 | 18 | -------------------------------------------------------------------------------- /.config/kitty/colors-dracula.conf: -------------------------------------------------------------------------------- 1 | background #1e1f28 2 | foreground #f8f8f2 3 | cursor #bbbbbb 4 | selection_background #44475a 5 | color0 #000000 6 | color8 #545454 7 | color1 #ff5555 8 | color9 #ff5454 9 | color2 #50fa7b 10 | color10 #50fa7b 11 | color3 #f0fa8b 12 | color11 #f0fa8b 13 | color4 #bd92f8 14 | color12 #bd92f8 15 | color5 #ff78c5 16 | color13 #ff78c5 17 | color6 #8ae9fc 18 | color14 #8ae9fc 19 | color7 #bbbbbb 20 | color15 #ffffff 21 | selection_foreground #1e1f28 22 | -------------------------------------------------------------------------------- /.config/kitty/colors-monochrome.conf: -------------------------------------------------------------------------------- 1 | selection_foreground #000000 2 | selection_background #ffffff 3 | 4 | foreground #ffffff 5 | background #000000 6 | 7 | color0 #000000 8 | color1 #ffffff 9 | color2 #ffffff 10 | color3 #ffffff 11 | color4 #ffffff 12 | color5 #ffffff 13 | color6 #ffffff 14 | color7 #333333 15 | color8 #ffffff 16 | color9 #ffffff 17 | color10 #ffffff 18 | color11 #ffffff 19 | color12 #ffffff 20 | color13 #ffffff 21 | color14 #ffffff 22 | color15 #ffffff 23 | color16 #ffffff 24 | 25 | #color0 #000000 # black 26 | #color1 #5f8787 # aqua 27 | #color2 #dd9999 # red/pink 28 | #color3 #a06666 # darker red/pink 29 | #color4 #888888 # gray 30 | #color5 #999999 # lighter gray 31 | #color6 #aaaaaa # even lighter gray 32 | #color7 #c1c1c1 # even even lighter gray 33 | #color8 #333333 # pretty dark gray 34 | #color9 #5f8787 # light blue-ish 35 | #color10 #dd9999 # light pink 36 | #color11 #a06666 # still pink 37 | #color12 #888888 # what the fuck gray again 38 | #color13 #999999 # LIGHTER GRAY, AGAIN FUCK 39 | #color14 #aaaaaa # mildly ligter gray 40 | #color15 #c1c1c1 # and EVEN lighter gray what 41 | 42 | active_tab_foreground #ffffff 43 | active_tab_background #000000 44 | inactive_tab_foreground #666666 45 | inactive_tab_background #000000 46 | 47 | active_border_color #ffffff 48 | 49 | # Fonts 50 | font_family Source Code Pro 51 | bold_font Source Code Pro Bold 52 | italic_font Source Code Pro Italic 53 | bold_italic_font Source Code Pro Bold Italic 54 | font_size 14 55 | -------------------------------------------------------------------------------- /.config/kitty/test.conf: -------------------------------------------------------------------------------- 1 | selection_foreground #000000 2 | selection_background #ffffff 3 | 4 | foreground #ffffff 5 | background #000000 6 | 7 | cursor #a1a1a1 8 | 9 | color0 #030303 10 | color8 #707070 11 | color1 #212121 12 | color9 #212121 13 | color2 #252525 14 | color10 #252525 15 | color3 #2B2B2B 16 | color11 #2B2B2B 17 | color4 #333333 18 | color12 #333333 19 | color5 #3B3B3B 20 | color13 #3B3B3B 21 | color6 #464646 22 | color14 #464646 23 | color7 #a1a1a1 24 | color15 #a1a1a1 25 | 26 | 27 | #color0 #000000 # black 28 | #color1 #5f8787 # aqua 29 | #color2 #dd9999 # red/pink 30 | #color3 #a06666 # darker red/pink 31 | #color4 #888888 # gray 32 | #color5 #999999 # lighter gray 33 | #color6 #aaaaaa # even lighter gray 34 | #color7 #c1c1c1 # even even lighter gray 35 | #color8 #333333 # pretty dark gray 36 | #color9 #5f8787 # light blue-ish 37 | #color10 #dd9999 # light pink 38 | #color11 #a06666 # still pink 39 | #color12 #888888 # what the fuck gray again 40 | #color13 #999999 # LIGHTER GRAY, AGAIN FUCK 41 | #color14 #aaaaaa # mildly ligter gray 42 | #color15 #c1c1c1 # and EVEN lighter gray what 43 | 44 | active_tab_foreground #ffffff 45 | active_tab_background #000000 46 | inactive_tab_foreground #666666 47 | inactive_tab_background #000000 48 | 49 | active_border_color #ffffff 50 | 51 | # Fonts 52 | font_family Source Code Pro 53 | bold_font Source Code Pro Bold 54 | italic_font Source Code Pro Italic 55 | bold_italic_font Source Code Pro Bold Italic 56 | font_size 14 57 | -------------------------------------------------------------------------------- /.config/mimeapps.list: -------------------------------------------------------------------------------- 1 | [Added Associations] 2 | application/json=org.kde.kate.desktop; 3 | application/vnd.openxmlformats-officedocument.spreadsheetml.sheet=libreoffice-calc.desktop; 4 | application/vnd.openxmlformats-officedocument.wordprocessingml.document=libreoffice-writer.desktop; 5 | application/x-wine-extension-ini=org.kde.kate.desktop; 6 | application/x-xz-compressed-tar=org.kde.ark.desktop; 7 | application/x-yaml=code-oss.desktop; 8 | audio/flac=mpv.desktop; 9 | image/gif=org.kde.gwenview.desktop; 10 | image/jpeg=org.kde.gwenview.desktop; 11 | image/png=org.kde.gwenview.desktop; 12 | image/svg+xml=micro.desktop; 13 | inode/directory=org.kde.dolphin.desktop;code-oss.desktop; 14 | text/markdown=org.kde.kwrite.desktop; 15 | text/plain=org.kde.kwrite.desktop; 16 | text/x-log=org.kde.kate.desktop; 17 | text/x-python=code-oss.desktop; 18 | video/mp4=mpv.desktop; 19 | video/quicktime=mpv.desktop; 20 | x-scheme-handler/geo=org.gnome.Maps.desktop;qwant-maps-geo-handler.desktop; 21 | x-scheme-handler/http=firefox.desktop; 22 | x-scheme-handler/https=firefox.desktop; 23 | x-scheme-handler/mailto=thunderbird.desktop;org.kde.kmail2.desktop;userapp-Thunderbird-3HTXR1.desktop; 24 | x-scheme-handler/mid=userapp-Thunderbird-3HTXR1.desktop; 25 | x-scheme-handler/tel=org.kde.kdeconnect.handler.desktop; 26 | 27 | [Default Applications] 28 | application/json=org.kde.kate.desktop; 29 | application/x-wine-extension-ini=org.kde.kate.desktop; 30 | audio/flac=mpv.desktop; 31 | image/gif=org.kde.gwenview.desktop; 32 | image/jpeg=org.kde.gwenview.desktop; 33 | image/png=org.kde.gwenview.desktop; 34 | inode/directory=org.kde.dolphin.desktop; 35 | message/rfc822=userapp-Thunderbird-3HTXR1.desktop 36 | text/html=firefox.desktop 37 | text/markdown=org.kde.kwrite.desktop; 38 | text/plain=org.kde.kwrite.desktop; 39 | text/x-log=org.kde.kate.desktop; 40 | text/x-python=code-oss.desktop; 41 | video/mp4=mpv.desktop; 42 | video/quicktime=mpv.desktop; 43 | x-scheme-handler/about=firefox.desktop 44 | x-scheme-handler/discord-529029853471834113=discord-529029853471834113.desktop 45 | x-scheme-handler/discord-580018394888273931=discord-580018394888273931.desktop 46 | x-scheme-handler/etcher=balena-etcher.desktop 47 | x-scheme-handler/geo=org.gnome.Maps.desktop; 48 | x-scheme-handler/http=firefox.desktop; 49 | x-scheme-handler/https=firefox.desktop; 50 | x-scheme-handler/mailto=thunderbird.desktop; 51 | x-scheme-handler/mid=userapp-Thunderbird-3HTXR1.desktop 52 | x-scheme-handler/tel=org.kde.kdeconnect.handler.desktop; 53 | x-scheme-handler/unknown=firefox.desktop 54 | -------------------------------------------------------------------------------- /.config/qt5ct/qt5ct.conf: -------------------------------------------------------------------------------- 1 | [Appearance] 2 | color_scheme_path=/usr/share/qt5ct/colors/airy.conf 3 | custom_palette=false 4 | icon_theme=Tela-black-dark 5 | standard_dialogs=default 6 | style=kvantum-dark 7 | 8 | [Fonts] 9 | fixed=@Variant(\0\0\0@\0\0\0\"\0N\0o\0t\0o\0 \0S\0\x61\0n\0s\0 \0\x44\0i\0s\0p\0l\0\x61\0y@(\0\0\0\0\0\0\xff\xff\xff\xff\x5\x1\0\x32\x10) 10 | general=@Variant(\0\0\0@\0\0\0\"\0N\0o\0t\0o\0 \0S\0\x61\0n\0s\0 \0\x44\0i\0s\0p\0l\0\x61\0y@(\0\0\0\0\0\0\xff\xff\xff\xff\x5\x1\0\x32\x10) 11 | 12 | [Interface] 13 | activate_item_on_single_click=1 14 | buttonbox_layout=0 15 | cursor_flash_time=1000 16 | dialog_buttons_have_icons=1 17 | double_click_interval=400 18 | gui_effects=@Invalid() 19 | keyboard_scheme=2 20 | menus_have_icons=true 21 | show_shortcuts_in_context_menus=true 22 | stylesheets=@Invalid() 23 | toolbutton_style=4 24 | underline_shortcut=1 25 | wheel_scroll_lines=3 26 | 27 | [SettingsWindow] 28 | geometry=@ByteArray(\x1\xd9\xd0\xcb\0\x3\0\0\0\0\0\0\0\0\0\0\0\0\ai\0\0\x3\xef\0\0\0\0\0\0\0\0\0\0\x2\xde\0\0\x3%\0\0\0\0\x2\0\0\0\a\x80\0\0\0\0\0\0\0\0\0\0\ai\0\0\x3\xef) 29 | 30 | [Troubleshooting] 31 | force_raster_widgets=1 32 | ignored_applications=@Invalid() 33 | -------------------------------------------------------------------------------- /.config/qt6ct/qt6ct.conf: -------------------------------------------------------------------------------- 1 | [Appearance] 2 | color_scheme_path=/usr/share/qt6ct/colors/airy.conf 3 | custom_palette=false 4 | icon_theme=Tela-black-dark 5 | standard_dialogs=default 6 | style=kvantum 7 | 8 | [Fonts] 9 | fixed="DejaVu LGC Sans,12,-1,5,400,0,0,0,0,0,0,0,0,0,0,1" 10 | general="DejaVu LGC Sans,12,-1,5,400,0,0,0,0,0,0,0,0,0,0,1" 11 | 12 | [Interface] 13 | activate_item_on_single_click=1 14 | buttonbox_layout=0 15 | cursor_flash_time=1000 16 | dialog_buttons_have_icons=1 17 | double_click_interval=400 18 | gui_effects=@Invalid() 19 | keyboard_scheme=2 20 | menus_have_icons=true 21 | show_shortcuts_in_context_menus=true 22 | stylesheets=/usr/share/qt6ct/qss/fusion-fixes.qss, /usr/share/qt6ct/qss/scrollbar-simple.qss, /usr/share/qt6ct/qss/sliders-simple.qss, /usr/share/qt6ct/qss/tooltip-simple.qss, /usr/share/qt6ct/qss/traynotification-simple.qss 23 | toolbutton_style=4 24 | underline_shortcut=1 25 | wheel_scroll_lines=3 26 | 27 | [SettingsWindow] 28 | geometry=@ByteArray(\x1\xd9\xd0\xcb\0\x3\0\0\0\0\0\0\0\0\0\0\0\0\ai\0\0\x3\xef\0\0\0\0\0\0\0\0\0\0\ai\0\0\x3\xef\0\0\0\0\0\0\0\0\a\x80\0\0\0\0\0\0\0\0\0\0\ai\0\0\x3\xef) 29 | 30 | [Troubleshooting] 31 | force_raster_widgets=1 32 | ignored_applications=@Invalid() 33 | -------------------------------------------------------------------------------- /.config/rofi/askpass.rasi: -------------------------------------------------------------------------------- 1 | @import "colors.rasi" 2 | * { 3 | background-color: @background; 4 | text-color: @foreground; 5 | } 6 | 7 | window { 8 | width: 250px; 9 | padding: 20px; 10 | border: 1px; 11 | border-radius: 0px; 12 | border-color: @selected; 13 | location: center; 14 | x-offset: 0; 15 | y-offset: -4%; 16 | } 17 | 18 | entry { 19 | expand: true; 20 | width: 150px; 21 | text-color: @selected; 22 | } 23 | -------------------------------------------------------------------------------- /.config/rofi/back.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NotAShelf/dotfiles/9c40e15577251d9a480ddf6a530eb25929c6f2ba/.config/rofi/back.png -------------------------------------------------------------------------------- /.config/rofi/colors.rasi: -------------------------------------------------------------------------------- 1 | 2 | * { 3 | font: "Iosevka Nerd Font 12"; 4 | background: #121111; 5 | background-alt: #191919; 6 | foreground: #dfdddb; 7 | selected: #809fcb; 8 | active: #8fa176; 9 | urgent: #ca515e; 10 | } 11 | -------------------------------------------------------------------------------- /.config/swaync/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "/etc/xdg/swaync/configSchema.json", 3 | "positionX": "center", 4 | "positionY": "bottom", 5 | "control-center-margin-top": 20, 6 | "control-center-margin-bottom": 0, 7 | "control-center-margin-right": 20, 8 | "control-center-margin-left": 0, 9 | "timeout": 10, 10 | "timeout-low": 5, 11 | "timeout-critical": 0, 12 | "fit-to-screen": true, 13 | "control-center-width": 500, 14 | "notification-window-width": 400, 15 | "keyboard-shortcuts": true, 16 | "image-visibility": "when-available", 17 | "transition-time": 200, 18 | "hide-on-clear": false, 19 | "hide-on-action": true, 20 | "script-fail-notify": true, 21 | "widgets": [ 22 | "title", 23 | "dnd", 24 | "notifications", 25 | "label", 26 | "mpris" 27 | ], 28 | "scripts": { 29 | "example-script": { 30 | "exec": "echo 'Do something...'", 31 | "urgency": "Normal" 32 | } 33 | }, 34 | 35 | "notification-visibility": { 36 | "example-name": { 37 | "state": "muted", 38 | "urgency": "Low", 39 | "app-name": "Spotify" 40 | } 41 | }, 42 | 43 | "widget-config": { 44 | "title": { 45 | "text": "Notifications", 46 | "clear-all-button": true, 47 | "button-text": "Clear All" 48 | }, 49 | "dnd": { 50 | "text": "Do Not Disturb" 51 | }, 52 | "label": { 53 | "max-lines": 5, 54 | "text": "Currently Playing" 55 | }, 56 | "mpris": { 57 | "image-size": 48, 58 | "image-radius": 6 59 | } 60 | } 61 | 62 | } 63 | -------------------------------------------------------------------------------- /.config/swaync/swaync/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "/etc/xdg/swaync/configSchema.json", 3 | "positionX": "right", 4 | "positionY": "top", 5 | "control-center-margin-top": 0, 6 | "control-center-margin-bottom": 0, 7 | "control-center-margin-right": 0, 8 | "control-center-margin-left": 0, 9 | "timeout": 10, 10 | "timeout-low": 5, 11 | "timeout-critical": 0, 12 | "fit-to-screen": true, 13 | "control-center-width": 500, 14 | "notification-window-width": 500, 15 | "keyboard-shortcuts": true, 16 | "image-visibility": "always", 17 | "transition-time": 200, 18 | "hide-on-clear": false, 19 | "hide-on-action": true, 20 | "script-fail-notify": true, 21 | "scripts": { 22 | "example-script": { 23 | "exec": "echo 'Do something...'", 24 | "urgency": "Normal" 25 | } 26 | }, 27 | "notification-visibility": { 28 | "example-name": { 29 | "state": "muted", 30 | "urgency": "Low", 31 | "app-name": "Spotify" 32 | } 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /.config/sxhkd/sxhkdrc-awesome: -------------------------------------------------------------------------------- 1 | 2 | # program launcher 3 | super + d 4 | rofi -show drun 5 | 6 | # make sxhkd reload its configuration files: 7 | super + Escape 8 | pkill -USR1 -x sxhkd ~/.config/sxhkd/sxhkdrc-awesome 9 | 10 | super + s 11 | ~/.local/bin/rofiscripts/ssmenu 12 | 13 | super + n 14 | ~/.local/bin/wifimenu 15 | 16 | super + x 17 | ~/.local/bin/rofiscripts/powermenu 18 | 19 | # copy some stuff 20 | super + shift + p 21 | xclip -sel c < ~/pa 22 | 23 | XF86AudioPlay 24 | playerctl play-pause 25 | 26 | # volume 27 | XF86AudioRaiseVolume 28 | ~/.local/bin/changevolume up 29 | 30 | XF86AudioLowerVolume 31 | ~/.local/bin/changevolume down 32 | 33 | XF86AudioMute 34 | ~/.local/bin/changevolume mute 35 | 36 | XF86MonBrightnessDown 37 | ~/.local/bin/changebrightness down 38 | 39 | XF86MonBrightnessUp 40 | ~/.local/bin/changebrightness up 41 | 42 | -------------------------------------------------------------------------------- /.config/waybar/config: -------------------------------------------------------------------------------- 1 | config.jsonc -------------------------------------------------------------------------------- /.config/wlogout/icons/hibernate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NotAShelf/dotfiles/9c40e15577251d9a480ddf6a530eb25929c6f2ba/.config/wlogout/icons/hibernate.png -------------------------------------------------------------------------------- /.config/wlogout/icons/lock.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NotAShelf/dotfiles/9c40e15577251d9a480ddf6a530eb25929c6f2ba/.config/wlogout/icons/lock.png -------------------------------------------------------------------------------- /.config/wlogout/icons/logout.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NotAShelf/dotfiles/9c40e15577251d9a480ddf6a530eb25929c6f2ba/.config/wlogout/icons/logout.png -------------------------------------------------------------------------------- /.config/wlogout/icons/reboot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NotAShelf/dotfiles/9c40e15577251d9a480ddf6a530eb25929c6f2ba/.config/wlogout/icons/reboot.png -------------------------------------------------------------------------------- /.config/wlogout/icons/shutdown.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NotAShelf/dotfiles/9c40e15577251d9a480ddf6a530eb25929c6f2ba/.config/wlogout/icons/shutdown.png -------------------------------------------------------------------------------- /.config/wlogout/icons/suspend.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NotAShelf/dotfiles/9c40e15577251d9a480ddf6a530eb25929c6f2ba/.config/wlogout/icons/suspend.png -------------------------------------------------------------------------------- /.config/wlogout/layout: -------------------------------------------------------------------------------- 1 | { 2 | "label" : "lock", 3 | "action" : "swaylock", 4 | "text" : "Lock", 5 | "keybind" : "l" 6 | } 7 | { 8 | "label" : "hibernate", 9 | "action" : "systemctl hibernate", 10 | "text" : "Hibernate", 11 | "keybind" : "h" 12 | } 13 | { 14 | "label" : "logout", 15 | "action" : "loginctl terminate-user $USER", 16 | "text" : "Logout", 17 | "keybind" : "e" 18 | } 19 | { 20 | "label" : "shutdown", 21 | "action" : "systemctl poweroff --no-wall", 22 | "text" : "Shutdown", 23 | "keybind" : "s" 24 | } 25 | { 26 | "label" : "suspend", 27 | "action" : "systemctl suspend", 28 | "text" : "Suspend", 29 | "keybind" : "u" 30 | } 31 | { 32 | "label" : "reboot", 33 | "action" : "systemctl reboot", 34 | "text" : "Reboot", 35 | "keybind" : "r" 36 | } 37 | -------------------------------------------------------------------------------- /.config/wlogout/style.css: -------------------------------------------------------------------------------- 1 | * { 2 | background-image: none; 3 | } 4 | window { 5 | background-color: rgba(12, 12, 12, 0.9); 6 | } 7 | button { 8 | color: #FFFFFF; 9 | background-color: #000000; 10 | border-style: solid; 11 | border-width: 2px; 12 | background-repeat: no-repeat; 13 | background-position: center; 14 | background-size: 25%; 15 | } 16 | 17 | button:focus, button:active, button:hover { 18 | background-color: #000000; 19 | outline-style: none; 20 | } 21 | 22 | #lock { 23 | background-image: image(url("/home/notashelf/.config/wlogout/icons/lock.png"), url("/usr/local/share/wlogout/icons/lock.png")); 24 | } 25 | 26 | #logout { 27 | background-image: image(url("/home/notashelf/.config/wlogout/icons/logout.png"), url("/usr/local/share/wlogout/icons/logout.png")); 28 | } 29 | 30 | #suspend { 31 | background-image: image(url("/home/notashelf/.config/wlogout/icons/suspend.png"), url("/usr/local/share/wlogout/icons/suspend.png")); 32 | } 33 | 34 | #hibernate { 35 | background-image: image(url("/home/notashelf/.config/wlogout/icons/hibernate.png"), url("/usr/local/share/wlogout/icons/hibernate.png")); 36 | } 37 | 38 | #shutdown { 39 | background-image: image(url("/home/notashelf/.config/wlogout/icons/shutdown.png"), url("/usr/local/share/wlogout/icons/shutdown.png")); 40 | } 41 | 42 | #reboot { 43 | background-image: image(url("/home/notashelf/.config/wlogout/icons/reboot.png"), url("/usr/local/share/wlogout/icons/reboot.png")); 44 | } 45 | -------------------------------------------------------------------------------- /.config/wofi/style.css: -------------------------------------------------------------------------------- 1 | 2 | /* 3 | Arc-Dark Color Scheme 4 | */ 5 | 6 | @define-color highlight #ffffff; 7 | @define-color base1 rgba(40 ,40 ,40 ,0.95 ); 8 | @define-color base2 #191919; 9 | @define-color base3 rgba(50 ,48 ,47 ,0.75 ); 10 | 11 | *{ 12 | font-family: JetbrainsMono; 13 | font-size: 12px ; 14 | } 15 | 16 | window { 17 | border: 2px solid @highlight; 18 | border-radius: 10px; 19 | background-color: @base2; 20 | 21 | } 22 | 23 | #input { 24 | margin-bottom: 15px; 25 | padding:2px; 26 | border-radius: 10px; 27 | border: 0px solid @highlight; 28 | color: #FFFFFF; 29 | background-color: @base3; 30 | } 31 | 32 | #inner-box { 33 | background:transparent; 34 | padding:0px; 35 | } 36 | 37 | #outer-box { 38 | margin: 5px; 39 | padding:15px; 40 | /*background-color: @base2;*/ 41 | } 42 | 43 | #text { 44 | padding:0px; 45 | color: #FFFFFF; 46 | } 47 | 48 | #text:selected { 49 | color: @highlight; 50 | } 51 | 52 | #entry { 53 | padding:10px; 54 | border-radius:0px; 55 | } 56 | 57 | #entry:nth-child(even) { 58 | } 59 | 60 | #entry:selected { 61 | background-color: transparent; 62 | border: 2px solid @highlight; 63 | border-radius:10px; 64 | } 65 | -------------------------------------------------------------------------------- /.config/wpaperd/output.conf: -------------------------------------------------------------------------------- 1 | [default] 2 | path = "/home/notashelf/Pictures/Wallpapers/Monochrome/" 3 | duration = "7m" 4 | -------------------------------------------------------------------------------- /.config/zsh/.zshenv: -------------------------------------------------------------------------------- 1 | # fixes locale issues, hopefully 2 | export LC_ALL="en_US.UTF-8" 3 | 4 | export SSH_AUTH_SOCK="$XDG_RUNTIME_DIR/ssh-agent.socket" 5 | export _JAVA_AWT_WM_NONREPARENTING=1 6 | export PATH="$PATH:$HOME/.local/bin:/home/$USER/go/bin" 7 | 8 | # fix for qt programs that don't work in wayland 9 | # forces them to run in xwayland 10 | export QT_QPA_PLATFORM="wayland;xcb" 11 | 12 | # enable wayland firefox 13 | export MOZ_ENABLE_WAYLAND=1 14 | 15 | ### xdg specifics 16 | # Export necessary XDG variables 17 | export XDG_DATA_HOME=$HOME/.local/share 18 | export XDG_CONFIG_HOME=$HOME/.config 19 | export XDG_STATE_HOME=$HOME/.local/state 20 | export XDG_CACHE_HOME=$HOME/.cache 21 | 22 | # clean my home directory 23 | export ANDROID_HOME="$XDG_DATA_HOME"/android 24 | export HISTFILE="${XDG_STATE_HOME}"/bash/history 25 | export CARGO_HOME="$XDG_DATA_HOME"/cargo 26 | export CUDA_CACHE_PATH="$XDG_CACHE_HOME"/nv 27 | export GNUPGHOME="$XDG_DATA_HOME"/gnupg 28 | export GOPATH="$XDG_DATA_HOME"/go 29 | export GRADLE_USER_HOME="$XDG_DATA_HOME"/gradle 30 | export GTK2_RC_FILES="$XDG_CONFIG_HOME"/gtk-2.0/gtkrc 31 | export KDEHOME="$XDG_CONFIG_HOME"/kde 32 | export LESSHISTFILE="$XDG_CACHE_HOME/less/history" 33 | export NODE_REPL_HISTORY="$XDG_DATA_HOME"/node_repl_history 34 | export NPM_CONFIG_USERCONFIG="$XDG_CONFIG_HOME"/npm/npmrc 35 | export NVM_DIR="$XDG_DATA_HOME"/nvm 36 | export ZSH="$XDG_DATA_HOME"/oh-my-zsh 37 | export _JAVA_OPTIONS=-Djava.util.prefs.userRoot="$XDG_CONFIG_HOME"/java 38 | export WINEPREFIX="$XDG_DATA_HOME"/wine 39 | export HISTFILE="$XDG_STATE_HOME"/zsh/history 40 | export ZDOTDIR="$HOME"/.config/zsh 41 | export ZSH="$XDG_DATA_HOME/oh-my-zsh" 42 | export RUSTUP_HOME="$XDG_DATA_HOME"/rustup 43 | export PYTHONSTARTUP="${XDG_CONFIG_HOME}/python/pythonrc" 44 | export PYLINTHOME="${XDG_CACHE_HOME}"/pylint 45 | export XCURSOR_PATH=/usr/share/icons:${XDG_DATA_HOME}/icons 46 | -------------------------------------------------------------------------------- /.config/zsh/.zshrc: -------------------------------------------------------------------------------- 1 | # Enable Powerlevel10k instant prompt. Should stay close to the top of ~/.config/zsh/.zshrc. 2 | # Initialization code that may require console input (password prompts, [y/n] 3 | # confirmations, etc.) must go above this block; everything else may go below. 4 | if [[ -r "${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh" ]]; then 5 | source "${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh" 6 | fi 7 | 8 | source ~/.config/zsh/plugins/p10k.zsh 9 | 10 | export GPG_TTY=$(tty) 11 | 12 | # My own aliases & exports 13 | # exports are now in .zshenv 14 | source "$HOME"/.config/zsh/aliases.zsh 15 | 16 | # Source OMZ configurations 17 | if [ -z "$ZSH_COMPDUMP" ]; then 18 | # ZSH_COMPDUMP="${ZDOTDIR:-${HOME}}/.zcompdump-${SHORT_HOST}-${ZSH_VERSION}" 19 | ZSH_COMPDUMP="${ZSH_CACHE_DIR}/.zcompdump-${SHORT_HOST}-${ZSH_VERSION}" 20 | fi 21 | 22 | source "$XDG_CONFIG_HOME"/zsh/oh-my-zsh.zsh 23 | 24 | # History Options 25 | export HISTFILE="$XDG_STATE_HOME"/zsh/history 26 | export HISTSIZE=50000 27 | export SAVEHIST=50000 28 | 29 | # Cache completitions = moar speed! 30 | zstyle ':completion:*' use-cache on 31 | zstyle ':completion:*' cache-path '"$XDG_CACHE_HOME"/zsh/.zcompcache' 32 | 33 | # Personal Completitions 34 | # for some reason this does not seem to be done by omz, shame 35 | fpath+=${ZSH_CUSTOM:-${ZSH:-~/.oh-my-zsh}/custom}/plugins/zsh-completions/src 36 | #fpath=($fpath ~/.config/zsh/completions) 37 | autoload -U compinit && compinit -d "$XDG_CACHE_HOME"/zsh/zcompdump-"$ZSH_VERSION" 38 | 39 | # Source plugin loads, if necessary 40 | source "$HOME"/.config/zsh/plugins/pnpm.zsh 41 | source "$HOME"/.config/zsh/plugins/conda.zsh 42 | 43 | # Source functions 44 | source "$HOME"/.config/zsh/functions/paclog.zsh 45 | source "$HOME"/.config/zsh/functions/timezsh.zsh 46 | source "$HOME"/.config/zsh/functions/ffmpeg.zsh 47 | 48 | # some stuff *really* want to be in path 49 | export PATH=$PATH:/home/notashelf/.spicetify 50 | export PATH=$PATH:~/.local/bin 51 | -------------------------------------------------------------------------------- /.config/zsh/aliases.zsh: -------------------------------------------------------------------------------- 1 | # flatpak aliases 2 | #alias discord='flatpak run com.discordapp.Discord' 3 | alias spotify='flatpak run com.spotify.Client' 4 | alias zoom='flatpak run us.zoom.Zoom' 5 | alias flatseal='flatpak run com.github.tchx84.Flatseal' 6 | alias protontricks='flatpak run com.github.Matoking.protontricks' 7 | alias qbittorrent='flatpak run org.qbittorrent.qBittorrent' 8 | alias gimp='flatpak run org.gimp.GIMP' 9 | alias flatseal='flatpak run com.github.tchx84.Flatseal' 10 | alias obs='flatpak run com.obsproject.Studio' 11 | alias bottles='flatpak run com.usebottles.bottles' 12 | alias openshot='flatpak run org.openshot.OpenShot' 13 | alias onlyoffice='QT_QPA_PLATFORM=xcb flatpak run org.onlyoffice.desktopeditors' 14 | alias librewolf='flatpak run io.gitlab.librewolf-community' 15 | alias discover_overlay='flatpak run io.github.trigg.discover_overlay' 16 | #alias webcord='flatpak run io.github.spacingbat3.webcord' 17 | 18 | # my own aliases 19 | alias grep='rg' # ripgrep 20 | alias cat='bat' # bat 21 | alias ls='lsd --group-directories-first' # lsd 22 | alias maid='npm' # node package maid lol 23 | alias find='fd' # fd 24 | 25 | # discord with funny gpu accel 26 | #alias discord='discord-canary --ignore-gpu-blocklist --disable-features=UseOzonePlatform --enable-features=VaapiVideoDecoder --use-gl=desktop --enable-gpu-rasterization --enable-zero-copy' 27 | 28 | # zsh specific aliases 29 | alias zshconfig='nano "$XDG_CONFIG_HOME"/zsh/.zshrc' 30 | alias ohmyzsh='nano "$XDG_DATA_HOME"/oh-my-zsh/.oh-my-zsh' 31 | 32 | # xdg-specific aliases 33 | alias nvidia-settings='nvidia-settings --config="$XDG_CONFIG_HOME"/nvidia/settings' 34 | alias wget='wget --hsts-file="$XDG_DATA_HOME/wget-hsts"' 35 | alias yarn='yarn --use-yarnrc "$XDG_CONFIG_HOME"/yarn/config' 36 | alias polymc='polymc --dir "$XDG_DATA_HOME"/minecraft' 37 | alias svn="svn --config-dir $XDG_CONFIG_HOME/subversion" 38 | -------------------------------------------------------------------------------- /.config/zsh/functions/paclog.zsh: -------------------------------------------------------------------------------- 1 | function paclog () { 2 | if [ "$1" = "today" ]; then 3 | grep "$(date '+%Y-%m-%d')" /var/log/pacman.log --color=never | bat --file-name=/var/log/pacman.log 4 | else 5 | bat /var/log/pacman.log 6 | fi 7 | } 8 | -------------------------------------------------------------------------------- /.config/zsh/functions/timezsh.zsh: -------------------------------------------------------------------------------- 1 | # from https://blog.mattclemente.com/2020/06/26/oh-my-zsh-slow-to-load/ 2 | # we use this to benchmark zsh startup, 10 times to be more accurate 3 | # P.S: /usr/bin/time has been replaced with just time as time is a shell reserved variable 4 | 5 | timezsh() { 6 | shell=${1-$SHELL} 7 | for i in $(seq 1 10); 8 | do time $shell -i -c exit; 9 | done 10 | } 11 | -------------------------------------------------------------------------------- /.config/zsh/plugins/conda.zsh: -------------------------------------------------------------------------------- 1 | # >>> conda initialize >>> 2 | # !! Contents within this block are managed by 'conda init' !! 3 | __conda_setup="$('/usr/bin/conda' 'shell.zsh' 'hook' 2> /dev/null)" 4 | if [ $? -eq 0 ]; then 5 | eval "$__conda_setup" 6 | else 7 | if [ -f "/usr/etc/profile.d/conda.sh" ]; then 8 | . "/usr/etc/profile.d/conda.sh" 9 | else 10 | export PATH="/usr/bin:$PATH" 11 | fi 12 | fi 13 | unset __conda_setup 14 | # <<< conda initialize <<< 15 | -------------------------------------------------------------------------------- /.config/zsh/plugins/p10k.zsh: -------------------------------------------------------------------------------- 1 | # To customize prompt, run `p10k configure` or edit ~/.config/zsh/.p10k.zsh. 2 | [[ ! -f ~/.config/zsh/.p10k.zsh ]] || source ~/.config/zsh/.p10k.zsh 3 | -------------------------------------------------------------------------------- /.config/zsh/plugins/pnpm.zsh: -------------------------------------------------------------------------------- 1 | # pnpm 2 | export PNPM_HOME="/home/notashelf/.local/share/pnpm" 3 | export PATH="$PNPM_HOME:$PATH" 4 | # pnpm end 5 | -------------------------------------------------------------------------------- /.github/assets/logout.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NotAShelf/dotfiles/9c40e15577251d9a480ddf6a530eb25929c6f2ba/.github/assets/logout.png -------------------------------------------------------------------------------- /.github/assets/main.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NotAShelf/dotfiles/9c40e15577251d9a480ddf6a530eb25929c6f2ba/.github/assets/main.png -------------------------------------------------------------------------------- /.github/assets/terminals.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NotAShelf/dotfiles/9c40e15577251d9a480ddf6a530eb25929c6f2ba/.github/assets/terminals.png -------------------------------------------------------------------------------- /.github/assets/wofi.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NotAShelf/dotfiles/9c40e15577251d9a480ddf6a530eb25929c6f2ba/.github/assets/wofi.png -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !README.md 3 | -------------------------------------------------------------------------------- /.local/bin/Hyprlaunch: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | cd ~ 4 | 5 | export _JAVA_AWT_WM_NONREPARENTING=1 6 | export XCURSOR_SIZE=24 7 | export LIBVA_DRIVER_NAME=nvidia 8 | export CLUTTER_BACKEND=wayland 9 | export XDG_SESSION_TYPE=wayland 10 | export QT_WAYLAND_DISABLE_WINDOWDECORATION=1 11 | export MOZ_ENABLE_WAYLAND=1 12 | export GBM_BACKEND=nvidia-drm 13 | export __GLX_VENDOR_LIBRARY_NAME=nvidia 14 | export WLR_NO_HARDWARE_CURSORS=1 15 | export WLR_BACKEND=vulkan 16 | export QT_QPA_PLATFORM=wayland 17 | export GDK_BACKEND=wayland 18 | 19 | exec Hyprland 20 | -------------------------------------------------------------------------------- /.local/bin/barinfo: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | black=#121111 3 | green=#8fa176 4 | white=#dbdfdf 5 | grey=#212126 6 | darkblue=#7d95ae 7 | red=#ca5a5e 8 | blue=#809fbe 9 | yellow=#d8b170 10 | interval=0 11 | 12 | battery() { 13 | BAT_ICON=$(~/.local/bin/battery --icon) 14 | get_capacity="$(cat /sys/class/power_supply/BAT0/capacity)%%" 15 | printf "\x04^b$green^^c$black^ $BAT_ICON ^b$black^^c$green^ $get_capacity ^b$black^" 16 | } 17 | 18 | volume() { 19 | VOL_ICON="$(~/.local/bin/volume)" 20 | VOLUME=$(pamixer --get-volume) 21 | printf "\x05^c$black^^b$blue^ $VOL_ICON ^b$grey^^c$blue^ $VOLUME%% ^b$black^" 22 | } 23 | 24 | wlan() { 25 | SSID=$(iwgetid -r) 26 | case "$(cat /sys/class/net/wl*/operstate 2>/dev/null)" in 27 | up) printf "\x02^c$black^^b$blue^ 󰤨 ^d^%s""^c$blue^^b$grey^ $SSID ^b$black^" ;; 28 | down) printf "\x02^c$black^^b$blue^ 󰤯 ^d^%s""^c$blue^^b$grey^ Disconnected ^b$black^" ;; 29 | esac 30 | } 31 | 32 | clock() { 33 | printf "\x03^c$black^^b$darkblue^ 󰃭 " 34 | printf "^c$black^^b$blue^ $(date '+%H:%M') ^b$black^" 35 | } 36 | 37 | mem() { 38 | MEM=$(free -h | awk '/^Mem/ { print $3 }' | sed s/i//g) 39 | printf "^b$red^^c$black^ 󰘚 ^b$grey^^c$red^ $MEM ^b$black^" 40 | } 41 | 42 | cpu() { 43 | CPU=$(top -bn1 | grep "Cpu(s)" | sed "s/.*, *\([0-9.]*\)%* id.*/\1/" | awk '{print 100 - $1"%"}') 44 | printf "^c$grey^^b$green^ CPU ^c$green^^b$grey^ ${CPU} ^b$black^" 45 | } 46 | 47 | min() { 48 | BAT_ICON=$(~/.local/bin/battery --icon) 49 | TIME=$(date +"%H:%M") 50 | MONTH=$(date +"%e %b %Y") 51 | WIFI_STEN=$(~/.local/bin/wifistronk) 52 | printf "\x07^b$grey^^c$white^ $MONTH ^b$black^ " 53 | printf "\x06^b$grey^^c$white^ $TIME $WIFI_STEN $BAT_ICON ^b$black^ " 54 | printf "\x08^b$grey^^c$white^ 󰂚 ^b$black^" 55 | } 56 | 57 | powermenu(){ 58 | printf "\x01^c$red^^b$grey^ 󰤆 " 59 | } 60 | 61 | 62 | while true; do 63 | interval=$((interval + 1)) 64 | sleep 1 && xsetroot -name "$(min) $(powermenu)" 65 | 66 | done 67 | -------------------------------------------------------------------------------- /.local/bin/battery: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | bat=$(cat /sys/class/power_supply/BAT0/capacity) 3 | stat=$(cat /sys/class/power_supply/BAT0/status) 4 | if [ "$stat" == "Charging" ] 5 | then 6 | icon="" 7 | class="bat-green" 8 | background="#308052" 9 | foreground="#6ec687" 10 | elif [ $bat -ge 90 ] 11 | then 12 | icon="" 13 | class="bat-green" 14 | background="#308052" 15 | foreground="#6ec687" 16 | elif [ $bat -ge 80 ] 17 | then 18 | icon="" 19 | class="bat-green" 20 | background="#308052" 21 | foreground="#6ec687" 22 | elif [ $bat -ge 70 ] 23 | then 24 | icon="" 25 | class="bat-green" 26 | background="#308052" 27 | foreground="#6ec687" 28 | elif [ $bat -ge 60 ] 29 | then 30 | icon="" 31 | class="bat-green" 32 | background="#308052" 33 | foreground="#6ec687" 34 | elif [ $bat -ge 50 ] 35 | then 36 | icon="" 37 | class="bat-green" 38 | background="#308052" 39 | foreground="#6ec687" 40 | elif [ $bat -ge 40 ] 41 | then 42 | icon="" 43 | class="bat-green" 44 | background="#308052" 45 | foreground="#6ec687" 46 | elif [ $bat -ge 30 ] 47 | then 48 | icon="" 49 | class="bat-green" 50 | background="#308052" 51 | foreground="#6ec687" 52 | elif [ $bat -ge 20 ] 53 | then 54 | icon="" 55 | class="bat-green" 56 | background="#308052" 57 | foreground="#6ec687" 58 | elif [ $bat -ge 10 ] 59 | then 60 | icon="" 61 | class="bat-red" 62 | background="#c4373d" 63 | foreground="#df5b61" 64 | else 65 | icon="" 66 | class="bat-red" 67 | background="#c4373d" 68 | foreground="#df5b61" 69 | fi 70 | 71 | if [[ $1 == '--icon' ]]; then 72 | echo $icon 73 | elif [[ $1 == '--bg' ]]; then 74 | echo $background 75 | elif [[ $1 == '--fg' ]]; then 76 | echo $foreground 77 | elif [[ $1 == '--class' ]]; then 78 | echo $class 79 | elif [[ $1 == '--val' ]]; then 80 | echo $bat 81 | fi 82 | -------------------------------------------------------------------------------- /.local/bin/blockunsafe: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | cp /etc/hostnotsafe /etc/hosts 3 | rm /home/namish/.cache/hosttype 4 | touch /home/namish/.cache/hosttype 5 | echo "yes" >> /home/namish/.cache/hosttype 6 | -------------------------------------------------------------------------------- /.local/bin/bloks: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | # ANSI Color -- use these variables to easily have different color 4 | # and format output. Make sure to output the reset sequence after 5 | # colors (f = foreground, b = background), and use the 'off' 6 | # feature for anything you turn on. 7 | 8 | initializeANSI() 9 | { 10 | esc="" 11 | 12 | blackf="${esc}[30m"; redf="${esc}[31m"; greenf="${esc}[32m" 13 | yellowf="${esc}[33m" bluef="${esc}[34m"; purplef="${esc}[35m" 14 | cyanf="${esc}[36m"; whitef="${esc}[37m" 15 | 16 | blackb="${esc}[1;30m"; redb="${esc}[1;31m"; greenb="${esc}[1;32m" 17 | yellowb="${esc}[1;33m" blueb="${esc}[1;34m"; purpleb="${esc}[1;35m" 18 | cyanb="${esc}[1;36m"; whiteb="${esc}[1;37m" 19 | 20 | boldon="${esc}[1m"; boldoff="${esc}[22m" 21 | italicson="${esc}[3m"; italicsoff="${esc}[23m" 22 | ulon="${esc}[4m"; uloff="${esc}[24m" 23 | invon="${esc}[7m"; invoff="${esc}[27m" 24 | 25 | reset="${esc}[0m" 26 | } 27 | 28 | # note in this first use that switching colors doesn't require a reset 29 | # first - the new color overrides the old one. 30 | 31 | numbers (){ 32 | 33 | initializeANSI 34 | 35 | cat << EOF 36 | 37 | ${blackf}11111111${reset} ${redf}22222222${reset} ${greenf}33333333${reset} ${yellowf}44444444${reset} ${bluef}55555555${reset} ${purplef}66666666${reset} ${cyanf}77777777${reset} ${whitef}88888888${reset} 38 | ${blackb}11111111${reset} ${redb}22222222${reset} ${greenb}33333333${reset} ${yellowb}44444444${reset} ${blueb}55555555${reset} ${purpleb}66666666${reset} ${cyanb}77777777${reset} ${whiteb}88888888${reset} 39 | 40 | EOF 41 | 42 | } 43 | 44 | blocks (){ 45 | 46 | initializeANSI 47 | 48 | cat << EOF 49 | 50 | ${blackf}████${reset}${blackb}████${reset} ${redf}████${reset}${redb}████${reset} ${greenf}████${reset}${greenb}████${reset} ${yellowf}████${reset}${yellowb}████${reset} ${bluef}████${reset}${blueb}████${reset} ${purplef}████${reset}${purpleb}████${reset} ${cyanf}████${reset}${cyanb}████${reset} ${whitef}████${reset}${whiteb}████${reset} 51 | ${blackf}████${reset}${blackb}████${reset} ${redf}████${reset}${redb}████${reset} ${greenf}████${reset}${greenb}████${reset} ${yellowf}████${reset}${yellowb}████${reset} ${bluef}████${reset}${blueb}████${reset} ${purplef}████${reset}${purpleb}████${reset} ${cyanf}████${reset}${cyanb}████${reset} ${whitef}████${reset}${whiteb}████${reset} 52 | ${blackf}████${reset}${blackb}████${reset} ${redf}████${reset}${redb}████${reset} ${greenf}████${reset}${greenb}████${reset} ${yellowf}████${reset}${yellowb}████${reset} ${bluef}████${reset}${blueb}████${reset} ${purplef}████${reset}${purpleb}████${reset} ${cyanf}████${reset}${cyanb}████${reset} ${whitef}████${reset}${whiteb}████${reset} 53 | 54 | EOF 55 | 56 | } 57 | 58 | case $1 in 59 | b) blocks;; 60 | n) numbers;; 61 | a) blocks && numbers;; 62 | *) blocks && numbers;; 63 | esac 64 | -------------------------------------------------------------------------------- /.local/bin/brightness: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | DIR="$HOME/.config/dunst/icons/" 4 | BRIGHTNESS_STEPS=5 5 | 6 | function get_brightness { 7 | brightnessctl i | grep -oP '\(\K[^%\)]+' 8 | } 9 | 10 | function send_notification { 11 | brightness=$(get_brightness) 12 | 13 | # Make the bar with the special character ─ (it's not dash -) 14 | # https://en.wikipedia.org/wiki/Box-drawing_character 15 | # bar=$(seq -s "─" 0 $((brightness / 5)) | sed 's/[0-9]//g') 16 | # Send the notification 17 | # dunstify "Brightness $brightness%" -i $icon -r 5555 -u normal -h int:value:$(($brightness)) 18 | 19 | 20 | if [ "$brightness" = "0" ]; then 21 | icon="$DIR/brightness-1.svg" 22 | else 23 | if [ "$brightness" -lt "10" ]; then 24 | icon="$DIR/brightness-2.svg" 25 | else 26 | if [ "$brightness" -lt "15" ]; then 27 | icon="$DIR/brightness-3.svg" 28 | else 29 | if [ "$brightness" -lt "25" ]; then 30 | icon="$DIR/brightness-4.svg" 31 | else 32 | if [ "$brightness" -lt "45" ]; then 33 | icon="$DIR/brightness-5.svg" 34 | else 35 | if [ "$brightness" -lt "50" ]; then 36 | icon="$DIR/brightness-6.svg" 37 | else 38 | icon="$DIR/brightness-7.svg" 39 | fi 40 | fi 41 | fi 42 | fi 43 | fi 44 | fi 45 | 46 | 47 | 48 | dunstify "Brightness $brightness%" -i $icon -t 2000 --replace=500 49 | } 50 | 51 | case $1 in 52 | up) 53 | # increase the backlight by 10% 54 | brightnessctl set "${BRIGHTNESS_STEPS:-5}%+" -q 55 | send_notification 56 | ;; 57 | down) 58 | # decrease the backlight by 10% 59 | brightnessctl set "${BRIGHTNESS_STEPS:-5}%-" -q 60 | send_notification 61 | ;; 62 | esac 63 | -------------------------------------------------------------------------------- /.local/bin/bunnyfetch: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # Tiny colored fetch script 3 | # Requires Typicons Font to display the icons 4 | # elenapan @ github 5 | 6 | f=3 b=4 7 | for j in f b; do 8 | for i in {0..7}; do 9 | printf -v $j$i %b "\e[${!j}${i}m" 10 | done 11 | done 12 | d=$'\e[1m' 13 | t=$'\e[0m' 14 | v=$'\e[7m' 15 | 16 | # Items 17 | sep= 18 | s=$d$f0$sep$t 19 | 20 | w='wifi' 21 | wifiname="$(iwgetid | cut -d \" -f2)" 22 | 23 | h='wm' 24 | wmname="$(xprop -id $(xprop -root -notype | awk '$1=="_NET_SUPPORTING_WM_CHECK:"{print $5}') -notype -f _NET_WM_NAME 8t | grep "WM_NAME" | cut -f2 -d \")" 25 | 26 | k='krn' 27 | kernel="$(uname -r | cut -d '-' -f1)" 28 | 29 | r='res' 30 | resolution="$(xwininfo -root | grep geometry | awk '{print $2}' | cut -d + -f1)" 31 | 32 | sh='sh' 33 | shell=$(basename $SHELL) 34 | 35 | # (\ /) 36 | # ( · ·) 37 | # c(")(") 38 | 39 | # (\ /) 40 | # ( . .) 41 | # c(")(") 42 | 43 | tput clear 44 | cat << EOF 45 | 46 | $d$f1$h $t$wmname 47 | (\ /) $f3$k $t$kernel 48 | ( $d. .$t) $f2$sh $t$shell 49 | c($f1"$t)($f1"$t) $f5$r $t$resolution 50 | $f4$w $t$wifiname 51 | 52 | EOF 53 | -------------------------------------------------------------------------------- /.local/bin/changebrightness: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | function send_notification() { 4 | brightness=$(printf "%.0f\n" $(brillo -G)) 5 | dunstify -a "changebrightness" -u low -r 9991 -h int:value:"$brightness" -i "brightness-$1" "Brightness: $brightness%" -t 2000 6 | } 7 | 8 | case $1 in 9 | up) 10 | brightnessctl s 5+ 11 | send_notification $1 12 | ;; 13 | down) 14 | brightnessctl s 5- 15 | send_notification $1 16 | ;; 17 | esac 18 | -------------------------------------------------------------------------------- /.local/bin/changevolume: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | function send_notification() { 4 | volume=$(pamixer --get-volume) 5 | dunstify -a "changevolume" -u low -r "9993" -h int:value:"$volume" -i "volume-$1" "Volume: ${volume}%" -t 2000 6 | } 7 | 8 | case $1 in 9 | up) 10 | # Set the volume on (if it was muted) 11 | pamixer -u 12 | pamixer -i 5 13 | send_notification $1 14 | ;; 15 | down) 16 | pamixer -u 17 | pamixer -d 5 18 | send_notification $1 19 | ;; 20 | mute) 21 | pamixer -t 22 | if $(pamixer --get-mute); then 23 | dunstify -i volume-mute -a "changevolume" -t 2000 -r 9993 -u low "Muted" 24 | else 25 | send_notification up 26 | fi 27 | ;; 28 | esac 29 | -------------------------------------------------------------------------------- /.local/bin/dotenv: -------------------------------------------------------------------------------- 1 | #!/usr/bin/python 2 | # -*- coding: utf-8 -*- 3 | import re 4 | import sys 5 | from dotenv.__main__ import cli 6 | if __name__ == '__main__': 7 | sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0]) 8 | sys.exit(cli()) 9 | -------------------------------------------------------------------------------- /.local/bin/eww: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NotAShelf/dotfiles/9c40e15577251d9a480ddf6a530eb25929c6f2ba/.local/bin/eww -------------------------------------------------------------------------------- /.local/bin/fetch: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | clear 3 | c=3 b=4 4 | for j in c b; do 5 | for i in {0..7}; do 6 | printf -v $j$i "%b" "\e[${!j}${i}m" 7 | done 8 | done 9 | 10 | user=$(whoami) 11 | host=$(uname -a | awk '{print $2}') 12 | memory=$(free -h) 13 | os=$(source /etc/os-release && echo $PRETTY_NAME) 14 | kernel=$(uname -sr) 15 | wm="$(xprop -id $(xprop -root -notype | awk '$1=="_NET_SUPPORTING_WM_CHECK:"{print $5}') -notype -f _NET_WM_NAME 8t | grep "WM_NAME" | cut -f2 -d \")" 16 | mem=$(free -m | sed -n 's/^Mem:\s\+[0-9]\+\s\+\([0-9]\+\)\s.\+/\1/p') 17 | pkgs="$(pacman -Q | wc -l)" 18 | shell=$(echo "$SHELL" | awk -F/ '{for ( i=1; i <= NF; i++) sub(".", substr(toupper($i),1,1) , $i); print $NF}') 19 | colors=$(for i in {0..7}; do echo -en "\e[${1}$((30 + $i))m▁▁▁"; done) 20 | 21 | get_uptime() { 22 | # Uptime works by retrieving the data in total seconds and then 23 | # converting that data into days, hours and minutes using simple 24 | # math. 25 | IFS=. read -r s _ /dev/null 7 | fi 8 | kill $ueberzugpid 2>/dev/null 9 | } 10 | 11 | # Set up a temporary directory if not alreay done so by a calling 12 | # wrapper script (e.g. lfcd). 13 | if [ -z "$LF_TEMPDIR" ]; then 14 | cleanup_tempdir=1 15 | export LF_TEMPDIR="$(mktemp -d -t lf-tempdir-XXXXXX)" 16 | fi 17 | 18 | trap cleanup INT 19 | 20 | export LF_FIFO_UEBERZUG="$LF_TEMPDIR/fifo" 21 | mkfifo "$LF_FIFO_UEBERZUG" 22 | tail -f "$LF_FIFO_UEBERZUG" | ueberzug layer --silent & 23 | ueberzugpid=$! 24 | lf "$@" 25 | cleanup 26 | -------------------------------------------------------------------------------- /.local/bin/lock: -------------------------------------------------------------------------------- 1 | #!/usr/bin/bash 2 | sleep 0.2 3 | playerctl pause 4 | i3lock & 5 | #slock & 6 | -------------------------------------------------------------------------------- /.local/bin/lvim: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | export LUNARVIM_RUNTIME_DIR="${LUNARVIM_RUNTIME_DIR:-"/home/notashelf/.local/share/lunarvim"}" 4 | export LUNARVIM_CONFIG_DIR="${LUNARVIM_CONFIG_DIR:-"/home/notashelf/.config/lvim"}" 5 | export LUNARVIM_CACHE_DIR="${LUNARVIM_CACHE_DIR:-"/home/notashelf/.cache/lvim"}" 6 | 7 | export LUNARVIM_BASE_DIR="${LUNARVIM_BASE_DIR:-"/home/notashelf/.local/share/lunarvim/lvim"}" 8 | 9 | exec -a lvim nvim -u "$LUNARVIM_BASE_DIR/init.lua" "$@" 10 | -------------------------------------------------------------------------------- /.local/bin/mov-cli: -------------------------------------------------------------------------------- 1 | #!/usr/bin/python 2 | # -*- coding: utf-8 -*- 3 | import re 4 | import sys 5 | from mov_cli.__main__ import movcli 6 | if __name__ == '__main__': 7 | sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0]) 8 | sys.exit(movcli()) 9 | -------------------------------------------------------------------------------- /.local/bin/notify-action.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | GDBUS_MONITOR_PID=/tmp/notify-action-dbus-monitor.$$.pid 4 | GDBUS_MONITOR=(gdbus monitor --session --dest org.freedesktop.Notifications --object-path /org/freedesktop/Notifications) 5 | 6 | NOTIFICATION_ID="$1" 7 | if [[ -z "$NOTIFICATION_ID" ]]; then 8 | echo "no notification id passed: $@" 9 | exit 1; 10 | fi 11 | shift 12 | 13 | ACTION_COMMANDS=("$@") 14 | if [[ -z "$ACTION_COMMANDS" ]]; then 15 | echo "no action commands passed: $@" 16 | exit 1; 17 | fi 18 | 19 | cleanup() { 20 | rm -f "$GDBUS_MONITOR_PID" 21 | } 22 | 23 | create_pid_file(){ 24 | rm -f "$GDBUS_MONITOR_PID" 25 | umask 077 26 | touch "$GDBUS_MONITOR_PID" 27 | } 28 | 29 | invoke_action() { 30 | invoked_action_id="$1" 31 | local action="" cmd="" 32 | for index in "${!ACTION_COMMANDS[@]}"; do 33 | if [[ $((index % 2)) == 0 ]]; then 34 | action="${ACTION_COMMANDS[$index]}" 35 | else 36 | cmd="${ACTION_COMMANDS[$index]}" 37 | if [[ "$action" == "$invoked_action_id" ]]; then 38 | bash -c "${cmd}" & 39 | fi 40 | fi 41 | done 42 | } 43 | 44 | monitor() { 45 | 46 | create_pid_file 47 | ( "${GDBUS_MONITOR[@]}" & echo $! >&3 ) 3>"$GDBUS_MONITOR_PID" | while read -r line 48 | do 49 | local closed_notification_id="$(sed '/^\/org\/freedesktop\/Notifications: org.freedesktop.Notifications.NotificationClosed (uint32 \([0-9]\+\), uint32 [0-9]\+)$/!d;s//\1/' <<< "$line")" 50 | if [[ -n "$closed_notification_id" ]]; then 51 | if [[ "$closed_notification_id" == "$NOTIFICATION_ID" ]]; then 52 | invoke_action close 53 | break 54 | fi 55 | else 56 | local action_invoked="$(sed '/\/org\/freedesktop\/Notifications: org.freedesktop.Notifications.ActionInvoked (uint32 \([0-9]\+\), '\''\(.*\)'\'')$/!d;s//\1:\2/' <<< "$line")" 57 | IFS=: read invoked_id action_id <<< "$action_invoked" 58 | if [[ "$invoked_id" == "$NOTIFICATION_ID" ]]; then 59 | invoke_action "$action_id" 60 | break 61 | fi 62 | fi 63 | done 64 | kill $(<"$GDBUS_MONITOR_PID") 65 | cleanup 66 | } 67 | 68 | monitor 69 | -------------------------------------------------------------------------------- /.local/bin/pluck: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # command and temporary file 4 | # ~~~~~~~~~~~~~~~~~~~~~~~~~~ 5 | CMD=$(gpick --no-newline -pso) 6 | TMP=/tmp/picked_$CMD.png 7 | 8 | 9 | # Convert and Copy 10 | # ~~~~~~~~~~~~~~~~~~~~~~~~~~ 11 | convert -size 120x120 xc:"$CMD" "$TMP" 12 | printf %s "$CMD" | xclip -selection clipboard 13 | 14 | 15 | # send notification 16 | # ~~~~~~~~~~~~~~~~~ 17 | notify-send -a "Color picker" \ 18 | -i "$TMP" \ 19 | -t 2000 \ 20 | "Color Picked!" "$CMD" 21 | 22 | 23 | -------------------------------------------------------------------------------- /.local/bin/rofiscripts/askpass: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | rofi -dmenu \ 3 | -password \ 4 | -i \ 5 | -no-fixed-num-lines \ 6 | -p "User Password: " \ 7 | -theme ~/.config/rofi/askpass.rasi 8 | -------------------------------------------------------------------------------- /.local/bin/rofiscripts/battery: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | ## Author : Aditya Shakya (adi1090x) 4 | ## Github : @adi1090x 5 | # 6 | # Battery Info 7 | battery="`acpi -b | cut -d',' -f1 | cut -d':' -f1`" 8 | status="`acpi -b | cut -d',' -f1 | cut -d':' -f2 | tr -d ' '`" 9 | percentage="`acpi -b | cut -d',' -f2 | tr -d ' ',\%`" 10 | time="`acpi -b | cut -d',' -f3`" 11 | 12 | if [[ -z "$time" ]]; then 13 | time=' Fully Charged' 14 | fi 15 | 16 | # Theme Elements 17 | prompt="$status" 18 | mesg="${battery}: ${percentage}%,${time}" 19 | 20 | # Charging Status 21 | active="" 22 | urgent="" 23 | if [[ $status = *"Charging"* ]]; then 24 | active="-a 1" 25 | ICON_CHRG="ﮣ" 26 | elif [[ $status = *"Full"* ]]; then 27 | active="-u 1" 28 | ICON_CHRG="" 29 | else 30 | urgent="-u 1" 31 | ICON_CHRG="" 32 | fi 33 | 34 | # Discharging 35 | if [[ $percentage -ge 5 ]] && [[ $percentage -le 19 ]]; then 36 | ICON_DISCHRG="" 37 | elif [[ $percentage -ge 20 ]] && [[ $percentage -le 39 ]]; then 38 | ICON_DISCHRG="" 39 | elif [[ $percentage -ge 40 ]] && [[ $percentage -le 59 ]]; then 40 | ICON_DISCHRG="" 41 | elif [[ $percentage -ge 60 ]] && [[ $percentage -le 79 ]]; then 42 | ICON_DISCHRG="" 43 | elif [[ $percentage -ge 80 ]] && [[ $percentage -le 100 ]]; then 44 | ICON_DISCHRG="" 45 | fi 46 | 47 | # Options 48 | option_1="${ICON_DISCHRG} Remaining ${percentage}%" 49 | option_2="${ICON_CHRG} $status" 50 | option_3=" Power Manager" 51 | option_4=" Diagnose" 52 | 53 | # Rofi CMD 54 | rofi_cmd() { 55 | rofi -theme-str "window {width: 400px;}" \ 56 | -theme-str "textbox-prompt-colon {str: \"$ICON_DISCHRG\";}" \ 57 | -dmenu \ 58 | -theme ~/.config/rofi/battery.rasi \ 59 | -p "$prompt" \ 60 | -mesg "$mesg" \ 61 | ${active} ${urgent} \ 62 | -markup-rows \ 63 | -theme ${theme} 64 | } 65 | 66 | # Pass variables to rofi dmenu 67 | run_rofi() { 68 | echo -e "$option_1\n$option_2\n$option_3\n$option_4" | rofi_cmd 69 | } 70 | 71 | # Execute Command 72 | run_cmd() { 73 | polkit_cmd="pkexec env PATH=$PATH DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY" 74 | if [[ "$1" == '--opt1' ]]; then 75 | notify-send -u low " Remaining : ${percentage}%" 76 | elif [[ "$1" == '--opt2' ]]; then 77 | notify-send -u low "$ICON_CHRG Status : $status" 78 | elif [[ "$1" == '--opt3' ]]; then 79 | xfce4-power-manager-settings 80 | elif [[ "$1" == '--opt4' ]]; then 81 | ${polkit_cmd} st -e powertop 82 | fi 83 | } 84 | 85 | # Actions 86 | chosen="$(run_rofi)" 87 | case ${chosen} in 88 | $option_1) 89 | run_cmd --opt1 90 | ;; 91 | $option_2) 92 | run_cmd --opt2 93 | ;; 94 | $option_3) 95 | run_cmd --opt3 96 | ;; 97 | $option_4) 98 | run_cmd --opt4 99 | ;; 100 | esac 101 | 102 | -------------------------------------------------------------------------------- /.local/bin/rofiscripts/powermenu: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | ## Author : Aditya Shakya (adi1090x) 4 | ## Github : @adi1090x 5 | # 6 | ## Rofi : Power Menu 7 | # 8 | 9 | ## Available Styles 10 | # 11 | ## style-1 style-2 style-3 style-4 style-5 12 | 13 | # Current Theme 14 | 15 | # CMDs 16 | uptime="`uptime -p | sed -e 's/up //g'`" 17 | host=`hostnamectl hostname` 18 | 19 | # Options 20 | shutdown='襤 Shutdown' 21 | reboot=' Reboot' 22 | lock=' Lock' 23 | suspend='⏾ Suspend' 24 | logout=' Logout' 25 | yes='Yes' 26 | no='No' 27 | 28 | # Rofi CMD 29 | rofi_cmd() { 30 | rofi -dmenu \ 31 | -p "$host" \ 32 | -mesg "Uptime: $uptime" \ 33 | -theme ~/.config/rofi/power.rasi 34 | } 35 | 36 | # Confirmation CMD 37 | confirm_cmd() { 38 | rofi -theme-str 'window {location: northeast; anchor: northeast; fullscreen: false; width: 250px; x-offset: -6px; y-offset: 44px;}' \ 39 | -theme-str 'mainbox {children: [ "message", "listview" ];}' \ 40 | -theme-str 'listview {columns: 2; lines: 1;}' \ 41 | -theme-str 'element-text {horizontal-align: 0.5;}' \ 42 | -theme-str 'textbox {horizontal-align: 0.5;}' \ 43 | -dmenu \ 44 | -p 'Confirmation' \ 45 | -mesg 'Are you Sure?' \ 46 | -theme ~/.config/rofi/power.rasi 47 | } 48 | 49 | # Ask for confirmation 50 | confirm_exit() { 51 | echo -e "$yes\n$no" | confirm_cmd 52 | } 53 | 54 | # Pass variables to rofi dmenu 55 | run_rofi() { 56 | echo -e "$lock\n$suspend\n$logout\n$reboot\n$shutdown" | rofi_cmd 57 | } 58 | 59 | # Execute Command 60 | run_cmd() { 61 | selected="$(confirm_exit)" 62 | if [[ "$selected" == "$yes" ]]; then 63 | if [[ $1 == '--shutdown' ]]; then 64 | poweroff 65 | elif [[ $1 == '--reboot' ]]; then 66 | reboot 67 | elif [[ $1 == '--suspend' ]]; then 68 | systemctl suspend 69 | elif [[ $1 == '--logout' ]]; then 70 | loginctl kill-user $USER 71 | fi 72 | else 73 | exit 0 74 | fi 75 | } 76 | 77 | # Actions 78 | chosen="$(run_rofi)" 79 | case ${chosen} in 80 | $shutdown) 81 | run_cmd --shutdown 82 | ;; 83 | $reboot) 84 | run_cmd --reboot 85 | ;; 86 | $lock) 87 | lock;; 88 | $suspend) 89 | run_cmd --suspend 90 | ;; 91 | $logout) 92 | run_cmd --logout 93 | ;; 94 | esac 95 | -------------------------------------------------------------------------------- /.local/bin/rofiscripts/rofi-todo: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | TODO_FILE=~/.rofi_todos 3 | 4 | if [[ ! -a "${TODO_FILE}" ]]; then 5 | touch "${TODO_FILE}" 6 | fi 7 | 8 | function add_todo() { 9 | echo -e "`date +"%B %d %H:%M"` $*" >> "${TODO_FILE}" 10 | } 11 | 12 | function remove_todo() { 13 | if [[ ! -z "$DONE_FILE" ]]; then 14 | echo "${*}" >> "${DONE_FILE}" 15 | fi 16 | sed -i "/^${*}$/d" "${TODO_FILE}" 17 | } 18 | 19 | function get_todos() { 20 | echo "$(cat "${TODO_FILE}")" 21 | } 22 | 23 | if [ -z "$@" ]; then 24 | get_todos 25 | else 26 | LINE=$(echo "${@}" | sed "s/\([^a-zA-Z0-9]\)/\\\\\\1/g") 27 | LINE_UNESCAPED=${@} 28 | if [[ $LINE_UNESCAPED == +* ]]; then 29 | LINE_UNESCAPED=$(echo $LINE_UNESCAPED | sed s/^+//g |sed s/^\s+//g ) 30 | add_todo ${LINE_UNESCAPED} 31 | else 32 | MATCHING=$(grep "^${LINE_UNESCAPED}$" "${TODO_FILE}") 33 | if [[ -n "${MATCHING}" ]]; then 34 | remove_todo ${LINE_UNESCAPED} 35 | fi 36 | fi 37 | get_todos 38 | fi 39 | -------------------------------------------------------------------------------- /.local/bin/rofiscripts/wifimenu: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | # Starts a scan of available broadcasting SSIDs 4 | # nmcli dev wifi rescan 5 | notify-send "Getting list of available Wi-Fi networks..." 6 | wifi_list=$(nmcli --fields "SECURITY,SSID" device wifi list | sed 1d | sed 's/ */ /g' | sed -E "s/WPA*.?\S/ /g" | sed "s/^--/ /g" | sed "s/ //g" | sed "/--/d") 7 | # Gives a list of known connections so we can parse it later 8 | 9 | connected=$(nmcli -fields WIFI g) 10 | if [[ "$connected" =~ "enabled" ]]; then 11 | toggle="睊 Disable Wi-Fi" 12 | elif [[ "$connected" =~ "disabled" ]]; then 13 | toggle="直 Enable Wi-Fi" 14 | fi 15 | 16 | chosen_network=$(echo -e "$toggle\n$wifi_list" | uniq -u | rofi -dmenu -theme ~/.config/rofi/generic.rasi -i -selected-row 1 -p "Wi-Fi SSID: " ) 17 | chosen_id=$(echo "${chosen_network:3}" | xargs) 18 | 19 | # Parses the list of preconfigured connections to see if it already contains the chosen SSID. This speeds up the connection process 20 | if [ "$chosen_network" = "" ]; then 21 | exit 22 | elif [ "$chosen_network" = "直 Enable Wi-Fi" ]; then 23 | getroot 'nmcli radio wifi on' 24 | elif [ "$chosen_network" = "睊 Disable Wi-Fi" ]; then 25 | getroot 'nmcli radio wifi off' 26 | else 27 | # Message to show when connection is activated successfully 28 | success_message="You are now connected to the Wi-Fi network \"$chosen_id\"." 29 | # Get known connections 30 | saved_connections=$(nmcli -g NAME connection) 31 | if [[ $(echo "$saved_connections" | grep -w "$chosen_id") = "$chosen_id" ]]; then 32 | nmcli connection up id "$chosen_id" | grep "successfully" && notify-send "Connection Established" "$success_message" 33 | else 34 | if [[ "$chosen_network" =~ "" ]]; then 35 | wifi_password=$(rofi -dmenu -p "Password: " -theme ~/.config/rofi/generic.rasi) 36 | fi 37 | nmcli device wifi connect "$chosen_id" password "$wifi_password" | grep "successfully" && notify-send "Connection Established" "$success_message" 38 | fi 39 | fi 40 | -------------------------------------------------------------------------------- /.local/bin/roundvalue: -------------------------------------------------------------------------------- 1 | value=$1 2 | echo "($value+0.5)/1" | bc 3 | -------------------------------------------------------------------------------- /.local/bin/samloader: -------------------------------------------------------------------------------- 1 | #!/usr/bin/python 2 | # -*- coding: utf-8 -*- 3 | import re 4 | import sys 5 | from samloader.main import main 6 | if __name__ == '__main__': 7 | sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0]) 8 | sys.exit(main()) 9 | -------------------------------------------------------------------------------- /.local/bin/statusbar/battery: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | ~/.local/bin/rofiscripts/battery 3 | -------------------------------------------------------------------------------- /.local/bin/statusbar/calendar: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | case $BUTTON in 4 | 1) ~/.local/bin/rofiscripts/popcal;; 5 | 3) rofi -modi TODO:~/.local/bin/rofiscripts/rofi-todo -show TODO -theme ~/.config/rofi/generic.rasi ;; 6 | esac 7 | 8 | -------------------------------------------------------------------------------- /.local/bin/statusbar/mincalendar: -------------------------------------------------------------------------------- 1 | eww open --toggle moment 2 | -------------------------------------------------------------------------------- /.local/bin/statusbar/mindash: -------------------------------------------------------------------------------- 1 | eww open --toggle mainframe 2 | -------------------------------------------------------------------------------- /.local/bin/statusbar/notifications: -------------------------------------------------------------------------------- 1 | eww open --toggle disclose 2 | -------------------------------------------------------------------------------- /.local/bin/statusbar/power: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | case $BUTTON in 4 | 1) ~/.local/bin/rofiscripts/powermenu ;; 5 | 3) ~/.local/bin/lock ;; 6 | esac 7 | 8 | -------------------------------------------------------------------------------- /.local/bin/statusbar/sound: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | case $BUTTON in 4 | 1) changevolume mute;; 5 | 3) pavucontrol;; 6 | esac 7 | -------------------------------------------------------------------------------- /.local/bin/statusbar/statusbtn: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | case $1 in 4 | left) 5 | rofi -show drun 6 | ;; 7 | right) 8 | eww open --toggle speculate 9 | ;; 10 | esac 11 | 12 | -------------------------------------------------------------------------------- /.local/bin/statusbar/wifi: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | case $BUTTON in 4 | 1) ~/.local/bin/rofiscripts/wifimenu ;; 5 | 3) 6 | SPEED=$(awk 'NR==3 {print $3 "00%"}''' /proc/net/wireless) 7 | dunstify "Network Speed" "$SPEED" 8 | ;; 9 | esac 10 | -------------------------------------------------------------------------------- /.local/bin/takeshot: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | ## Script to take screenshots with maim 3 | 4 | time=`date +%Y-%m-%d-%I-%M-%S` 5 | geometry=`xrandr | head -n1 | cut -d',' -f2 | tr -d '[:blank:],current'` 6 | dir="`xdg-user-dir PICTURES`/Screenshots" 7 | file="Screenshot_${time}_${geometry}.png" 8 | icon="$HOME/.config/dunst/icons/screenshot.svg" 9 | 10 | # notify 11 | notify_user () { 12 | if [[ -e "$dir/$file" ]]; then 13 | dunstify -u low --replace=699 -i $dir/$file "Screenshot Saved" 14 | else 15 | dunstify -u low --replace=699 -i $dir/$file "Screenshot Deleted." 16 | fi 17 | } 18 | 19 | # countdown 20 | countdown () { 21 | for sec in `seq $1 -1 1`; do 22 | #notify-send.sh "Taking shot : $sec" -i "$icon" -t 2000 --replace=555 23 | dunstify -t 1000 --replace=699 -i $icon "Taking shot in : $sec" 24 | sleep 1 25 | done 26 | } 27 | 28 | # take shots 29 | shotnow () { 30 | cd ${dir} && maim -u -f png "$file" 31 | notify_user 32 | } 33 | 34 | shot5 () { 35 | countdown '5' 36 | sleep 1 && cd ${dir} && maim -u -f png "$file" 37 | notify_user 38 | } 39 | 40 | shot10 () { 41 | countdown '10' 42 | sleep 1 && cd ${dir} && maim -u -f png "$file" 43 | notify_user 44 | } 45 | 46 | shotwin () { 47 | cd ${dir} && maim -u -f png -i `xdotool getactivewindow` "$file" 48 | notify_user 49 | } 50 | 51 | shotarea () { 52 | cd ${dir} && maim -u -f png -s -b 2 -c 0.35,0.55,0.85,0.25 -l "$file" 53 | notify_user 54 | } 55 | 56 | if [[ ! -d "$dir" ]]; then 57 | mkdir -p "$dir" 58 | fi 59 | 60 | if [[ "$1" == "--now" ]]; then 61 | shotnow 62 | elif [[ "$1" == "--in5" ]]; then 63 | shot5 64 | elif [[ "$1" == "--in10" ]]; then 65 | shot10 66 | elif [[ "$1" == "--win" ]]; then 67 | shotwin 68 | elif [[ "$1" == "--area" ]]; then 69 | shotarea 70 | else 71 | echo -e "Available Options : --now --in5 --in10 --win --area" 72 | fi 73 | 74 | exit 0 75 | -------------------------------------------------------------------------------- /.local/bin/unblocksafe: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | cp /etc/hostsafe /etc/hosts 3 | rm /home/namish/.cache/hosttype 4 | touch /home/namish/.cache/hosttype 5 | echo "no" >> /home/namish/.cache/hosttype 6 | -------------------------------------------------------------------------------- /.local/bin/volume: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | vol=$(pamixer --get-volume) 3 | mute=$(pamixer --get-mute) 4 | 5 | if [ "$mute" == true ] 6 | then 7 | icon='󰸈' 8 | else 9 | icon='󰕾' 10 | fi 11 | echo "$icon" 12 | -------------------------------------------------------------------------------- /.local/bin/wifistronk: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | SPED=$(awk 'NR==3 {print $3 "0"}''' /proc/net/wireless) 3 | SPED=$(~/.local/bin/roundvalue $SPED) 4 | if [ ! "$SPED" ] 5 | then 6 | echo "󰤮" 7 | elif [ $SPED -ge 75 ] 8 | then 9 | echo "󰤥" 10 | elif [ $SPED -ge 50 ] 11 | then 12 | echo "󰤢" 13 | elif [ $SPED -ge 25 ] 14 | then 15 | echo "󰤟" 16 | elif [ $SPED -ge 0 ] 17 | then 18 | echo "󰤯" 19 | else 20 | echo "󰤮" 21 | fi 22 | -------------------------------------------------------------------------------- /Hyprland: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | echo -en "Starting ${1}.\n" 4 | 5 | cd ~ 6 | 7 | # Log WLR errors and logs to the hyprland log 8 | export HYPRLAND_LOG_WLR=1 9 | 10 | # nvidia workarounds 11 | #export LIBVA_DRIVER_NAME=nvidia 12 | #export __GL_GSYNC_ALLOWED=0 13 | #export __GL_VRR_ALLOWED=0 14 | #export __GLX_VENDOR_LIBRARY_NAME=nvidia 15 | #export GBM_BACKEND=nvidia-drm # creates problems with firefox on hybrid graphics (to be tested) 16 | #export WLR_NO_HARDWARE_CURSORS=1 17 | 18 | export CLUTTER_BACKEND=wayland 19 | export WLR_BACKEND=vulkan 20 | export SDL_VIDEODRIVER=wayland 21 | export _JAVA_AWT_WM_NONEREPARENTING=1 22 | export XDG_SESSION_DESKTOP=${1} 23 | export WLR_DRM_NO_ATOMIC=1 24 | export QT_AUTO_SCREEN_SCALE_FACTOR=1 25 | export QT_QPA_PLATFORM="wayland;xcb" 26 | export QT_WAYLAND_DISABLE_WINDOWDECORATION=1 27 | export QT_QPA_PLATFORMTHEME=qt5ct 28 | export GDK_BACKEND="wayland,x11" 29 | export XDG_CURRENT_DESKTOP=${1} 30 | export XDG_SESSION_TYPE=wayland 31 | export MOZ_ENABLE_WAYLAND=1 32 | 33 | # theming 34 | export GTK_THEME=Graphite-Dark 35 | export XCURSOR_SIZE=16 36 | export XCURSOR_THEME=Qogir 37 | 38 | # fcitx 39 | export GTK_IM_MODULE=fcitx 40 | export QT_IM_MODULE=fcitx 41 | export XMODIFIERS=@im=fcitx 42 | export SDL_IM_MODULE=fcitx 43 | export GLFW_IM_MODULE=ibus 44 | 45 | # filepicker 46 | export GTK_USE_PORTAL="1" 47 | 48 | exec "$1" && echo "Done." || echo -en "Failed to start $1. Consider issuing a bug report!" 49 | 50 | 51 | 52 | 53 | --------------------------------------------------------------------------------