├── .gitignore
├── QtProject.conf
├── alacritty
├── alacritty.toml
├── alacritty.yml
├── circadian.yaml
├── dropdown.toml
├── dropdown.yml
└── themes
│ ├── dawnfox.yml
│ ├── gruvbox.yaml
│ ├── kanagawa-dark.toml
│ ├── kanagawa-dark.yml
│ └── kanagawa-light.yml
├── appimagelauncher.cfg
├── asciinema
└── install-id
├── betterlockscreenrc
├── copyq
├── copyq-commands.ini
├── copyq-filter.ini
├── copyq.conf
├── copyq.pub
├── copyq_geometry.ini
├── copyq_tab_JmNsaXBib2FyZA==.dat
└── copyq_tabs.ini
├── dunst
└── dunstrc
├── eww
├── eww.scss
└── eww.yuck
├── flutter
├── settings
└── tool_state
├── menus
└── applications-merged
│ └── xdg-desktop-menu-dummy.menu
├── nvim
├── init.lua
├── lazy-lock.json
└── lua
│ ├── .luarc.json
│ └── aadi
│ ├── autocmds.lua
│ ├── keymaps.lua
│ ├── lazy.lua
│ ├── options.lua
│ ├── plugins
│ ├── coding.lua
│ ├── colorscheme.lua
│ ├── editor.lua
│ ├── formatting.lua
│ ├── lsp.lua
│ ├── misc.lua
│ ├── telescope.lua
│ ├── treesitter.lua
│ └── ui.lua
│ └── utils.lua
├── picom
└── picom.conf
├── qtile
├── __pycache__
│ ├── config.cpython-310.pyc
│ ├── config.cpython-311.pyc
│ └── spotify.cpython-310.pyc
├── assets
│ └── white.png
├── config.py
├── modules
│ ├── __pycache__
│ │ ├── groups.cpython-310.pyc
│ │ ├── groups.cpython-311.pyc
│ │ ├── hooks.cpython-310.pyc
│ │ ├── hooks.cpython-311.pyc
│ │ ├── keys.cpython-310.pyc
│ │ ├── keys.cpython-311.pyc
│ │ ├── layouts.cpython-310.pyc
│ │ ├── layouts.cpython-311.pyc
│ │ ├── mouse.cpython-310.pyc
│ │ ├── mouse.cpython-311.pyc
│ │ ├── screens.cpython-310.pyc
│ │ └── screens.cpython-311.pyc
│ ├── groups.py
│ ├── hooks.py
│ ├── keys.py
│ ├── layouts.py
│ ├── mouse.py
│ └── screens.py
├── scripts
│ └── startup.sh
└── spotify.py
├── ranger
├── rc.conf
└── rifle.conf
├── rofi
├── config.rasi
├── images
│ └── coffee.jpg
├── launcher
│ ├── launcher.rasi
│ └── launcher.sh
└── powermenu
│ ├── powermenu.rasi
│ └── powermenu.sh
├── starship.toml
├── tmux
└── tmux.conf
├── user-dirs.dirs
├── vlc
├── vlc-qt-interface.conf
└── vlcrc
├── xfce4
├── panel
│ └── xfce4-clipman-actions.xml
└── xfconf
│ └── xfce-perchannel-xml
│ └── xfce4-panel.xml
├── zellij
├── config.kdl
└── layouts
│ └── default.kdl
└── zfxtop
└── conf.ini
/.gitignore:
--------------------------------------------------------------------------------
1 | tmux/plugins/*
2 | Code/
3 | Google/
4 | inkscape/
5 | Postman/
6 | discord/
7 | vesktop/
8 | astro/
9 | BraveSoftware/
10 | cava/
11 | curl-exit-code-to-string/
12 | dconf/
13 | Electron/
14 | EOS-greeter.conf
15 | EOS-initial-wallpaper.XFCE
16 | eos-update-notifier.first_init
17 | galculator/
18 | gh/
19 | GIMP/
20 | gtk-3.0/
21 | gtk-4.0/
22 | helix/
23 | htop/
24 | kazam/
25 | memos.json
26 | mimeapps.list
27 | neofetch/
28 | nextjs-nodejs/
29 | obsidian/
30 | pavucontrol.ini
31 | procps/
32 | pulse/
33 | reflector-simple-free-params.txt
34 | spotify/
35 | systemd/
36 | Thunar/
37 | user-dirs/dirs
38 | user-dirs.locale
39 | xed/
40 | yay/
41 | protonvpn/
42 | Logseq/
43 | Tusk/
44 | configstore/
45 | rclone/
46 | go/
47 | org.encroissant.app/
48 |
--------------------------------------------------------------------------------
/QtProject.conf:
--------------------------------------------------------------------------------
1 | [FileDialog]
2 | history=file:///home/aadi, file:///home/aadi/dev
3 | lastVisited=file:///home/aadi/dev
4 | qtVersion=5.15.11
5 | shortcuts=file:, file:///home/aadi
6 | sidebarWidth=87
7 | treeViewHeader="@ByteArray(\0\0\0\xff\0\0\0\0\0\0\0\x1\0\0\0\0\0\0\0\0\x1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x1\xd1\0\0\0\x4\x1\x1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x64\xff\xff\xff\xff\0\0\0\x81\0\0\0\0\0\0\0\x4\0\0\0\xf5\0\0\0\x1\0\0\0\0\0\0\0\x39\0\0\0\x1\0\0\0\0\0\0\0=\0\0\0\x1\0\0\0\0\0\0\0\x66\0\0\0\x1\0\0\0\0\0\0\x3\xe8\0\xff\xff\xff\xff)"
8 | viewMode=Detail
9 |
--------------------------------------------------------------------------------
/alacritty/alacritty.toml:
--------------------------------------------------------------------------------
1 | [[colors.indexed_colors]]
2 | color = "0xffa066"
3 | index = 16
4 |
5 | [[colors.indexed_colors]]
6 | color = "0xff5d62"
7 | index = 17
8 |
9 | [colors.bright]
10 | black = "0x727169"
11 | blue = "0x7fb4ca"
12 | cyan = "0x7aa89f"
13 | green = "0x98bb6c"
14 | magenta = "0x938aa9"
15 | red = "0xe82424"
16 | white = "0xdcd7ba"
17 | yellow = "0xe6c384"
18 |
19 | [colors.normal]
20 | black = "0x090618"
21 | blue = "0x7e9cd8"
22 | cyan = "0x6a9589"
23 | green = "0x76946a"
24 | magenta = "0x957fb8"
25 | red = "0xc34043"
26 | white = "0xc8c093"
27 | yellow = "0xc0a36e"
28 |
29 | [colors.primary]
30 | background = "0x1f1f28"
31 | foreground = "0xdcd7ba"
32 |
33 | [colors.selection]
34 | background = "0x2d4f67"
35 | foreground = "0xc8c093"
36 |
37 | [env]
38 | TERM = "xterm-256color"
39 |
40 | [font]
41 | size = 8
42 |
43 | [font.bold]
44 | family = "JetBrainsMono NF"
45 | style = "Bold"
46 |
47 | [font.bold_italic]
48 | family = "JetBrainsMono NF"
49 | style = "Bold Italic"
50 |
51 | [font.italic]
52 | family = "JetBrainsMono NF"
53 | style = "Italic"
54 |
55 | [font.normal]
56 | family = "JetBrainsMono NF"
57 | style = "Regular"
58 |
59 | [window.padding]
60 | x = 10
61 | y = 10
62 |
--------------------------------------------------------------------------------
/alacritty/alacritty.yml:
--------------------------------------------------------------------------------
1 | env:
2 | TERM: xterm-256color
3 |
4 | font:
5 | normal:
6 | family: JetBrainsMono NF
7 | style: Regular
8 |
9 | bold:
10 | family: JetBrainsMono NF
11 | style: Bold
12 |
13 | italic:
14 | family: JetBrainsMono NF
15 | style: Italic
16 |
17 | bold_italic:
18 | family: JetBrainsMono NF
19 | style: Bold Italic
20 |
21 | size: 8
22 |
23 | window:
24 | padding:
25 | x: 10
26 | y: 10
27 |
28 | colors:
29 | primary:
30 | background: '0x1f1f28'
31 | foreground: '0xdcd7ba'
32 |
33 | normal:
34 | black: '0x090618'
35 | red: '0xc34043'
36 | green: '0x76946a'
37 | yellow: '0xc0a36e'
38 | blue: '0x7e9cd8'
39 | magenta: '0x957fb8'
40 | cyan: '0x6a9589'
41 | white: '0xc8c093'
42 |
43 | bright:
44 | black: '0x727169'
45 | red: '0xe82424'
46 | green: '0x98bb6c'
47 | yellow: '0xe6c384'
48 | blue: '0x7fb4ca'
49 | magenta: '0x938aa9'
50 | cyan: '0x7aa89f'
51 | white: '0xdcd7ba'
52 |
53 | selection:
54 | background: '0x2d4f67'
55 | foreground: '0xc8c093'
56 |
57 | indexed_colors:
58 | - {index: 16, color: '0xffa066'}
59 | - {index: 17, color: '0xff5d62'}
60 |
--------------------------------------------------------------------------------
/alacritty/circadian.yaml:
--------------------------------------------------------------------------------
1 | theme-folder: ~/.config/alacritty/themes
2 |
3 | themes:
4 | - time: 08:00
5 | name: kanagawa-dark
6 | - time: 18:00
7 | name: kanagawa-dark
8 |
--------------------------------------------------------------------------------
/alacritty/dropdown.toml:
--------------------------------------------------------------------------------
1 |
2 | [env]
3 | TERM = "xterm-256color"
4 |
5 | [font]
6 | size = 8
7 |
8 | [font.bold]
9 | family = "FiraCode NF"
10 | style = "Bold"
11 |
12 | [font.bold_italic]
13 | family = "FiraCode NF"
14 | style = "Bold Italic"
15 |
16 | [font.italic]
17 | family = "FiraCode NF"
18 | style = "Italic"
19 |
20 | [font.normal]
21 | family = "FiraCode NF"
22 | style = "Regular"
23 |
24 | [window.padding]
25 | x = 10
26 | y = 10
27 |
28 | [general]
29 | import = ["/home/aadi/.config/alacritty/themes/kanagawa-dark.toml"]
30 |
--------------------------------------------------------------------------------
/alacritty/dropdown.yml:
--------------------------------------------------------------------------------
1 | import:
2 | - /home/aadi/.config/alacritty/themes/kanagawa-dark.yml
3 |
4 | env:
5 | TERM: xterm-256color
6 |
7 | font:
8 | normal:
9 | family: FiraCode NF
10 | style: Regular
11 |
12 | bold:
13 | family: FiraCode NF
14 | style: Bold
15 |
16 | italic:
17 | family: FiraCode NF
18 | style: Italic
19 |
20 | bold_italic:
21 | family: FiraCode NF
22 | style: Bold Italic
23 |
24 | size: 8
25 |
26 | window:
27 | padding:
28 | x: 10
29 | y: 10
30 |
--------------------------------------------------------------------------------
/alacritty/themes/dawnfox.yml:
--------------------------------------------------------------------------------
1 | # Nightfox Alacritty Colors
2 | # Style: dawnfox
3 | # Upstream: https://github.com/edeneast/nightfox.nvim/raw/main/extra/dawnfox/nightfox_alacritty.yml
4 | colors:
5 | # Default colors
6 | primary:
7 | background: '0xfaf4ed'
8 | foreground: '0x575279'
9 | # Normal colors
10 | normal:
11 | black: '0x575279'
12 | red: '0xb4637a'
13 | green: '0x618774'
14 | yellow: '0xea9d34'
15 | blue: '0x286983'
16 | magenta: '0x907aa9'
17 | cyan: '0x56949f'
18 | white: '0xe5e9f0'
19 | # Bright colors
20 | bright:
21 | black: '0x5f5695'
22 | red: '0xc26d85'
23 | green: '0x629f81'
24 | yellow: '0xeea846'
25 | blue: '0x2d81a3'
26 | magenta: '0x9a80b9'
27 | cyan: '0x5ca7b4'
28 | white: '0xe6ebf3'
29 | indexed_colors:
30 | - { index: 16, color: '0xd7827e' }
31 | - { index: 17, color: '0xd685af' }
32 |
--------------------------------------------------------------------------------
/alacritty/themes/gruvbox.yaml:
--------------------------------------------------------------------------------
1 | # Colors (Gruvbox dark)
2 | colors:
3 | # Default colors
4 | primary:
5 | # background: "#000000"
6 | background: "#faf4ed"
7 | foreground: "0xebdbb2"
8 |
9 | # Normal colors
10 | normal:
11 | black: "0x282828"
12 | red: "0xcc241d"
13 | green: "0x98971a"
14 | yellow: "0xd79921"
15 | blue: "0x458588"
16 | magenta: "0xb16286"
17 | cyan: "0x689d6a"
18 | white: "0xa89984"
19 |
20 | # Bright colors
21 | bright:
22 | black: "0x928374"
23 | red: "0xfb4934"
24 | green: "0xb8bb26"
25 | yellow: "0xfabd2f"
26 | blue: "0x83a598"
27 | magenta: "0xd3869b"
28 | cyan: "0x8ec07c"
29 | white: "0xebdbb2"
30 |
--------------------------------------------------------------------------------
/alacritty/themes/kanagawa-dark.toml:
--------------------------------------------------------------------------------
1 | [[colors.indexed_colors]]
2 | color = "0xffa066"
3 | index = 16
4 |
5 | [[colors.indexed_colors]]
6 | color = "0xff5d62"
7 | index = 17
8 |
9 | [colors.bright]
10 | black = "0x727169"
11 | blue = "0x7fb4ca"
12 | cyan = "0x7aa89f"
13 | green = "0x98bb6c"
14 | magenta = "0x938aa9"
15 | red = "0xe82424"
16 | white = "0xdcd7ba"
17 | yellow = "0xe6c384"
18 |
19 | [colors.normal]
20 | black = "0x090618"
21 | blue = "0x7e9cd8"
22 | cyan = "0x6a9589"
23 | green = "0x76946a"
24 | magenta = "0x957fb8"
25 | red = "0xc34043"
26 | white = "0xc8c093"
27 | yellow = "0xc0a36e"
28 |
29 | [colors.primary]
30 | background = "0x1f1f28"
31 | foreground = "0xdcd7ba"
32 |
33 | [colors.selection]
34 | background = "0x2d4f67"
35 | foreground = "0xc8c093"
36 |
--------------------------------------------------------------------------------
/alacritty/themes/kanagawa-dark.yml:
--------------------------------------------------------------------------------
1 | # Kanagawa Alacritty Colors
2 | colors:
3 | primary:
4 | background: '0x1f1f28'
5 | foreground: '0xdcd7ba'
6 |
7 | normal:
8 | black: '0x090618'
9 | red: '0xc34043'
10 | green: '0x76946a'
11 | yellow: '0xc0a36e'
12 | blue: '0x7e9cd8'
13 | magenta: '0x957fb8'
14 | cyan: '0x6a9589'
15 | white: '0xc8c093'
16 |
17 | bright:
18 | black: '0x727169'
19 | red: '0xe82424'
20 | green: '0x98bb6c'
21 | yellow: '0xe6c384'
22 | blue: '0x7fb4ca'
23 | magenta: '0x938aa9'
24 | cyan: '0x7aa89f'
25 | white: '0xdcd7ba'
26 |
27 | selection:
28 | background: '0x2d4f67'
29 | foreground: '0xc8c093'
30 |
31 | indexed_colors:
32 | - { index: 16, color: '0xffa066' }
33 | - { index: 17, color: '0xff5d62' }
34 |
--------------------------------------------------------------------------------
/alacritty/themes/kanagawa-light.yml:
--------------------------------------------------------------------------------
1 | # Kanagawa Alacritty Colors
2 | colors:
3 | primary:
4 | background: '0xf2ecbc'
5 | foreground: '0x1F1F28'
6 |
7 | normal:
8 | black: "0x090618"
9 | red: "0xc34043"
10 | green: "0x76946a"
11 | yellow: "0xc0a36e"
12 | blue: "0x7e9cd8"
13 | magenta: "0x957fb8"
14 | cyan: "0x6a9589"
15 | white: "0xc8c093"
16 |
17 | bright:
18 | black: "0x727169"
19 | red: "0xe82424"
20 | green: "0x98bb6c"
21 | yellow: "0xe6c384"
22 | blue: "0x7fb4ca"
23 | magenta: "0x938aa9"
24 | cyan: "0x7aa89f"
25 | white: "0xdcd7ba"
26 |
27 | selection:
28 | background: "0x2d4f67"
29 | foreground: "0xc8c093"
30 |
31 | indexed_colors:
32 | - { index: 16, color: "0xffa066" }
33 | - { index: 17, color: "0xff5d62" }
34 |
--------------------------------------------------------------------------------
/appimagelauncher.cfg:
--------------------------------------------------------------------------------
1 | [AppImageLauncher]
2 | ask_to_move=false
3 | destination=/home/aadi/dev/applications
4 | enable_daemon=true
5 |
6 | [appimagelauncherd]
7 | %23%20additional_directories_to_watch=~/otherApplications:/even/more/applications
8 | %23%20monitor_mounted_filesystems=false
9 |
--------------------------------------------------------------------------------
/asciinema/install-id:
--------------------------------------------------------------------------------
1 | 84e1d88e-3910-4f6b-a881-41492b4041e5
--------------------------------------------------------------------------------
/betterlockscreenrc:
--------------------------------------------------------------------------------
1 | # ~/.config/betterlockscreenrc
2 |
3 | # default options
4 | display_on=0
5 | span_image=false
6 | lock_timeout=300
7 | fx_list=(dim blur dimblur pixel dimpixel color)
8 | dim_level=40
9 | blur_level=1
10 | pixel_scale=10,1000
11 | solid_color=333333
12 | wallpaper_cmd="feh --bg-fill"
13 | quiet=false
14 | # i3lockcolor_bin="i3lock-color" # Manually set command for i3lock-color
15 |
16 | # default theme
17 | loginbox=1f1f28ff
18 | loginshadow=000000ff
19 | locktext="Enter the password..."
20 | font="JetBrainsMono NF"
21 | ringcolor=ffffffff
22 | insidecolor=00000000
23 | separatorcolor=00000000
24 | ringvercolor=618774ff
25 | insidevercolor=00000000
26 | ringwrongcolor=000000ff
27 | insidewrongcolor=618774ff
28 | timecolor=ffffffff
29 | time_format="%I:%M"
30 | greetercolor=ffffffff
31 | layoutcolor=ffffffff
32 | keyhlcolor=618774ff
33 | bshlcolor=000000ff
34 | verifcolor=000000ff
35 | wrongcolor=cc241dff
36 | modifcolor=cc241dff
37 | bgcolor=ffffffff
38 |
--------------------------------------------------------------------------------
/copyq/copyq-commands.ini:
--------------------------------------------------------------------------------
1 | [Commands]
2 | 1\Command=copyq: plugins.itempinned.pin()
3 | 1\Icon=\xf08d
4 | 1\InMenu=true
5 | 1\Input=!OUTPUT
6 | 1\InternalId=copyq_pinned_pin
7 | 1\Name=Pin
8 | 1\Output=application/x-copyq-item-pinned
9 | 2\Command=copyq: plugins.itempinned.unpin()
10 | 2\Icon=\xf08d
11 | 2\InMenu=true
12 | 2\Input=application/x-copyq-item-pinned
13 | 2\InternalId=copyq_pinned_unpin
14 | 2\Name=Unpin
15 | 3\Command=copyq: plugins.itemtags.tag(decodeURIComponent('Important'))
16 | 3\Icon=\xf02b
17 | 3\InMenu=true
18 | 3\InternalId=copyq_tags_tag:Important
19 | 3\MatchCommand=copyq: plugins.itemtags.hasTag(decodeURIComponent('Important')) && fail()
20 | 3\Name=Tag as \x201cImportant\x201d
21 | 4\Command=copyq: plugins.itemtags.untag(decodeURIComponent('Important'))
22 | 4\Icon=\xf02b
23 | 4\InMenu=true
24 | 4\InternalId=copyq_tags_untag:Important
25 | 4\MatchCommand=copyq: plugins.itemtags.hasTag(decodeURIComponent('Important')) || fail()
26 | 4\Name=Remove tag \x201cImportant\x201d
27 | 5\Command=copyq: plugins.itemtags.tag()
28 | 5\Icon=\xf02b
29 | 5\InMenu=true
30 | 5\InternalId=copyq_tags_tag
31 | 5\Name=Add a Tag
32 | 6\Command=copyq: plugins.itemtags.untag()
33 | 6\Icon=\xf02b
34 | 6\InMenu=true
35 | 6\Input=application/x-copyq-tags
36 | 6\InternalId=copyq_tags_untag
37 | 6\Name=Remove a Tag
38 | 7\Command=copyq: plugins.itemtags.clearTags()
39 | 7\Icon=\xf02b
40 | 7\InMenu=true
41 | 7\Input=application/x-copyq-tags
42 | 7\InternalId=copyq_tags_clear
43 | 7\Name=Clear all tags
44 | size=7
45 |
--------------------------------------------------------------------------------
/copyq/copyq-filter.ini:
--------------------------------------------------------------------------------
1 | [General]
2 | filter_history=@Invalid()
3 |
--------------------------------------------------------------------------------
/copyq/copyq.conf:
--------------------------------------------------------------------------------
1 | [General]
2 | plugin_priority=itemimage, itemencrypted, itemfakevim, itemnotes, itempinned, itemsync, itemtags, itemtext
3 |
4 | [Options]
5 | activate_closes=true
6 | activate_focuses=true
7 | activate_item_with_single_click=false
8 | activate_pastes=true
9 | always_on_top=false
10 | autocompletion=true
11 | autostart=false
12 | change_clipboard_owner_delay_ms=150
13 | check_clipboard=true
14 | check_selection=false
15 | clipboard_notification_lines=0
16 | clipboard_tab=&clipboard
17 | close_on_unfocus=false
18 | close_on_unfocus_delay_ms=500
19 | command_history_size=100
20 | confirm_exit=true
21 | copy_clipboard=false
22 | copy_selection=false
23 | disable_tray=false
24 | edit_ctrl_return=true
25 | editor=gedit --standalone -- %1
26 | expire_tab=0
27 | filter_case_insensitive=true
28 | filter_regular_expression=false
29 | hide_main_window=false
30 | hide_main_window_in_task_bar=false
31 | hide_tabs=false
32 | hide_toolbar=false
33 | hide_toolbar_labels=true
34 | item_popup_interval=0
35 | language=en
36 | max_process_manager_rows=1000
37 | maxitems=200
38 | move=true
39 | native_menu_bar=true
40 | native_notifications=true
41 | native_tray_menu=false
42 | notification_horizontal_offset=10
43 | notification_maximum_height=100
44 | notification_maximum_width=300
45 | notification_position=3
46 | notification_vertical_offset=10
47 | number_search=false
48 | open_windows_on_current_screen=true
49 | restore_geometry=true
50 | row_index_from_one=true
51 | run_selection=true
52 | save_delay_ms_on_item_added=300000
53 | save_delay_ms_on_item_edited=1000
54 | save_delay_ms_on_item_modified=300000
55 | save_delay_ms_on_item_moved=1800000
56 | save_delay_ms_on_item_removed=600000
57 | save_filter_history=false
58 | save_on_app_deactivated=true
59 | script_paste_delay_ms=250
60 | show_advanced_command_settings=false
61 | show_simple_items=false
62 | show_tab_item_count=false
63 | style=
64 | tab_tree=false
65 | tabs=&clipboard
66 | text_tab_width=8
67 | text_wrap=true
68 | transparency=0
69 | transparency_focused=0
70 | tray_commands=true
71 | tray_images=true
72 | tray_item_paste=true
73 | tray_items=5
74 | tray_menu_open_on_left_click=false
75 | tray_tab=
76 | tray_tab_is_current=true
77 | vi=false
78 | window_key_press_time_ms=50
79 | window_paste_with_ctrl_v_regex=
80 | window_wait_after_raised_ms=50
81 | window_wait_before_raise_ms=20
82 | window_wait_for_modifier_released_ms=2000
83 | window_wait_raised_ms=150
84 |
85 | [Plugins]
86 | itemencrypted\enabled=true
87 | itemfakevim\enabled=true
88 | itemimage\enabled=true
89 | itemimage\image_editor=
90 | itemimage\max_image_height=240
91 | itemimage\max_image_width=320
92 | itemimage\svg_editor=
93 | itemnotes\enabled=true
94 | itempinned\enabled=true
95 | itemsync\enabled=true
96 | itemtags\enabled=true
97 | itemtext\enabled=true
98 |
99 | [Shortcuts]
100 | about=shift+f1
101 | change_tab_icon=ctrl+shift+t
102 | commands=f6
103 | copy_selected_items=ctrl+c
104 | delete_item=del
105 | edit=f2
106 | edit_notes=shift+f2
107 | editor=ctrl+e
108 | editor_background=
109 | editor_bold=ctrl+b
110 | editor_cancel=esc
111 | editor_erase_style=
112 | editor_font=
113 | editor_foreground=
114 | editor_italic=ctrl+i
115 | editor_redo=ctrl+shift+z
116 | editor_save=f2
117 | editor_search=ctrl+f
118 | editor_strikethrough=
119 | editor_underline=ctrl+u
120 | editor_undo=ctrl+z
121 | exit=ctrl+q
122 | export=ctrl+s
123 | find_items=f3
124 | help=f1
125 | import=ctrl+i
126 | item-menu=shift+f10
127 | move_down=ctrl+down
128 | move_to_bottom=ctrl+end
129 | move_to_clipboard=
130 | move_to_top=ctrl+home
131 | move_up=ctrl+up
132 | new=ctrl+n
133 | new_tab=ctrl+t
134 | next_tab=right
135 | paste_selected_items=ctrl+v
136 | preferences=ctrl+p
137 | previous_tab=left
138 | process_manager=ctrl+shift+z
139 | remove_tab=ctrl+w
140 | rename_tab=ctrl+f2
141 | reverse_selected_items=ctrl+shift+r
142 | show-log=f12
143 | show_clipboard_content=ctrl+shift+c
144 | show_item_content=f4
145 | show_item_preview=f7
146 | sort_selected_items=ctrl+shift+s
147 | system-run=f5
148 | toggle_clipboard_storing=ctrl+shift+x
149 |
150 | [Tabs]
151 | 1\icon=
152 | 1\max_item_count=0
153 | 1\name=&clipboard
154 | 1\store_items=true
155 | size=1
156 |
157 | [Theme]
158 | alt_bg=default_alt_bg
159 | alt_item_css=
160 | bg=default_bg
161 | css=
162 | css_template_items=items
163 | css_template_main_window=main_window
164 | css_template_menu=menu
165 | css_template_notification=notification
166 | cur_item_css="\n ;border: 0.1em solid ${sel_bg}"
167 | edit_bg=default_bg
168 | edit_fg=default_text
169 | edit_font=
170 | fg=default_text
171 | find_bg=#ff0
172 | find_fg=#000
173 | find_font=
174 | font=
175 | font_antialiasing=true
176 | hover_item_css=
177 | icon_size=16
178 | item_css=
179 | item_spacing=
180 | menu_bar_css="\n ;background: ${bg}\n ;color: ${fg}"
181 | menu_bar_disabled_css="\n ;color: ${bg - #666}"
182 | menu_bar_selected_css="\n ;background: ${sel_bg}\n ;color: ${sel_fg}"
183 | menu_css="\n ;border: 1px solid ${sel_bg}\n ;background: ${bg}\n ;color: ${fg}"
184 | notes_bg=default_tooltip_bg
185 | notes_css=
186 | notes_fg=default_tooltip_text
187 | notes_font=
188 | notification_bg=#333
189 | notification_fg=#ddd
190 | notification_font=
191 | num_fg=default_placeholder_text
192 | num_font=
193 | num_margin=2
194 | search_bar="\n ;background: ${edit_bg}\n ;color: ${edit_fg}\n ;border: 1px solid ${alt_bg}\n ;margin: 2px"
195 | search_bar_focused="\n ;border: 1px solid ${sel_bg}"
196 | sel_bg=default_highlight_bg
197 | sel_fg=default_highlight_text
198 | sel_item_css=
199 | show_number=true
200 | show_scrollbars=true
201 | style_main_window=false
202 | tab_bar_css="\n ;background: ${bg - #222}"
203 | tab_bar_item_counter="\n ;color: ${fg - #044 + #400}\n ;font-size: 6pt"
204 | tab_bar_scroll_buttons_css="\n ;background: ${bg - #222}\n ;color: ${fg}\n ;border: 0"
205 | tab_bar_sel_item_counter="\n ;color: ${sel_bg - #044 + #400}"
206 | tab_bar_tab_selected_css="\n ;padding: 0.5em\n ;background: ${bg}\n ;border: 0.05em solid ${bg}\n ;color: ${fg}"
207 | tab_bar_tab_unselected_css="\n ;border: 0.05em solid ${bg}\n ;padding: 0.5em\n ;background: ${bg - #222}\n ;color: ${fg - #333}"
208 | tab_tree_css="\n ;color: ${fg}\n ;background-color: ${bg}"
209 | tab_tree_item_counter="\n ;color: ${fg - #044 + #400}\n ;font-size: 6pt"
210 | tab_tree_sel_item_counter="\n ;color: ${sel_fg - #044 + #400}"
211 | tab_tree_sel_item_css="\n ;color: ${sel_fg}\n ;background-color: ${sel_bg}\n ;border-radius: 2px"
212 | tool_bar_css="\n ;color: ${fg}\n ;background-color: ${bg}\n ;border: 0"
213 | tool_button_css="\n ;color: ${fg}\n ;background: ${bg}\n ;border: 0\n ;border-radius: 2px"
214 | tool_button_pressed_css="\n ;background: ${sel_bg}"
215 | tool_button_selected_css="\n ;background: ${sel_bg - #222}\n ;color: ${sel_fg}\n ;border: 1px solid ${sel_bg}"
216 | use_system_icons=false
217 |
--------------------------------------------------------------------------------
/copyq/copyq.pub:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aaditeynair/dots/177b58b1135f904366ea5e6578f29b80262e80d8/copyq/copyq.pub
--------------------------------------------------------------------------------
/copyq/copyq_geometry.ini:
--------------------------------------------------------------------------------
1 | [Options]
2 | MainWindow_geometry=@ByteArray(\x1\xd9\xd0\xcb\0\x3\0\0\0\0\x3\xcc\0\0\0\x18\0\0\ag\0\0\x3\xc6\0\0\x3\xcc\0\0\0\x18\0\0\ag\0\0\x3\xc6\0\0\0\0\0\0\0\0\a\x80\0\0\x3\xcc\0\0\0\x18\0\0\ag\0\0\x3\xc6)
3 | MainWindow_geometry_1920x1080=@ByteArray(\x1\xd9\xd0\xcb\0\x3\0\0\0\0\x3\xcc\0\0\0\x18\0\0\ag\0\0\x3\xc6\0\0\x3\xcc\0\0\0\x18\0\0\ag\0\0\x3\xc6\0\0\0\0\0\0\0\0\a\x80\0\0\x3\xcc\0\0\0\x18\0\0\ag\0\0\x3\xc6)
4 | MainWindow_state=@ByteArray(\0\0\0\xff\0\0\0\0\xfd\0\0\0\x1\0\0\0\x3\0\0\0\0\0\0\0\0\xfc\x1\0\0\0\x1\xfb\0\0\0*\0\x64\0o\0\x63\0k\0W\0i\0\x64\0g\0\x65\0t\0I\0t\0\x65\0m\0P\0r\0\x65\0v\0i\0\x65\0w\0\0\0\0\0\xff\xff\xff\xff\0\0\0:\0\xff\xff\xff\0\0\x3t\0\0\x3\x99\0\0\0\x4\0\0\0\x4\0\0\0\b\0\0\0\b\xfc\0\0\0\x3\0\0\0\0\0\0\0\x1\0\0\0\x1c\0t\0o\0o\0l\0\x42\0\x61\0r\0T\0\x61\0\x62\0T\0r\0\x65\0\x65\x2\0\0\0\0\xff\xff\xff\xff\0\0\0\0\0\0\0\0\0\0\0\x1\0\0\0\x1\0\0\0\xe\0t\0o\0o\0l\0\x42\0\x61\0r\x3\0\0\0\0\xff\xff\xff\xff\0\0\0\0\0\0\0\0\0\0\0\x2\0\0\0\x1\0\0\0\x1a\0t\0o\0o\0l\0\x42\0\x61\0r\0T\0\x61\0\x62\0\x42\0\x61\0r\0\0\0\0\0\xff\xff\xff\xff\0\0\0\0\0\0\0\0)
5 |
--------------------------------------------------------------------------------
/copyq/copyq_tab_JmNsaXBib2FyZA==.dat:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aaditeynair/dots/177b58b1135f904366ea5e6578f29b80262e80d8/copyq/copyq_tab_JmNsaXBib2FyZA==.dat
--------------------------------------------------------------------------------
/copyq/copyq_tabs.ini:
--------------------------------------------------------------------------------
1 | [TabWidget]
2 | collapsed_tabs=@Invalid()
3 | tab_item_counters=@Variant(\0\0\0\b\0\0\0\x1\0\0\0\x14\0&\0\x63\0l\0i\0p\0\x62\0o\0\x61\0r\0\x64\0\0\0\x2\0\0\0\x2)
4 |
--------------------------------------------------------------------------------
/dunst/dunstrc:
--------------------------------------------------------------------------------
1 | # See dunst(5) for all configuration options
2 |
3 | [global]
4 | ### Display ###
5 |
6 | # Which monitor should the notifications be displayed on.
7 | monitor = 0
8 |
9 | # Display notification on focused monitor. Possible modes are:
10 | # mouse: follow mouse pointer
11 | # keyboard: follow window with keyboard focus
12 | # none: don't follow anything
13 | #
14 | # "keyboard" needs a window manager that exports the
15 | # _NET_ACTIVE_WINDOW property.
16 | # This should be the case for almost all modern window managers.
17 | #
18 | # If this option is set to mouse or keyboard, the monitor option
19 | # will be ignored.
20 | follow = none
21 |
22 | ### Geometry ###
23 |
24 | # dynamic width from 0 to 300
25 | # width = (0, 300)
26 | # constant width of 300
27 | width = 300
28 |
29 | # The maximum height of a single notification, excluding the frame.
30 | height = 300
31 |
32 | # Position the notification in the top right corner
33 | origin = top-right
34 |
35 | # Offset from the origin
36 | offset = 48x48
37 |
38 | # Scale factor. It is auto-detected if value is 0.
39 | scale = 0
40 |
41 | # Maximum number of notification (0 means no limit)
42 | notification_limit = 0
43 |
44 | ### Progress bar ###
45 |
46 | # Turn on the progess bar. It appears when a progress hint is passed with
47 | # for example dunstify -h int:value:12
48 | progress_bar = true
49 |
50 | # Set the progress bar height. This includes the frame, so make sure
51 | # it's at least twice as big as the frame width.
52 | progress_bar_height = 10
53 |
54 | # Set the frame width of the progress bar
55 | progress_bar_frame_width = 1
56 |
57 | # Set the minimum width for the progress bar
58 | progress_bar_min_width = 150
59 |
60 | # Set the maximum width for the progress bar
61 | progress_bar_max_width = 300
62 |
63 |
64 | # Show how many messages are currently hidden (because of
65 | # notification_limit).
66 | indicate_hidden = yes
67 |
68 | # The transparency of the window. Range: [0; 100].
69 | # This option will only work if a compositing window manager is
70 | # present (e.g. xcompmgr, compiz, etc.). (X11 only)
71 | transparency = 0
72 |
73 | # Draw a line of "separator_height" pixel height between two
74 | # notifications.
75 | # Set to 0 to disable.
76 | # If gap_size is greater than 0, this setting will be ignored.
77 | separator_height = 2
78 |
79 | # Padding between text and separator.
80 | padding = 10
81 |
82 | # Horizontal padding.
83 | horizontal_padding = 12
84 |
85 | # Padding between text and icon.
86 | text_icon_padding = 0
87 |
88 | # Defines width in pixels of frame around the notification window.
89 | # Set to 0 to disable.
90 | frame_width = 3
91 |
92 | # Defines color of the frame around the notification window.
93 | frame_color = "#1f1f28"
94 |
95 | # Size of gap to display between notifications - requires a compositor.
96 | # If value is greater than 0, separator_height will be ignored and a border
97 | # of size frame_width will be drawn around each notification instead.
98 | # Click events on gaps do not currently propagate to applications below.
99 | gap_size = 5
100 |
101 | # Define a color for the separator.
102 | # possible values are:
103 | # * auto: dunst tries to find a color fitting to the background;
104 | # * foreground: use the same color as the foreground;
105 | # * frame: use the same color as the frame;
106 | # * anything else will be interpreted as a X color.
107 | separator_color = frame
108 |
109 | # Sort messages by urgency.
110 | sort = yes
111 |
112 | # Don't remove messages, if the user is idle (no mouse or keyboard input)
113 | # for longer than idle_threshold seconds.
114 | # Set to 0 to disable.
115 | # A client can set the 'transient' hint to bypass this. See the rules
116 | # section for how to disable this if necessary
117 | # idle_threshold = 120
118 |
119 | ### Text ###
120 |
121 | font = JetBrainsMono NF 10
122 |
123 | # The spacing between lines. If the height is smaller than the
124 | # font height, it will get raised to the font height.
125 | line_height = 0
126 |
127 | # Possible values are:
128 | # full: Allow a small subset of html markup in notifications:
129 | # bold
130 | # italic
131 | # strikethrough
132 | # underline
133 | #
134 | # For a complete reference see
135 | # .
136 | #
137 | # strip: This setting is provided for compatibility with some broken
138 | # clients that send markup even though it's not enabled on the
139 | # server. Dunst will try to strip the markup but the parsing is
140 | # simplistic so using this option outside of matching rules for
141 | # specific applications *IS GREATLY DISCOURAGED*.
142 | #
143 | # no: Disable markup parsing, incoming notifications will be treated as
144 | # plain text. Dunst will not advertise that it has the body-markup
145 | # capability if this is set as a global setting.
146 | #
147 | # It's important to note that markup inside the format option will be parsed
148 | # regardless of what this is set to.
149 | markup = full
150 |
151 | # The format of the message. Possible variables are:
152 | # %a appname
153 | # %s summary
154 | # %b body
155 | # %i iconname (including its path)
156 | # %I iconname (without its path)
157 | # %p progress value if set ([ 0%] to [100%]) or nothing
158 | # %n progress value if set without any extra characters
159 | # %% Literal %
160 | # Markup is allowed
161 | format = "%s\n%b"
162 |
163 | # Alignment of message text.
164 | # Possible values are "left", "center" and "right".
165 | alignment = left
166 |
167 | # Vertical alignment of message text and icon.
168 | # Possible values are "top", "center" and "bottom".
169 | vertical_alignment = center
170 |
171 | # Show age of message if message is older than show_age_threshold
172 | # seconds.
173 | # Set to -1 to disable.
174 | show_age_threshold = 60
175 |
176 | # Specify where to make an ellipsis in long lines.
177 | # Possible values are "start", "middle" and "end".
178 | ellipsize = middle
179 |
180 | # Ignore newlines '\n' in notifications.
181 | ignore_newline = no
182 |
183 | # Stack together notifications with the same content
184 | stack_duplicates = true
185 |
186 | # Hide the count of stacked notifications with the same content
187 | hide_duplicate_count = false
188 |
189 | # Display indicators for URLs (U) and actions (A).
190 | show_indicators = yes
191 |
192 | ### Icons ###
193 |
194 | # Recursive icon lookup. You can set a single theme, instead of having to
195 | # define all lookup paths.
196 | enable_recursive_icon_lookup = true
197 |
198 | # Set icon theme (only used for recursive icon lookup)
199 | icon_theme = Adwaita
200 | # You can also set multiple icon themes, with the leftmost one being used first.
201 | # icon_theme = "Adwaita, breeze"
202 |
203 | # Align icons left/right/top/off
204 | icon_position = left
205 |
206 | # Scale small icons up to this size, set to 0 to disable. Helpful
207 | # for e.g. small files or high-dpi screens. In case of conflict,
208 | # max_icon_size takes precedence over this.
209 | min_icon_size = 32
210 |
211 | # Scale larger icons down to this size, set to 0 to disable
212 | max_icon_size = 64
213 |
214 | # Paths to default icons (only neccesary when not using recursive icon lookup)
215 | icon_path = /usr/share/icons/gnome/16x16/status/:/usr/share/icons/gnome/16x16/devices/
216 |
217 | ### History ###
218 |
219 | # Should a notification popped up from history be sticky or timeout
220 | # as if it would normally do.
221 | sticky_history = yes
222 |
223 | # Maximum amount of notifications kept in history
224 | history_length = 20
225 |
226 | ### Misc/Advanced ###
227 |
228 | # dmenu path.
229 | dmenu = /usr/bin/dmenu -p dunst:
230 |
231 | # Browser for opening urls in context menu.
232 | browser = /usr/bin/xdg-open
233 |
234 | # Always run rule-defined scripts, even if the notification is suppressed
235 | always_run_script = true
236 |
237 | # Define the title of the windows spawned by dunst
238 | title = Dunst
239 |
240 | # Define the class of the windows spawned by dunst
241 | class = Dunst
242 |
243 | # Define the corner radius of the notification window
244 | # in pixel size. If the radius is 0, you have no rounded
245 | # corners.
246 | # The radius will be automatically lowered if it exceeds half of the
247 | # notification height to avoid clipping text and/or icons.
248 | corner_radius = 0
249 |
250 | # Ignore the dbus closeNotification message.
251 | # Useful to enforce the timeout set by dunst configuration. Without this
252 | # parameter, an application may close the notification sent before the
253 | # user defined timeout.
254 | ignore_dbusclose = false
255 |
256 | ### Wayland ###
257 | # These settings are Wayland-specific. They have no effect when using X11
258 |
259 | # Uncomment this if you want to let notications appear under fullscreen
260 | # applications (default: overlay)
261 | # layer = top
262 |
263 | # Set this to true to use X11 output on Wayland.
264 | force_xwayland = false
265 |
266 | ### Legacy
267 |
268 | # Use the Xinerama extension instead of RandR for multi-monitor support.
269 | # This setting is provided for compatibility with older nVidia drivers that
270 | # do not support RandR and using it on systems that support RandR is highly
271 | # discouraged.
272 | #
273 | # By enabling this setting dunst will not be able to detect when a monitor
274 | # is connected or disconnected which might break follow mode if the screen
275 | # layout changes.
276 | force_xinerama = false
277 |
278 | ### mouse
279 |
280 | # Defines list of actions for each mouse event
281 | # Possible values are:
282 | # * none: Don't do anything.
283 | # * do_action: Invoke the action determined by the action_name rule. If there is no
284 | # such action, open the context menu.
285 | # * open_url: If the notification has exactly one url, open it. If there are multiple
286 | # ones, open the context menu.
287 | # * close_current: Close current notification.
288 | # * close_all: Close all notifications.
289 | # * context: Open context menu for the notification.
290 | # * context_all: Open context menu for all notifications.
291 | # These values can be strung together for each mouse event, and
292 | # will be executed in sequence.
293 | mouse_left_click = close_current
294 | mouse_middle_click = do_action, close_current
295 | mouse_right_click = close_all
296 |
297 | # Experimental features that may or may not work correctly. Do not expect them
298 | # to have a consistent behaviour across releases.
299 | [experimental]
300 | # Calculate the dpi to use on a per-monitor basis.
301 | # If this setting is enabled the Xft.dpi value will be ignored and instead
302 | # dunst will attempt to calculate an appropriate dpi value for each monitor
303 | # using the resolution and physical size. This might be useful in setups
304 | # where there are multiple screens with very different dpi values.
305 | per_monitor_dpi = false
306 |
307 |
308 | [urgency_low]
309 | # IMPORTANT: colors have to be defined in quotation marks.
310 | # Otherwise the "#" and following would be interpreted as a comment.
311 | background = "#1f1f28"
312 | foreground = "#fff"
313 | timeout = 4
314 | # Icon for notifications with low urgency, uncomment to enable
315 | #default_icon = /path/to/icon
316 |
317 | [urgency_normal]
318 | background = "#1f1f28"
319 | foreground = "#fff"
320 | timeout = 4
321 | # Icon for notifications with normal urgency, uncomment to enable
322 | #default_icon = /path/to/icon
323 |
324 | [urgency_critical]
325 | background = "#618774"
326 | foreground = "#000"
327 | frame_color = "#000"
328 | timeout = 10
329 | # Icon for notifications with critical urgency, uncomment to enable
330 | #default_icon = /path/to/icon
331 |
332 | # Every section that isn't one of the above is interpreted as a rules to
333 | # override settings for certain messages.
334 | #
335 | # Messages can be matched by
336 | # appname (discouraged, see desktop_entry)
337 | # body
338 | # category
339 | # desktop_entry
340 | # icon
341 | # match_transient
342 | # msg_urgency
343 | # stack_tag
344 | # summary
345 | #
346 | # and you can override the
347 | # background
348 | # foreground
349 | # format
350 | # frame_color
351 | # fullscreen
352 | # new_icon
353 | # set_stack_tag
354 | # set_transient
355 | # set_category
356 | # timeout
357 | # urgency
358 | # icon_position
359 | # skip_display
360 | # history_ignore
361 | # action_name
362 | # word_wrap
363 | # ellipsize
364 | # alignment
365 | # hide_text
366 | #
367 | # Shell-like globbing will get expanded.
368 | #
369 | # Instead of the appname filter, it's recommended to use the desktop_entry filter.
370 | # GLib based applications export their desktop-entry name. In comparison to the appname,
371 | # the desktop-entry won't get localized.
372 | #
373 | # SCRIPTING
374 | # You can specify a script that gets run when the rule matches by
375 | # setting the "script" option.
376 | # The script will be called as follows:
377 | # script appname summary body icon urgency
378 | # where urgency can be "LOW", "NORMAL" or "CRITICAL".
379 | #
380 | # NOTE: It might be helpful to run dunst -print in a terminal in order
381 | # to find fitting options for rules.
382 |
383 | # Disable the transient hint so that idle_threshold cannot be bypassed from the
384 | # client
385 | #[transient_disable]
386 | # match_transient = yes
387 | # set_transient = no
388 | #
389 | # Make the handling of transient notifications more strict by making them not
390 | # be placed in history.
391 | #[transient_history_ignore]
392 | # match_transient = yes
393 | # history_ignore = yes
394 |
395 | # fullscreen values
396 | # show: show the notifications, regardless if there is a fullscreen window opened
397 | # delay: displays the new notification, if there is no fullscreen window active
398 | # If the notification is already drawn, it won't get undrawn.
399 | # pushback: same as delay, but when switching into fullscreen, the notification will get
400 | # withdrawn from screen again and will get delayed like a new notification
401 | #[fullscreen_delay_everything]
402 | # fullscreen = delay
403 | #[fullscreen_show_critical]
404 | # msg_urgency = critical
405 | # fullscreen = show
406 |
407 | #[espeak]
408 | # summary = "*"
409 | # script = dunst_espeak.sh
410 |
411 | #[script-test]
412 | # summary = "*script*"
413 | # script = dunst_test.sh
414 |
415 | #[ignore]
416 | # # This notification will not be displayed
417 | # summary = "foobar"
418 | # skip_display = true
419 |
420 | #[history-ignore]
421 | # # This notification will not be saved in history
422 | # summary = "foobar"
423 | # history_ignore = yes
424 |
425 | #[skip-display]
426 | # # This notification will not be displayed, but will be included in the history
427 | # summary = "foobar"
428 | # skip_display = yes
429 |
430 | #[signed_on]
431 | # appname = Pidgin
432 | # summary = "*signed on*"
433 | # urgency = low
434 | #
435 | #[signed_off]
436 | # appname = Pidgin
437 | # summary = *signed off*
438 | # urgency = low
439 | #
440 | #[says]
441 | # appname = Pidgin
442 | # summary = *says*
443 | # urgency = critical
444 | #
445 | #[twitter]
446 | # appname = Pidgin
447 | # summary = *twitter.com*
448 | # urgency = normal
449 | #
450 | #[stack-volumes]
451 | # appname = "some_volume_notifiers"
452 | # set_stack_tag = "volume"
453 | #
454 | # vim: ft=cfg
455 | #
456 | [Spotify]
457 | appname = Spotify
458 | format = "Now Playing\n%s"
459 | timeout = 4
460 |
--------------------------------------------------------------------------------
/eww/eww.scss:
--------------------------------------------------------------------------------
1 | $background-black: #000;
2 | $background-white: #fdfdfd;
3 |
4 | * {
5 | all: unset;
6 | font-family: JetBrains Mono NF;
7 | }
8 |
9 | .clock {
10 | font-size: 2rem;
11 | }
12 |
13 | .day {
14 | font-size: 8rem;
15 | letter-spacing: 0.5rem;
16 | font-weight: bold;
17 | }
18 |
19 | .container {
20 | background: rgba($background-white, 0);
21 | color: rgba($background-black, 1);
22 | padding-bottom: 4rem;
23 | }
24 |
25 | .condition {
26 | font-size: 0.9rem;
27 | }
28 |
29 | .temp {
30 | font-size: 1.3rem;
31 | }
32 |
33 | .system {
34 | background: rgba($background-black, 1);
35 | color: #fff;
36 | font-size: 1.05rem;
37 | padding: 0 20px;
38 | }
39 |
--------------------------------------------------------------------------------
/eww/eww.yuck:
--------------------------------------------------------------------------------
1 | ;; Variables
2 | (defpoll date :interval "10s" `date +'%d.%m.%Y'`)
3 | (defpoll day :interval "10s" `date +'%A' | awk '{print toupper($0)}'`)
4 | (defpoll time :interval "10s" `date +'- %I:%M %p -'`)
5 |
6 | ;; Widgets
7 | (defwidget clock []
8 | (box :orientation "v" :class "container" :spacing 0 :space-evenly false :valign "center" :halign "center"
9 | (label :class "clock" :text date :halign "center")
10 | (label :class "day" :text day :halign "center")
11 | (label :class "clock" :text time :halign "center")))
12 |
13 | ;; Windows
14 | (defwindow clock
15 | :monitor 0
16 | :geometry (geometry :x "0px"
17 | :y "0px"
18 | :width "100%"
19 | :height "100%"
20 | :anchor "center center")
21 | :stacking "bg"
22 | :windowtype "normal"
23 | :wm-ignore true
24 | (clock))
25 |
--------------------------------------------------------------------------------
/flutter/settings:
--------------------------------------------------------------------------------
1 | {
2 | "android-sdk": "dev/Android/Sdk"
3 | }
4 |
--------------------------------------------------------------------------------
/flutter/tool_state:
--------------------------------------------------------------------------------
1 | {
2 | "is-bot": false,
3 | "license-hash": "3e8c85e63b26ce223cda96a9a8fbb410",
4 | "last-active-stable-version": "84a1e904f44f9b0e9c4510138010edcc653163f8",
5 | "redisplay-welcome-message": true
6 | }
7 |
--------------------------------------------------------------------------------
/menus/applications-merged/xdg-desktop-menu-dummy.menu:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aaditeynair/dots/177b58b1135f904366ea5e6578f29b80262e80d8/menus/applications-merged/xdg-desktop-menu-dummy.menu
--------------------------------------------------------------------------------
/nvim/init.lua:
--------------------------------------------------------------------------------
1 | require("aadi.options")
2 | require("aadi.lazy")
3 |
4 | vim.api.nvim_create_autocmd("User", {
5 | pattern = "VeryLazy",
6 | callback = function()
7 | require("aadi.keymaps")
8 | require("aadi.autocmds")
9 | require("aadi.utils")
10 | end,
11 | })
12 |
--------------------------------------------------------------------------------
/nvim/lazy-lock.json:
--------------------------------------------------------------------------------
1 | {
2 | "LuaSnip": { "branch": "master", "commit": "c9b9a22904c97d0eb69ccb9bab76037838326817" },
3 | "alpha-nvim": { "branch": "main", "commit": "de72250e054e5e691b9736ee30db72c65d560771" },
4 | "bufdelete.nvim": { "branch": "master", "commit": "f6bcea78afb3060b198125256f897040538bcb81" },
5 | "cmp-buffer": { "branch": "main", "commit": "b74fab3656eea9de20a9b8116afa3cfc4ec09657" },
6 | "cmp-cmdline": { "branch": "main", "commit": "d250c63aa13ead745e3a40f61fdd3470efde3923" },
7 | "cmp-nvim-lsp": { "branch": "main", "commit": "a8912b88ce488f411177fc8aed358b04dc246d7b" },
8 | "cmp-path": { "branch": "main", "commit": "c6635aae33a50d6010bf1aa756ac2398a2d54c32" },
9 | "cmp_luasnip": { "branch": "master", "commit": "98d9cb5c2c38532bd9bdb481067b20fea8f32e90" },
10 | "conduct.nvim": { "branch": "main", "commit": "73b4fb0b1e11cfed7badf5e8b0194f9e2fcc99fb" },
11 | "conform.nvim": { "branch": "master", "commit": "372fc521f8421b7830ea6db4d6ea3bae1c77548c" },
12 | "flash.nvim": { "branch": "main", "commit": "3c942666f115e2811e959eabbdd361a025db8b63" },
13 | "friendly-snippets": { "branch": "main", "commit": "fc8f183479a472df60aa86f00e295462f2308178" },
14 | "gitignore.nvim": { "branch": "master", "commit": "47cefc0b6ea412e1e149552b10ebfe9f7f0b8952" },
15 | "gitsigns.nvim": { "branch": "main", "commit": "02eafb1273afec94447f66d1a43fc5e477c2ab8a" },
16 | "harpoon": { "branch": "master", "commit": "1bc17e3e42ea3c46b33c0bbad6a880792692a1b3" },
17 | "indent-blankline.nvim": { "branch": "master", "commit": "005b56001b2cb30bfa61b7986bc50657816ba4ba" },
18 | "kanagawa.nvim": { "branch": "master", "commit": "cc3b68b08e6a0cb6e6bf9944932940091e49bb83" },
19 | "lazy.nvim": { "branch": "main", "commit": "6c3bda4aca61a13a9c63f1c1d1b16b9d3be90d7a" },
20 | "lsp": { "branch": "master", "commit": "32b6a6449aaba11461fffbb596dd6310af79eea4" },
21 | "lspsaga.nvim": { "branch": "main", "commit": "920b1253e1a26732e53fac78412f6da7f674671d" },
22 | "mason-lspconfig.nvim": { "branch": "main", "commit": "1a31f824b9cd5bc6f342fc29e9a53b60d74af245" },
23 | "mason-tool-installer": { "branch": "main", "commit": "1255518cb067e038a4755f5cb3e980f79b6ab89c" },
24 | "mason.nvim": { "branch": "main", "commit": "fc98833b6da5de5a9c5b1446ac541577059555be" },
25 | "maximize.nvim": { "branch": "master", "commit": "d688b66344b03ee6e5a32a0a40af85d174490af8" },
26 | "mini.comment": { "branch": "main", "commit": "fb867a9246f9b892cf51a8c84a3f8479cdf1558c" },
27 | "mini.pairs": { "branch": "main", "commit": "69864a2efb36c030877421634487fd90db1e4298" },
28 | "mini.surround": { "branch": "main", "commit": "5aab42fcdcf31fa010f012771eda5631c077840a" },
29 | "neo-tree.nvim": { "branch": "v2.x", "commit": "80dc74d081823649809f78370fa5b204aa9a853a" },
30 | "neodev.nvim": { "branch": "main", "commit": "46aa467dca16cf3dfe27098042402066d2ae242d" },
31 | "nightfox.nvim": { "branch": "main", "commit": "ba47d4b4c5ec308718641ba7402c143836f35aa9" },
32 | "nord.nvim": { "branch": "master", "commit": "80c1e5321505aeb22b7a9f23eb82f1e193c12470" },
33 | "nui.nvim": { "branch": "main", "commit": "8d3bce9764e627b62b07424e0df77f680d47ffdb" },
34 | "nvim-cmp": { "branch": "main", "commit": "b5311ab3ed9c846b585c0c15b7559be131ec4be9" },
35 | "nvim-lint": { "branch": "master", "commit": "d698d3b6fd7b1b85657d05a2a31d843ddb682c63" },
36 | "nvim-notify": { "branch": "master", "commit": "b5825cf9ee881dd8e43309c93374ed5b87b7a896" },
37 | "nvim-treesitter": { "branch": "master", "commit": "684eeac91ed8e297685a97ef70031d19ac1de25a" },
38 | "nvim-web-devicons": { "branch": "master", "commit": "855c97005c8eebcdd19846f2e54706bffd40ee96" },
39 | "plenary.nvim": { "branch": "master", "commit": "857c5ac632080dba10aae49dba902ce3abf91b35" },
40 | "sidebar.nvim": { "branch": "main", "commit": "082e4903c1659a65e27a075b752178b0c56fffb2" },
41 | "smartcolumn.nvim": { "branch": "main", "commit": "92f3773af80d674f1eb61e112dca79e2fa449fd1" },
42 | "symbols-outline.nvim": { "branch": "master", "commit": "512791925d57a61c545bc303356e8a8f7869763c" },
43 | "telescope-file-browser.nvim": { "branch": "master", "commit": "626998e5c1b71c130d8bc6cf7abb6709b98287bb" },
44 | "telescope-fzf-native.nvim": { "branch": "main", "commit": "1f08ed60cafc8f6168b72b80be2b2ea149813e55" },
45 | "telescope.nvim": { "branch": "master", "commit": "a4ed82509cecc56df1c7138920a1aeaf246c0ac5" },
46 | "termnames.nvim": { "branch": "main", "commit": "12317256f8ba6fb10e096857d1309e3efcdc3325" },
47 | "trouble.nvim": { "branch": "main", "commit": "85bedb7eb7fa331a2ccbecb9202d8abba64d37b3" },
48 | "twilight.nvim": { "branch": "main", "commit": "1584c0b0a979b71fd86b18d302ba84e9aba85b1b" },
49 | "undotree": { "branch": "master", "commit": "b951b87b46c34356d44aa71886aecf9dd7f5788a" },
50 | "vim-tmux-navigator": { "branch": "master", "commit": "791dacfcfc8ccb7f6eb1c853050883b03e5a22fe" },
51 | "zen-mode.nvim": { "branch": "main", "commit": "863f150ca321b3dd8aa1a2b69b5f411a220e144f" }
52 | }
53 |
--------------------------------------------------------------------------------
/nvim/lua/.luarc.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "https://raw.githubusercontent.com/sumneko/vscode-lua/master/setting/schema.json",
3 | "Lua.diagnostics.globals": [
4 | "vim",
5 | "require"
6 | ]
7 | }
--------------------------------------------------------------------------------
/nvim/lua/aadi/autocmds.lua:
--------------------------------------------------------------------------------
1 | vim.api.nvim_create_autocmd("TextYankPost", {
2 | desc = "Highlight selection on yank",
3 | pattern = "*",
4 | callback = function()
5 | vim.highlight.on_yank({ higroup = "IncSearch", timeout = 500 })
6 | end,
7 | })
8 |
9 | vim.api.nvim_create_autocmd("BufEnter", {
10 | desc = "enter insert mode",
11 | pattern = "term://*",
12 | callback = function()
13 | vim.cmd("startinsert")
14 | end,
15 | })
16 |
17 | vim.api.nvim_create_autocmd("BufEnter", {
18 | pattern = "*.md",
19 | callback = function() end,
20 | })
21 |
22 | vim.api.nvim_create_autocmd("ColorScheme", {
23 | desc = "change stuff for colorschemes",
24 | callback = function()
25 | local links = {
26 | ["@lsp.type.namespace"] = "@namespace",
27 | ["@lsp.type.type"] = "@type",
28 | ["@lsp.type.class"] = "@type",
29 | ["@lsp.type.enum"] = "@type",
30 | ["@lsp.type.interface"] = "@type",
31 | ["@lsp.type.struct"] = "@structure",
32 | ["@lsp.type.parameter"] = "@parameter",
33 | ["@lsp.type.variable"] = "@variable",
34 | ["@lsp.type.property"] = "@property",
35 | ["@lsp.type.enumMember"] = "@constant",
36 | ["@lsp.type.function"] = "@function",
37 | ["@lsp.type.method"] = "@method",
38 | ["@lsp.type.macro"] = "@macro",
39 | ["@lsp.type.decorator"] = "@function",
40 | }
41 | for newgroup, oldgroup in pairs(links) do
42 | vim.api.nvim_set_hl(0, newgroup, { link = oldgroup, default = true })
43 | end
44 | end,
45 | })
46 |
--------------------------------------------------------------------------------
/nvim/lua/aadi/keymaps.lua:
--------------------------------------------------------------------------------
1 | local function remap(mode, map, cmd)
2 | vim.keymap.set(mode, map, cmd, { silent = true })
3 | end
4 |
5 | -- easier keys to return to normal mode
6 | remap("i", "jk", "")
7 | remap("t", "jk", "")
8 |
9 | -- remove any clutter
10 | remap({ "n", "i" }, "", function()
11 | vim.cmd.nohl()
12 | vim.cmd.echo()
13 | end)
14 |
15 | -- insert mode
16 | remap("i", "", "A")
17 | remap("i", "", "I")
18 |
19 | -- yank shortcuts
20 | remap("n", "yl", "0y$")
21 | remap("n", "yf", ":%y")
22 |
23 | -- line positions
24 | remap("n", "H", "^")
25 | remap("n", "L", "$")
26 |
27 | -- sidebar toggles
28 | remap("n", "w", function()
29 | vim.cmd("Neotree close")
30 | vim.cmd("SidebarNvimToggle")
31 | end)
32 | remap("n", "e", "Neotree focus reveal toggle")
33 | remap("n", "u", "UndotreeToggle")
34 |
35 | -- enter blanklines
36 | remap("n", "o", "mzo`z")
37 | remap("n", "O", "mzO`z")
38 |
39 | -- better navigation
40 | remap("n", "", "zz")
41 | remap("n", "", "zz")
42 | remap("n", "n", "nzzzv")
43 | remap("n", "N", "Nzzzv")
44 |
45 | -- move lines in visual mode
46 | remap("v", "J", "m '>+1gv=gv")
47 | remap("v", "K", "m '<-2gv=gv")
48 |
49 | -- no idea. copy paster from somewhere
50 | remap("x", "x", '"_x')
51 | remap("x", "p", '"_dP')
52 | remap("n", "d", '"_d')
53 | remap("v", "d", '"_d')
54 |
55 | -- increment and descrement numbers
56 | remap("n", "+", "")
57 | remap("n", "-", "")
58 |
59 | -- splits
60 | remap("n", "sv", "v")
61 | remap("n", "sh", "s")
62 | remap("n", "se", "=")
63 | remap("n", "sm", "lua require('maximize').toggle()")
64 | remap("n", "sx", "close")
65 |
66 | -- window resize
67 | remap("n", "", "resize +2")
68 | remap("n", "", "resize -2")
69 | remap("n", "", "vertical resize +2")
70 | remap("n", "", "vertical resize -2")
71 |
72 | -- tabs
73 | remap("n", "to", "tabnew")
74 | remap("n", "tx", "tabclose")
75 | remap("n", "tn", "gt")
76 | remap("n", "tp", "gT")
77 |
78 | -- buffers
79 | remap({ "n", "t" }, "bn", "bnext")
80 | remap({ "n", "t" }, "bp", "bprev")
81 | remap("n", "q", "Bdelete")
82 |
83 | -- telescope
84 | remap("n", "", "Telescope find_files")
85 | remap("n", "fs", "Telescope live_grep")
86 | remap("n", "fc", "Telescope grep_string")
87 | remap("n", "fb", "Telescope buffers")
88 | remap("n", "fh", "Telescope help_tags")
89 | remap("n", "fl", "Telescope lsp_document_symbols")
90 |
91 | -- indenting something
92 | remap("v", "<", "", ">gv")
94 |
95 | -- disable arrow keys for line navigation
96 | remap("n", "", "")
97 | remap("n", "", "")
98 | remap("n", "", "")
99 | remap("n", "", "")
100 |
101 | -- trouble
102 | remap("n", "xx", "TroubleToggle")
103 | remap("n", "xw", "TroubleToggle workspace_diagnostics")
104 | remap("n", "xd", "TroubleToggle document_diagnostics")
105 |
106 | -- projects
107 | remap("n", "pp", "Telescope conduct projects")
108 | remap("n", "ps", "Telescope conduct sessions")
109 |
110 | -- harpoon
111 |
112 | remap("n", "a", function()
113 | require("harpoon.mark").toggle_file()
114 | require("sidebar-nvim").update()
115 | end)
116 |
117 | remap("n", "", function()
118 | require("harpoon.ui").toggle_quick_menu()
119 | end)
120 |
121 | remap("n", "", function()
122 | require("harpoon.ui").nav_file(1)
123 | end)
124 | remap("n", "", function()
125 | require("harpoon.ui").nav_file(2)
126 | end)
127 | remap("n", "", function()
128 | require("harpoon.ui").nav_file(3)
129 | end)
130 | remap("n", "", function()
131 | require("harpoon.ui").nav_file(4)
132 | end)
133 |
--------------------------------------------------------------------------------
/nvim/lua/aadi/lazy.lua:
--------------------------------------------------------------------------------
1 | local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"
2 | if not vim.loop.fs_stat(lazypath) then
3 | vim.fn.system({
4 | "git",
5 | "clone",
6 | "--filter=blob:none",
7 | "--single-branch",
8 | "https://github.com/folke/lazy.nvim.git",
9 | lazypath,
10 | })
11 | end
12 | vim.opt.runtimepath:prepend(lazypath)
13 |
14 | require("lazy").setup("aadi.plugins", {
15 | defaults = { lazy = true },
16 | install = { colorscheme = { "gruvbox-flat", "habamax" } },
17 | change_detection = {
18 | enabled = false,
19 | },
20 | performance = {
21 | rtp = {
22 | disabled_plugins = {
23 | "gzip",
24 | "matchit",
25 | "matchparen",
26 | "tarPlugin",
27 | "tohtml",
28 | "tutor",
29 | "zipPlugin",
30 | "shada",
31 | "man",
32 | "netrwPlugin",
33 | "spellfile",
34 | "filetype",
35 | },
36 | },
37 | },
38 | })
39 |
--------------------------------------------------------------------------------
/nvim/lua/aadi/options.lua:
--------------------------------------------------------------------------------
1 | local opt = vim.opt
2 |
3 | vim.g.mapleader = " "
4 | vim.g.loaded_netrw = 1
5 | vim.g.loaded_netrwPlugin = 1
6 |
7 | opt.relativenumber = true
8 | opt.number = true
9 |
10 | opt.tabstop = 4
11 | opt.shiftwidth = 4
12 | opt.expandtab = true
13 | opt.autoindent = true
14 | opt.smartindent = true
15 |
16 | opt.wrap = false
17 |
18 | opt.swapfile = false
19 | opt.backup = false
20 | opt.undodir = os.getenv("HOME") .. "/.local/share/nvim/undodir"
21 | opt.undofile = true
22 |
23 | opt.ignorecase = true
24 | opt.smartcase = true
25 | opt.hlsearch = false
26 | opt.incsearch = true
27 |
28 | opt.scrolloff = 8
29 |
30 | opt.termguicolors = true
31 | opt.signcolumn = "yes"
32 |
33 | opt.backspace = "indent,eol,start"
34 |
35 | opt.clipboard:append("unnamedplus")
36 |
37 | opt.splitright = true
38 | opt.splitbelow = true
39 |
40 | opt.iskeyword:append("-")
41 |
42 | opt.showmode = false
43 |
44 | opt.fillchars = { eob = " " }
45 |
46 | opt.laststatus = 0
47 | opt.showtabline = 0
48 | opt.cmdheight = 0
49 |
50 | opt.mouse = ""
51 |
--------------------------------------------------------------------------------
/nvim/lua/aadi/plugins/coding.lua:
--------------------------------------------------------------------------------
1 | return {
2 | {
3 | "hrsh7th/nvim-cmp",
4 | event = "InsertEnter",
5 | dependencies = {
6 | "hrsh7th/cmp-nvim-lsp",
7 | "hrsh7th/cmp-buffer",
8 | "hrsh7th/cmp-path",
9 | "hrsh7th/cmp-cmdline",
10 | "saadparwaiz1/cmp_luasnip",
11 | },
12 | config = function()
13 | vim.opt.completeopt = "menuone,noselect"
14 |
15 | local cmp = require("cmp")
16 | local luasnip = require("luasnip")
17 | cmp.setup({
18 | snippet = {
19 | expand = function(args)
20 | require("luasnip").lsp_expand(args.body)
21 | end,
22 | },
23 | mapping = cmp.mapping.preset.insert({
24 | [""] = cmp.mapping.select_prev_item(), -- previous suggestion
25 | [""] = cmp.mapping.select_next_item(), -- next suggestion
26 | [""] = cmp.mapping.scroll_docs(-4),
27 | [""] = cmp.mapping.scroll_docs(4),
28 | [""] = cmp.mapping.complete({}), -- show completion suggestions
29 | [""] = cmp.mapping.abort(), -- close completion window
30 | [""] = cmp.mapping.confirm({ select = false }),
31 | [""] = cmp.mapping(function(fallback)
32 | if cmp.visible() then
33 | cmp.select_next_item()
34 | elseif luasnip.expand_or_jumpable() then
35 | luasnip.expand_or_jump()
36 | else
37 | fallback()
38 | end
39 | end, { "i", "s" }),
40 | }),
41 | sources = cmp.config.sources({
42 | { name = "nvim_lsp" },
43 | { name = "luasnip" },
44 | { name = "buffer" },
45 | { name = "path" },
46 | }),
47 | })
48 |
49 | cmp.setup.cmdline("/", {
50 | mapping = cmp.mapping.preset.cmdline(),
51 | sources = {
52 | { name = "buffer" },
53 | },
54 | })
55 |
56 | cmp.setup.cmdline(":", {
57 | mapping = cmp.mapping.preset.cmdline(),
58 | sources = cmp.config.sources({
59 | { name = "path" },
60 | }, {
61 | {
62 | name = "cmdline",
63 | option = {
64 | ignore_cmds = { "Man", "!" },
65 | },
66 | },
67 | }),
68 | })
69 | end,
70 | },
71 |
72 | {
73 |
74 | "echasnovski/mini.surround",
75 | event = "BufReadPost",
76 | config = function()
77 | require("mini.surround").setup({})
78 | end,
79 | },
80 | {
81 |
82 | "echasnovski/mini.comment",
83 | event = "BufReadPost",
84 | config = function()
85 | require("mini.comment").setup({})
86 | end,
87 | },
88 | {
89 | "echasnovski/mini.pairs",
90 | event = "InsertEnter",
91 | config = function()
92 | require("mini.pairs").setup({})
93 | end,
94 | },
95 |
96 | {
97 | "L3MON4D3/LuaSnip",
98 | dependencies = {
99 | "rafamadriz/friendly-snippets",
100 | config = function()
101 | require("luasnip.loaders.from_vscode").lazy_load()
102 | end,
103 | },
104 | },
105 | }
106 |
--------------------------------------------------------------------------------
/nvim/lua/aadi/plugins/colorscheme.lua:
--------------------------------------------------------------------------------
1 | return {
2 | {
3 | "EdenEast/nightfox.nvim",
4 | },
5 | {
6 | "shaunsingh/nord.nvim",
7 | },
8 | {
9 | "rebelot/kanagawa.nvim",
10 | lazy = false,
11 | priority = 1000,
12 | config = function()
13 | require("kanagawa").setup({
14 | colors = {
15 | theme = {
16 | all = {
17 | ui = {
18 | bg_gutter = "none",
19 | },
20 | },
21 | },
22 | },
23 | })
24 |
25 | vim.cmd("colorscheme kanagawa")
26 | end,
27 | },
28 | }
29 |
--------------------------------------------------------------------------------
/nvim/lua/aadi/plugins/editor.lua:
--------------------------------------------------------------------------------
1 | return {
2 | {
3 | "lewis6991/gitsigns.nvim",
4 | event = "BufReadPre",
5 | config = true,
6 | },
7 |
8 | {
9 | "ThePrimeagen/harpoon",
10 | },
11 |
12 | {
13 | "wintermute-cell/gitignore.nvim",
14 | cmd = "Gitignore",
15 | requires = "nvim-telescope/telescope.nvim",
16 | },
17 |
18 | {
19 | "nvim-neo-tree/neo-tree.nvim",
20 | cmd = "Neotree",
21 | config = function()
22 | vim.cmd([[ let g:neo_tree_remove_legacy_commands = 1 ]])
23 |
24 | require("neo-tree").setup({
25 | close_if_last_window = true,
26 | default_component_configs = {
27 | indent = {
28 | with_expanders = true,
29 | },
30 | },
31 | window = {
32 | width = 35,
33 | },
34 | filesystem = {
35 | filtered_items = {
36 | hide_dotfiles = false,
37 | hide_gitignored = false,
38 | },
39 | },
40 | event_handlers = {
41 | {
42 | event = "neo_tree_window_before_open",
43 | handler = function(_)
44 | require("sidebar-nvim").close()
45 | end,
46 | },
47 | },
48 | })
49 | vim.api.nvim_set_hl(0, "NeoTreeDirectoryName", { fg = "#d5c4a1" })
50 | vim.api.nvim_set_hl(0, "NeoTreeCursorLine", { bg = "none" })
51 | end,
52 | },
53 |
54 | {
55 | "sidebar-nvim/sidebar.nvim",
56 | cmd = { "SidebarNvimToggle", "SidebarNvimClose" },
57 | config = function()
58 | local harpoon = require("harpoon")
59 |
60 | local base_info = {
61 | title = "Info",
62 | icon = "",
63 | draw = function()
64 | local lines = {}
65 |
66 | -- Mode
67 | local modes = {
68 | ["n"] = "Normal",
69 | ["no"] = "N·Operator Pending",
70 | ["v"] = "Visual",
71 | ["V"] = "V·Line",
72 | [""] = "V·Block",
73 | ["s"] = "Select",
74 | ["S"] = "S·Line",
75 | [""] = "S·Block",
76 | ["i"] = "Insert",
77 | ["R"] = "Replace",
78 | ["Rv"] = "V·Replace",
79 | ["c"] = "Command",
80 | ["cv"] = "Vim Ex",
81 | ["ce"] = "Ex",
82 | ["r"] = "Prompt",
83 | ["rm"] = "More",
84 | ["r?"] = "Confirm",
85 | ["!"] = "Shell",
86 | ["t"] = "Terminal",
87 | }
88 | local mode = vim.fn.mode()
89 | local mode_name = modes[mode]
90 | table.insert(lines, "mode: " .. (mode_name and mode_name or "undefined"))
91 |
92 | -- Git branch
93 | if vim.fn.isdirectory(".git") then
94 | local branch = vim.fn.system("git branch --show-current 2> /dev/null | tr -d '\n'")
95 | if branch ~= "" then
96 | table.insert(lines, "branch: " .. branch)
97 | end
98 | end
99 |
100 | -- Project Stuff
101 | local current_project = require("conduct").current_project.name
102 | if current_project ~= nil then
103 | table.insert(lines, "project: " .. current_project)
104 | local current_session = require("conduct").current_session
105 | table.insert(lines, "session: " .. current_session)
106 | end
107 |
108 | return {
109 | lines = lines,
110 | }
111 | end,
112 | }
113 |
114 | local buffers = {
115 | title = "Buffers",
116 | icon = "",
117 | draw = function()
118 | local lines = {}
119 | local cwd = vim.fn.getcwd() .. "/"
120 |
121 | local all_buffers = vim.fn.getbufinfo()
122 | for _, buf in ipairs(all_buffers) do
123 | if buf.name:find("^term://") ~= nil or buf.name == "" then
124 | goto continue
125 | end
126 |
127 | if buf.listed == 1 then
128 | local buf_name = vim.fn.substitute(buf.name, "^" .. vim.fn.escape(cwd, "/-"), "", "")
129 | if buf.name == vim.api.nvim_buf_get_name(0) then
130 | table.insert(lines, "> " .. buf_name)
131 | else
132 | table.insert(lines, " " .. buf_name)
133 | end
134 | end
135 |
136 | ::continue::
137 | end
138 |
139 | return {
140 | lines = lines,
141 | }
142 | end,
143 | }
144 |
145 | local terms = {
146 | title = "Terminals",
147 | icon = "",
148 | draw = function()
149 | local lines = {}
150 | local terminal_data = require("termnames").get_terminals()
151 | if terminal_data then
152 | local current_bufnr = vim.api.nvim_win_get_buf(0)
153 | for _, term in ipairs(terminal_data) do
154 | if term.bufnr == current_bufnr then
155 | table.insert(lines, "> " .. term.name)
156 | else
157 | table.insert(lines, " " .. term.name)
158 | end
159 | end
160 | end
161 | return {
162 | lines = lines,
163 | }
164 | end,
165 | }
166 |
167 | local harpoon_marks = {
168 | title = "Harpoon Marks",
169 | icon = "",
170 | draw = function()
171 | local marks = harpoon.get_mark_config().marks
172 | local keymaps = { "H ", "T ", "M ", "L " }
173 | local lines = {}
174 |
175 | for idx = 1, #marks do
176 | if idx > 4 then
177 | table.insert(lines, " " .. marks[idx].filename)
178 | else
179 | table.insert(lines, keymaps[idx] .. marks[idx].filename)
180 | end
181 | end
182 |
183 | return {
184 | lines = lines,
185 | }
186 | end,
187 | }
188 |
189 | -- vim.api.nvim_set_hl(0, "SidebarNvimSectionTitle", { fg = "#f9f5d7" })
190 |
191 | require("sidebar-nvim").setup({
192 | sections = { base_info, buffers, terms, harpoon_marks },
193 | update_interval = 0,
194 | hide_statusline = true,
195 | })
196 |
197 | vim.api.nvim_create_autocmd(
198 | { "BufAdd", "BufDelete", "BufEnter", "TabEnter", "ModeChanged", "DiagnosticChanged" },
199 | {
200 | callback = function()
201 | require("sidebar-nvim").update()
202 | end,
203 | }
204 | )
205 | end,
206 | },
207 |
208 | {
209 | "simrat39/symbols-outline.nvim",
210 | cmd = "SymbolsOutline",
211 | config = function()
212 | require("symbols-outline").setup({
213 | show_symbol_details = false,
214 | })
215 | end,
216 | },
217 |
218 | {
219 | "mbbill/undotree",
220 | cmd = "UndotreeToggle",
221 | config = function()
222 | vim.g.undotree_WindowLayout = 3
223 | vim.g.undotree_SplitWidth = 40
224 | end,
225 | },
226 |
227 | { "famiu/bufdelete.nvim", cmd = { "Bdelete", "Bwipeout" } },
228 |
229 | {
230 | "aaditeynair/termnames.nvim",
231 | cmd = { "TermOpen", "TermRename", "TermClose", "TermRefresh", "TermSave", "TermRun" },
232 | },
233 |
234 | {
235 | "folke/trouble.nvim",
236 | cmd = "TroubleToggle",
237 | opts = {
238 | auto_preview = false,
239 | },
240 | },
241 |
242 | {
243 | "aaditeynair/conduct.nvim",
244 | dependencies = "nvim-lua/plenary.nvim",
245 | cmd = {
246 | "ConductNewProject",
247 | "ConductLoadProject",
248 | "ConductLoadLastProject",
249 | "ConductLoadProjectConfig",
250 | "ConductReloadProjectConfig",
251 | "ConductDeleteProject",
252 | "ConductRenameProject",
253 | "ConductProjectNewSession",
254 | "ConductProjectLoadSession",
255 | "ConductProjectDeleteSession",
256 | "ConductProjectRenameSession",
257 | },
258 | opts = {
259 | functions = {
260 | run = function()
261 | local termname = require("termnames")
262 |
263 | if not termname.terminal_exists("server") then
264 | termname.create_terminal("server")
265 | end
266 |
267 | termname.run_terminal_cmd({ "server", "exa -al" })
268 | end,
269 | },
270 | presets = {
271 | node = {
272 | keybinds = {
273 | ["hi"] = "TermOpen control ls ${flags}",
274 | },
275 | },
276 | },
277 | hooks = {
278 | before_session_save = function()
279 | require("sidebar-nvim").close()
280 | require("termnames").save_terminal_data()
281 | end,
282 | before_session_load = function()
283 | vim.cmd("silent %bwipeout!")
284 | end,
285 | after_session_load = function()
286 | require("termnames").update_term_bufnr()
287 | end,
288 | },
289 | },
290 | },
291 |
292 | {
293 | "folke/flash.nvim",
294 | event = "VeryLazy",
295 | opts = {
296 | search = {
297 | mode = "fuzzy",
298 | },
299 | modes = {
300 | char = {
301 | enabled = false,
302 | },
303 | },
304 | },
305 | },
306 | }
307 |
--------------------------------------------------------------------------------
/nvim/lua/aadi/plugins/formatting.lua:
--------------------------------------------------------------------------------
1 | return {
2 | {
3 | "stevearc/conform.nvim",
4 | event = { "BufReadPre", "BufNewFile" },
5 | config = function()
6 | local conform = require("conform")
7 |
8 | conform.setup({
9 | formatters_by_ft = {
10 | lua = { "stylua" },
11 | go = { "gofumt", "goimports-reviser" },
12 | python = { "isort", "black" },
13 | javascript = { "prettier" },
14 | typescript = { "prettier" },
15 | javascriptreact = { "prettier" },
16 | typescriptreact = { "prettier" },
17 | html = { "prettier" },
18 | css = { "prettier" },
19 | json = { "prettier" },
20 | yaml = { "prettier" },
21 | sh = { "shfmt" },
22 | ["*"] = { "codespell", "trim_whitespace" },
23 | },
24 | format_on_save = {
25 | timeout_ms = 1000,
26 | lsp_fallback = true,
27 | async = false,
28 | },
29 | })
30 |
31 | vim.keymap.set({ "n", "v" }, "lf", function()
32 | conform.format({
33 | timeout_ms = 1000,
34 | lsp_fallback = true,
35 | async = false,
36 | })
37 | end)
38 | end,
39 | },
40 |
41 | {
42 | "mfussenegger/nvim-lint",
43 | event = { "BufReadPre", "BufNewFile" },
44 | config = function()
45 | local lint = require("lint")
46 | lint.linters_by_ft = {
47 | javascript = { "eslint_d" },
48 | javascriptreact = { "eslint_d" },
49 | typescript = { "eslint_d" },
50 | typescriptreact = { "eslint_d" },
51 | python = { "pylint" },
52 | markdown = { "markdownlint" },
53 | go = { "revive" },
54 | }
55 |
56 | local lint_augroup = vim.api.nvim_create_augroup("link", { clear = true })
57 | vim.api.nvim_create_autocmd({ "BufEnter", "InsertLeave", "BufWritePost" }, {
58 | group = lint_augroup,
59 | callback = function()
60 | lint.try_lint()
61 | end,
62 | })
63 |
64 | vim.keymap.set("n", "ll", function()
65 | lint.try_lint()
66 | end)
67 | end,
68 | },
69 | }
70 |
--------------------------------------------------------------------------------
/nvim/lua/aadi/plugins/lsp.lua:
--------------------------------------------------------------------------------
1 | return {
2 | {
3 | "neovim/nvim-lspconfig",
4 | name = "lsp",
5 | event = "BufReadPre",
6 | dependencies = { "hrsh7th/cmp-nvim-lsp", "folke/neodev.nvim" },
7 | config = function()
8 | require("mason")
9 | require("lspsaga")
10 |
11 | local lspconfig_status, lspconfig = pcall(require, "lspconfig")
12 | if not lspconfig_status then
13 | return
14 | end
15 |
16 | local cmp_nvim_lsp_status, cmp_nvim_lsp = pcall(require, "cmp_nvim_lsp")
17 | if not cmp_nvim_lsp_status then
18 | return
19 | end
20 |
21 | local keymap = vim.keymap
22 |
23 | local on_attach = function(_, bufnr)
24 | local opts = { noremap = true, silent = true, buffer = bufnr }
25 | -- set keybinds
26 | keymap.set("n", "gf", "Lspsaga finder", opts) -- show definition, references
27 | keymap.set("n", "gD", "lua vim.lsp.buf.definition()", opts) -- got to declaration
28 | keymap.set("n", "gd", "Lspsaga peek_definition", opts) -- see definition and make edits in window
29 | keymap.set("n", "gi", "lua vim.lsp.buf.implementation()", opts) -- go to implementation
30 | keymap.set("n", "ca", "Lspsaga code_action", opts) -- see available code actions
31 | keymap.set("n", "rn", "Lspsaga rename", opts) -- smart rename
32 | keymap.set("n", "d", "Lspsaga show_line_diagnostics", opts) -- show diagnostics for line
33 | keymap.set("n", "d", "Lspsaga show_cursor_diagnostics", opts) -- show diagnostics for cursor
34 | keymap.set("n", "[d", "Lspsaga diagnostic_jump_prev", opts) -- jump to previous diagnostic in buffer
35 | keymap.set("n", "]d", "Lspsaga diagnostic_jump_next", opts) -- jump to next diagnostic in buffer
36 | keymap.set("n", "K", "Lspsaga hover_doc", opts) -- show documentation for what is under cursor
37 | keymap.set("n", "go", "SymbolsOutline", opts) -- see outline on right hand side
38 | end
39 |
40 | local capabilities = vim.lsp.protocol.make_client_capabilities()
41 | capabilities = cmp_nvim_lsp.default_capabilities()
42 |
43 | local get_servers = require("mason-lspconfig").get_installed_servers
44 | for _, server_name in ipairs(get_servers()) do
45 | lspconfig[server_name].setup({
46 | capabilities = capabilities,
47 | on_attach = on_attach,
48 | })
49 | end
50 |
51 | lspconfig["gopls"].setup({
52 | settings = {
53 | gopls = {
54 | gofumpt = true,
55 | completeUnimported = true,
56 | usePlaceholders = true,
57 | },
58 | },
59 | })
60 |
61 | -- configure lua server (with special settings)
62 | lspconfig["lua_ls"].setup({
63 | capabilities = capabilities,
64 | on_attach = on_attach,
65 | settings = { -- custom settings for lua
66 | Lua = {
67 | -- semantic = {
68 | -- enable = false,
69 | -- },
70 | -- make the language server recognize "vim" global
71 | diagnostics = {
72 | globals = { "vim" },
73 | },
74 | workspace = {
75 | -- make language server aware of runtime files
76 | library = {
77 | [vim.fn.expand("$VIMRUNTIME/lua")] = true,
78 | [vim.fn.stdpath("config") .. "/lua"] = true,
79 | },
80 | },
81 | },
82 | },
83 | })
84 | end,
85 | },
86 |
87 | {
88 | "glepnir/lspsaga.nvim",
89 | opts = {
90 | symbol_in_winbar = {
91 | enable = false,
92 | },
93 | ui = {
94 | border = "single",
95 | colors = {
96 | normal_bg = "",
97 | },
98 | },
99 | definition = {
100 | edit = "",
101 | },
102 | diagnostic = {
103 | on_insert = false,
104 | },
105 | rename = {
106 | keys = { quit = "" },
107 | },
108 | },
109 | },
110 |
111 | {
112 | "williamboman/mason.nvim",
113 | dependencies = { "williamboman/mason-lspconfig.nvim", "WhoIsSethDaniel/mason-tool-installer" },
114 | config = function()
115 | require("mason").setup()
116 |
117 | require("mason-lspconfig").setup({
118 | automatic_installation = true,
119 | })
120 |
121 | require("mason-tool-installer").setup({
122 | ensure_installed = {
123 | -- LSP Servers
124 | "astro",
125 | "bashls",
126 | "cssls",
127 | "gopls",
128 | "html",
129 | "lua_ls",
130 | "marksman",
131 | "pyright",
132 | "tailwindcss",
133 | "tsserver",
134 | "vimls",
135 |
136 | -- Formatters
137 | "prettier",
138 | "shfmt",
139 | "stylua",
140 | "isort",
141 | "black",
142 | "codespell",
143 | "gofumpt",
144 | "goimports-reviser",
145 |
146 | -- Linters
147 | "markdownlint",
148 | "eslint_d",
149 | "pylint",
150 | "revive",
151 | },
152 | })
153 | end,
154 | },
155 | }
156 |
--------------------------------------------------------------------------------
/nvim/lua/aadi/plugins/misc.lua:
--------------------------------------------------------------------------------
1 | return {
2 | {
3 | "folke/zen-mode.nvim",
4 | cmd = "ZenMode",
5 | config = function()
6 | require("zen-mode").setup({
7 | window = {
8 | backdrop = 0.50,
9 | },
10 | plugins = {
11 | gitsigns = true,
12 | tmux = false,
13 | kitty = { enabled = false, font = "+2" },
14 | twilight = false,
15 | },
16 | })
17 | end,
18 | },
19 |
20 | { "folke/twilight.nvim", cmd = "Twilight" },
21 |
22 | "nvim-lua/plenary.nvim",
23 | "MunifTanjim/nui.nvim",
24 | { "christoomey/vim-tmux-navigator", event = "VeryLazy" },
25 | }
26 |
--------------------------------------------------------------------------------
/nvim/lua/aadi/plugins/telescope.lua:
--------------------------------------------------------------------------------
1 | return {
2 | "nvim-telescope/telescope.nvim",
3 | cmd = { "Telescope" },
4 | dependencies = {
5 | { "nvim-telescope/telescope-file-browser.nvim" },
6 | { "nvim-telescope/telescope-fzf-native.nvim", build = "make" },
7 | },
8 | config = function()
9 | local telescope_setup, telescope = pcall(require, "telescope")
10 | if not telescope_setup then
11 | return
12 | end
13 |
14 | -- import telescope actions safely
15 | local actions_setup, actions = pcall(require, "telescope.actions")
16 | if not actions_setup then
17 | return
18 | end
19 |
20 | telescope.setup({
21 | defaults = {
22 | file_ignore_patterns = {
23 | "node_modules",
24 | },
25 | mappings = {
26 | i = {
27 | [""] = actions.move_selection_previous, -- move to prev result
28 | [""] = actions.move_selection_next, -- move to next result
29 | [""] = actions.send_selected_to_qflist + actions.open_qflist, -- send selected to quickfixlist
30 | },
31 | n = {
32 | ["q"] = actions.close,
33 | },
34 | },
35 | prompt_prefix = " ",
36 | selection_caret = " ",
37 | entry_prefix = " ",
38 | sorting_strategy = "ascending",
39 | layout_strategy = "horizontal",
40 | layout_config = {
41 | horizontal = {
42 | prompt_position = "top",
43 | preview_width = 0.55,
44 | results_width = 0.8,
45 | },
46 | vertical = {
47 | mirror = false,
48 | },
49 | width = 0.87,
50 | height = 0.80,
51 | preview_cutoff = 120,
52 | },
53 | },
54 | })
55 |
56 | telescope.load_extension("fzf")
57 | telescope.load_extension("file_browser")
58 | telescope.load_extension("conduct")
59 | end,
60 | }
61 |
--------------------------------------------------------------------------------
/nvim/lua/aadi/plugins/treesitter.lua:
--------------------------------------------------------------------------------
1 | return {
2 | {
3 | "nvim-treesitter/nvim-treesitter",
4 | build = ":TSUpdate",
5 | event = "BufReadPost",
6 | config = function()
7 | require("nvim-treesitter.configs").setup({
8 | highlight = {
9 | enable = true,
10 | disable = {},
11 | additional_vim_regex_highlighting = false,
12 | },
13 | ident = { enable = true, disable = { "yaml" } },
14 | autotag = { enable = true },
15 | ensure_installed = {
16 | "astro",
17 | "bash",
18 | "cpp",
19 | "css",
20 | "gitignore",
21 | "go",
22 | "html",
23 | "javascript",
24 | "json",
25 | "lua",
26 | "python",
27 | "typescript",
28 | "yuck",
29 | },
30 | auto_install = true,
31 | })
32 | end,
33 | },
34 | }
35 |
--------------------------------------------------------------------------------
/nvim/lua/aadi/plugins/ui.lua:
--------------------------------------------------------------------------------
1 | return {
2 | {
3 | "goolord/alpha-nvim",
4 | lazy = false,
5 | config = function()
6 | local function button(txt, keys)
7 | local opts = {
8 | position = "left",
9 | shortcut = "",
10 | cursor = 5,
11 | width = 50,
12 | align_shortcut = "right",
13 | hl_shortcut = "Keyword",
14 | }
15 |
16 | local function on_press()
17 | local key = vim.api.nvim_replace_termcodes(keys .. "", true, false, true)
18 | vim.api.nvim_feedkeys(key, "t", false)
19 | end
20 |
21 | return {
22 | type = "button",
23 | val = txt,
24 | on_press = on_press,
25 | opts = opts,
26 | }
27 | end
28 |
29 | local v_info = vim.version()
30 | local nvim_version = "NVIM v" .. v_info.major .. "." .. v_info.minor .. "." .. v_info.patch
31 |
32 | local header = {
33 | type = "text",
34 | val = {
35 | "███ ██ ███████ ██████ ██ ██ ██ ███ ███ ",
36 | "████ ██ ██ ██ ██ ██ ██ ██ ████ ████ ",
37 | "██ ██ ██ █████ ██ ██ ██ ██ ██ ██ ████ ██ ",
38 | "██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ",
39 | "██ ████ ███████ ██████ ████ ██ ██ ██ ",
40 | "",
41 | nvim_version,
42 | },
43 | opts = {
44 | position = "left",
45 | hl = "String",
46 | },
47 | }
48 |
49 | local footer = {
50 | type = "text",
51 | val = "assert brain.is_working == True",
52 | opts = {
53 | hl = "String",
54 | },
55 | }
56 |
57 | local projects = {
58 | type = "group",
59 | val = {},
60 | }
61 |
62 | for i, project in ipairs(require("conduct").get_last_opened_projects()) do
63 | if i > 7 then
64 | break
65 | end
66 | table.insert(
67 | projects.val,
68 | button("[" .. i .. "] " .. project, ":silent ConductLoadProject " .. project .. "")
69 | )
70 | end
71 |
72 | local commands = {
73 | type = "group",
74 | val = {
75 | button("[1] Update Plugins", ":Lazy sync"),
76 | button("[2] Open Terminal", ":TermOpen"),
77 | button("[3] Open Config", ":ConductLoadProject nvim-config"),
78 | },
79 | }
80 |
81 | local help = {
82 | type = "group",
83 | val = {
84 | button("[1] :help nvim", ":help nvim"),
85 | button("[2] :checkhealth", ":checkhealth"),
86 | button("[3] :help news", ":help news"),
87 | },
88 | }
89 |
90 | local section = {
91 | header = header,
92 | projects = projects,
93 | commands = commands,
94 | help = help,
95 | footer = footer,
96 | }
97 |
98 | local config = {
99 | layout = {
100 | { type = "padding", val = 2 },
101 | section.header,
102 | { type = "padding", val = 2 },
103 |
104 | { type = "text", val = "RECENT PROJECTS", opts = { hl = "String" } },
105 | { type = "padding", val = 1 },
106 | section.projects,
107 | { type = "padding", val = 2 },
108 |
109 | { type = "text", val = "COMMANDS", opts = { hl = "String" } },
110 | { type = "padding", val = 1 },
111 | section.commands,
112 | { type = "padding", val = 2 },
113 |
114 | { type = "text", val = "HELP", opts = { hl = "String" } },
115 | { type = "padding", val = 1 },
116 | section.help,
117 | { type = "padding", val = 2 },
118 |
119 | section.footer,
120 | },
121 | opts = {
122 | margin = 5,
123 | },
124 | }
125 |
126 | require("alpha").setup({
127 | button = button,
128 | layout = config.layout,
129 | opts = config.opts,
130 | })
131 | end,
132 | },
133 |
134 | {
135 | "lukas-reineke/indent-blankline.nvim",
136 | event = "BufReadPre",
137 | main = "ibl",
138 | opts = {
139 | indent = {
140 | char = "▏",
141 | },
142 | scope = {
143 | enabled = false,
144 | },
145 | },
146 | },
147 |
148 | {
149 | "m4xshen/smartcolumn.nvim",
150 | opts = {
151 | disabled_filetypes = {
152 | "help",
153 | "text",
154 | "markdown",
155 | "lazy",
156 | "Trouble",
157 | },
158 | },
159 | event = "BufReadPost",
160 | },
161 |
162 | { "nvim-tree/nvim-web-devicons" },
163 |
164 | {
165 | "rcarriga/nvim-notify",
166 | event = "VeryLazy",
167 | config = function()
168 | require("notify").setup({
169 | background_colour = "#000000",
170 | stages = "fade",
171 | })
172 | vim.notify = require("notify")
173 | end,
174 | },
175 |
176 | {
177 | "declancm/maximize.nvim",
178 | opts = { default_keymaps = false },
179 | },
180 | }
181 |
--------------------------------------------------------------------------------
/nvim/lua/aadi/utils.lua:
--------------------------------------------------------------------------------
1 | function AutoBackground()
2 | local hour = tonumber(os.date("%H"))
3 |
4 | if hour >= 18 then
5 | vim.opt.background = "dark"
6 | elseif hour >= 7 then
7 | vim.opt.background = "light"
8 | else
9 | vim.opt.background = "dark"
10 | end
11 | end
12 |
--------------------------------------------------------------------------------
/picom/picom.conf:
--------------------------------------------------------------------------------
1 | backend = "glx";
2 | glx-no-stencil = true;
3 | glx-copy-from-front = false;
4 |
5 | # Opacity
6 | active-opacity = 1;
7 | inactive-opacity = 1;
8 | frame-opacity = 1;
9 | inactive-opacity-override = false;
10 |
11 | blur-background = false;
12 | blur-method = "none";
13 | blur-strength = 0;
14 |
15 | # Fading
16 | fading = false;
17 | fade-delta = 2;
18 | no-fading-openclose = false;
19 |
20 | fade-exclude = [ ];
21 |
22 | # Other
23 | mark-wmwin-focused = true;
24 | mark-ovredir-focused = true;
25 | detect-rounded-corners = true;
26 | detect-client-opacity = true;
27 | vsync = true;
28 | dbe = false;
29 | unredir-if-possible = false;
30 | focus-exclude = [ ];
31 | detect-transient = true;
32 | detect-client-leader = true;
33 |
34 | # Window type settings
35 | wintypes:
36 | {
37 | dock = {
38 | shadow = false;
39 | };
40 | };
41 |
42 | corner-radius = 10;
43 |
44 | xrender-sync-fence = true;
45 |
46 | shadow = true;
47 | shadow-radius = 10;
48 | shadow-offset-x = -10;
49 | shadow-offset-y = -10;
50 |
--------------------------------------------------------------------------------
/qtile/__pycache__/config.cpython-310.pyc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aaditeynair/dots/177b58b1135f904366ea5e6578f29b80262e80d8/qtile/__pycache__/config.cpython-310.pyc
--------------------------------------------------------------------------------
/qtile/__pycache__/config.cpython-311.pyc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aaditeynair/dots/177b58b1135f904366ea5e6578f29b80262e80d8/qtile/__pycache__/config.cpython-311.pyc
--------------------------------------------------------------------------------
/qtile/__pycache__/spotify.cpython-310.pyc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aaditeynair/dots/177b58b1135f904366ea5e6578f29b80262e80d8/qtile/__pycache__/spotify.cpython-310.pyc
--------------------------------------------------------------------------------
/qtile/assets/white.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aaditeynair/dots/177b58b1135f904366ea5e6578f29b80262e80d8/qtile/assets/white.png
--------------------------------------------------------------------------------
/qtile/config.py:
--------------------------------------------------------------------------------
1 | from modules.keys import keys, mod
2 | from modules.groups import groups
3 | from modules.layouts import layouts, floating_layout
4 | from modules.mouse import mouse
5 | from modules.hooks import *
6 | from modules.screens import screens
7 | from libqtile import bar, layout, widget, hook
8 | from libqtile.config import Click, Drag, Group, Key, Match, Screen, ScratchPad, DropDown
9 | from libqtile.lazy import lazy
10 |
11 | dgroups_key_binder = None
12 | dgroups_app_rules = [] # type: list
13 | follow_mouse_focus = True
14 | bring_front_click = False
15 | cursor_warp = False
16 | auto_fullscreen = True
17 | focus_on_window_activation = "smart"
18 | auto_minimize = True
19 | wl_input_rules = None
20 | wmname = "Qtile"
21 | widget_defaults = dict(font="Cascadia Code", fontsize=15, padding=3)
22 |
--------------------------------------------------------------------------------
/qtile/modules/__pycache__/groups.cpython-310.pyc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aaditeynair/dots/177b58b1135f904366ea5e6578f29b80262e80d8/qtile/modules/__pycache__/groups.cpython-310.pyc
--------------------------------------------------------------------------------
/qtile/modules/__pycache__/groups.cpython-311.pyc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aaditeynair/dots/177b58b1135f904366ea5e6578f29b80262e80d8/qtile/modules/__pycache__/groups.cpython-311.pyc
--------------------------------------------------------------------------------
/qtile/modules/__pycache__/hooks.cpython-310.pyc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aaditeynair/dots/177b58b1135f904366ea5e6578f29b80262e80d8/qtile/modules/__pycache__/hooks.cpython-310.pyc
--------------------------------------------------------------------------------
/qtile/modules/__pycache__/hooks.cpython-311.pyc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aaditeynair/dots/177b58b1135f904366ea5e6578f29b80262e80d8/qtile/modules/__pycache__/hooks.cpython-311.pyc
--------------------------------------------------------------------------------
/qtile/modules/__pycache__/keys.cpython-310.pyc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aaditeynair/dots/177b58b1135f904366ea5e6578f29b80262e80d8/qtile/modules/__pycache__/keys.cpython-310.pyc
--------------------------------------------------------------------------------
/qtile/modules/__pycache__/keys.cpython-311.pyc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aaditeynair/dots/177b58b1135f904366ea5e6578f29b80262e80d8/qtile/modules/__pycache__/keys.cpython-311.pyc
--------------------------------------------------------------------------------
/qtile/modules/__pycache__/layouts.cpython-310.pyc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aaditeynair/dots/177b58b1135f904366ea5e6578f29b80262e80d8/qtile/modules/__pycache__/layouts.cpython-310.pyc
--------------------------------------------------------------------------------
/qtile/modules/__pycache__/layouts.cpython-311.pyc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aaditeynair/dots/177b58b1135f904366ea5e6578f29b80262e80d8/qtile/modules/__pycache__/layouts.cpython-311.pyc
--------------------------------------------------------------------------------
/qtile/modules/__pycache__/mouse.cpython-310.pyc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aaditeynair/dots/177b58b1135f904366ea5e6578f29b80262e80d8/qtile/modules/__pycache__/mouse.cpython-310.pyc
--------------------------------------------------------------------------------
/qtile/modules/__pycache__/mouse.cpython-311.pyc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aaditeynair/dots/177b58b1135f904366ea5e6578f29b80262e80d8/qtile/modules/__pycache__/mouse.cpython-311.pyc
--------------------------------------------------------------------------------
/qtile/modules/__pycache__/screens.cpython-310.pyc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aaditeynair/dots/177b58b1135f904366ea5e6578f29b80262e80d8/qtile/modules/__pycache__/screens.cpython-310.pyc
--------------------------------------------------------------------------------
/qtile/modules/__pycache__/screens.cpython-311.pyc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aaditeynair/dots/177b58b1135f904366ea5e6578f29b80262e80d8/qtile/modules/__pycache__/screens.cpython-311.pyc
--------------------------------------------------------------------------------
/qtile/modules/groups.py:
--------------------------------------------------------------------------------
1 | from libqtile.config import DropDown, Group, ScratchPad
2 |
3 | TERM_DROPDOWN = "alacritty --config-file /home/aadi/.config/alacritty/dropdown.yml "
4 |
5 | groups = [
6 | ScratchPad(
7 | "scratchpad",
8 | [
9 | DropDown(
10 | "term", TERM_DROPDOWN, opacity=1, y=0.2, height=0.5, width=0.5, x=0.25
11 | ),
12 | DropDown(
13 | "ranger",
14 | TERM_DROPDOWN + "-e ranger",
15 | opacity=1,
16 | y=0.2,
17 | height=0.5,
18 | width=0.8,
19 | x=0.1,
20 | ),
21 | DropDown(
22 | "zfxtop",
23 | TERM_DROPDOWN,
24 | opacity=1,
25 | y=0.15,
26 | height=0.66,
27 | width=0.38,
28 | x=0.32,
29 | ),
30 | ],
31 | ),
32 | Group("Web", layout="columns"),
33 | Group("Terminal", layout="columns"),
34 | Group("Neovim", layout="columns"),
35 | Group("Music"),
36 | ]
37 |
--------------------------------------------------------------------------------
/qtile/modules/hooks.py:
--------------------------------------------------------------------------------
1 | import os
2 | import subprocess
3 |
4 | from libqtile import hook
5 |
6 |
7 | @hook.subscribe.startup_once
8 | def autostart():
9 | script_path = os.path.expanduser("~/.config/qtile/scripts/startup.sh")
10 | subprocess.Popen([script_path])
11 |
--------------------------------------------------------------------------------
/qtile/modules/keys.py:
--------------------------------------------------------------------------------
1 | import os
2 |
3 | from libqtile.command import lazy
4 | from libqtile.config import Key
5 |
6 | mod = "mod4"
7 |
8 | keys = [
9 | # Switch between windows
10 | Key([mod], "h", lazy.layout.left(), desc="Move focus to left"),
11 | Key([mod], "l", lazy.layout.right(), desc="Move focus to right"),
12 | Key([mod], "j", lazy.layout.down(), desc="Move focus down"),
13 | Key([mod], "k", lazy.layout.up(), desc="Move focus up"),
14 | Key([mod], "space", lazy.layout.next(), desc="Move window focus to other window"),
15 | Key(
16 | [mod, "shift"], "h", lazy.layout.shuffle_left(), desc="Move window to the left"
17 | ),
18 | Key(
19 | [mod, "shift"],
20 | "l",
21 | lazy.layout.shuffle_right(),
22 | desc="Move window to the right",
23 | ),
24 | Key([mod, "shift"], "j", lazy.layout.shuffle_down(), desc="Move window down"),
25 | Key([mod, "shift"], "k", lazy.layout.shuffle_up(), desc="Move window up"),
26 | Key([mod, "control"], "h", lazy.layout.grow_left(), desc="Grow window to the left"),
27 | Key(
28 | [mod, "control"], "l", lazy.layout.grow_right(), desc="Grow window to the right"
29 | ),
30 | Key([mod, "control"], "j", lazy.layout.grow_down(), desc="Grow window down"),
31 | Key([mod, "control"], "k", lazy.layout.grow_up(), desc="Grow window up"),
32 | Key([mod], "n", lazy.layout.normalize(), desc="Reset all window sizes"),
33 | # Brightness and Volume Control
34 | Key([], "XF86AudioRaiseVolume", lazy.spawn("amixer sset Master 2%+")),
35 | Key([], "XF86AudioLowerVolume", lazy.spawn("amixer sset Master 2%-")),
36 | Key([], "XF86AudioMute", lazy.spawn("amixer sset Master toggle")),
37 | Key([], "XF86AudioNext", lazy.spawn("playerctl next")),
38 | Key([], "XF86AudioPrev", lazy.spawn("playerctl previous")),
39 | Key([], "XF86AudioPlay", lazy.spawn("playerctl play-pause")),
40 | Key([], "XF86MonBrightnessUp", lazy.spawn("brightnessctl set +2%")),
41 | Key([], "XF86MonBrightnessDown", lazy.spawn("brightnessctl set 2%-")),
42 | # Individual Apps
43 | Key([mod], "Return", lazy.spawn("alacritty"), desc="Launch terminal"),
44 | Key([], "Print", lazy.spawn("gnome-screenshot -a -i"), desc="Open screenshot app"),
45 | Key([mod], "v", lazy.spawn("clipster -s"), desc="Open clipboard manager"),
46 | # Toggle between different layouts as defined below
47 | Key([mod], "Tab", lazy.next_layout(), desc="Toggle between layouts"),
48 | Key([mod, "control"], "Tab", lazy.window.toggle_floating(), desc="Toggle floating"),
49 | # Qtile
50 | Key([mod], "w", lazy.window.kill(), desc="Kill focused window"),
51 | Key([mod, "control"], "r", lazy.reload_config(), desc="Reload the config"),
52 | Key([mod, "control"], "q", lazy.shutdown(), desc="Shutdown Qtile"),
53 | # Rofi
54 | Key(
55 | [mod],
56 | "r",
57 | lazy.spawn(os.path.expanduser("~/.config/rofi/launcher/launcher.sh")),
58 | desc="Run rofi as a launcher",
59 | ),
60 | Key(
61 | [mod],
62 | "slash",
63 | lazy.spawn(os.path.expanduser("~/.config/rofi/powermenu/powermenu.sh")),
64 | desc="Run rofi as the powermenu",
65 | ),
66 | # ScratchPads and Groups
67 | Key([mod], "t", lazy.group["scratchpad"].dropdown_toggle("term")),
68 | Key([mod], "i", lazy.group["scratchpad"].dropdown_toggle("ranger")),
69 | Key([mod], "g", lazy.group["scratchpad"].dropdown_toggle("zfxtop")),
70 | Key([mod], "a", lazy.group["Web"].toscreen()),
71 | Key([mod], "s", lazy.group["Terminal"].toscreen()),
72 | Key([mod], "d", lazy.group["Neovim"].toscreen()),
73 | Key([mod], "f", lazy.group["Music"].toscreen()),
74 | Key([mod, "shift"], "a", lazy.window.togroup("Web")),
75 | Key([mod, "shift"], "s", lazy.window.togroup("Terminal")),
76 | Key([mod, "shift"], "d", lazy.window.togroup("Neovim")),
77 | Key([mod, "shift"], "f", lazy.window.togroup("Music")),
78 | ]
79 |
--------------------------------------------------------------------------------
/qtile/modules/layouts.py:
--------------------------------------------------------------------------------
1 | from libqtile import layout
2 | from libqtile.config import Match
3 |
4 | layouts = [
5 | layout.Max(margin=12, border_width=0, border_focus="#000"),
6 | layout.Columns(
7 | margin=12,
8 | border_width=0,
9 | border_focus="#000",
10 | border_normal="#000",
11 | border_on_single=True,
12 | ),
13 | # Try more layouts by unleashing below layouts.
14 | # layout.Stack(num_stacks=2),
15 | # layout.Bsp(margin=12, border_width=0),
16 | # layout.Matrix(),
17 | # layout.MonadTall(margin=12, border_width=0),
18 | # layout.MonadWide(margin=12, border_width=0),
19 | # layout.RatioTile(),
20 | # layout.Tile(),
21 | # layout.TreeTab(),
22 | # layout.VerticalTile(),
23 | # layout.Zoomy(),
24 | ]
25 |
26 | floating_layout = layout.Floating(
27 | border_width=0,
28 | border_focus="#000",
29 | border_normal="#000",
30 | float_rules=[
31 | # Run the utility of `xprop` to see the wm class and name of an X client.
32 | *layout.Floating.default_float_rules,
33 | Match(wm_class="confirmreset"), # gitk
34 | Match(wm_class="makebranch"), # gitk
35 | Match(wm_class="maketag"), # gitk
36 | Match(wm_class="ssh-askpass"), # ssh-askpass
37 | Match(title="branchdialog"), # gitk
38 | Match(title="pinentry"), # GPG key password entry
39 | ],
40 | )
41 |
--------------------------------------------------------------------------------
/qtile/modules/mouse.py:
--------------------------------------------------------------------------------
1 | from libqtile.config import Click, Drag
2 | from libqtile.lazy import lazy
3 | from .keys import mod
4 |
5 | # Drag floating layouts.
6 | mouse = [
7 | Drag(
8 | [mod],
9 | "Button1",
10 | lazy.window.set_position_floating(),
11 | start=lazy.window.get_position(),
12 | ),
13 | Drag(
14 | [mod, "shift"],
15 | "Button1",
16 | lazy.window.set_size_floating(),
17 | start=lazy.window.get_size(),
18 | ),
19 | Click([mod], "Button3", lazy.window.bring_to_front()),
20 | ]
21 |
--------------------------------------------------------------------------------
/qtile/modules/screens.py:
--------------------------------------------------------------------------------
1 | from libqtile.bar import Gap
2 | from libqtile.config import Screen
3 |
4 | screens = [
5 | Screen(
6 | wallpaper="/home/aadi/.config/qtile/assets/white.png",
7 | wallpaper_mode="fill",
8 | top=Gap(12),
9 | left=Gap(12),
10 | bottom=Gap(12),
11 | right=Gap(12),
12 | )
13 | ]
14 |
--------------------------------------------------------------------------------
/qtile/scripts/startup.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | picom &
3 | dunst &
4 |
5 | EWW_BIN="/home/aadi/dev/eww/target/release/eww"
6 |
7 | if [[ ! $(pidof eww) ]]; then
8 | ${EWW_BIN} daemon
9 | fi
10 |
11 | ${EWW_BIN} open weather
12 | ${EWW_BIN} open music
13 | ${EWW_BIN} open system
14 | ${EWW_BIN} open clock
15 |
--------------------------------------------------------------------------------
/qtile/spotify.py:
--------------------------------------------------------------------------------
1 | # The MIT License (MIT)
2 |
3 | # Copyright(c) 2022 Ben Hunt
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 |
23 | from subprocess import CompletedProcess, run
24 | from typing import List
25 |
26 | from libqtile.group import _Group
27 | from libqtile.config import Screen
28 |
29 | from libqtile.widget import base
30 |
31 | SPOTIFY = "Spotify"
32 |
33 |
34 | class Spotify(base.ThreadPoolText):
35 | """
36 | A widget to interact with spotify via dbus.
37 | """
38 |
39 | defaults = [
40 | ("play_icon", "", "icon to display when playing music"),
41 | ("pause_icon", "", "icon to display when music paused"),
42 | ("update_interval", 0.5, "polling rate in seconds"),
43 | ("format", "{icon} {artist}:{album} - {track}", "Spotify display format"),
44 | ]
45 |
46 | def __init__(self, **config) -> None:
47 | base.ThreadPoolText.__init__(self, text="", **config)
48 | self.add_defaults(Spotify.defaults)
49 | self.add_callbacks(
50 | {
51 | "Button3": self.toggle_between_groups,
52 | "Button1": self.toggle_music,
53 | }
54 | )
55 |
56 | def _is_proc_running(self, proc_name: str) -> bool:
57 | # create regex pattern to search for to avoid similar named processes
58 | pattern = proc_name + "$"
59 |
60 | # pgrep will return a string of pids for matching processes
61 | proc_out = run(["pgrep", "-fli", pattern], capture_output=True).stdout.decode(
62 | "utf-8"
63 | )
64 |
65 | # empty string means nothing started
66 | is_running = proc_out != ""
67 |
68 | return is_running
69 |
70 | def toggle_between_groups(self) -> None:
71 | """
72 | remember which group you were on before you switched to spotify
73 | so you can toggle between the 2 groups
74 | """
75 | current_screen: Screen = self.qtile.current_screen
76 | current_group_info = self.qtile.current_group.info()
77 | windows = current_group_info["windows"]
78 | if SPOTIFY in windows:
79 | # go to previous group
80 | current_screen.previous_group.cmd_toscreen()
81 | else:
82 | self.go_to_spotify()
83 |
84 | def go_to_spotify(self) -> None:
85 | """
86 | Switch to whichever group has the current spotify instance
87 | if none exists then we will spawn an instance on the current group
88 | """
89 | # spawn spotify if not already running
90 | if not self._is_proc_running("spotify"):
91 | self.qtile.cmd_spawn("spotify", shell=True)
92 | return
93 |
94 | all_groups: List[_Group] = self.qtile.groups
95 | # we need to find the group that has spotify in it
96 | for group in all_groups:
97 | info = group.info()
98 | # get a list of windows for the group. We look for 'Spotify here'
99 | windows = info["windows"]
100 | name = group.name
101 | if SPOTIFY in windows:
102 | # switch to 'name' group
103 | spotify_group = self.qtile.groups_map[name]
104 | spotify_group.cmd_toscreen()
105 | break
106 |
107 | def poll(self) -> str:
108 | """Poll content for the text box"""
109 | vars = {}
110 | if self.playing:
111 | vars["icon"] = self.play_icon
112 | else:
113 | vars["icon"] = self.pause_icon
114 |
115 | vars["artist"] = self.artist
116 | vars["track"] = self.song_title
117 | vars["album"] = self.album
118 |
119 | return self.format.format(**vars)
120 |
121 | def toggle_music(self) -> None:
122 | run(
123 | "dbus-send --print-reply --dest=org.mpris.MediaPlayer2.spotify /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.PlayPause",
124 | shell=True,
125 | )
126 |
127 | def get_proc_output(self, proc: CompletedProcess) -> str:
128 | if proc.stderr.decode("utf-8") != "":
129 | return (
130 | ""
131 | if "org.mpris.MediaPlayer2.spotify" in proc.stderr.decode("utf-8")
132 | else proc.stderr.decode("utf-8")
133 | )
134 |
135 | output = proc.stdout.decode("utf-8").rstrip()
136 | return output
137 |
138 | @property
139 | def _meta(self) -> str:
140 | proc = run(
141 | "dbus-send --print-reply --dest=org.mpris.MediaPlayer2.spotify /org/mpris/MediaPlayer2 org.freedesktop.DBus.Properties.Get string:'org.mpris.MediaPlayer2.Player' string:'Metadata'",
142 | shell=True,
143 | capture_output=True,
144 | )
145 |
146 | output: str = proc.stdout.decode("utf-8").replace("'", "ʼ").rstrip()
147 | return "" if ("org.mpris.MediaPlayer2.spotify" in output) else output
148 |
149 | @property
150 | def artist(self) -> str:
151 | proc: CompletedProcess = run(
152 | "dbus-send --print-reply --dest=org.mpris.MediaPlayer2.spotify /org/mpris/MediaPlayer2 org.freedesktop.DBus.Properties.Get string:'org.mpris.MediaPlayer2.Player' string:'Metadata' | grep -m1 'xesam:artist' -b2 | tail -n 1 | grep -o '\".*\"' | sed 's/\"//g' | sed -e 's/&/and/g'",
153 | shell=True,
154 | capture_output=True,
155 | )
156 |
157 | output = self.get_proc_output(proc)
158 | return output
159 |
160 | @property
161 | def song_title(self) -> str:
162 | proc: CompletedProcess = run(
163 | f"echo '{self._meta}' | grep -m1 'xesam:title' -b1 | tail -n1 | grep -o '\".*\"' | sed 's/\"//g' | sed -e 's/&/and/g'",
164 | shell=True,
165 | capture_output=True,
166 | )
167 |
168 | output = self.get_proc_output(proc)
169 | return output
170 |
171 | @property
172 | def album(self) -> str:
173 | proc = run(
174 | f"echo '{self._meta}' | grep -m1 'xesam:album' -b1 | tail -n1 | grep -o '\".*\"' | sed 's/\"//g' | sed -e 's/&/and/g'",
175 | shell=True,
176 | capture_output=True,
177 | )
178 |
179 | output: str = self.get_proc_output(proc)
180 | return output
181 |
182 | @property
183 | def playing(self) -> bool:
184 | play = run(
185 | "dbus-send --print-reply --dest=org.mpris.MediaPlayer2.spotify /org/mpris/MediaPlayer2 org.freedesktop.DBus.Properties.Get string:'org.mpris.MediaPlayer2.Player' string:'PlaybackStatus' | grep -o Playing",
186 | shell=True,
187 | capture_output=True,
188 | ).stdout.decode("utf-8")
189 |
190 | is_running = play != ""
191 | return is_running
192 |
--------------------------------------------------------------------------------
/ranger/rc.conf:
--------------------------------------------------------------------------------
1 | set preview_images true
2 | set preview_images_method ueberzug
3 |
--------------------------------------------------------------------------------
/ranger/rifle.conf:
--------------------------------------------------------------------------------
1 | # vim: ft=cfg
2 | #
3 | # This is the configuration file of "rifle", ranger's file executor/opener.
4 | # Each line consists of conditions and a command. For each line the conditions
5 | # are checked and if they are met, the respective command is run.
6 | #
7 | # Syntax:
8 | # , , ... = command
9 | #
10 | # The command can contain these environment variables:
11 | # $1-$9 | The n-th selected file
12 | # $@ | All selected files
13 | #
14 | # If you use the special command "ask", rifle will ask you what program to run.
15 | #
16 | # Prefixing a condition with "!" will negate its result.
17 | # These conditions are currently supported:
18 | # match | The regexp matches $1
19 | # ext | The regexp matches the extension of $1
20 | # mime | The regexp matches the mime type of $1
21 | # name | The regexp matches the basename of $1
22 | # path | The regexp matches the absolute path of $1
23 | # has | The program is installed (i.e. located in $PATH)
24 | # env | The environment variable "variable" is non-empty
25 | # file | $1 is a file
26 | # directory | $1 is a directory
27 | # number | change the number of this command to n
28 | # terminal | stdin, stderr and stdout are connected to a terminal
29 | # X | A graphical environment is available (darwin, Xorg, or Wayland)
30 | #
31 | # There are also pseudo-conditions which have a "side effect":
32 | # flag | Change how the program is run. See below.
33 | # label