├── .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