├── .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 | 
43 |
44 | *screenshot by [JavaCafe01](https://github.com/JavaCafe01)*
45 |
46 | #### Centered
47 |
48 | 
49 |
50 | *screenshot by [HeavyRain266](https://github.com/HeavyRain266)*
51 |
52 | #### Equal area
53 |
54 | 
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 | 
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 | 
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 | 
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 | 
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 |
--------------------------------------------------------------------------------
/.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 |
--------------------------------------------------------------------------------
/.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 |
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 |
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 |
--------------------------------------------------------------------------------