diff --git a/rofi.custom/clipboard/clipboard.sh b/rofi.custom/clipboard/clipboard.sh
new file mode 100755
index 0000000..9f31be3
--- /dev/null
+++ b/rofi.custom/clipboard/clipboard.sh
@@ -0,0 +1,20 @@
+#!/usr/bin/env bash
+
+## Author : Aditya Shakya (adi1090x)
+## Github : @adi1090x
+#
+## Rofi : Launcher (Modi Drun, Run, File Browser, Window)
+#
+## Available Styles
+#
+## style-1 style-2 style-3 style-4 style-5
+## style-6 style-7 style-8 style-9 style-10
+## style-11 style-12 style-13 style-14 style-15
+
+dir="$HOME/.config/rofi.custom/clipboard"
+theme='style-1'
+
+## Run
+rofi \
+ -show clipboard \
+ -theme ${dir}/${theme}.rasi
diff --git a/rofi.custom/clipboard/shared/colors.rasi b/rofi.custom/clipboard/shared/colors.rasi
new file mode 100644
index 0000000..103ad63
--- /dev/null
+++ b/rofi.custom/clipboard/shared/colors.rasi
@@ -0,0 +1,18 @@
+/**
+ *
+ * Author : Aditya Shakya (adi1090x)
+ * Github : @adi1090x
+ *
+ * Colors
+ *
+ * Available Colors Schemes
+ *
+ * adapta catppuccin everforest navy paper
+ * arc cyberpunk gruvbox nord solarized
+ * black dracula lovelace onedark yousai
+ *
+ **/
+
+/* Import color-scheme from `colors` directory */
+
+@import "~/.config/rofi/colors/onedark.rasi"
diff --git a/rofi.custom/clipboard/shared/fonts.rasi b/rofi.custom/clipboard/shared/fonts.rasi
new file mode 100644
index 0000000..50499c9
--- /dev/null
+++ b/rofi.custom/clipboard/shared/fonts.rasi
@@ -0,0 +1,12 @@
+/**
+ *
+ * Author : Aditya Shakya (adi1090x)
+ * Github : @adi1090x
+ *
+ * Fonts
+ *
+ **/
+
+* {
+ font: "Iosevka Nerd Font 10";
+}
diff --git a/rofi.custom/clipboard/style-1.rasi b/rofi.custom/clipboard/style-1.rasi
new file mode 100644
index 0000000..fbd3b12
--- /dev/null
+++ b/rofi.custom/clipboard/style-1.rasi
@@ -0,0 +1,172 @@
+/**
+ *
+ * Author : Aditya Shakya (adi1090x)
+ * Github : @adi1090x
+ *
+ * Rofi Theme File
+ * Rofi Version: 1.7.3
+ **/
+
+/*****----- Configuration -----*****/
+configuration {
+ modi: "clipboard:greenclip print";
+ show-icons: false;
+ display-clipboard: "";
+ clipboard-display-format: "{name}";
+}
+
+/*****----- Global Properties -----*****/
+@import "shared/colors.rasi"
+@import "shared/fonts.rasi"
+
+/*****----- Main Window -----*****/
+window {
+ transparency: "real";
+ location: west;
+ anchor: west;
+ fullscreen: false;
+ width: 450px;
+ height: 100%;
+ x-offset: 0px;
+ y-offset: 0px;
+
+ enabled: true;
+ margin: 0px;
+ padding: 0px;
+ border: 0px solid;
+ border-radius: 0px;
+ border-color: @selected;
+ background-color: @background;
+ cursor: "default";
+}
+
+/*****----- Main Box -----*****/
+mainbox {
+ enabled: true;
+ spacing: 0px;
+ margin: 0px;
+ padding: 0px;
+ border: 0px solid;
+ border-radius: 0px 0px 0px 0px;
+ border-color: @selected;
+ background-color: transparent;
+ children: [ "inputbar", "listview" ];
+}
+
+/*****----- Inputbar -----*****/
+inputbar {
+ enabled: true;
+ spacing: 10px;
+ margin: 0px;
+ padding: 12px;
+ border: 0px solid;
+ border-radius: 0px;
+ border-color: @selected;
+ background-color: @selected;
+ text-color: @background;
+ children: [ "prompt", "entry" ];
+}
+
+prompt {
+ enabled: true;
+ background-color: inherit;
+ text-color: inherit;
+}
+textbox-prompt-colon {
+ enabled: true;
+ expand: false;
+ str: "::";
+ background-color: inherit;
+ text-color: inherit;
+}
+entry {
+ enabled: true;
+ background-color: inherit;
+ text-color: inherit;
+ cursor: text;
+ placeholder: "Search...";
+ placeholder-color: inherit;
+}
+
+/*****----- Listview -----*****/
+listview {
+ enabled: true;
+ columns: 1;
+ lines: 6;
+ cycle: true;
+ dynamic: true;
+ scrollbar: false;
+ layout: vertical;
+ reverse: false;
+ fixed-height: true;
+ fixed-columns: true;
+
+ spacing: 5px;
+ margin: 0px;
+ padding: 0px;
+ border: 0px solid;
+ border-radius: 0px;
+ border-color: @selected;
+ background-color: transparent;
+ text-color: @foreground;
+ cursor: "default";
+}
+scrollbar {
+ handle-width: 5px ;
+ handle-color: @selected;
+ border-radius: 0px;
+ background-color: @background-alt;
+}
+
+/*****----- Elements -----*****/
+element {
+ enabled: true;
+ spacing: 10px;
+ margin: 0px;
+ padding: 6px;
+ border: 0px solid;
+ border-radius: 0px;
+ border-color: @selected;
+ background-color: transparent;
+ text-color: @foreground;
+ cursor: pointer;
+}
+element normal.normal {
+ background-color: @background;
+ text-color: @foreground;
+}
+element selected.normal {
+ background-color: @background-alt;
+ text-color: @foreground;
+}
+element-icon {
+ background-color: transparent;
+ text-color: inherit;
+ size: 32px;
+ cursor: inherit;
+}
+element-text {
+ background-color: transparent;
+ text-color: inherit;
+ highlight: inherit;
+ cursor: inherit;
+ vertical-align: 0.5;
+ horizontal-align: 0.0;
+}
+
+/*****----- Message -----*****/
+error-message {
+ padding: 15px;
+ border: 0px solid;
+ border-radius: 0px;
+ border-color: @selected;
+ background-color: @background;
+ text-color: @foreground;
+}
+textbox {
+ background-color: @background;
+ text-color: @foreground;
+ vertical-align: 0.5;
+ horizontal-align: 0.0;
+ highlight: none;
+}
diff --git a/rofi.custom/config.rasi b/rofi.custom/config.rasi
new file mode 100644
index 0000000..ba8a593
--- /dev/null
+++ b/rofi.custom/config.rasi
@@ -0,0 +1,146 @@
+configuration {
+ modi: "window,drun,run,ssh,keys,clipboard:~/bin/greenclip print";
+/* width: 50;*/
+/* lines: 15;*/
+/* columns: 1;*/
+/* font: "mono 12";*/
+/* bw: 1;*/
+/* location: 0;*/
+/* padding: 5;*/
+/* yoffset: 0;*/
+/* xoffset: 0;*/
+/* fixed-num-lines: true;*/
+ show-icons: true;
+/* terminal: "rofi-sensible-terminal";*/
+/* ssh-client: "ssh";*/
+/* ssh-command: "{terminal} -e {ssh-client} {host} [-p {port}]";*/
+/* run-command: "{cmd}";*/
+/* run-list-command: "";*/
+/* run-shell-command: "{terminal} -e {cmd}";*/
+/* window-command: "wmctrl -i -R {window}";*/
+/* window-match-fields: "all";*/
+/* icon-theme: ;*/
+/* drun-match-fields: "name,generic,exec,categories";*/
+/* drun-show-actions: false;*/
+/* drun-display-format: "{name} [({generic})]";*/
+/* disable-history: false;*/
+/* ignored-prefixes: "";*/
+/* sort: false;*/
+/* sorting-method: ;*/
+/* case-sensitive: false;*/
+/* cycle: true;*/
+/* sidebar-mode: false;*/
+/* eh: 1;*/
+/* auto-select: false;*/
+/* parse-hosts: false;*/
+/* parse-known-hosts: true;*/
+/* combi-modi: "window,run";*/
+/* matching: "normal";*/
+/* tokenize: true;*/
+/* m: "-5";*/
+/* line-margin: 2;*/
+/* line-padding: 1;*/
+/* filter: ;*/
+/* separator-style: "dash";*/
+/* hide-scrollbar: false;*/
+/* fullscreen: false;*/
+/* fake-transparency: false;*/
+/* dpi: -1;*/
+/* threads: 0;*/
+/* scrollbar-width: 8;*/
+/* scroll-method: 0;*/
+/* fake-background: "screenshot";*/
+/* window-format: "{w} {c} {t}";*/
+/* click-to-exit: true;*/
+/* show-match: true;*/
+ theme: "Arc-Dark";
+/* color-normal: ;*/
+/* color-urgent: ;*/
+/* color-active: ;*/
+/* color-window: ;*/
+/* max-history-size: 25;*/
+/* combi-hide-mode-prefix: false;*/
+/* matching-negate-char: '-' /* unsupported */;*/
+/* cache-dir: ;*/
+/* pid: "/run/user/1001/rofi.pid";*/
+/* display-window: ;*/
+/* display-windowcd: ;*/
+/* display-run: ;*/
+/* display-ssh: ;*/
+/* display-drun: ;*/
+/* display-combi: ;*/
+/* display-keys: ;*/
+/* kb-primary-paste: "Control+V,Shift+Insert";*/
+/* kb-secondary-paste: "Control+v,Insert";*/
+/* kb-clear-line: "Control+w";*/
+/* kb-move-front: "Control+a";*/
+/* kb-move-end: "Control+e";*/
+/* kb-move-word-back: "Alt+b,Control+Left";*/
+/* kb-move-word-forward: "Alt+f,Control+Right";*/
+/* kb-move-char-back: "Left,Control+b";*/
+/* kb-move-char-forward: "Right,Control+f";*/
+/* kb-remove-word-back: "Control+Alt+h,Control+BackSpace";*/
+/* kb-remove-word-forward: "Control+Alt+d";*/
+/* kb-remove-char-forward: "Delete,Control+d";*/
+/* kb-remove-char-back: "BackSpace,Shift+BackSpace,Control+h";*/
+/* kb-remove-to-eol: "Control+k";*/
+/* kb-remove-to-sol: "Control+u";*/
+/* kb-accept-entry: "Control+j,Control+m,Return,KP_Enter";*/
+/* kb-accept-custom: "Control+Return";*/
+/* kb-accept-alt: "Shift+Return";*/
+/* kb-delete-entry: "Shift+Delete";*/
+/* kb-mode-next: "Shift+Right,Control+Tab";*/
+/* kb-mode-previous: "Shift+Left,Control+ISO_Left_Tab";*/
+/* kb-row-left: "Control+Page_Up";*/
+/* kb-row-right: "Control+Page_Down";*/
+/* kb-row-up: "Up,Control+p,ISO_Left_Tab";*/
+/* kb-row-down: "Down,Control+n";*/
+/* kb-row-tab: "Tab";*/
+/* kb-page-prev: "Page_Up";*/
+/* kb-page-next: "Page_Down";*/
+/* kb-row-first: "Home,KP_Home";*/
+/* kb-row-last: "End,KP_End";*/
+/* kb-row-select: "Control+space";*/
+/* kb-screenshot: "Alt+S";*/
+/* kb-ellipsize: "Alt+period";*/
+/* kb-toggle-case-sensitivity: "grave,dead_grave";*/
+/* kb-toggle-sort: "Alt+grave";*/
+/* kb-cancel: "Escape,Control+g,Control+bracketleft";*/
+/* kb-custom-1: "Alt+1";*/
+/* kb-custom-2: "Alt+2";*/
+/* kb-custom-3: "Alt+3";*/
+/* kb-custom-4: "Alt+4";*/
+/* kb-custom-5: "Alt+5";*/
+/* kb-custom-6: "Alt+6";*/
+/* kb-custom-7: "Alt+7";*/
+/* kb-custom-8: "Alt+8";*/
+/* kb-custom-9: "Alt+9";*/
+/* kb-custom-10: "Alt+0";*/
+/* kb-custom-11: "Alt+exclam";*/
+/* kb-custom-12: "Alt+at";*/
+/* kb-custom-13: "Alt+numbersign";*/
+/* kb-custom-14: "Alt+dollar";*/
+/* kb-custom-15: "Alt+percent";*/
+/* kb-custom-16: "Alt+dead_circumflex";*/
+/* kb-custom-17: "Alt+ampersand";*/
+/* kb-custom-18: "Alt+asterisk";*/
+/* kb-custom-19: "Alt+parenleft";*/
+/* kb-select-1: "Super+1";*/
+/* kb-select-2: "Super+2";*/
+/* kb-select-3: "Super+3";*/
+/* kb-select-4: "Super+4";*/
+/* kb-select-5: "Super+5";*/
+/* kb-select-6: "Super+6";*/
+/* kb-select-7: "Super+7";*/
+/* kb-select-8: "Super+8";*/
+/* kb-select-9: "Super+9";*/
+/* kb-select-10: "Super+0";*/
+/* ml-row-left: "ScrollLeft";*/
+/* ml-row-right: "ScrollRight";*/
+/* ml-row-up: "ScrollUp";*/
+/* ml-row-down: "ScrollDown";*/
+/* me-select-entry: "MousePrimary";*/
+/* me-accept-entry: "MouseDPrimary";*/
+/* me-accept-custom: "Control+MouseDPrimary";*/
+}
+@import "/usr/share/rofi/themes/sidebar.rasi"
diff --git a/rofi.custom/emojis/emoji.sh b/rofi.custom/emojis/emoji.sh
new file mode 100755
index 0000000..eed5322
--- /dev/null
+++ b/rofi.custom/emojis/emoji.sh
@@ -0,0 +1,18 @@
+#!/usr/bin/env bash
+
+## Author : Aditya Shakya (adi1090x)
+## Github : @adi1090x
+#
+## Rofi : Launcher (Modi Drun, Run, File Browser, Window)
+#
+## Available Styles
+#
+## style-1 style-2 style-3 style-4 style-5
+## style-6 style-7 style-8 style-9 style-10
+## style-11 style-12 style-13 style-14 style-15
+
+dir="$HOME/.config/rofi.custom/emojis"
+theme='style-1'
+
+## Run
+rofimoji --selector-args="-theme ${dir}/${theme}.rasi"
diff --git a/rofi.custom/emojis/shared/colors.rasi b/rofi.custom/emojis/shared/colors.rasi
new file mode 100644
index 0000000..103ad63
--- /dev/null
+++ b/rofi.custom/emojis/shared/colors.rasi
@@ -0,0 +1,18 @@
+/**
+ *
+ * Author : Aditya Shakya (adi1090x)
+ * Github : @adi1090x
+ *
+ * Colors
+ *
+ * Available Colors Schemes
+ *
+ * adapta catppuccin everforest navy paper
+ * arc cyberpunk gruvbox nord solarized
+ * black dracula lovelace onedark yousai
+ *
+ **/
+
+/* Import color-scheme from `colors` directory */
+
+@import "~/.config/rofi/colors/onedark.rasi"
diff --git a/rofi.custom/emojis/shared/fonts.rasi b/rofi.custom/emojis/shared/fonts.rasi
new file mode 100644
index 0000000..50499c9
--- /dev/null
+++ b/rofi.custom/emojis/shared/fonts.rasi
@@ -0,0 +1,12 @@
+/**
+ *
+ * Author : Aditya Shakya (adi1090x)
+ * Github : @adi1090x
+ *
+ * Fonts
+ *
+ **/
+
+* {
+ font: "Iosevka Nerd Font 10";
+}
diff --git a/rofi.custom/emojis/style-1.rasi b/rofi.custom/emojis/style-1.rasi
new file mode 100644
index 0000000..73ca500
--- /dev/null
+++ b/rofi.custom/emojis/style-1.rasi
@@ -0,0 +1,307 @@
+/**
+ *
+ * Author : Aditya Shakya (adi1090x)
+ * Github : @adi1090x
+ *
+ * Rofi Theme File
+ * Rofi Version: 1.7.3
+ **/
+
+/*****----- Configuration -----*****/
+configuration {
+ modi: "run";
+ show-icons: false;
+ display-emoji: " Emojis";
+ display-run: " Run";
+ display-filebrowser: " Files";
+ display-window: " Windows";
+ drun-display-format: "{name} [({generic})]";
+ window-format: "{w} · {c} · {t}";
+}
+
+/*****----- Global Properties -----*****/
+@import "shared/colors.rasi"
+@import "shared/fonts.rasi"
+
+* {
+ border-colour: var(selected);
+ handle-colour: var(selected);
+ background-colour: var(background);
+ foreground-colour: var(foreground);
+ alternate-background: var(background-alt);
+ normal-background: var(background);
+ normal-foreground: var(foreground);
+ urgent-background: var(urgent);
+ urgent-foreground: var(background);
+ active-background: var(active);
+ active-foreground: var(background);
+ selected-normal-background: var(selected);
+ selected-normal-foreground: var(background);
+ selected-urgent-background: var(active);
+ selected-urgent-foreground: var(background);
+ selected-active-background: var(urgent);
+ selected-active-foreground: var(background);
+ alternate-normal-background: var(background);
+ alternate-normal-foreground: var(foreground);
+ alternate-urgent-background: var(urgent);
+ alternate-urgent-foreground: var(background);
+ alternate-active-background: var(active);
+ alternate-active-foreground: var(background);
+}
+
+/*****----- Main Window -----*****/
+window {
+ /* properties for window widget */
+ transparency: "real";
+ location: center;
+ anchor: center;
+ fullscreen: false;
+ width: 600px;
+ x-offset: 0px;
+ y-offset: 0px;
+
+ /* properties for all widgets */
+ enabled: true;
+ margin: 0px;
+ padding: 0px;
+ border: 0px solid;
+ border-radius: 0px;
+ border-color: @border-colour;
+ cursor: "default";
+ /* Backgroud Colors */
+ background-color: @background-colour;
+ /* Backgroud Image */
+ //background-image: url("/path/to/image.png", none);
+ /* Simple Linear Gradient */
+ //background-image: linear-gradient(red, orange, pink, purple);
+ /* Directional Linear Gradient */
+ //background-image: linear-gradient(to bottom, pink, yellow, magenta);
+ /* Angle Linear Gradient */
+ //background-image: linear-gradient(45, cyan, purple, indigo);
+}
+
+/*****----- Main Box -----*****/
+mainbox {
+ enabled: true;
+ spacing: 10px;
+ margin: 0px;
+ padding: 20px;
+ border: 0px solid;
+ border-radius: 0px 0px 0px 0px;
+ border-color: @border-colour;
+ background-color: transparent;
+ children: [ "inputbar", "message", "listview" ];
+}
+
+/*****----- Inputbar -----*****/
+inputbar {
+ enabled: true;
+ spacing: 10px;
+ margin: 0px;
+ padding: 10px;
+ border: 0px solid;
+ border-radius: 0px;
+ border-color: @border-colour;
+ background-color: @alternate-background;
+ text-color: @foreground-colour;
+ children: [ "prompt", "textbox-prompt-colon", "entry" ];
+}
+
+prompt {
+ enabled: true;
+ background-color: inherit;
+ text-color: inherit;
+}
+textbox-prompt-colon {
+ enabled: true;
+ expand: false;
+ str: "::";
+ background-color: inherit;
+ text-color: inherit;
+}
+entry {
+ enabled: true;
+ background-color: inherit;
+ text-color: inherit;
+ cursor: text;
+ placeholder: "Search...";
+ placeholder-color: inherit;
+}
+num-filtered-rows {
+ enabled: true;
+ expand: false;
+ background-color: inherit;
+ text-color: inherit;
+}
+textbox-num-sep {
+ enabled: true;
+ expand: false;
+ str: "/";
+ background-color: inherit;
+ text-color: inherit;
+}
+num-rows {
+ enabled: true;
+ expand: false;
+ background-color: inherit;
+ text-color: inherit;
+}
+case-indicator {
+ enabled: true;
+ background-color: inherit;
+ text-color: inherit;
+}
+
+/*****----- Listview -----*****/
+listview {
+ enabled: true;
+ columns: 1;
+ lines: 6;
+ cycle: true;
+ dynamic: true;
+ scrollbar: true;
+ layout: vertical;
+ reverse: false;
+ fixed-height: true;
+ fixed-columns: true;
+
+ spacing: 10px;
+ margin: 0px;
+ padding: 0px;
+ border: 0px solid;
+ border-radius: 0px;
+ border-color: @border-colour;
+ background-color: transparent;
+ text-color: @foreground-colour;
+ cursor: "default";
+}
+scrollbar {
+ handle-width: 5px ;
+ handle-color: @handle-colour;
+ border-radius: 0px;
+ background-color: @alternate-background;
+}
+
+/*****----- Elements -----*****/
+element {
+ enabled: true;
+ spacing: 10px;
+ margin: 0px;
+ padding: 10px;
+ border: 0px solid;
+ border-radius: 0px;
+ border-color: @border-colour;
+ background-color: transparent;
+ text-color: @foreground-colour;
+ cursor: pointer;
+}
+element normal.normal {
+ background-color: var(normal-background);
+ text-color: var(normal-foreground);
+}
+element normal.urgent {
+ background-color: var(urgent-background);
+ text-color: var(urgent-foreground);
+}
+element normal.active {
+ background-color: var(active-background);
+ text-color: var(active-foreground);
+}
+element selected.normal {
+ background-color: var(selected-normal-background);
+ text-color: var(selected-normal-foreground);
+}
+element selected.urgent {
+ background-color: var(selected-urgent-background);
+ text-color: var(selected-urgent-foreground);
+}
+element selected.active {
+ background-color: var(selected-active-background);
+ text-color: var(selected-active-foreground);
+}
+element alternate.normal {
+ background-color: var(alternate-normal-background);
+ text-color: var(alternate-normal-foreground);
+}
+element alternate.urgent {
+ background-color: var(alternate-urgent-background);
+ text-color: var(alternate-urgent-foreground);
+}
+element alternate.active {
+ background-color: var(alternate-active-background);
+ text-color: var(alternate-active-foreground);
+}
+element-icon {
+ background-color: transparent;
+ text-color: inherit;
+ size: 24px;
+ cursor: inherit;
+}
+element-text {
+ background-color: transparent;
+ text-color: inherit;
+ highlight: inherit;
+ cursor: inherit;
+ vertical-align: 0.5;
+ horizontal-align: 0.0;
+}
+
+/*****----- Mode Switcher -----*****/
+mode-switcher{
+ enabled: true;
+ spacing: 10px;
+ margin: 0px;
+ padding: 0px;
+ border: 0px solid;
+ border-radius: 0px;
+ border-color: @border-colour;
+ background-color: transparent;
+ text-color: @foreground-colour;
+}
+button {
+ padding: 10px;
+ border: 0px solid;
+ border-radius: 0px;
+ border-color: @border-colour;
+ background-color: @alternate-background;
+ text-color: inherit;
+ cursor: pointer;
+}
+button selected {
+ background-color: var(selected-normal-background);
+ text-color: var(selected-normal-foreground);
+}
+
+/*****----- Message -----*****/
+message {
+ enabled: true;
+ margin: 0px;
+ padding: 0px;
+ border: 0px solid;
+ border-radius: 0px 0px 0px 0px;
+ border-color: @border-colour;
+ background-color: transparent;
+ text-color: @foreground-colour;
+}
+textbox {
+ padding: 10px;
+ border: 0px solid;
+ border-radius: 0px;
+ border-color: @border-colour;
+ background-color: @alternate-background;
+ text-color: @foreground-colour;
+ vertical-align: 0.5;
+ horizontal-align: 0.0;
+ highlight: none;
+ placeholder-color: @foreground-colour;
+ blink: true;
+ markup: true;
+}
+error-message {
+ padding: 10px;
+ border: 2px solid;
+ border-radius: 0px;
+ border-color: @border-colour;
+ background-color: @background-colour;
+ text-color: @foreground-colour;
+}
diff --git a/rofi.custom/notifications/dunst-json.sh b/rofi.custom/notifications/dunst-json.sh
new file mode 100755
index 0000000..c7abf6d
--- /dev/null
+++ b/rofi.custom/notifications/dunst-json.sh
@@ -0,0 +1,54 @@
+#!/bin/bash
+
+# == USER DEFINED LOGOS ==
+declare -A logo_map=(
+ ["signal"]="/usr/share/icons/hicolor/32x32/apps/signal-desktop.png"
+ ["mattermost"]="/usr/share/icons/hicolor/32x32/apps/mattermost-desktop.png"
+)
+
+
+# == CONST ==
+icon_theme="Paper"
+
+dunstctl history | jq -cr '.data[0][] | map(.data) | @tsv' | sed 's/\t/|/g' |
+while IFS="|" read -r body message summary appname category defaut_action_name icon_path id timestamp timeout progress
+do
+ if [[ $summary == "" || $summary == 'null' ]]; then
+ continue
+ fi
+
+ # Fix for Brave
+ if [[ $appname == "Brave" ]]; then
+ swap=$(sed 's|\?\(a\)[^>]*>||gm' <<< "$body")
+ body=$summary
+ summary=$swap
+ fi
+
+ output="${id}: ${summary}"
+
+ if [[ $appname != "" && $appname != 'null' ]]; then
+ output="${output} (${appname})"
+
+ if [[ $icon_path == "" || $icon_path == 'null' ]]; then
+ lc_appname=$(echo "$appname" | tr '[:upper:]' '[:lower:]')
+
+ if [[ $icon_path == "" ]] || [ ! -f $icon_path ]; then
+ icon_path="${logo_map[$lc_appname]}"
+ fi
+ if [[ $icon_path == "" ]] || [ ! -f $icon_path ]; then
+ icon_path="/usr/share/icons/${icon_theme}/32x32/apps/${lc_appname}.png"
+ fi
+ fi
+ fi
+
+ if [[ $body != "" && $body != 'null' ]]; then
+ output="${output}\n${body}"
+ fi
+
+ if [[ $icon_path != "" && $icon_path != 'null' ]]; then
+ output="${output}\0icon\x1f${icon_path}"
+ fi
+
+ echo -en "${output}|"
+done
+exit 0
diff --git a/rofi.custom/notifications/notification.sh b/rofi.custom/notifications/notification.sh
new file mode 100755
index 0000000..cb9f83a
--- /dev/null
+++ b/rofi.custom/notifications/notification.sh
@@ -0,0 +1,40 @@
+#!/usr/bin/env bash
+
+## Author : Aditya Shakya (adi1090x)
+## Github : @adi1090x
+#
+## Rofi : Launcher (Modi Drun, Run, File Browser, Window)
+#
+## Available Styles
+#
+## style-1 style-2 style-3 style-4 style-5
+## style-6 style-7 style-8 style-9 style-10
+
+dir="$HOME/.config/rofi.custom/notifications"
+theme='style-4'
+
+dunstctl close-all
+
+## Run
+while
+ selected=$(~/.config/rofi.custom/notifications/dunst-json.sh | rofi \
+ -dmenu \
+ -sep '|' \
+ -p '' \
+ -kb-delete-entry "" \
+ -kb-remove-char-forward "" \
+ -kb-custom-1 "Delete" \
+ -kb-custom-2 "Shift+Delete" \
+ -theme ${dir}/${theme}.rasi)
+
+ status=$?
+# echo "Status: $status"
+# echo "Selected: $selected"
+ if [[ "$status" == 10 && "$selected" != "" ]]; then
+ dunstctl history-rm $(echo $selected | sed -r 's/^([0-9]+): .*/\1/')
+ elif [[ "$status" == 11 ]]; then
+ dunstctl history-clear
+ fi
+ [[ "$status" == 10 ]]
+do :; done
+
diff --git a/rofi.custom/notifications/shared/colors.rasi b/rofi.custom/notifications/shared/colors.rasi
new file mode 100644
index 0000000..103ad63
--- /dev/null
+++ b/rofi.custom/notifications/shared/colors.rasi
@@ -0,0 +1,18 @@
+/**
+ *
+ * Author : Aditya Shakya (adi1090x)
+ * Github : @adi1090x
+ *
+ * Colors
+ *
+ * Available Colors Schemes
+ *
+ * adapta catppuccin everforest navy paper
+ * arc cyberpunk gruvbox nord solarized
+ * black dracula lovelace onedark yousai
+ *
+ **/
+
+/* Import color-scheme from `colors` directory */
+
+@import "~/.config/rofi/colors/onedark.rasi"
diff --git a/rofi.custom/notifications/shared/fonts.rasi b/rofi.custom/notifications/shared/fonts.rasi
new file mode 100644
index 0000000..50499c9
--- /dev/null
+++ b/rofi.custom/notifications/shared/fonts.rasi
@@ -0,0 +1,12 @@
+/**
+ *
+ * Author : Aditya Shakya (adi1090x)
+ * Github : @adi1090x
+ *
+ * Fonts
+ *
+ **/
+
+* {
+ font: "Iosevka Nerd Font 10";
+}
diff --git a/rofi.custom/notifications/style-4.rasi b/rofi.custom/notifications/style-4.rasi
new file mode 100644
index 0000000..3f61b92
--- /dev/null
+++ b/rofi.custom/notifications/style-4.rasi
@@ -0,0 +1,277 @@
+/**
+ *
+ * Author : Aditya Shakya (adi1090x)
+ * Github : @adi1090x
+ *
+ * Rofi Theme File
+ * Rofi Version: 1.7.3
+ **/
+
+/*****----- Configuration -----*****/
+configuration {
+ modi: "notifications";
+ show-icons: true;
+ display-notifications: "";
+ display-run: "";
+ display-filebrowser: "";
+ display-window: "";
+ drun-display-format: "{name} [({generic})]";
+ window-format: "{w} · {c} · {t}";
+
+ close-on-delete: false;
+}
+
+/*****----- Global Properties -----*****/
+@import "shared/colors.rasi"
+@import "shared/fonts.rasi"
+
+* {
+ border-colour: var(selected);
+ handle-colour: var(selected);
+ background-colour: var(background);
+ foreground-colour: var(foreground);
+ alternate-background: var(background-alt);
+ normal-background: var(background);
+ normal-foreground: var(foreground);
+ urgent-background: var(urgent);
+ urgent-foreground: var(background);
+ active-background: var(active);
+ active-foreground: var(background);
+ selected-normal-background: var(selected);
+ selected-normal-foreground: var(background);
+ selected-urgent-background: var(active);
+ selected-urgent-foreground: var(background);
+ selected-active-background: var(urgent);
+ selected-active-foreground: var(background);
+ alternate-normal-background: var(background);
+ alternate-normal-foreground: var(foreground);
+ alternate-urgent-background: var(urgent);
+ alternate-urgent-foreground: var(background);
+ alternate-active-background: var(active);
+ alternate-active-foreground: var(background);
+}
+
+/*****----- Main Window -----*****/
+window {
+ /* properties for window widget */
+ transparency: "real";
+ location: center;
+ anchor: center;
+ fullscreen: false;
+ width: 800px;
+ x-offset: 0px;
+ y-offset: 0px;
+
+ /* properties for all widgets */
+ enabled: true;
+ margin: 0px;
+ padding: 0px;
+ border: 0px solid;
+ border-radius: 0px;
+ border-color: @border-colour;
+ cursor: "default";
+ background-color: @background-colour;
+}
+
+/*****----- Main Box -----*****/
+mainbox {
+ enabled: true;
+ spacing: 10px;
+ margin: 0px;
+ padding: 30px;
+ border: 0px solid;
+ border-radius: 0px 0px 0px 0px;
+ border-color: @border-colour;
+ background-color: transparent;
+ children: [ "inputbar", "listview" ];
+}
+
+/*****----- Inputbar -----*****/
+inputbar {
+ enabled: true;
+ spacing: 10px;
+ margin: 0px;
+ padding: 0px 0px 10px 10px;
+ border: 0px;
+ border-radius: 0px;
+ border-color: @border-colour;
+ background-color: @background-colour;
+ text-color: @foreground-colour;
+ children: [ "prompt", "entry" ];
+}
+
+prompt {
+ enabled: true;
+ background-color: inherit;
+ text-color: inherit;
+}
+textbox-prompt-colon {
+ enabled: true;
+ expand: false;
+ str: "::";
+ background-color: inherit;
+ text-color: inherit;
+}
+entry {
+ enabled: true;
+ background-color: inherit;
+ text-color: inherit;
+ cursor: text;
+ placeholder: "";
+ placeholder-color: inherit;
+}
+
+/*****----- Listview -----*****/
+listview {
+ enabled: true;
+ columns: 1;
+ lines: 10;
+ cycle: true;
+ dynamic: true;
+ scrollbar: false;
+ layout: vertical;
+ reverse: false;
+ fixed-height: true;
+ fixed-columns: true;
+
+ spacing: 0px;
+ margin: 0px;
+ padding: 0px;
+ border: 0px solid;
+ border-radius: 0px;
+ border-color: @border-colour;
+ background-color: transparent;
+ text-color: @foreground-colour;
+ cursor: "default";
+}
+scrollbar {
+ handle-width: 5px ;
+ handle-color: @handle-colour;
+ border-radius: 0px;
+ background-color: @alternate-background;
+}
+
+/*****----- Elements -----*****/
+element {
+ enabled: true;
+ spacing: 10px;
+ margin: 0px;
+ padding: 27.5px 10px;
+ border: 0px solid;
+ border-radius: 0px;
+ border-color: @border-colour;
+ background-color: transparent;
+ text-color: @foreground-colour;
+ cursor: pointer;
+}
+element normal.normal {
+ background-color: var(normal-background);
+ text-color: var(normal-foreground);
+}
+element normal.urgent {
+ background-color: var(urgent-background);
+ text-color: var(urgent-foreground);
+}
+element normal.active {
+ background-color: var(active-background);
+ text-color: var(active-foreground);
+}
+element selected.normal {
+ background-color: var(alternate-background);
+ text-color: var(foreground-colour);
+}
+element selected.urgent {
+ background-color: var(selected-urgent-background);
+ text-color: var(selected-urgent-foreground);
+}
+element selected.active {
+ background-color: var(selected-active-background);
+ text-color: var(selected-active-foreground);
+}
+element alternate.normal {
+ background-color: var(alternate-normal-background);
+ text-color: var(alternate-normal-foreground);
+}
+element alternate.urgent {
+ background-color: var(alternate-urgent-background);
+ text-color: var(alternate-urgent-foreground);
+}
+element alternate.active {
+ background-color: var(alternate-active-background);
+ text-color: var(alternate-active-foreground);
+}
+element-icon {
+ background-color: transparent;
+ text-color: inherit;
+ size: 32px;
+ cursor: inherit;
+}
+element-text {
+ background-color: transparent;
+ text-color: inherit;
+ highlight: inherit;
+ cursor: inherit;
+ vertical-align: 0.5;
+ horizontal-align: 0.0;
+ markup: true;
+}
+
+/*****----- Mode Switcher -----*****/
+mode-switcher{
+ enabled: true;
+ spacing: 10px;
+ margin: 0px;
+ padding: 0px;
+ border: 0px solid;
+ border-radius: 0px;
+ border-color: @border-colour;
+ background-color: transparent;
+ text-color: @foreground-colour;
+}
+button {
+ padding: 10px;
+ border: 0px solid;
+ border-radius: 0px;
+ border-color: @border-colour;
+ background-color: @alternate-background;
+ text-color: inherit;
+ cursor: pointer;
+}
+button selected {
+ background-color: var(selected-normal-background);
+ text-color: var(selected-normal-foreground);
+}
+
+/*****----- Message -----*****/
+message {
+ enabled: true;
+ margin: 0px;
+ padding: 0px;
+ border: 0px solid;
+ border-radius: 0px 0px 0px 0px;
+ border-color: @border-colour;
+ background-color: transparent;
+ text-color: @foreground-colour;
+}
+textbox {
+ padding: 10px;
+ border: 0px solid;
+ border-radius: 0px;
+ border-color: @border-colour;
+ background-color: @alternate-background;
+ text-color: @foreground-colour;
+ vertical-align: 0.5;
+ horizontal-align: 0.0;
+ highlight: none;
+ placeholder-color: @foreground-colour;
+ blink: true;
+ markup: true;
+}
+error-message {
+ padding: 10px;
+ border: 0px solid;
+ border-radius: 0px;
+ border-color: @border-colour;
+ background-color: @background-colour;
+ text-color: @foreground-colour;
+}
diff --git a/rofi/launchers/type-1/launcher.sh b/rofi/launchers/type-1/launcher.sh
new file mode 100755
index 0000000..85b7df4
--- /dev/null
+++ b/rofi/launchers/type-1/launcher.sh
@@ -0,0 +1,20 @@
+#!/usr/bin/env bash
+
+## Author : Aditya Shakya (adi1090x)
+## Github : @adi1090x
+#
+## Rofi : Launcher (Modi Drun, Run, File Browser, Window)
+#
+## Available Styles
+#
+## style-1 style-2 style-3 style-4 style-5
+## style-6 style-7 style-8 style-9 style-10
+## style-11 style-12 style-13 style-14 style-15
+
+dir="$HOME/.config/rofi/launchers/type-1"
+theme='style-1'
+
+## Run
+rofi \
+ -show drun \
+ -theme ${dir}/${theme}.rasi
diff --git a/rofi/powermenu/type-2/powermenu.sh b/rofi/powermenu/type-2/powermenu.sh
new file mode 100755
index 0000000..23d0795
--- /dev/null
+++ b/rofi/powermenu/type-2/powermenu.sh
@@ -0,0 +1,111 @@
+#!/usr/bin/env bash
+
+## Author : Aditya Shakya (adi1090x)
+## Github : @adi1090x
+#
+## Rofi : Power Menu
+#
+## Available Styles
+#
+## style-1 style-2 style-3 style-4 style-5
+## style-6 style-7 style-8 style-9 style-10
+
+# Current Theme
+dir="$HOME/.config/rofi/powermenu/type-2"
+theme='style-1'
+
+# CMDs
+uptime="`uptime -p | sed -e 's/up //g'`"
+host=`hostname`
+
+# Options
+shutdown=''
+reboot=''
+lock=''
+suspend=''
+logout=''
+yes=''
+no=''
+
+# Rofi CMD
+rofi_cmd() {
+ rofi -dmenu \
+ -p "Uptime: $uptime" \
+ -mesg "Uptime: $uptime" \
+ -theme ${dir}/${theme}.rasi
+}
+
+# Confirmation CMD
+confirm_cmd() {
+ rofi -theme-str 'window {location: center; anchor: center; fullscreen: false; width: 350px;}' \
+ -theme-str 'mainbox {children: [ "message", "listview" ];}' \
+ -theme-str 'listview {columns: 2; lines: 1;}' \
+ -theme-str 'element-text {horizontal-align: 0.5;}' \
+ -theme-str 'textbox {horizontal-align: 0.5;}' \
+ -dmenu \
+ -p 'Confirmation' \
+ -mesg 'Are you Sure?' \
+ -theme ${dir}/${theme}.rasi
+}
+
+# Ask for confirmation
+confirm_exit() {
+ echo -e "$yes\n$no" | confirm_cmd
+}
+
+# Pass variables to rofi dmenu
+run_rofi() {
+ echo -e "$lock\n$suspend\n$logout\n$reboot\n$shutdown" | rofi_cmd
+}
+
+# Execute Command
+run_cmd() {
+ selected="$(confirm_exit)"
+ if [[ "$selected" == "$yes" ]]; then
+ if [[ $1 == '--shutdown' ]]; then
+ systemctl poweroff
+ elif [[ $1 == '--reboot' ]]; then
+ systemctl reboot
+ elif [[ $1 == '--suspend' ]]; then
+ mpc -q pause
+ amixer set Master mute
+ systemctl suspend
+ elif [[ $1 == '--logout' ]]; then
+ if [[ "$DESKTOP_SESSION" == 'openbox' ]]; then
+ openbox --exit
+ elif [[ "$DESKTOP_SESSION" == 'bspwm' ]]; then
+ bspc quit
+ elif [[ "$DESKTOP_SESSION" == 'i3' ]]; then
+ i3-msg exit
+ elif [[ "$DESKTOP_SESSION" == 'plasma' ]]; then
+ qdbus org.kde.ksmserver /KSMServer logout 0 0 0
+ fi
+ fi
+ else
+ exit 0
+ fi
+}
+
+# Actions
+chosen="$(run_rofi)"
+case ${chosen} in
+ $shutdown)
+ run_cmd --shutdown
+ ;;
+ $reboot)
+ run_cmd --reboot
+ ;;
+ $lock)
+ if [[ -x '/usr/bin/betterlockscreen' ]]; then
+ betterlockscreen -l
+ elif [[ -x '/usr/bin/i3lock' ]]; then
+ i3lock
+ fi
+ ;;
+ $suspend)
+ run_cmd --suspend
+ ;;
+ $logout)
+ run_cmd --logout
+ ;;
+esac