commit 055b3368c84bb60fcc1f861109ed92a0639f18ff Author: S4NKALP Date: Sat Dec 30 21:19:06 2023 +0545 fresh diff --git a/README.md b/README.md new file mode 100644 index 00000000..18cc0aa6 --- /dev/null +++ b/README.md @@ -0,0 +1,82 @@ +# HyprLand + HyprLand Setup + + ArchInstall +* Using ArchInstall Script Install Archlinux on bare metal. +* After Booting into HyprLand, Open terminal and install Aur Helper called Paru + + Install Paru (Aur Helper) + +``` +git clone https://aur.archlinux.org/paru-bin.git +``` +* cd paru-bin + +* makepkg -Si + + +Install Dependencies / Packages + +``` +paru -S fnm hyprland wlsunset keyb rofi-file-browser-extended-git imv brightnessctl neofetch yazi waybar playerctl wf-recorder kvantum swaylock-effects-git qt5ct qt6ct nwg-look mpv-mpris pacman-contrib swayidle pavucontrol pamixer file-roller htop adobe-source-code-pro-fonts ttf-fira-code ttf-jetbrains-mono-nerd ttf-jetbrains-mono noto-fonts-emoji ttf-droid otf-font-awesome ttf-cascadia-code-nerd linux-headers alsa-utils less wlroots vlc thunar thunar-volman thunar-archive-plugin udiskie mtpfs jmtpfs gvfs-gphoto2 gvfs-mtp mousepad rofi-lbonn-wayland-git yad network-manager-applet lsd cava geany geany-plugin swaync tumbler unzip zip unrar polkit-gnome pokemon-colorscripts-git tty-clock-git xdg-user-dirs grim slurp gnome-system-monitor jq blueberyy-wayland polkit-kde-agent cbonsai zathura-pdf-mupdf zathura yt-dlp ffmpegthumbnailer xdotool wmctrl zsh lazygit xdg-desktop-portal-gtk gtk-engine-murrine +``` + +> **Warning** +> +> DO NOT blindly run this. Backup your dots beforehand. + + Install GTK Themes,Icons,Cursor + + +* Dotfiles + +``` +cd Downloads +git clone https://github.com/S4NKALP/hyprland.git +cd hyprland +cp -r wallpapers ~/Pictures +cp -r config/* ~/.config +cd misc +cp -r fonts ~/.local/ +cp .zshenv ~/ +chmod +x ~/.config/hypr/scripts/* +chmod +x ~/.config/hypr/UserScripts/* +``` + +* GTK Themes + + ``` +git clone https://github.com/Fausto-Korpsvart/Tokyo-Night-GTK-Theme.git +cd Tokyo-Night-GTK-Theme/ +sudo cp -r themes/Tokyonight-Dark-BL-LB /usr/share/themes/ +sudo cp -r icons/Tokyonight-Dark /usr/share/icons/ + +sudo tar -xf "assets/Bibata-Modern-Ice.tar.xz" -C /usr/share/icons/ +``` + +``` +After this Press SUPER + SHIFT + W and choose wallpaper And Restart Your System and boom! +``` + +# Credits: +- These dotfiles are highly inspired by ~~shamefully copied from~[JaKooLit](https://github.com/JaKooLit/Hyprland-Dots)** dots. + +
+ +๐Ÿ“ธ Screenshots + + + + + + + + + + + + + + +
+ diff --git a/assets/Bibata-Modern-Ice.tar.xz b/assets/Bibata-Modern-Ice.tar.xz new file mode 100644 index 00000000..8aed4ecb Binary files /dev/null and b/assets/Bibata-Modern-Ice.tar.xz differ diff --git a/assets/Keybinds.png b/assets/Keybinds.png new file mode 100644 index 00000000..300bc54e Binary files /dev/null and b/assets/Keybinds.png differ diff --git a/assets/QuickLink.png b/assets/QuickLink.png new file mode 100644 index 00000000..4e8274b1 Binary files /dev/null and b/assets/QuickLink.png differ diff --git a/assets/Rice.png b/assets/Rice.png new file mode 100644 index 00000000..c37f4073 Binary files /dev/null and b/assets/Rice.png differ diff --git a/assets/RofiEmoji.png b/assets/RofiEmoji.png new file mode 100644 index 00000000..fed30273 Binary files /dev/null and b/assets/RofiEmoji.png differ diff --git a/assets/RofiLauncher.png b/assets/RofiLauncher.png new file mode 100644 index 00000000..732d5522 Binary files /dev/null and b/assets/RofiLauncher.png differ diff --git a/assets/RofiMusic.png b/assets/RofiMusic.png new file mode 100644 index 00000000..66f7a67d Binary files /dev/null and b/assets/RofiMusic.png differ diff --git a/assets/RofiMusicControl.png b/assets/RofiMusicControl.png new file mode 100644 index 00000000..80ea1916 Binary files /dev/null and b/assets/RofiMusicControl.png differ diff --git a/assets/RofiNotes.png b/assets/RofiNotes.png new file mode 100644 index 00000000..1bb321f6 Binary files /dev/null and b/assets/RofiNotes.png differ diff --git a/assets/RofiPowermenu.png b/assets/RofiPowermenu.png new file mode 100644 index 00000000..7cc9ef15 Binary files /dev/null and b/assets/RofiPowermenu.png differ diff --git a/assets/RofiTmux.png b/assets/RofiTmux.png new file mode 100644 index 00000000..c701e3f2 Binary files /dev/null and b/assets/RofiTmux.png differ diff --git a/assets/RofiTodoList.png b/assets/RofiTodoList.png new file mode 100644 index 00000000..bcde1e71 Binary files /dev/null and b/assets/RofiTodoList.png differ diff --git a/assets/RofiWallpaper.png b/assets/RofiWallpaper.png new file mode 100644 index 00000000..ca94e41f Binary files /dev/null and b/assets/RofiWallpaper.png differ diff --git a/assets/ScreenRecorder.png b/assets/ScreenRecorder.png new file mode 100644 index 00000000..e80d1914 Binary files /dev/null and b/assets/ScreenRecorder.png differ diff --git a/assets/fonts/Operator/Operator Mono SSm Lig Book Italic.otf b/assets/fonts/Operator/Operator Mono SSm Lig Book Italic.otf new file mode 100644 index 00000000..7429eeb9 Binary files /dev/null and b/assets/fonts/Operator/Operator Mono SSm Lig Book Italic.otf differ diff --git a/assets/fonts/Operator/Operator Mono SSm Lig Book.otf b/assets/fonts/Operator/Operator Mono SSm Lig Book.otf new file mode 100644 index 00000000..2c1f71de Binary files /dev/null and b/assets/fonts/Operator/Operator Mono SSm Lig Book.otf differ diff --git a/assets/fonts/caskaydia/Caskaydia Cove Nerd Font Complete Bold Italic.otf b/assets/fonts/caskaydia/Caskaydia Cove Nerd Font Complete Bold Italic.otf new file mode 100644 index 00000000..d9b0ec57 Binary files /dev/null and b/assets/fonts/caskaydia/Caskaydia Cove Nerd Font Complete Bold Italic.otf differ diff --git a/assets/fonts/caskaydia/Caskaydia Cove Nerd Font Complete Bold.otf b/assets/fonts/caskaydia/Caskaydia Cove Nerd Font Complete Bold.otf new file mode 100644 index 00000000..2ef19342 Binary files /dev/null and b/assets/fonts/caskaydia/Caskaydia Cove Nerd Font Complete Bold.otf differ diff --git a/assets/fonts/caskaydia/Caskaydia Cove Nerd Font Complete Italic.otf b/assets/fonts/caskaydia/Caskaydia Cove Nerd Font Complete Italic.otf new file mode 100644 index 00000000..87467815 Binary files /dev/null and b/assets/fonts/caskaydia/Caskaydia Cove Nerd Font Complete Italic.otf differ diff --git a/assets/fonts/caskaydia/Caskaydia Cove Nerd Font Complete Regular.otf b/assets/fonts/caskaydia/Caskaydia Cove Nerd Font Complete Regular.otf new file mode 100644 index 00000000..cdb85899 Binary files /dev/null and b/assets/fonts/caskaydia/Caskaydia Cove Nerd Font Complete Regular.otf differ diff --git a/config/BetterDiscord/data/betterdiscord.asar b/config/BetterDiscord/data/betterdiscord.asar new file mode 100644 index 00000000..59648f1f Binary files /dev/null and b/config/BetterDiscord/data/betterdiscord.asar differ diff --git a/config/BetterDiscord/data/stable/custom.css b/config/BetterDiscord/data/stable/custom.css new file mode 100644 index 00000000..50e296da --- /dev/null +++ b/config/BetterDiscord/data/stable/custom.css @@ -0,0 +1,3 @@ +* { + font-family: "JetBrainsMono NF"!important; +} \ No newline at end of file diff --git a/config/BetterDiscord/data/stable/misc.json b/config/BetterDiscord/data/stable/misc.json new file mode 100644 index 00000000..a3ad9d7b --- /dev/null +++ b/config/BetterDiscord/data/stable/misc.json @@ -0,0 +1,3 @@ +{ + "version": "1.9.7" +} \ No newline at end of file diff --git a/config/BetterDiscord/data/stable/plugins.json b/config/BetterDiscord/data/stable/plugins.json new file mode 100644 index 00000000..256a68ba --- /dev/null +++ b/config/BetterDiscord/data/stable/plugins.json @@ -0,0 +1,16 @@ +{ + "BDFDB": true, + "ZeresPluginLibrary": true, + "ActivityIcons": true, + "BetterAnimations": true, + "ChannelTabs": true, + "CollapsibleUI": true, + "GameActivityToggle": true, + "PluginRepo": true, + "Double Click To Edit": true, + "ImageUtilities": true, + "DoNotTrack": false, + "ShowAllActivities": false, + "HideDisabledEmojis": true, + "Uncompressed Images": true +} \ No newline at end of file diff --git a/config/BetterDiscord/data/stable/settings.json b/config/BetterDiscord/data/stable/settings.json new file mode 100644 index 00000000..45b9ea7e --- /dev/null +++ b/config/BetterDiscord/data/stable/settings.json @@ -0,0 +1,37 @@ +{ + "general": { + "voiceDisconnect": true, + "showToasts": true, + "mediaKeys": false + }, + "addons": { + "addonErrors": true, + "editAction": "system" + }, + "customcss": { + "customcss": true, + "liveUpdate": true, + "openAction": "detached" + }, + "editor": { + "lineNumbers": true, + "minimap": true, + "hover": true, + "quickSuggestions": true, + "fontSize": 14, + "renderWhitespace": "selection" + }, + "window": { + "transparency": true, + "removeMinimumSize": true, + "frame": false + }, + "developer": { + "debugLogs": false, + "devTools": false, + "debuggerHotkey": false, + "reactDevTools": false, + "inspectElement": false, + "devToolsWarning": false + } +} \ No newline at end of file diff --git a/config/BetterDiscord/data/stable/themes.json b/config/BetterDiscord/data/stable/themes.json new file mode 100644 index 00000000..e3ea4c3b --- /dev/null +++ b/config/BetterDiscord/data/stable/themes.json @@ -0,0 +1,4 @@ +{ + "Catppuccin Macchiato": true, + "Comfy": false +} \ No newline at end of file diff --git a/config/BetterDiscord/data/stable/windowprefs.json b/config/BetterDiscord/data/stable/windowprefs.json new file mode 100644 index 00000000..ada4c7ee --- /dev/null +++ b/config/BetterDiscord/data/stable/windowprefs.json @@ -0,0 +1,4 @@ +{ + "width": 944, + "height": 1019 +} \ No newline at end of file diff --git a/config/BetterDiscord/plugins/ActivityIcons.config.json b/config/BetterDiscord/plugins/ActivityIcons.config.json new file mode 100644 index 00000000..e8e76b40 --- /dev/null +++ b/config/BetterDiscord/plugins/ActivityIcons.config.json @@ -0,0 +1,13 @@ +{ + "settings": { + "normalActivityIcons": true, + "richPresenceIcons": true, + "platformIcons": true, + "listeningIcons": true, + "watchingIcons": true + }, + "currentVersionInfo": { + "version": "1.4.2", + "hasShownChangelog": true + } +} \ No newline at end of file diff --git a/config/BetterDiscord/plugins/BetterAnimations.config.json b/config/BetterDiscord/plugins/BetterAnimations.config.json new file mode 100644 index 00000000..138fd298 --- /dev/null +++ b/config/BetterDiscord/plugins/BetterAnimations.config.json @@ -0,0 +1,45 @@ +{ + "currentVersionInfo": { + "version": "1.1.17", + "hasShownChangelog": true + }, + "settings": { + "guild": { + "enabled": false, + "type": "flipForwards", + "easing": "easeInOutCubic", + "duration": 700 + }, + "channel": { + "enabled": false, + "type": "slipUp", + "easing": "easeInOutCubic", + "duration": 500 + }, + "settings": { + "enabled": true, + "type": "slipUp", + "easing": "easeInOutCubic", + "duration": 500 + }, + "messages": { + "enabled": true, + "type": "slip", + "easing": "easeOutQuart", + "position": "bottom", + "duration": 200 + }, + "popouts": { + "enabled": true, + "type": "rotateBackwardsLeft", + "easing": "easeInOutBack", + "duration": 300 + }, + "expressionPicker": { + "enabled": true, + "type": "scaleChange", + "easing": "easeInOutBack", + "duration": 500 + } + } +} \ No newline at end of file diff --git a/config/BetterDiscord/plugins/CollapsibleUI.config.json b/config/BetterDiscord/plugins/CollapsibleUI.config.json new file mode 100644 index 00000000..368f6eb1 --- /dev/null +++ b/config/BetterDiscord/plugins/CollapsibleUI.config.json @@ -0,0 +1,51 @@ +{ + "currentVersionInfo": { + "version": "8.0.0", + "hasShownChangelog": true + }, + "cuiSettingsVersion": "11", + "disableTransitions": "false", + "transitionSpeed": "250", + "disableToolbarCollapse": "false", + "disableSettingsCollapse": "false", + "enableFullToolbarCollapse": "false", + "dynamicUncollapse": "true", + "dynamicUncollapseDistance": "30,30,30,30,30,30,30,30", + "dynamicUncollapseCloseDistance": "30,30,30,30,30,30,30,30", + "dynamicUncollapseDelay": "15", + "autoCollapse": "false", + "autoCollapseThreshold": "500,600,400,200,950,400,550,1000", + "conditionalAutoCollapse": "false", + "autoCollapseConditionals": ",,,,,,,", + "resizableChannelList": "true", + "channelListWidth": "240", + "buttonsOrder": "1,2,4,6,7,3,5,8", + "dynamicUncollapseEnabled": "true,true,true,true,true,true,true,true", + "disabledButtonsStayCollapsed": "false", + "keyBindsEnabled": "true", + "keyStringList": "Alt+S,Alt+C,Alt+T,Alt+W,Alt+M,Alt+U,Alt+P,Alt+I", + "settingsButtonsMaxWidth": "100", + "toolbarIconMaxWidth": "300", + "toolbarMaxWidth": "800", + "userAreaMaxHeight": "300", + "msgBarMaxHeight": "400", + "windowBarHeight": "18", + "collapsedDistance": "0", + "serverListButtonActive": "true", + "channelListButtonActive": "true", + "msgBarButtonActive": "true", + "membersListButtonActive": "true", + "userAreaButtonActive": "false", + "callContainerButtonActive": "true", + "profilePanelButtonActive": "true", + "disableMsgBarBtnCollapse": "false", + "messageBarButtonsMaxWidth": "200", + "messageBarButtonsMinWidth": "40", + "buttonCollapseFudgeFactor": "10", + "resizableMembersList": "true", + "floatingDynamicUncollapse": "true", + "resizableUserProfile": "true", + "membersListWidth": "0", + "profilePanelWidth": "0", + "persistentUnreadBadge": "true" +} \ No newline at end of file diff --git a/config/BetterDiscord/plugins/GameActivityToggle.config.json b/config/BetterDiscord/plugins/GameActivityToggle.config.json new file mode 100644 index 00000000..31c51615 --- /dev/null +++ b/config/BetterDiscord/plugins/GameActivityToggle.config.json @@ -0,0 +1,22 @@ +{ + "all": { + "cachedState": { + "date": "2023-12-20T23:14:25.548Z", + "value": true + }, + "general": { + "showButton": true, + "showItem": false, + "playEnable": true, + "playDisable": true + }, + "keybind": [ + 18, + 71 + ], + "selections": { + "enableSound": "stream_started", + "disableSound": "stream_ended" + } + } +} \ No newline at end of file diff --git a/config/BetterDiscord/plugins/ImageUtilities.config.json b/config/BetterDiscord/plugins/ImageUtilities.config.json new file mode 100644 index 00000000..0671d329 --- /dev/null +++ b/config/BetterDiscord/plugins/ImageUtilities.config.json @@ -0,0 +1,71 @@ +{ + "all": { + "detailsSettings": { + "footnote": true, + "tooltip": false, + "tooltipDelay": 0 + }, + "engines": { + "_all": true, + "Baidu": true, + "Bing": true, + "Google": true, + "GoogleLens": true, + "ImgOps": true, + "IQDB": true, + "Reddit": true, + "SauceNAO": true, + "Sogou": true, + "TinEye": true, + "WhatAnime": true, + "Yandex": true + }, + "galleryFilter": { + "3gp": true, + "avi": true, + "flv": true, + "jpeg": true, + "jpg": true, + "gif": true, + "mov": true, + "mp4": true, + "mpeg-1": true, + "mpeg-2": true, + "ogg": true, + "png": true, + "svg": true, + "webm": true, + "webp": true, + "wmv": true + }, + "general": { + "nsfwMode": false + }, + "places": { + "userAvatars": true, + "groupIcons": true, + "guildIcons": true, + "streamPreviews": true, + "emojis": true + }, + "rescaleSettings": { + "messages": "NONE", + "imageViewer": "NONE" + }, + "viewerSettings": { + "zoomMode": true, + "galleryMode": true, + "details": true, + "copyImage": true, + "saveImage": true, + "jumpTo": true + }, + "zoomSettings": { + "clickMode": false, + "lensSize": 306, + "pixelMode": false, + "zoomLevel": 2, + "zoomSpeed": 0.1 + } + } +} \ No newline at end of file diff --git a/config/BetterDiscord/themes/macchiato.theme.css b/config/BetterDiscord/themes/macchiato.theme.css new file mode 100644 index 00000000..3127eba5 --- /dev/null +++ b/config/BetterDiscord/themes/macchiato.theme.css @@ -0,0 +1,11 @@ +/** + * @name Catppuccin Macchiato + * @author winston#0001 + * @authorId 505490445468696576 + * @version 0.2.0 + * @description ๐ŸŽฎ Soothing pastel theme for Discord + * @website https://github.com/catppuccin/discord + * @invite r6Mdz5dpFc + * **/ + +@import url("https://catppuccin.github.io/discord/dist/catppuccin-macchiato.theme.css"); diff --git a/config/Code/User/keybindings.json b/config/Code/User/keybindings.json new file mode 100644 index 00000000..9d04af3b --- /dev/null +++ b/config/Code/User/keybindings.json @@ -0,0 +1,274 @@ +[ + { + "key": "ctrl+shift+r", + "command": "workbench.action.reloadWindow", + "when": "editorTextFocus" + }, + { + "key": "ctrl+i", + "command": "workbench.action.terminal.sendSequence", + "when": "resourceExtname == .py", + "args": { + "text": "python \"${file}\" < ./i\n" + } + }, + { + "key": "f5", + "command": "python.execInTerminal", + "when": "resourceExtname == .py", + }, + { + "key": "f5", + "command": "workbench.action.terminal.sendSequence", + "when": "resourceExtname == .dart", + "args": { + "text": "dart \"${file}\"\n" + } + }, + { + "key": "f5", + "command": "workbench.action.terminal.sendSequence", + "when": "resourceExtname == .js", + "args": { + "text": "node \"${file}\"\n" + } + }, + { + "key": "f5", + "command": "workbench.action.terminal.sendSequence", + "when": "resourceExtname == .java", + "args": { + "text": "java \"${file}\"\n" + } + }, + { + "key": "f5", + "command": "workbench.action.terminal.sendSequence", + "when": "resourceExtname == .sh", + "args": { + "text": "\"${file}\"\n" + } + }, + { + "key": "f5", + "command": "workbench.action.terminal.sendSequence", + "when": "resourceExtname == .cpp", + "args": { + "text": "g++ -g \"${file}\" -o \"${fileDirname}/${fileBasenameNoExtension}\" && \"${fileDirname}/${fileBasenameNoExtension}\"\n" + } + }, + { + "key": "f5", + "command": "workbench.action.terminal.sendSequence", + "when": "resourceExtname == .c", + "args": { + "text": "gcc -g \"${file}\" -o \"${fileDirname}/${fileBasenameNoExtension}\" && \"${fileDirname}/${fileBasenameNoExtension}\"\n" + } + }, + { + "key": "f5", + "command": "workbench.action.terminal.sendSequence", + "when": "resourceExtname == .asm", + "args": { + "text": "nasm -f elf64 \"${file}\" && ld -o \"${fileDirname}/${fileBasenameNoExtension}\" \"${fileDirname}/${fileBasenameNoExtension}.o\" && \"${fileDirname}/${fileBasenameNoExtension}\"\n" + } + }, + { + "key": "ctrl+i", + "command": "workbench.action.terminal.sendSequence", + "when": "resourceExtname == .cpp", + "args": { + "text": "g++ -g \"${file}\" -o \"${fileDirname}/${fileBasenameNoExtension}\" && \"${fileDirname}/${fileBasenameNoExtension}\" < ./i\n" + } + }, + { + "key": "ctrl+g", + "command": "workbench.action.terminal.sendSequence", + "when": "resourceExtname == .cpp", + "args": { + "text": "g++ -g \"${file}\" -o \"${fileDirname}/${fileBasenameNoExtension}\" -lgraph -lGL -lGLU -lglut && \"${fileDirname}/${fileBasenameNoExtension}\" 2>/dev/null\n" + } + }, + // { + // "key": "f5", + // "command": "workbench.action.tasks.runTask", + // "when": "resourceExtname == .cpp", + // "args": "Build and Run C++" + // }, + { + "key": "shift+f5", + "command": "workbench.action.terminal.sendSequence", + "when": "resourceExtname == .cpp", + "args": { + "text": "g++ -g \"${fileDirname}/*.cpp\" -o \"${fileDirname}/${fileBasenameNoExtension}\" && \"${fileDirname}/${fileBasenameNoExtension}\"\n" + } + }, + // { + // "key": "shift+f5", + // "command": "workbench.action.tasks.runTask", + // "when": "resourceExtname == .cpp", + // "args": "Build and Run C++ (Multiple cpp files)" + // }, + { + "key": "f4", + "command": "workbench.action.debug.continue", + "when": "inDebugMode" + }, + { + "key": "f4", + "command": "workbench.action.debug.start", + "when": "!inDebugMode" + }, + { + "key": "f4", + "command": "workbench.action.debug.start", + "when": "debuggersAvailable && !inDebugMode" + }, + { + "key": "f5", + "command": "-workbench.action.debug.continue", + "when": "inDebugMode" + }, + { + "key": "f5", + "command": "-workbench.action.debug.start", + "when": "!inDebugMode" + }, + { + "key": "f5", + "command": "-workbench.action.debug.start", + "when": "debuggersAvailable && !inDebugMode" + }, + { + "key": "shift+f4", + "command": "workbench.action.debug.stop", + "when": "inDebugMode" + }, + { + "key": "shift+f5", + "command": "-workbench.action.debug.stop", + "when": "inDebugMode" + }, + { + "key": "ctrl+v", + "command": "workbench.action.terminal.paste", + "when": "terminalFocus && terminalProcessSupported" + }, + { + "key": "ctrl+shift+v", + "command": "-workbench.action.terminal.paste", + "when": "terminalFocus && terminalProcessSupported" + }, + { + "key": "ctrl+alt+up", + "command": "editor.action.copyLinesUpAction", + "when": "editorTextFocus && !editorReadonly" + }, + { + "key": "ctrl+alt+down", + "command": "editor.action.copyLinesDownAction", + "when": "editorTextFocus && !editorReadonly" + }, + { + "key": "ctrl+shift+alt+up", + "command": "-editor.action.copyLinesUpAction", + "when": "editorTextFocus && !editorReadonly" + }, + { + "key": "ctrl+shift+alt+down", + "command": "-editor.action.copyLinesDownAction", + "when": "editorTextFocus && !editorReadonly" + }, + { + "key": "ctrl+,", + "command": "-workbench.action.openSettings" + }, + { + "key": "ctrl+,", + "command": "workbench.action.openSettingsJson" + }, + { + "key": "ctrl+i", + "command": "-editor.action.triggerSuggest", + "when": "editorHasCompletionItemProvider && textInputFocus && !editorReadonly" + }, + { + "key": "ctrl+c", + "command": "workbench.action.terminal.copySelection", + "when": "terminalFocus && terminalProcessSupported && terminalTextSelected && terminalTextSelected" + }, + { + "key": "ctrl+shift+c", + "command": "-workbench.action.terminal.copySelection", + "when": "terminalFocus && terminalProcessSupported && terminalTextSelected && terminalTextSelected" + }, + { + "key": "ctrl+k", + "command": "workbench.action.terminal.kill", + "when": "terminalIsOpen && terminalFocus" + }, + { + "key": "delete", + "command": "-workbench.action.terminal.killInstance", + "when": "terminalIsOpen && terminalTabsFocus || terminalProcessSupported && terminalTabsFocus" + }, + { + "key": "ctrl+shift+i", + "command": "-editor.action.formatDocument.none", + "when": "editorTextFocus && !editorHasDocumentFormattingProvider && !editorReadonly" + }, + { + "key": "ctrl+shift+i", + "command": "-notebook.formatCell", + "when": "editorHasDocumentFormattingProvider && editorTextFocus && inCompositeEditor && notebookEditable && !editorReadonly && activeEditor == 'workbench.editor.notebook'" + }, + { + "key": "ctrl+shift+i", + "command": "editor.action.formatDocument", + "when": "editorTextFocus" + }, + { + "key": "ctrl+shift+i", + "command": "-editor.action.formatDocument", + "when": "editorHasDocumentFormattingProvider && editorTextFocus && !editorReadonly && !inCompositeEditor" + }, + { + "key": "ctrl+shift+i", + "command": "workbench.action.toggleDevTools", + "when": "!editorTextFocus" + }, + { + "key": "ctrl+shift+i", + "command": "-workbench.action.toggleDevTools", + "when": "isDevelopment" + }, + { + "key": "ctrl+t", + "command": "-workbench.action.showAllSymbols" + }, + { + "key": "ctrl+t", + "command": "workbench.action.files.newUntitledFile" + }, + { + "key": "ctrl+n", + "command": "-workbench.action.files.newUntitledFile" + }, + { + "key": "ctrl+shift+m", + "command": "github.cweijan.mysql.focus" + }, + { + "key": "ctrl+shift+m", + "command": "-workbench.actions.view.problems", + "when": "workbench.panel.markers.view.active" + }, + { + "key": "ctrl+shift+0", + "command": "workbench.action.zoomReset" + }, + { + "key": "ctrl+numpad0", + "command": "-workbench.action.zoomReset" + } +] diff --git a/config/Code/User/settings.json b/config/Code/User/settings.json new file mode 100644 index 00000000..3fcd4610 --- /dev/null +++ b/config/Code/User/settings.json @@ -0,0 +1,740 @@ +{ + "workbench.colorCustomizations": { + "[Chromodynamics]": { + "terminal.background": "#060606", + "terminal.foreground": "#e0e0e0", + "terminal.selectionBackground": "#555555", + "titleBar.activeBackground": "#020202", + "titleBar.activeForeground": "#e0e0e0", + "titleBar.inactiveBackground": "#020202", + "titleBar.inactiveForeground": "#e0e0e0", + "tab.inactiveBackground": "#0b0b0b", + "editor.background": "#060606", + "editor.findMatchBorder": "#0c0c0d", + "editor.findMatchHighlightBorder": "#0c0c0d", + "editor.lineHighlightBackground": "#060606", + "editor.selectionBackground": "#222222", + "editor.selectionHighlightBackground": "#e4dddd", + "editor.selectionHighlightBorder": "#0c0c0d", + "editorGroupHeader.tabsBackground": "#0b0b0b", + "editorGutter.background": "#000000", + "sideBar.background": "#060606", + "sideBarSectionHeader.background": "#0b0b0b", + "statusBar.background": "#060606" + }, + "[Sweet Dracula]": { + "editorGroupHeader.tabsBackground": "#161925" + } + }, + "editor.tokenColorCustomizations": { + "[Chromodynamics]": { + "textMateRules": [ + { + "scope": [ + "constant.language.python", + "variable.parameter.function.language.special.self.python" + ], + "settings": { + "foreground": "#66D9EF" + } + }, + { + "scope": [ + "entity.name.function.operator", + "keyword.operator" + ], + "settings": { + "foreground": "#E8364F", + "fontStyle": "" + } + }, + { + "scope": [ + "punctuation.definition.template-expression.begin.js", + "punctuation.definition.template-expression.end.js" + ], + "settings": { + "foreground": "#da70d6", + "fontStyle": "italic" + } + }, + { + "scope": [ + "variable.other.readwrite.js" + ], + "settings": { + "foreground": "#c6c6c6", + "fontStyle": "" + } + } + ] + }, + "textMateRules": [ + { + "scope": [ + "entity.name.type.class", + "storage.type.class", + "storage.modifier", + "storage.type", + "constant", + "comment", + "keyword", + "invalid" + ], + "settings": { + "fontStyle": "italic" + } + } + ] + }, + // Window Settings + "window.commandCenter": false, + "window.menuBarVisibility": "toggle", + "window.newWindowDimensions": "maximized", + "window.restoreWindows": "preserve", + "window.title": "${activeEditorShort}${separator}${rootName}", + "window.titleBarStyle": "native", + "window.titleSeparator": " ใƒป๎І ใƒป", + "workbench.editor.enablePreviewFromQuickOpen": false, + "workbench.editor.highlightModifiedTabs": true, + "workbench.editor.restoreViewState": true, + "workbench.editor.sharedViewState": false, + "workbench.editor.showTabs": true, + "workbench.editor.tabCloseButton": "right", + "workbench.editor.tabSizing": "shrink", + "workbench.editor.untitled.hint": "hidden", + "workbench.iconTheme": "sweet-vscode-icons", + "workbench.layoutControl.type": "menu", + "workbench.list.smoothScrolling": true, + "workbench.panel.defaultLocation": "right", + "workbench.startupEditor": "none", + "workbench.statusBar.visible": true, + "workbench.editorAssociations": { + "*.ipynb": "jupyter-notebook" + }, + "workbench.reduceMotion": "off", + // Editor Settings + "editor.acceptSuggestionOnEnter": "smart", + "editor.autoClosingBrackets": "always", + "editor.bracketPairColorization.enabled": true, + "editor.codeActionsOnSave": { + "source.organizeImports": true + }, + "editor.colorDecorators": false, + "editor.cursorBlinking": "phase", + "editor.cursorSmoothCaretAnimation": "on", + "editor.cursorStyle": "line-thin", + "editor.detectIndentation": false, + "editor.emptySelectionClipboard": false, + "editor.fontFamily": "'Operator Mono SSm Lig Book', 'FiraCode Nerd Font', 'Hack Nerd Font Mono', 'codicon'", + "editor.fontVariations": true, + "editor.fontLigatures": "'ss01', 'ss02', 'ss03', 'ss04', 'ss05', 'ss06', 'zero', 'onum'", + "editor.fontSize": 12, + "editor.fontWeight": "normal", + "editor.formatOnSave": true, + "editor.formatOnType": true, + "editor.glyphMargin": true, + "editor.guides.bracketPairs": "active", + "editor.guides.bracketPairsHorizontal": "active", + "editor.guides.highlightActiveBracketPair": true, + "editor.hover.above": false, + "editor.inlayHints.enabled": "on", + "editor.inlineSuggest.enabled": true, + "editor.insertSpaces": true, + "editor.linkedEditing": true, + "editor.matchBrackets": "never", + "editor.maxTokenizationLineLength": 99999999, + "editor.minimap.enabled": false, + "editor.mouseWheelScrollSensitivity": 1.5, + "editor.occurrencesHighlight": false, + "editor.renderControlCharacters": true, + "editor.renderFinalNewline": "on", + "editor.renderLineHighlight": "gutter", + "editor.renderWhitespace": "none", + "editor.scrollbar.horizontal": "auto", + "editor.scrollbar.vertical": "auto", + "editor.selectionHighlight": true, + "editor.smoothScrolling": true, + "editor.stickyScroll.enabled": true, + "editor.stickyScroll.maxLineCount": 5, + "editor.stickyTabStops": false, + "editor.suggestLineHeight": 28, + "editor.suggestSelection": "first", + "editor.suggest.insertMode": "replace", + "editor.suggest.preview": true, + "editor.suggest.snippetsPreventQuickSuggestions": false, + "editor.tabCompletion": "on", + "editor.tabSize": 4, + "editor.wordBasedSuggestions": true, + "editor.wordBasedSuggestionsMode": "matchingDocuments", + "editor.wordWrap": "on", + "editor.quickSuggestions": { + "other": "on", + "comments": "on", + "strings": "on" + }, + // Emmet Settings + "emmet.excludeLanguages": [], + "emmet.includeLanguages": { + "javascript": "javascriptreact", + "markdown": "html", + "vue-html": "html" + }, + // Explorer Settings + "explorer.compactFolders": false, + "explorer.confirmDelete": false, + "explorer.confirmDragAndDrop": false, + // Files Explorer + "problems.decorations.enabled": false, + // Customize UI + // "customizeUI.activityBar": "bottom", + // "customizeUI.activityBarHideSettings": true, + // "customizeUI.listRowHeight": 20, + // "customizeUI.font.monospace": "CaskaydiaCove Nerd Font", + // "customizeUI.font.regular": "CaskaydiaCove Nerd Font", + // "customizeUI.fontSizeMap": { + // "13px": "12px", + // "monospace": "12px", + // "tab-title": "12px", + // "window-title": "12.5px" + // }, + // "customizeUI.titleBar": "inline", + // "customizeUI.stylesheet": { + // ":root,::after,::before": "--tab-height: 25px;--tab-radius: 8px;--ui-radius: 6px;--base-color: #bd93f9;--gradient-one: #c50ed2;--gradient-two: #8500f7;--side-pane-color: var(--vscode-editor-background);--focus-border: #3f4f81;--sash-size: 2px !important;--sash-hover-size: 2px !important;", + // ".editor-container": "-webkit-font-smoothing: antialiased;", + // ".monaco-workbench .part.editor > .content > .watermark": "display: none !important;", + // ".monaco-workbench .part.titlebar .window-controls-container .layout-dropdown-container": "margin-left: auto !important;", + // ".monaco-workbench .part.titlebar > .window-controls-container": "width: unset !important;", + // ".monaco-workbench .part.titlebar > .window-controls-container > .window-icon": "width: 30px !important;", + // ".monaco-workbench .part.titlebar > .titlebar-container .window-appicon > .home-bar-icon-badge, .monaco-workbench .part.titlebar > .titlebar-container > .window-appicon:not(.codicon)": "background-image: url(./vsc/vsc.svg) !important;", + // ".monaco-workbench .part.editor > .content .editor-group-container.empty .editor-group-letterpress": "background-image: url(./vsc/vsc-back.svg) !important;", + // ".monaco-workbench .part.editor.has-watermark > .content.empty .editor-group-container > .editor-group-letterpress": "background-position-y: 50% !important;", + // ".monaco-sash.hover:before, .monaco-sash.active:before": "background: linear-gradient(to bottom, var(--gradient-one), var(--gradient-two)) !important;", + // ".monaco-editor .squiggly-error": "background: none !important;border-bottom: 0.5px solid var(--vscode-editorError-foreground) !important;", + // ".monaco-editor .squiggly-warning": "background: none !important;border-bottom: 0.5px solid var(--vscode-editorWarning-foreground) !important;", + // ".monaco-editor .squiggly-info": "background: none !important;border-bottom: 0.5px solid var(--vscode-editorInfo-foreground) !important;", + // ".monaco-editor .squiggly-hint": "background: none !important;border-bottom: 0.5px solid var(--vscode-editorHint-foreground) !important;", + // "body.activity-bar-at-bottom .monaco-workbench .activitybar .active-item-indicator": "display: block !important;", + // ".monaco-workbench .activitybar > .content :not(.monaco-menu) > .monaco-action-bar .action-item.checked .active-item-indicator:before": "border: 0 !important;width: 100% !important;height: 3px !important;position: absolute !important;bottom: 0 !important;left: 0 !important;top: unset !important;background-image: linear-gradient(to top, var(--gradient-one), var(--gradient-two)) !important;border-radius: 100vmax !important;", + // ".monaco-workbench .part.editor > .content .editor-group-container > .title .tabs-container > .tab > .tab-border-bottom-container, .monaco-workbench .part.editor > .content .editor-group-container > .title .tabs-container > .tab > .tab-border-top-container": "background-image: linear-gradient(to left, var(--gradient-one), var(--gradient-two)) !important;height: 3px !important;", + // ".monaco-workbench .activitybar > .content :not(.monaco-menu) > .monaco-action-bar .badge .badge-content": "background-image: linear-gradient(90deg, var(--gradient-one), var(--gradient-two)) !important;", + // ".monaco-workbench .part.editor > .content .editor-group-container.active > .title .tabs-container > .tab.dirty > .tab-actions .action-label:not(:hover):before, .monaco-workbench .part.editor > .content .editor-group-container > .title .tabs-container > .tab.dirty > .tab-actions .action-label:not(:hover):before": "content: '' !important;", + // ".codicon-git-branch:before": "background: linear-gradient(to bottom, var(--gradient-one), var(--gradient-two)) !important;-webkit-background-clip: text !important;background-clip: text !important;color: rgba(255, 255, 255, 0.4) !important;", + // ".monaco-editor, .split-view-view .monaco-editor-background": "background: url(./vsc/pek.png) bottom right / 10% auto no-repeat scroll;", + // ".monaco-scrollable-element > .scrollbar > .slider": "border-radius: 7px !important;", + // ".monaco-scrollable-element > .scrollbar > .slider.active": "background: linear-gradient(to top, var(--gradient-one), var(--gradient-two)) !important;", + // "canvas.decorationsOverviewRuler, .monaco-scrollable-element > .scrollbar.vertical, .monaco-scrollable-element > .scrollbar.vertical > .slider": "width: 7px !important;", + // ".monaco-scrollable-element > .scrollbar.horizontal, .monaco-scrollable-element > .scrollbar.horizontal > .slider": "height: 7px !important;", + // ".monaco-scrollable-element > .scrollbar.horizontal > .slider": "width: 135px !important;", + // ".monaco-editor .monaco-hover, .monaco-editor .suggest-widget, .monaco-editor .suggest-details": "border-radius: var(--ui-radius) !important;overflow: hidden !important;box-shadow: rgb(0 0 0 / 36%) 0px 2px calc(var(--ui-radius) + 2px) !important;", + // ".pane .pane-body, .pane .pane-body .monaco-list, .pane .pane-body .monaco-list .monaco-scrollable-element, .pane .pane-body .monaco-list .monaco-scrollable-element .monaco-list-rows, .pane .pane-body .monaco-list .monaco-scrollable-element .monaco-list-rows .monaco-list-row": "overflow: visible !important;", + // ".open-editors .monaco-list .monaco-list-row": "padding-left: 0px !important;", + // ".monaco-list-row:hover, .monaco-list-row.selected, .monaco-list-row.focused": "border-radius: 0 var(--ui-radius) var(--ui-radius) 0 !important;", + // ".monaco-workbench .monaco-list:not(.element-focused):focus:before, .monaco-select-box, .monaco-select-box-dropdown-container, .monaco-select-box-dropdown-container .monaco-list-row:hover, .monaco-select-box-dropdown-container .monaco-list-row.selected, .monaco-select-box-dropdown-container .monaco-list-row.focused": "border-radius: var(--ui-radius) !important;", + // ".monaco-list-row.selected::before, .monaco-list-row.selected::after": "--ui-radius: 6px;content: '' !important;display: block !important;position: absolute !important;width: var(--ui-radius) !important;height: var(--ui-radius) !important;left: 0 !important;pointer-events: none !important;", + // ".monaco-list-row.selected::before": "top: calc(0px - var(--ui-radius)) !important;background: radial-gradient(circle at 100% 0%, transparent 70.71%, var(--side-pane-color) 29.289%) no-repeat;background-position: 100% 0%;", + // ".monaco-list-row.selected::after": "bottom: calc(0px - var(--ui-radius)) !important;background: radial-gradient(circle at 100% 100%, transparent 70.71%, var(--side-pane-color) 29.289%) no-repeat;background-position: 100% 100%;", + // ".monaco-button.monaco-text-button": "border-radius: var(--ui-radius) !important;", + // ".monaco-editor .cursors-layer.cursor-smooth-caret-animation > .cursor": "transition: all 100ms ease-out;", + // ".tab:first-child": "margin-left: var(--tab-radius) !important;", + // ".tab:last-child": "margin-right: var(--tab-radius) !important;", + // ".tab.active": "border-radius: var(--tab-radius) var(--tab-radius) 0 0 !important;", + // ".tab.dirty-border-top > .tab-border-top-container": "border-radius: var(--tab-radius) var(--tab-radius) 0 0 !important;", + // ".tab.active::before, .tab.active::after": "content: '' !important;display: block !important;box-sizing: border-box !important;position: absolute !important;z-index: 1;width: var(--tab-radius) !important;height: var(--tab-radius) !important;bottom: 0px !important;pointer-events: none !important;", + // ".tab.active::before": "left: calc(0px - var(--tab-radius)) !important;border-bottom-right-radius: var(--tab-radius) !important;box-shadow: 3px 3px 0 3px var(--vscode-editor-background) !important;", + // ".tab.active::after": "right: 0 !important;transform: translateX(var(--tab-radius)) !important;border-bottom-left-radius: var(--tab-radius) !important;box-shadow: -3px 3px 0 3px var(--vscode-editor-background) !important;", + // ".monaco-workbench .part.sidebar>.title>.title-label h2": "font-weight: bold !important;", + // "body.activity-bar-at-bottom div.monaco-grid-view > div > div > div.monaco-scrollable-element > div.split-view-container > div.split-view-view.visible > div > div > div.monaco-scrollable-element > div.split-view-container > div:nth-child(1) > div > div > div.monaco-scrollable-element > div.split-view-container > div:nth-child(2)": "height: auto !important;", + // "body.activity-bar-at-bottom .monaco-workbench .part.activitybar": "border: none !important; padding: 0px 6px 6px 6px !important;margin-top: -8px !important; background-color: var(--vscode-editor-background) !important; position: relative !important; z-index: 10 !important;", + // "body.activity-bar-at-bottom .monaco-workbench .activitybar.bordered:before": "display: none !important;", + // "body.activity-bar-at-bottom .monaco-workbench .activitybar > .content": "justify-content: center !important; border-radius: 6px; width: unset !important; border: 1px solid #3f4f818c !important;", + // "body.activity-bar-at-bottom .monaco-workbench .activitybar>.content>.composite-bar": "margin-bottom: unset !important;", + // "body.activity-bar-at-bottom .monaco-action-bar .action-item.icon > .action-label": "color: var(--vscode-editor-foreground) !important;opacity: 0.4;", + // "body.activity-bar-at-bottom .monaco-action-bar .action-item.icon.checked > .action-label": "opacity: 1 !important;", + // ".monaco-workbench .part.editor .tabs-and-actions-container .window-controls-container": "display: flex;flex-grow: 0;flex-shrink: 0;text-align: center; -webkit-app-region: no-drag; height: 100%;", + // ".monaco-workbench .part.editor .tabs-and-actions-container .window-controls-container .window-icon": "width: 30px !important;height: 30px !important; display: flex; align-items: center; justify-content: center;", + // ".monaco-workbench .part.editor .tabs-and-actions-container .window-controls-container .window-icon.window-close:hover": "background-color: #FF5555", + // }, + // Terminal Settings + "terminal.integrated.altClickMovesCursor": true, + "terminal.integrated.cursorBlinking": true, + "terminal.integrated.customGlyphs": true, + "terminal.integrated.cursorStyle": "line", + "terminal.integrated.enableMultiLinePasteWarning": false, + "terminal.integrated.fontFamily": "'CaskaydiaCove Nerd Font', 'FiraCode Nerd Font', 'Hack Nerd Font Mono'", + "terminal.integrated.fontSize": 13, + "terminal.integrated.gpuAcceleration": "auto", + "terminal.integrated.scrollback": 200000, + "terminal.integrated.smoothScrolling": true, + "terminal.integrated.tabs.enabled": false, + "terminal.integrated.tabs.enableAnimation": true, + "terminal.integrated.profiles.linux": { + "zsh": { + "path": "/usr/bin/zsh" + } + }, + "terminal.integrated.shellIntegration.enabled": false, + "terminal.integrated.shellIntegration.decorationsEnabled": "never", + // Language Settings + "[python]": { + "editor.semanticHighlighting.enabled": false + }, + "python.analysis.completeFunctionParens": true, + "python.analysis.typeCheckingMode": "off", + "python.formatting.provider": "black", + "python.formatting.blackArgs": [ + "--line-length", + "120" + ], + "python.languageServer": "Pylance", + "python.linting.ignorePatterns": [ + ".vscode/*.py", + "**/site-packages/**/*.py", + ".git" + ], + "python.linting.enabled": true, + "python.linting.pylintEnabled": false, + "python.linting.pylintArgs": [ + "--rcfile", + "${env:HOME}/.pylintrc" + // "--load-plugins=pylint_django" + ], + "ruff.args": [ + "--config=~/pyproject.toml" + ], + "[cpp]": { + "editor.semanticHighlighting.enabled": false + }, + "C_Cpp.default.includePath": [ + "${workspaceFolder}/**", + "/usr/include", + "/usr/local/include", + "/usr/include/c++/11.1.0", + "/opt/cuda/include/" + ], + "C_Cpp.default.defines": [ + "${default}" + ], + "C_Cpp.default.compilerPath": "/usr/bin/g++", + "C_Cpp.default.cppStandard": "c++20", + "C_Cpp.default.cStandard": "c17", + "C_Cpp.default.intelliSenseMode": "gcc-x64", + "C_Cpp.default.compilerArgs": [ + "-g" + ], + "launch": { + "version": "0.2.0", + "configurations": [ + { + "name": "(gdb) Launch", + "type": "cppdbg", + "request": "launch", + "program": "${fileDirname}/${fileBasenameNoExtension}", + "args": [], + "stopAtEntry": false, + "cwd": "${workspaceFolder}", + "environment": [], + "externalConsole": false, + "MIMode": "gdb", + "miDebuggerPath": "/usr/bin/gdb", + "preLaunchTask": "Build", + "setupCommands": [ + { + "description": "Enable pretty-printing for gdb", + "text": "-enable-pretty-printing", + "ignoreFailures": true + } + ] + } + ] + }, + "tasks": { + "version": "2.0.0", + "tasks": [ + { + "label": "Build", + "type": "shell", + "command": "g++ -g \"${file}\" -o \"${fileDirname}/${fileBasenameNoExtension}\"", + "problemMatcher": [ + "$gcc" + ], + "group": { + "kind": "build", + "isDefault": true + } + }, + { + "label": "Build (Multiple cpp files)", + "type": "shell", + "command": "g++ -g \"${fileDirname}/*.cpp\" -o \"${fileDirname}/${fileBasenameNoExtension}\"", + "problemMatcher": [ + "$gcc" + ], + "group": { + "kind": "build", + "isDefault": true + } + } + ] + }, + "C_Cpp.autocompleteAddParentheses": true, + "C_Cpp.codeFolding": "enabled", + "C_Cpp.clang_format_fallbackStyle": "{ BasedOnStyle: Google, IndentWidth: 4, ColumnLimit: 100}", + "C_Cpp.inlayHints.autoDeclarationTypes.enabled": true, + "C_Cpp.inlayHints.autoDeclarationTypes.showOnLeft": true, + "C_Cpp.inlayHints.parameterNames.enabled": true, + "C_Cpp.inlayHints.parameterNames.hideLeadingUnderscores": true, + "C_Cpp.inlayHints.parameterNames.suppressWhenArgumentContainsName": true, + "C_Cpp.inlayHints.referenceOperator.enabled": true, + "C_Cpp.inlayHints.referenceOperator.showSpace": false, + "css.format.enable": true, + "css.format.newlineBetweenRules": true, + "css.format.newlineBetweenSelectors": true, + "css.format.spaceAroundSelectorSeparator": true, + "[css]": { + "editor.tabSize": 2 + }, + "java.jdt.ls.java.home": "/usr/lib/jvm/java-11-openjdk-amd64", + "java.configuration.runtimes": [ + { + "name": "JavaSE-11", + "path": "/usr/lib/jvm/java-11-openjdk-amd64" + } + ], + "java.server.launchMode": "LightWeight", + "[html]": { + "editor.tabSize": 2 + }, + "html.autoClosingTags": true, + "html.completion.attributeDefaultValue": "singlequotes", + "[dart]": { + "editor.suggestSelection": "first", + "editor.tabCompletion": "onlySnippets", + "editor.wordBasedSuggestions": false + }, + "[javascript]": { + "editor.tabSize": 2 + }, + "javascript.autoClosingTags": true, + "javascript.suggest.autoImports": true, + "javascript.suggest.completeFunctionCalls": true, + "javascript.suggest.enabled": true, + "javascript.updateImportsOnFileMove.enabled": "always", + "javascript.validate.enable": false, + "[json]": { + "editor.tabSize": 2 + }, + "json.maxItemsComputed": 100000, + "[markdown]": { + "editor.quickSuggestions": { + "other": "on", + "comments": "on", + "strings": "on" + } + }, + "[scss]": { + "editor.tabSize": 2 + }, + "[typescript]": { + "editor.tabSize": 2 + }, + "typescript.autoClosingTags": true, + "typescript.suggest.autoImports": true, + "typescript.updateImportsOnFileMove.enabled": "always", + "typescript.validate.enable": false, + "[typescriptreact]": { + "editor.tabSize": 2, + "editor.formatOnSave": false + }, + "js/ts.implicitProjectConfig.checkJs": true, + //Latex + "[latex]": { + "editor.formatOnSave": false + }, + // Empty-Indent Extension + "emptyIndent.highlightColor": "rgba(246,36,89,0.6)", + "emptyIndent.highlightIndent": false, + "emptyIndent.removeIndent": true, + // Github Co-pilot + "github.copilot.inlineSuggest.enable": true, + "github.copilot.enable": { + "*": true, + "yaml": false, + "plaintext": true, + "markdown": false + }, + // Gitlens + "gitlens.currentLine.enabled": true, + "gitlens.hovers.currentLine.over": "line", + "gitlens.codeLens.enabled": false, + "gitlens.statusBar.enabled": true, + // General Setting\ + "color-highlight.markRuler": false, + "color-highlight.markerType": "background", + "debug.onTaskErrors": "showErrors", + "debug.openDebug": "openOnDebugBreak", + "eslint.enable": true, + "extensions.ignoreRecommendations": true, + "files.autoSave": "onWindowChange", + "files.insertFinalNewline": true, + "files.restoreUndoStack": true, + "files.trimFinalNewlines": true, + "files.trimTrailingWhitespace": true, + "git.autofetch": true, + "grammarly.files.include": [ + "**/*.md", + "**/*.txt", + "**/*.tex" + ], + "latex-workshop.latex.autoBuild.cleanAndRetry.enabled": true, + "latex-workshop.latex.autoBuild.run": "never", + "latex-workshop.latex.clean.fileTypes": [ + "*/*.aux", + "*/*.synctex.gz" + ], + "latex-workshop.latex.outDir": "/tmp/Review-Paper/", + "latex-workshop.latex.recipe.default": "latexmk (lualatex)", + "latex-workshop.latex.recipes": [ + { + "name": "latexmk ๐Ÿ”ƒ", + "tools": [ + "latexmk" + ] + }, + { + "name": "latexmk (latexmkrc)", + "tools": [ + "latexmk_rconly" + ] + }, + { + "name": "latexmk (lualatex)", + "tools": [ + "lualatexmk" + ] + }, + { + "name": "latexmk (xelatex)", + "tools": [ + "xelatexmk" + ] + }, + { + "name": "pdflatex โžž bibtex โžž pdflatexโ€Šร—โ€Š2", + "tools": [ + "pdflatex", + "bibtex", + "pdflatex", + "pdflatex" + ] + }, + { + "name": "Compile Rnw files", + "tools": [ + "rnw2tex", + "latexmk" + ] + }, + { + "name": "Compile Jnw files", + "tools": [ + "jnw2tex", + "latexmk" + ] + }, + { + "name": "tectonic", + "tools": [ + "tectonic" + ] + } + ], + "latex-workshop.latex.tools": [ + { + "name": "latexmk", + "command": "latexmk", + "args": [ + "-synctex=1", + "-interaction=nonstopmode", + "-file-line-error", + "-pdf", + "-outdir=%OUTDIR%", + "%DOC%" + ], + "env": {} + }, + { + "name": "lualatexmk", + "command": "latexmk", + "args": [ + "-synctex=1", + "-interaction=nonstopmode", + "-file-line-error", + "-lualatex", + "-outdir=%OUTDIR%", + "%DOC%" + ], + "env": {} + }, + { + "name": "xelatexmk", + "command": "latexmk", + "args": [ + "-synctex=1", + "-interaction=nonstopmode", + "-file-line-error", + "-xelatex", + "-outdir=%OUTDIR%", + "%DOC%" + ], + "env": {} + }, + { + "name": "latexmk_rconly", + "command": "latexmk", + "args": [ + "%DOC%" + ], + "env": {} + }, + { + "name": "pdflatex", + "command": "pdflatex", + "args": [ + "-synctex=1", + "-interaction=nonstopmode", + "-file-line-error", + "-output-directory=%OUTDIR%", + "%DOC%" + ], + "env": {} + }, + { + "name": "bibtex", + "command": "bibtex", + "args": [ + "%DOCFILE%" + ], + "env": {} + }, + { + "name": "rnw2tex", + "command": "Rscript", + "args": [ + "-e", + "knitr::opts_knit$set(concordance = TRUE); knitr::knit('%DOCFILE_EXT%')" + ], + "env": {} + }, + { + "name": "jnw2tex", + "command": "julia", + "args": [ + "-e", + "using Weave; weave(\"%DOC_EXT%\", doctype=\"tex\")" + ], + "env": {} + }, + { + "name": "jnw2texmintex", + "command": "julia", + "args": [ + "-e", + "using Weave; weave(\"%DOC_EXT%\", doctype=\"texminted\")" + ], + "env": {} + }, + { + "name": "tectonic", + "command": "tectonic", + "args": [ + "--synctex", + "--keep-logs", + "%DOC%.tex" + ], + "env": {} + } + ], + "liveServer.settings.donotShowInfoMsg": true, + "liveServer.settings.donotVerifyTags": true, + "liveServer.settings.file": "404.html", + // "liveServer.settings.https": { + // "enable": true, + // "cert": "/home/proxzima/.ssh/cert/cert.pem", + // "key": "/home/proxzima/.ssh/cert/key.pem", + // "passphrase": "1234" + // }, + "liveServer.settings.useLocalIp": true, + "markdown.preview.markEditorSelection": true, + "markdown.preview.scrollEditorWithPreview": false, + "markdown.preview.scrollPreviewWithEditor": false, + "svgPreview.autoOpen": true, + "svgPreview.scaleToFit": true, + "svgPreview.style": { + "html": { + "background-position": "0 0, 13px 13px", + "background-size": "26px 26px", + "background": "rgba(255, 255, 255, 1)" + // "background-image": "linear-gradient(45deg, #141414 25%, transparent 25%, transparent 75%, #141414 75%, #141414), linear-gradient(45deg, #141414 25%, transparent 25%, transparent 75%, #141414 75%, #141414)" + } + }, + "print.folder.exclude": [ + "{bin,obj,out}", + "node_module", + "**/*.{bin,exe,dll,hex,pdb,pdf,pfx,png,jpg,gif,bmp,suo,pptx,ppt,jar,woff2,woff,ttf,eot,odt,otf,class}" + ], + "print.lineNumbers": "on", + "print.printAndClose": false, + "print.colourScheme": "XCode", + "print.alternateBrowser": true, + "print.browserPath": "/usr/bin/google-chrome", + "spellright.documentTypes": [ + "markdown", + "latex", + "plaintext" + ], + "spellright.language": [ + "en_GB" + ], + "spellright.notificationClass": "information", + "spellright.suggestionsInHints": false, + "spellright.useDocumentSymbolsInCode": true, + "telemetry.telemetryLevel": "off", + "search.exclude": { + "**/bower_components": true, + "**/*.code-search": true, + "**/node_modules": true, + "**/env": true, + "**/venv": true + }, + "files.associations": { + "*.xml": "html", + "*.svg": "html", + "*.json": "jsonc" + }, + "files.exclude": { + "**/.DS_Store": true, + "**/.git": true, + "**/.svn": true, + "**/.hg": true, + "**/CVS": true, + "**/.classpath": true, + "**/.project": true, + "**/.settings": true, + "**/.factorypath": true + }, + "files.watcherExclude": { + "**/.DS_Store/**": true, + "**/.git/objects/**": true, + "**/.git/subtree-cache/**": true, + "**/.svn/**": true, + "**/.hg/**": true, + "**/CVS/**": true, + "**/node_modules/**": true, + "**/env/**": true, + "**/venv/**": true, + "env-*": true + }, + "workbench.colorTheme": "Sweet Dracula", + "security.workspace.trust.untrustedFiles": "open" +} diff --git a/config/Code/User/snippets/snippet.code-snippets b/config/Code/User/snippets/snippet.code-snippets new file mode 100644 index 00000000..c6cfa712 --- /dev/null +++ b/config/Code/User/snippets/snippet.code-snippets @@ -0,0 +1,126 @@ +{ + // Place your global snippets here. Each snippet is defined under a snippet name and has a scope, prefix, body and + // description. Add comma separated ids of the languages where the snippet is applicable in the scope field. If scope + // is left empty or omitted, the snippet gets applied to all languages. The prefix is what is + // used to trigger the snippet and the body will be expanded and inserted. Possible variables are: + // $1, $2 for tab stops, $0 for the final cursor position, and ${1:label}, ${2:another} for placeholders. + // Placeholders with the same ids are connected. + // Example: + "if name is main": { + "scope": "python", + "prefix": "ifn", + "body": [ + "if __name__ == '__main__':", + "\t$0" + ], + "description": "" + }, + "for in": { + "scope": "python", + "prefix": "fori", + "body": [ + "for ${1:item} in ${2:items}:", + "\t$0" + ], + "description": "" + }, + "for in range": { + "scope": "python", + "prefix": "forr", + "body": [ + "for ${1:i} in range($2):", + "\t$0" + ], + "description": "" + }, + "lambda": { + "scope": "python", + "prefix": "lamb", + "body": [ + "lambda ${1:arg} : $0", + ], + "description": "" + }, + "map input": { + "scope": "python", + "prefix": "mapi", + "body": [ + "map(${1:func}, input($2).split())" + ], + "description": "" + }, + "html boiler plate": { + "scope": "html", + "prefix": "html", + "body": [ + "", + "", + "", + "", + " ", + " ", + "", + " ${1:Basic HTML5}", + " ", + " ", + "", + " ", + " ", + " ", + " ", + " ", + "", + " ", + " ", + " ", + "", + " ", + "", + "", + "", + "", + " ${0:}", + " ", + "", + "", + "", + ], + "description": "" + }, + "css boiler plate": { + "scope": "css", + "prefix": "css", + "body": [ + "html {", + " font-family: sans-serif;", + " font-size: 100%;", + " box-sizing: border-box;", + "}", + "", + "*, ::before, ::after {", + " box-sizing: inherit;", + "}", + "", + "html, body {", + " margin: 0;", + " padding: 0;", + " width: 100vw;", + " min-height: 100%;", + " text-rendering: optimizeLegibility;", + "}", + "" + ] + }, + "consoleLog": { + "scope": "javascript", + "prefix": "clg", + "body": "console.log(${1:object});", + "description": "Displays a message in the console" + }, + "consoleLogObject": { + "scope": "javascript", + "prefix": "clo", + "body": "console.log('${1:object} :>> ', ${1:object});", + "description": "Displays an object in the console with its name" + } +} diff --git a/config/Code/User/spellright.dict b/config/Code/User/spellright.dict new file mode 100644 index 00000000..1fab5c0d --- /dev/null +++ b/config/Code/User/spellright.dict @@ -0,0 +1,14 @@ +PROxZIMA +gui +url +yara +backend +txt +Regex +github +args +grep +res +yar +shipit +json diff --git a/config/Code/User/vsc.css b/config/Code/User/vsc.css new file mode 100644 index 00000000..9a341a39 --- /dev/null +++ b/config/Code/User/vsc.css @@ -0,0 +1,1424 @@ +/* *:not(.monaco-editor .margin):not(.monaco-editor .lines-content.monaco-editor-background):not(.monaco-editor .cursors-layer.cursor-smooth-caret-animation > .cursor):not(.monaco-scrollable-element > .scrollbar.vertical > .slider):not(.monaco-scrollable-element > .scrollbar.horizontal > .slider):not(.pane .pane-body .monaco-list .monaco-scrollable-element .monaco-list-rows) { + transition-duration: 100ms !important; +} */ + +:root, +::after, +::before { + --tab-height: 25px; + --tab-radius: 8px; + --ui-radius: 6px; + --base-color: #bd93f9; + --gradient-one: #cba6f7; + --gradient-two: #89b4fa; + --side-pane-color: var(--vscode-editor-background); + --focus-border: #3f4f81; + --sash-size: 2px !important; + --sash-hover-size: 2px !important; +} + +body > .monaco-workbench > .monaco-grid-view > .monaco-grid-branch-node > .monaco-split-view2 > .monaco-scrollable-element > .split-view-container { + background: var(--vscode-editor-background) !important; +} + +.editor-container { + -webkit-font-smoothing: antialiased; +} + +.monaco-workbench .part.titlebar .window-controls-container .window-icon, +.monaco-workbench .part.editor > .content > .watermark { + display: none !important; +} + +.monaco-workbench .part.editor .tabs-and-actions-container .window-controls-container { + display: flex; + flex-grow: 0; + flex-shrink: 0; + text-align: center; + -webkit-app-region: no-drag; + height: 100%; +} + +.monaco-workbench .part.editor .tabs-and-actions-container .window-controls-container .window-icon { + width: 30px !important; + height: 30px !important; + display: flex; + align-items: center; + justify-content: center; +} + +.monaco-workbench .part.editor .tabs-and-actions-container .window-controls-container .window-icon.window-close:hover { + background: #FF5555 !important; +} + +.monaco-workbench .part.titlebar .window-controls-container .layout-dropdown-container { + margin-left: auto !important; +} + +.monaco-workbench .part.titlebar > .window-controls-container { + width: unset !important; +} + +.monaco-workbench .part.titlebar > .window-controls-container > .window-icon { + width: 30px !important; +} + +.monaco-workbench.linux .part.titlebar > .window-title { + font-size: 12.5px !important; +} + +.monaco-workbench .part.titlebar > .titlebar-container .window-appicon > .home-bar-icon-badge, +.monaco-workbench .part.titlebar > .titlebar-container > .window-appicon:not(.codicon) { + background-image: url(./vsc/vsc.svg) !important; +} + +.monaco-workbench .part.editor > .content .editor-group-container.empty .editor-group-letterpress { + background-image: url(./vsc/vsc-back.svg) !important; +} + +.monaco-workbench .part.editor.has-watermark > .content.empty .editor-group-container > .editor-group-letterpress { + background-position-y: 50% !important; +} + +.mac, +.windows, +.linux { + /* font-family: 'CaskaydiaCove Nerd Font' !important; + --monaco-monospace-font: 'CaskaydiaCove Nerd Font' !important; */ + /* font-family: 'Delugia' !important; + --monaco-monospace-font: 'Delugia Mono' !important; */ +} + + +.monaco-workbench .part.sidebar > .title > .title-label h2 { + font-weight: bold !important; +} + +.monaco-sash.hover:before, +.monaco-sash.active:before { + background: linear-gradient(to bottom, var(--gradient-one), var(--gradient-two)) !important; +} + +/* Squiggly lines to straight lines */ + +.monaco-editor .squiggly-error { + background: none !important; + border-bottom: 0.5px solid var(--vscode-editorError-foreground) !important; +} + +.monaco-editor .squiggly-warning { + background: none !important; + border-bottom: 0.5px solid var(--vscode-editorWarning-foreground) !important; +} + +.monaco-editor .squiggly-info { + background: none !important; + border-bottom: 0.5px solid var(--vscode-editorInfo-foreground) !important; +} + +.monaco-editor .squiggly-hint { + background: none !important; + border-bottom: 0.5px solid var(--vscode-editorHint-foreground) !important; +} + +/* */ + +/* Gradient Tab border */ +body.activity-bar-at-bottom .monaco-workbench .activitybar .active-item-indicator { + display: block !important; +} + +.monaco-workbench .activitybar > .content :not(.monaco-menu) > .monaco-action-bar .action-item.checked .active-item-indicator:before { + border: 0 !important; + width: 3px !important; + height: 100% !important; + position: absolute !important; + top: 0 !important; + left: 0 !important; + background-image: linear-gradient(to top, var(--gradient-one), var(--gradient-two)) !important; + border-radius: 100vmax !important; +} + +.monaco-workbench .part.editor > .content .editor-group-container > .title .tabs-container > .tab > .tab-border-bottom-container, +.monaco-workbench .part.editor > .content .editor-group-container > .title .tabs-container > .tab > .tab-border-top-container { + background-image: linear-gradient(to left, var(--gradient-one), var(--gradient-two)) !important; + height: 3px !important; + display: none !important; +} + +.monaco-workbench .activitybar > .content :not(.monaco-menu) > .monaco-action-bar .badge .badge-content { + background-image: linear-gradient(90deg, var(--gradient-one), var(--gradient-two)) !important; +} + +/* */ + +/* Hides dirty tab white dot indicator */ + +.monaco-workbench .part.editor > .content .editor-group-container.active > .title .tabs-container > .tab.dirty > .tab-actions .action-label:not(:hover):before, +.monaco-workbench .part.editor > .content .editor-group-container > .title .tabs-container > .tab.dirty > .tab-actions .action-label:not(:hover):before { + content: '' !important; +} + +/* */ + +/* Git icon background */ + +.codicon-git-branch:before { + background: linear-gradient(to bottom, var(--gradient-one), var(--gradient-two)) !important; + -webkit-background-clip: text !important; + background-clip: text !important; + color: rgba(255, 255, 255, 0.4) !important; +} + +/* */ + +/* Editor Background */ + +.monaco-editor, +.split-view-view .lines-content.monaco-editor-background { + background: url(./vsc/pek.png) bottom right / 10% auto no-repeat scroll; + /*background: linear-gradient(rgba(0,0,0,.65), rgba(0,0,0,.65)), url(./vsc/bg.jpg) center center / auto 100vh no-repeat scroll;*/ +} + +/* */ + +/* Scrollbar */ +.monaco-scrollable-element > .scrollbar > .slider { + border-radius: 7px !important; +} + +.monaco-scrollable-element > .scrollbar > .slider.active { + background: linear-gradient(to top, var(--gradient-one), var(--gradient-two)) !important; +} + +canvas.decorationsOverviewRuler, +.monaco-scrollable-element > .scrollbar.vertical, +.monaco-scrollable-element > .scrollbar.vertical > .slider { + width: 7px !important; +} + +.monaco-scrollable-element > .scrollbar.vertical > .slider { + transition: all 100ms ease-out; +} + +.monaco-scrollable-element > .scrollbar.horizontal, +.monaco-scrollable-element > .scrollbar.horizontal > .slider { + height: 7px !important; +} + +.monaco-scrollable-element > .scrollbar.horizontal > .slider { + transition: all 100ms ease-out; +} + +.monaco-scrollable-element > .scrollbar.horizontal > .slider { + width: 135px !important; +} + +/* */ + +/* Rounded UI */ + +/* Suggestions */ +.monaco-editor .monaco-hover, +.monaco-editor .suggest-widget, +.monaco-editor .suggest-details { + border-radius: var(--ui-radius) !important; + overflow: hidden !important; + box-shadow: rgb(0 0 0 / 36%) 0px 2px calc(var(--ui-radius) + 2px) !important; +} + +/* Left pane selected file */ +.pane .pane-body, +.pane .pane-body .monaco-list, +.pane .pane-body .monaco-list .monaco-scrollable-element, +.pane .pane-body .monaco-list .monaco-scrollable-element .monaco-list-rows, +.pane .pane-body .monaco-list .monaco-scrollable-element .monaco-list-rows .monaco-list-row { + overflow: visible !important; +} + +.open-editors .monaco-list .monaco-list-row { + padding-left: 0px !important; +} + +.monaco-list-row:hover, +.monaco-list-row.selected, +.monaco-list-row.focused { + border-radius: 0 var(--ui-radius) var(--ui-radius) 0 !important; +} + +.monaco-workbench .monaco-list:not(.element-focused):focus:before, +.monaco-select-box, +.monaco-select-box-dropdown-container, +.monaco-select-box-dropdown-container .monaco-list-row:hover, +.monaco-select-box-dropdown-container .monaco-list-row.selected, +.monaco-select-box-dropdown-container .monaco-list-row.focused { + border-radius: var(--ui-radius) !important; +} + +.monaco-list-row.selected::before, +.monaco-list-row.selected::after { + content: '' !important; + display: block !important; + position: absolute !important; + width: var(--ui-radius) !important; + height: var(--ui-radius) !important; + left: 0 !important; + pointer-events: none !important; +} + +.monaco-list-row.selected::before { + top: calc(0px - var(--ui-radius)) !important; + background: radial-gradient(circle at 100% 0%, transparent 70.71%, var(--side-pane-color) 29.289%) no-repeat; + background-position: 100% 0%; +} + +.monaco-list-row.selected::after { + bottom: calc(0px - var(--ui-radius)) !important; + background: radial-gradient(circle at 100% 100%, transparent 70.71%, var(--side-pane-color) 29.289%) no-repeat; + background-position: 100% 100%; +} + +.monaco-button.monaco-text-button { + border-radius: var(--ui-radius) !important; +} + +/* */ + +/* Smooth cursor */ + +.monaco-editor .cursors-layer.cursor-smooth-caret-animation > .cursor { + transition: all 100ms ease-out; +} + +/* */ + +/* Active tab (Without border) */ + +..tab:first-child { + margin-left: var(--tab-radius) !important; + /* margin-left: calc(var(--tab-radius) - 2px) !important; */ +} + +..tab:last-child { + margin-right: var(--tab-radius) !important; + /* margin-right: calc(var(--tab-radius) - 2px) !important; */ +} + +..tab.active { + /* border: 2px solid var(--base-color) !important; */ + /* background-color: transparent !important; */ + /* rgb(20, 24, 34) */ + border-radius: var(--tab-radius) var(--tab-radius) 0 0 !important; + /* border-bottom: 2px solid #0c0e14 !important; */ + /* z-index: 1 !important; */ +} + +.tab.dirty-border-top > .tab-border-top-container { + border-radius: var(--tab-radius) var(--tab-radius) 0 0 !important; +} + +ignorethispart { + + /* Border bottom radius */ + .tab.active::before, + .tab.active::after { + content: '' !important; + display: block !important; + box-sizing: border-box !important; + position: absolute !important; + z-index: 1; + width: var(--tab-radius) !important; + height: var(--tab-radius) !important; + bottom: 0px !important; + /* bottom: -2px !important; */ + pointer-events: none !important; + /* border-bottom: 2px solid var(--base-color) !important; */ + } + + .tab.active::before { + left: calc(0px - var(--tab-radius)) !important; + /* transform: translateX(calc(0px - var(--tab-radius))) !important; */ + /* border-right: 2px solid var(--base-color) !important; */ + border-bottom-right-radius: var(--tab-radius) !important; + /* box-shadow: 3px 3px 0 3px var(--tab-color) !important; */ + box-shadow: 3px 3px 0 3px var(--vscode-editor-background) !important; + /* background: radial-gradient(circle at 0% 0%, transparent 70.71%, var(--tab-color) 29.289%) no-repeat; + background-position: 0% 0%; */ + } + + .tab.active::after { + right: 0 !important; + transform: translateX(var(--tab-radius)) !important; + /* border-left: 2px solid var(--base-color) !important; */ + border-bottom-left-radius: var(--tab-radius) !important; + /* box-shadow: -3px 3px 0 3px var(--tab-color) !important; */ + box-shadow: -3px 3px 0 3px var(--vscode-editor-background) !important; + /* background: radial-gradient(circle at 100% 0%, transparent 70.71%, var(--tab-color) 29.289%) no-repeat; + background-position: 100% 0%; */ + } + + /* .tabs-container:before { + content: '' !important; + top: 0 !important; + left: 0 !important; + right: 0 !important; + bottom: 0 !important; + background: linear-gradient(90deg, rgb(12, 14, 20), rgb(189, 172, 255), rgb(189, 147, 249), rgb(189, 147, 249), rgb(189, 147, 249), rgb(189, 172, 249), rgb(12, 14, 20)) !important; + clip: rect(33px, 2600px, 33px, 0px) !important; + position: absolute !important; +} + +.tabs-container:after { + content: '' !important; + top: 0 !important; + left: 0 !important; + right: 0 !important; + bottom: 0 !important; + background: linear-gradient(90deg, rgb(12, 14, 20), rgb(189, 172, 255), rgb(189, 147, 249), rgb(189, 147, 249), rgb(189, 147, 249), rgb(189, 172, 249), rgb(12, 14, 20)) !important; + clip: rect(33px, 2600px, 35px, 0px) !important; + position: absolute !important; +} + +.tab-label > .monaco-icon-label-container::after { + background: transparent !important; +} */ +} + +.tab { + border-radius: 12px !important; + margin: 5px !important; + height: 40px !important; + border: 2px solid #313244 !important; + background-color: #161925 !important; +} + +.tab.active { + border: 2px solid var(--gradient-one) !important; + color: var(--gradient-one) !important; + font-weight: bold !important; +} + +.tab.dirty { + border: 2px solid var(--gradient-two) !important; + +} + +.tabs-container { + height: auto !important; + padding: 5px !important; +} + +.editor-actions { + height: inherit !important; +} + + + + + + + + +ignorethispart { + /* ATOM */ + + .part.editor > .content .editor-group-container > .title:not(.tabs).dirty .codicon-close-dirty { + color: #568af2 !important; + } + + + /* .monaco-workbench.vs-dark .part.editor>.content .editor-group-container .editor-group-watermark>.shortcuts dl, */ + .monaco-workbench .part.editor > .content .editor-group-container > .editor-group-watermark > .shortcuts dd > .monaco-keybinding, + .monaco-workbench.vs-dark .part.editor > .content .editor-group-container .editor-group-watermark > .shortcuts dt { + color: hsla(219, 13%, 66%, .6) !important; + } + + + + ::placeholder { + color: #9da5b4 !important; + opacity: 1 !important; + } + + + /* NOTE: badge count may be off-centred when workbench font is changed */ + /* .windows { */ + /* .monaco-workbench { +font-family: 'Iosevka', 'Victor Mono', 'JetBrains Mono', 'SF Mono', 'Input Mono', 'Hack', 'Dank Mono', 'Fira Code', 'Operator Mono', 'Source Code Pro', 'IBM Plex Mono', 'Courier New', Courier, monospace; +} */ + + + /* tab label */ + + .monaco-workbench .part.editor > .content .editor-group-container > .title .tabs-container > .tab .tab-label { + text-align: center !important; + } + + .monaco-workbench .part.editor > .content .editor-group-container > .title .tabs-container > .tab.sizing-fit .monaco-icon-label, + .monaco-workbench .part.editor > .content .editor-group-container > .title .tabs-container > .tab.sizing-fit .monaco-icon-label > .monaco-icon-label-container { + overflow: hidden !important; + } + + .monaco-workbench .part.editor > .content .editor-group-container > .title .tabs-container > .tab.sizing-fit .monaco-icon-label[class*="untitled-"] { + font-style: italic !important; + } + + + /* caret, cursor */ + + .monaco-inputbox.synthetic-focus .input { + contain: paint; + caret-color: #568af2; + } + + .suggest-input-container > .monaco-editor.focused .cursor { + /* .monaco-editor.focused .cursor { */ + border-color: #568af2; + border-width: 2px; + border-left: 2px solid #528bff; + } + + + /* PANEL */ + + /* action label */ + + .monaco-workbench .part.basepanel > .composite.title > .panel-switcher-container > .monaco-action-bar .action-item .action-label { + display: block !important; + } + + .monaco-workbench .part.basepanel > .composite.title > .panel-switcher-container > .monaco-action-bar .action-item .action-label { + color: #9da5b4 !important; + text-transform: lowercase; + } + + .monaco-workbench .part.basepanel > .composite.title > .panel-switcher-container > .monaco-action-bar .action-item .action-label::first-letter { + text-transform: uppercase !important; + } + + .part.panel.basepanel.bottom { + color: #9da5b4 !important; + } + + + /* PANEL end. */ + + + + /* editor hover widget */ + + .monaco-editor .parameter-hints-widget.multiple, + .monaco-editor .monaco-hover { + color: #9da5b4 !important; + border-radius: 3px !important; + } + + + /* panel indicator */ + + .part.basepanel > .composite.title > .panel-switcher-container > .monaco-action-bar .action-item .active-item-indicator:before { + border: none !important; + } + + + /* extension name */ + + .extension-list-item > .details > .description { + color: rgba(157, 165, 180, 0.6) !important; + } + + .extension-list-item > .details > .footer > .author > .publisher-name { + color: rgba(157, 165, 180, 0.6) !important; + } + + + /* workbench hover widget */ + + .monaco-workbench .workbench-hover { + border-radius: 3px !important; + background: #4d78cc !important; + color: #fff !important; + border-color: #4d78cc !important; + } + + .monaco-workbench .workbench-hover-pointer:after { + background-color: #4d78cc !important; + border-color: #4d78cc !important; + /*border-right: 1px solid #181a1f !important; + border-bottom: 1px solid #181a1f !important;*/ + } + + + /* settings (UI) */ + + .settings-editor > .settings-header > .settings-header-controls { + border-color: #181a1f !important; + } + + + /* checkbox */ + + .settings-editor > .settings-body .settings-tree-container .setting-item-bool .codicon-check::before, + .settings-editor > .settings-body .settings-tree-container .setting-item-bool .setting-value-checkbox::after { + color: #001133 !important; + } + + /* .settings-editor>.settings-body .settings-tree-container .setting-item-bool .setting-value-checkbox.checked, */ + .settings-editor > .settings-body .settings-tree-container .setting-item-bool .codicon-check.checked { + background-color: #568af2 !important; + } + + + /* status bar */ + + .monaco-workbench .part.statusbar { + border-top: 1px solid #181a1f !important; + } + + + /* sidebar */ + + .part.sidebar.left, + .part.sidebar.right { + color: #9da5b4 !important; + } + + .sidebar.right { + border-left: 1px solid #181a1f !important; + } + + .sidebar.left { + border-right: 1px solid #181a1f; + } + + + /* .codicon, */ + + .codicon-notifications-clear-all, + .codicon-notifications-do-not-disturb, + .codicon-notifications-hide, + .codicon-gear, + + .codicon-edit, + .codicon-new-folder, + .codicon-refresh, + + .codicon-watch-expressions-add-function-breakpoint, + .codicon-breakpoints-activate, + .codicon-breakpoints-remove-all, + .codicon-collapse-all, + .codicon-watch-expressions-add, + .codicon-watch-expressions-remove-all, + + .codicon-debug-console-evaluation-prompt, + /*.codicon-split-horizontal,*/ + .codicon-terminal-bash, + .codicon-terminal-cmd, + .codicon-terminal-powershell, + .codicon-trashcan, + .codicon-debug, + + .codicon-preferences-clear-input, + .codicon-preferences-filter, + .codicon-preferences-open-settings, + .codicon-search-refresh, + + .codicon-new-file, + .codicon-save-all, + .codicon-close-all, + .codicon-expand-all, + .codicon-timeline-pin, + .codicon-timeline-refresh, + .codicon-timeline-filter, + .codicon-localHistory-icon, + + .extension-action.icon, + .codicon-extension-activation-time, + .codicon-extensions-install-count, + .codicon-view-pane-container-expanded, + .codicon-view-pane-container-collapsed, + .codicon-preserve-case, + .codicon-book, + .codicon-exclude, + + .codicon-widget-close, + .codicon-find-previous-match, + .codicon-find-next-match, + .codicon-find-replace, + .codicon-find-replace-all, + .codicon-find-collapsed, + .codicon-find-expanded, + .codicon-search-replace-all, + .codicon-search-hide-replace, + .codicon-search-show-replace, + .codicon-split-vertical, + .codicon-split-horizontal, + .codicon-toolbar-more, + .codicon-terminal, + .codicon-panel-maximize, + .codicon-panel-restore { + color: #9da5b4 !important; + } + + + /* breadcrumbs */ + /* .monaco-breadcrumbs .monaco-breadcrumb-item { + color: var(--vscode-breadcrumb-foreground); +} */ + + + /* select box */ + + .monaco-action-bar .action-item .monaco-select-box { + color: #9da5b4 !important; + } + + + /* search, extension */ + + .suggest-input-container .suggest-input-placeholder, + .search-view .search-widget .monaco-inputbox .input::placeholder { + /* .search-view .search-widget .monaco-inputbox>.ibwrapper>textarea.input::placeholder { */ + color: #9da5b4 !important; + /* opacity: 1 !important; */ + } + + .search-view .message { + color: #9da5b4 !important; + } + + .codicon-search-show-context, + .codicon-preserve-case, + .codicon-book, + .codicon-exclude { + color: #9da5b4 !important; + border-color: #181a1f !important; + background-color: #373d48 !important; + } + + .codicon-search-show-context.checked, + .codicon-preserve-case.checked, + .codicon-book.checked, + .codicon-exclude.checked { + color: #fff !important; + border-color: #181a1f !important; + background-color: #568af2 !important; + } + + + /* find widget */ + + .monaco-editor .find-widget.no-results > .find-part .monaco-inputbox.synthetic-focus .input { + caret-color: #ff6347; + } + + .monaco-editor .find-widget.no-results .matchesCount { + color: #ff6347; + } + + .monaco-editor .find-widget.no-results > .find-part .monaco-inputbox.synthetic-focus { + border-color: #ff6347 !important; + box-shadow: 0 0 0 1px #ff6347 !important; + background-color: #312426 !important; + } + + .monaco-editor .find-widget, + .monaco-editor .find-widget .monaco-findInput .input::placeholder { + color: #9da5b4 !important; + } + + .codicon-case-sensitive, + .codicon-whole-word, + .codicon-regex { + color: #9da5b4 !important; + border-color: #181a1f !important; + background-color: #373d48 !important; + } + + .codicon-case-sensitive.checked, + .codicon-whole-word.checked, + .codicon-regex.checked { + color: #fff !important; + border-color: #181a1f !important; + background-color: #568af2 !important; + } + + + /* tab (for panel && editor) */ + + .monaco-workbench .part.basepanel.bottom > .composite.title > .panel-switcher-container > .monaco-action-bar .action-item:first-of-type, + .tabs-container > .tab:first-of-type { + border-left-color: transparent; + } + + .monaco-workbench .part.panel.basepanel.bottom .composite.title, + .editor-group-container > .title .tabs-container { + box-shadow: inset 0 -1px 0 #181a1f; + } + + .monaco-workbench .part.basepanel.bottom > .composite.title > .panel-switcher-container > .monaco-action-bar .action-item.icon:last-of-type { + box-shadow: none !important; + border-left: none !important; + } + + .monaco-workbench .part.basepanel.bottom > .composite.title > .panel-switcher-container > .monaco-action-bar .action-item:last-of-type, + .tabs-container > .tab:last-of-type { + box-shadow: inset 0 -1px 0 #181a1f, 1px 0 0 #181a1f; + } + + .monaco-workbench .part.basepanel.bottom > .composite.title > .panel-switcher-container > .monaco-action-bar .action-item.checked:last-of-type, + .tabs-container > .tab.active:last-of-type { + box-shadow: 1px 0 0 #181a1f; + } + + .monaco-workbench .part.basepanel.bottom > .composite.title > .panel-switcher-container > .monaco-action-bar .action-item, + .monaco-workbench .part.basepanel.bottom > .composite.title > .panel-switcher-container > .monaco-action-bar .action-item.checked, + .tabs-container > .tab, + .tabs-container > .tab.active { + flex: 1 1 0; + max-width: 22em; + min-width: 7em !important; + } + + .monaco-workbench .part.basepanel.bottom > .composite.title > .panel-switcher-container > .monaco-action-bar .action-item.checked, + .tabs-container > .tab.active { + color: #d7dae0; + background-color: #282c34; + box-shadow: none; + width: -webkit-fit-content; + } + + .monaco-workbench .part.basepanel.bottom > .composite.title > .panel-switcher-container > .monaco-action-bar .action-item, + .tabs-container > .tab { + border-left: 1.4px solid #181a1f; + border-right: none !important; + transition: max-width 0.25s ease-in-out; + box-shadow: inherit; + } + + + /* active tab(editor, panel) border */ + + .monaco-workbench .part.panel:focus-within > .composite.title > .panel-switcher-container > .monaco-action-bar .action-item.checked .action-label::before, + .monaco-workbench .part.panel > .composite.title > .panel-switcher-container > .monaco-action-bar .action-item.checked:active .action-label::before, + .part.editor > .content .editor-group-container:focus-within .tabs-container > .tab.active:before { + background: #568af2; + } + + .monaco-workbench .part.panel > .composite.title > .panel-switcher-container > .monaco-action-bar .action-item.checked .action-label::before, + .part.editor > .content .active .tabs-container > .tab.active:before { + content: ""; + position: absolute; + pointer-events: none; + z-index: 2; + top: 0; + left: -1px; + bottom: 0; + width: 2px; + background: #4f545e; + box-sizing: border-box; + } + + + .part.editor > .content .split-view-view:not(:first-child) .active .tabs-container > .tab.active:before { + left: 0 !important; + } + + + /* tab close btn */ + + .tabs-container > .tab.dirty:not(:hover) .codicon-close::before { + content: "\ea71" !important; + /* display: inline-block; */ + } + + .tabs-container > .tab .codicon-close::before { + content: "\ea76" !important; + } + + .codicon-panel-close, + .tabs-container > .tab .codicon-close { + border-radius: 3px; + transform: scale(0); + transition: transform .08s; + } + + .tabs-container > .tab.dirty:not(:hover) .codicon-close { + color: #568af2 !important; + border-radius: 3px; + border: none; + transform: scale(1); + } + + .part.basepanel > .title:has(.title-actions:hover) .codicon-panel-close, + .part.basepanel > .title > .global-actions:hover .codicon-panel-close, + .tabs-container > .tab:hover .codicon-close { + transform: scale(1); + transition-duration: .16s; + } + + .codicon-panel-close:hover, + .tabs-container > .tab .codicon-close:hover { + color: #001133 !important; + background-color: #568af2 !important; + } + + .tabs-container > .tab.dirty:hover .codicon-close:hover { + color: #fff !important; + } + + .tabs-container > .tab.dirty:hover .codicon-close { + color: #568af2 !important; + } + + + /* button border */ + + .monaco-button.monaco-text-button { + border: 1px solid #181a1f; + } + + + + /* keybinding label */ + + + .quick-input-list .monaco-keybinding > .monaco-keybinding-key:has(~ .monaco-keybinding-key-separator) { + margin-right: 0 !important; + } + + .quick-input-list .monaco-keybinding > .monaco-keybinding-key:has(+ .monaco-keybinding-key-chord-separator) { + border-top-right-radius: 3px !important; + border-bottom-right-radius: 3px !important; + } + + .quick-input-list .monaco-keybinding > .monaco-keybinding-key-chord-separator + .monaco-keybinding-key { + border-top-left-radius: 3px !important; + border-bottom-left-radius: 3px !important; + } + + .quick-input-list .monaco-keybinding > .monaco-keybinding-key:first-child { + border-top-left-radius: 3px !important; + border-bottom-left-radius: 3px !important; + } + + .quick-input-list .monaco-keybinding > .monaco-keybinding-key:last-child { + border-top-right-radius: 3px !important; + border-bottom-right-radius: 3px !important; + } + + .quick-input-list .monaco-keybinding > .monaco-keybinding-key { + margin-left: 0; + } + + /* .quick-input-list .monaco-keybinding>.monaco-keybinding-key-separator:has(~ .monaco-keybinding-key) { + margin-left: 0 !important; + } */ + + .monaco-keybinding { + line-height: 2 !important; + } + + .quick-input-list .monaco-keybinding > .monaco-keybinding-key, + .quick-input-list .monaco-keybinding > .monaco-keybinding-key-separator { + color: #fff !important; + background-color: #4d78cc !important; + } + + .quick-input-list .monaco-keybinding > .monaco-keybinding-key-separator { + line-height: 22px !important; + } + + .quick-input-list .monaco-keybinding > .monaco-keybinding-key { + /* border-radius: 3px; */ + border-radius: 0; + border: transparent !important; + box-shadow: none !important; + padding: 0 0.375em !important; + } + + + /* center count-badge */ + + .extensions-viewlet > .extensions .extension-view-header .count-badge-wrapper { + display: flex !important; + align-items: center !important; + } + + .extension-list-item > .icon-container .extension-badge { + display: flex !important; + align-items: center !important; + } + + + /* notifications center header */ + + .monaco-workbench > .notifications-center > .notifications-center-header > .notifications-center-header-title { + color: #9da5b4 !important; + } + + /* notifications toolbar */ + + .notification-list-item .notification-list-item-toolbar-container .action-item .codicon { + /* color: inherit !important; */ + color: black !important; + opacity: .4 !important; + background: none !important; + } + + .notification-list-item .notification-list-item-toolbar-container .action-item .codicon:hover { + opacity: 1 !important; + } + + + /* notifications */ + + :where(.notifications-list-container) .monaco-list-row:has( :is(.codicon-error)) { + color: #7a1200 !important; + background-color: #e89d96 !important; + } + + :where(.notifications-list-container) .monaco-list-row:has( :is(.codicon-warning)) { + color: #835b21 !important; + background-color: #f3bf44 !important; + } + + :where(.notifications-list-container) .monaco-list-row:has( :is(.codicon-info)) { + color: #0e3377 !important; + background-color: #7ebef7 !important; + } + + + + /* notifications buttons */ + + + .notifications-list-container .monaco-list-row:has(.codicon-info) .monaco-text-button { + color: #d7dae0 !important; + text-shadow: none !important; + border: 1px solid #181a1f !important; + background-color: #0f82e6 !important; + background-image: linear-gradient(#0f87f0, #0f82e6) !important; + color: white !important; + } + + .notifications-list-container .monaco-list-row:has(.codicon-info) .monaco-text-button:hover { + color: #ffffff !important; + background-image: linear-gradient(#1e8ef1, #1489f0) !important; + } + + .notifications-list-container .monaco-list-row:has(.codicon-info) .monaco-text-button:active { + background: #0d77d3 !important; + box-shadow: none !important; + } + + .notifications-list-container .monaco-list-row:has(.codicon-info) .monaco-text-button:focus { + outline: none !important; + } + + .notifications-list-container .monaco-list-row:has(.codicon-info) .monaco-text-button:hover, + .notifications-list-container .monaco-list-row:has(.codicon-info) .monaco-text-button:focus { + color: white !important; + } + + .notifications-list-container .monaco-list-row:has(.codicon-info) .monaco-text-button:focus { + border-color: transparent !important; + background-clip: padding-box !important; + box-shadow: inset 0 0 0 1px rgba(24, 26, 31, 0.5), 0 0 0 1px #0f82e6 !important; + } + + .notifications-list-container .monaco-list-row:has(.codicon-warning) .monaco-text-button { + color: #d7dae0 !important; + text-shadow: none !important; + border: 1px solid #181a1f !important; + background-color: #ad7c0b !important; + background-image: linear-gradient(#b6830c, #ad7c0b) !important; + color: white !important; + } + + .notifications-list-container .monaco-list-row:has(.codicon-warning) .monaco-text-button:hover { + color: #ffffff !important; + background-image: linear-gradient(#c58d0d, #bb860c) !important; + } + + .notifications-list-container .monaco-list-row:has(.codicon-warning) .monaco-text-button:active { + background: #996e0a !important; + box-shadow: none !important; + } + + .notifications-list-container .monaco-list-row:has(.codicon-warning) .monaco-text-button:focus { + outline: none !important; + } + + .notifications-list-container .monaco-list-row:has(.codicon-warning) .monaco-text-button:hover, + .notifications-list-container .monaco-list-row:has(.codicon-warning) .monaco-text-button:focus { + color: white !important; + } + + .notifications-list-container .monaco-list-row:has(.codicon-warning) .monaco-text-button:focus { + border-color: transparent !important; + background-clip: padding-box !important; + box-shadow: inset 0 0 0 1px rgba(24, 26, 31, 0.5), 0 0 0 1px #ad7c0b !important; + } + + .notifications-list-container .monaco-list-row:has(.codicon-error) .monaco-text-button { + color: #d7dae0 !important; + text-shadow: none !important; + border: 1px solid #181a1f !important; + background-color: #d13b2e !important; + background-image: linear-gradient(#d34336, #d13b2e) !important; + color: white !important; + } + + .notifications-list-container .monaco-list-row:has(.codicon-error) .monaco-text-button:hover { + color: #ffffff !important; + background-image: linear-gradient(#d64f43, #d4473a) !important; + } + + .notifications-list-container .monaco-list-row:has(.codicon-error) .monaco-text-button:active { + background: #c0372a !important; + box-shadow: none !important; + } + + .notifications-list-container .monaco-list-row:has(.codicon-error) .monaco-text-button:focus { + outline: none !important; + } + + .notifications-list-container .monaco-list-row:has(.codicon-error) .monaco-text-button:hover, + .notifications-list-container .monaco-list-row:has(.codicon-error) .monaco-text-button:focus { + color: white !important; + } + + .notifications-list-container .monaco-list-row:has(.codicon-error) .monaco-text-button:focus { + border-color: transparent !important; + background-clip: padding-box !important; + box-shadow: inset 0 0 0 1px rgba(24, 26, 31, 0.5), 0 0 0 1px #d13b2e !important; + } + + + /* scrollbar */ + + canvas.decorationsOverviewRuler, + .monaco-scrollable-element > .scrollbar.vertical, + .monaco-scrollable-element > .vertical > .slider { + width: 10px !important; + } + + .monaco-scrollable-element > .scrollbar.horizontal, + .monaco-scrollable-element > .horizontal > .slider { + height: 10px !important; + } + + .quick-input-list > .monaco-list > .monaco-scrollable-element > .visible, + .quick-input-list > .monaco-list > .monaco-scrollable-element > .invisible.vertical { + background: #21252b !important; + } + + .monaco-scrollable-element > .visible, + .monaco-scrollable-element > .invisible.fade { + transition: none !important; + } + + /*.monaco-scrollable-element>.invisible.fade,*/ + .quick-input-list > .monaco-list > .monaco-scrollable-element > .invisible.vertical.fade { + opacity: 1 !important; + pointer-events: all !important; + } + + .monaco-scrollable-element > .scrollbar > .slider { + box-sizing: border-box !important; + border-radius: 5px !important; + border: 3px solid !important; + border-color: rgba(40, 44, 52, 0) !important; + /* background: #4b5362 !important; */ + background-color: rgba(75, 83, 98, 1) !important; + background-clip: content-box !important; + } + + .quick-input-list > .monaco-list > .monaco-scrollable-element > .scrollbar > .slider { + background: #4b5362 !important; + border-color: #21252b !important; + } + + .monaco-scrollable-element > .vertical > .slider:active { + border-radius: 0 !important; + border-left-width: 0 !important; + border-right-width: 0 !important; + } + + .monaco-scrollable-element > .horizontal > .slider:active { + border-radius: 0 !important; + border-top-width: 0 !important; + border-bottom-width: 0 !important; + } + + .quick-input-widget { + top: 50px !important; + /* no margin here. */ + box-sizing: border-box !important; + color: #9da5b4; + padding-bottom: 0.75em !important; + box-shadow: 0 6px 12px -2px rgba(0, 0, 0, 0.4), 0 0 0 100vw rgba(8, 9, 10, 0.75) !important; + } + + /* .quick-input-header { + display: flex; + padding: 0.75em; +} */ + + .quick-input-widget.hidden-input .quick-input-header { + padding: 0 !important; + margin-bottom: 0 !important; + } + + .quick-input-header { + /* display: flex; */ + padding: 0.75em !important; + } + + .quick-input-list .monaco-scrollable-element { + margin: 0 !important; + padding: 0 !important; + } + + .quick-input-widget.hidden-input .quick-input-list { + margin-top: 0.75em !important; + } + + .quick-input-list { + display: block !important; + border: 1.5px solid #181a1f !important; + position: relative !important; + overflow-y: auto !important; + max-height: 312px !important; + /* margin: 0 0.75em 0.75em !important; */ + margin: 0 0.75em 0 !important; + padding: 0 !important; + list-style: none !important; + cursor: default !important; + } + + .quick-input-list .monaco-list { + max-height: 312px !important; + margin: 0 !important; + padding: 0 !important; + } + + .quick-input-list .monaco-list .monaco-list-rows { + background-color: #292d35 !important; + } + + .quick-input-list .monaco-list-row.focused { + /* color: #d7dae0; */ + background-color: #3a3f4b !important; + } + + .quick-input-list .monaco-list .monaco-list-row { + position: static !important; + height: auto !important; + display: block !important; + padding: 0.75em 1em !important; + line-height: 2em !important; + border-bottom: 1.5px solid #181a1f !important; + border-radius: 0 !important; + color: #9da5b4; + } + + .quick-input-list .monaco-list-row:last-of-type { + border-bottom: none !important; + } + + .monaco-findInput > div { + overflow: visible !important; + } + + .suggest-input-container, + .monaco-inputbox.idle { + border: 1px solid #181a1f !important; + background-color: #1b1d23 !important; + border-radius: 3px !important; + } + + /* .monaco-editor.focused, */ + .suggest-input-container.synthetic-focus, + .monaco-inputbox.synthetic-focus { + overflow: visible !important; + outline: none !important; + border-color: #568af2 !important; + box-shadow: 0 0 0 1px #568af2 !important; + background-color: #202634 !important; + } + + .monaco-editor .suggest-widget > .message { + border-radius: 3px; + padding-bottom: 1em; + background-color: #252830; + } + + .monaco-editor .suggest-widget { + background: transparent !important; + border: none !important; + position: fixed; + /* z-index: 12; */ + contain: layout style; + display: block; + } + + .monaco-editor .suggest-widget .monaco-list { + position: relative; + margin-left: -39px; + width: auto !important; + background-color: #252830 !important; + box-shadow: 0 2px 8px 1px rgba(0, 0, 0, 0.3); + border-radius: 3px; + min-width: 243px; + padding: 0; + overflow: hidden; + color: #9da5b4; + } + + .monaco-editor .suggest-widget .monaco-list-rows { + background-color: transparent; + border: none; + padding: 0; + position: relative; + overflow-y: scroll; + margin-top: 0; + display: table; + width: 100%; + margin-right: 10px; + list-style: none; + cursor: default; + } + + .monaco-editor .suggest-widget .monaco-list-row { + display: table-row; + color: #9da5b4; + line-height: 2em; + /* padding-left: 0.375em; */ + padding-left: 0; + white-space: nowrap; + } + + .monaco-editor .suggest-widget .monaco-list-row.focused { + background-color: #3a3f4b !important; + } + + /* .monaco-editor .suggest-widget .codicon[class*=-variable] { */ + /* .monaco-editor .suggest-widget .codicon-symbol-snippet[class*=codicon-] { */ + .monaco-editor .suggest-widget .codicon[class*=codicon-] { + color: rgba(157, 165, 180, 0.6); + background: rgba(157, 165, 180, 0.1); + /* .monaco-editor .suggest-widget .codicon[class*=codicon-symbol-function] { */ + font-size: 14px; + display: inline-block !important; + height: inherit; + min-width: 2em; + padding-left: 0; + margin-right: 0.75em !important; + line-height: 2em; + text-align: center; + font-style: normal; + font-weight: bold; + } + + .monaco-editor .suggest-widget .codicon[class*=codicon-symbol-attribute] { + color: #d19a66 !important; + background: rgba(209, 154, 102, 0.2); + } + + .monaco-editor .suggest-widget .codicon[class*=codicon-symbol-builtin] { + color: #c678dd !important; + background: rgba(198, 120, 221, 0.2); + } + + .monaco-editor .suggest-widget .codicon[class*=codicon-symbol-class] { + color: #e5c07b !important; + background: rgba(229, 192, 123, 0.2); + } + + .monaco-editor .suggest-widget .codicon[class*=codicon-symbol-constant] { + color: #d19a66 !important; + background: rgba(209, 154, 102, 0.2); + } + + .monaco-editor .suggest-widget .codicon[class*=codicon-symbol-function] { + color: #61afef !important; + background: rgba(97, 175, 239, 0.2); + } + + .monaco-editor .suggest-widget .codicon[class*=codicon-symbol-import] { + color: #c678dd !important; + background: rgba(198, 120, 221, 0.2); + } + + .monaco-editor .suggest-widget .codicon[class*=codicon-symbol-keyword] { + color: #c678dd !important; + background: rgba(198, 120, 221, 0.2); + } + + .monaco-editor .suggest-widget .codicon[class*=codicon-symbol-method] { + color: #61afef !important; + background: rgba(97, 175, 239, 0.2); + } + + .monaco-editor .suggest-widget .codicon[class*=codicon-symbol-module] { + color: #c678dd !important; + background: rgba(198, 120, 221, 0.2); + } + + .monaco-editor .suggest-widget .codicon[class*=codicon-symbol-mixin] { + color: #e5c07b !important; + background: rgba(229, 192, 123, 0.2); + } + + .monaco-editor .suggest-widget .codicon[class*=codicon-symbol-package] { + color: #c678dd !important; + background: rgba(198, 120, 221, 0.2); + } + + .monaco-editor .suggest-widget .codicon[class*=codicon-symbol-property] { + color: #abb2bf !important; + background: rgba(171, 178, 191, 0.2); + } + + .monaco-editor .suggest-widget .codicon[class*=codicon-symbol-require] { + color: #c678dd !important; + background: rgba(198, 120, 221, 0.2); + } + + .monaco-editor .suggest-widget .codicon[class*=codicon-symbol-snippet] { + color: #98c379 !important; + background: rgba(152, 195, 121, 0.2); + } + + .monaco-editor .suggest-widget .codicon[class*=codicon-symbol-tag] { + color: #e06c75 !important; + background: rgba(224, 108, 117, 0.2); + } + + .monaco-editor .suggest-widget .codicon[class*=codicon-symbol-type] { + color: #e5c07b !important; + background: rgba(229, 192, 123, 0.2); + } + + .monaco-editor .suggest-widget .codicon[class*=codicon-symbol-value] { + color: #abb2bf !important; + background: rgba(171, 178, 191, 0.2); + } + + .monaco-editor .suggest-widget .codicon[class*=codicon-symbol-variable] { + color: #e06c75 !important; + background: rgba(224, 108, 117, 0.2); + } + + .monaco-editor .suggest-widget .codicon[class*=codicon-symbol-selector] { + color: #d19a66 !important; + background: rgba(209, 154, 102, 0.2); + } + + .monaco-editor .suggest-widget .codicon[class*=codicon-symbol-pseudo-selector] { + color: #d19a66 !important; + background: rgba(209, 154, 102, 0.2); + } +} diff --git a/config/Code/User/vsc.js b/config/Code/User/vsc.js new file mode 100644 index 00000000..a14bf5ab --- /dev/null +++ b/config/Code/User/vsc.js @@ -0,0 +1,100 @@ +function getOffset(el) { + const rect = el.getBoundingClientRect(); + return { + left: rect.left + window.scrollX, + top: rect.top + window.scrollY, + }; +} + +const prevOffset = {}; + +const displayEffect = (event) => { + if (prevOffset.top === undefined) { + let initialOffset = getOffset(document.getElementsByClassName("cursor")[0]); + prevOffset.top = initialOffset.top; + prevOffset.left = initialOffset.left; + } + + const existingRect = document.getElementById("myRect"); + if (existingRect !== null) { + existingRect.remove(); + } + + setTimeout(function () { + const currOffset = getOffset(document.getElementsByClassName("cursor")[0]); + const top = prevOffset.top; + const left = prevOffset.left; + const rect = document.createElement("div"); + + // console.log("prev: ", top, left); + // console.log("curr: ", currOffset.top, currOffset.left); + + rect.id = "myRect"; + rect.style.cssText = ` + position:absolute; + top:${top}px; + left:${left}px; + width:9px; + height:20px; + z-index:10; + background-color:red; + opacity: 0.5; + `; + rect.animate( + [ + // keyframes + { transform: "scale(1) skew(10deg)" }, + { transform: "scale(0) skew(10deg)" }, + ], + { + // timing options + duration: 500, + easing: "ease-in-out", + direction: "alternate", + iterations: Infinity, + } + ); + + document.body.appendChild(rect); + prevOffset.top = currOffset.top; + prevOffset.left = currOffset.left; + }, 24); +}; + +// NOTE: First enable editor.cursorSmoothCaretAnimation. +// NOTE: Uncomment this to get a cursor trail effect. +// document.addEventListener("keydown", displayEffect); + +const windowControls = document.createElement('div'); +windowControls.className = 'window-controls-container'; +const minimize = document.createElement('div'); +minimize.classList.add('window-icon', 'window-minimize', 'codicon', 'codicon-chrome-minimize'); +const restore = document.createElement('div'); +restore.classList.add('window-icon', 'window-max-restore', 'codicon', 'codicon-chrome-restore'); +const close = document.createElement('div'); +close.classList.add('window-icon', 'window-close', 'codicon', 'codicon-chrome-close'); +windowControls.appendChild(minimize); +windowControls.appendChild(restore); +windowControls.appendChild(close); +// const html = '
'; +// template.innerHTML = html; +// const windowControls = template.content.firstChild; + +var observer = new MutationObserver(function (mutations, me) { + console.warn('Observing if window controls present'); + // const windowControls = document.querySelector(".window-controls-container"); + const tabContainer = document.querySelector(".tabs-and-actions-container"); + + if (windowControls && tabContainer) { + tabContainer.appendChild(windowControls); + console.warn('Observing completed'); + me.disconnect(); + return; + } +}); + + +// observer.observe(document, { +// childList: true, +// subtree: true +// }); diff --git a/config/Kvantum/Catppuccin-Mocha/Catppuccin-Mocha.kvconfig b/config/Kvantum/Catppuccin-Mocha/Catppuccin-Mocha.kvconfig new file mode 100644 index 00000000..aa16dc0a --- /dev/null +++ b/config/Kvantum/Catppuccin-Mocha/Catppuccin-Mocha.kvconfig @@ -0,0 +1,466 @@ +[%General] +author=elkrien based on Arc Dark style +comment=Catppuccin-Mocha +spread_menuitems=true +left_tabs=true +mirror_doc_tabs=true +scroll_width=8 +attach_active_tab=true +composite=true +menu_shadow_depth=7 +tooltip_shadow_depth=0 +splitter_width=7 +check_size=16 +slider_width=4 +slider_handle_width=18 +slider_handle_length=18 +textless_progressbar=false +menubar_mouse_tracking=true +slim_toolbars=false +toolbutton_style=1 +x11drag=menubar_and_primary_toolbar +double_click=false +translucent_windows=false +blurring=false +popup_blurring=true +opaque=audacious,kaffeine,kmplayer,subtitlecomposer,kdenlive,vlc,smplayer,smplayer2,avidemux,avidemux2_qt4,avidemux3_qt4,avidemux3_qt5,kamoso,QtCreator,VirtualBox,VirtualBoxVM,trojita,dragon,digikam,lyx +group_toolbar_buttons=false +vertical_spin_indicators=false +fill_rubberband=false +spread_progressbar=true +merge_menubar_with_toolbar=true +small_icon_size=16 +large_icon_size=32 +button_icon_size=16 +scroll_arrows=false +iconless_pushbutton=true +toolbar_icon_size=16 +combo_as_lineedit=true +button_contents_shift=false +groupbox_top_label=true +inline_spin_indicators=true +joined_inactive_tabs=false +layout_spacing=2 +submenu_overlap=0 +tooltip_delay=-1 +animate_states=true +transient_scrollbar=true +alt_mnemonic=true +combo_menu=true +layout_margin=4 +no_window_pattern=false +respect_DE=true +scroll_min_extent=36 +scrollable_menu=false +scrollbar_in_view=false +spin_button_width=16 +submenu_delay=250 +tree_branch_line=true +progressbar_thickness=8 +click_behavior=0 +contrast=1.00 +dialog_button_layout=0 +drag_from_buttons=false +hide_combo_checkboxes=false +intensity=1.00 +no_inactiveness=false +reduce_menu_opacity=0 +reduce_window_opacity=10 +saturation=1.00 +shadowless_popup=true +transient_groove=false +menu_blur_radius=6 +tooltip_blur_radius=6 + +[GeneralColors] +window.color=#1E1E2E +base.color=#181825 +alt.base.color=#181825 +button.color=#313244 +light.color=#45475A +mid.light.color=#45475A +dark.color=#181825 +mid.color=#181825 +highlight.color=#F5E0DC +inactive.highlight.color=#F5E0DC +text.color=#CDD6F4 +window.text.color=#CDD6F4 +button.text.color=#CDD6F4 +disabled.text.color=#585B70 +tooltip.text.color=#CDD6F4 +highlight.text.color=#181825 +link.color=#F5E0DC +link.visited.color=#89B4FA + +[ItemView] +inherits=PanelButtonCommand +frame.element=itemview +interior.element=itemview +frame=true +interior=true +text.iconspacing=3 +text.toggle.color=#181825 + +[RadioButton] +inherits=PanelButtonCommand +frame=false +interior.element=radio + +[CheckBox] +inherits=PanelButtonCommand +frame=false +interior.element=checkbox + +[TreeExpander] +indicator.element=tree +indicator.size=8 + +[ToolTip] +frame.top=4 +frame.right=4 +frame.bottom=4 +frame.left=4 +frame=true + +[PanelButtonCommand] +inherits=PanelButtonCommand +interior.element=button +frame.element=button +text.normal.color=#CDD6F4 +text.focus.color=#CDD6F4 +text.press.color=#181825 +text.toggle.color=#181825 + +[PanelButtonTool] +inherits=PanelButtonCommand + +[DockTitle] +inherits=PanelButtonCommand +interior=false +frame=false +text.margin.top=5 +text.margin.bottom=5 +text.margin.left=5 +text.margin.right=5 +indicator.size=0 + +[Dock] +interior.element=toolbar +frame.element=toolbar +frame=true +interior=true + +[GroupBox] +inherits=PanelButtonCommand +interior.element=tabframe +interior=true +frame=false + +[Focus] +inherits=PanelButtonCommand +frame=true +frame.element=focus +frame.top=1 +frame.bottom=1 +frame.left=1 +frame.right=1 +frame.patternsize=20 + +[GenericFrame] +inherits=PanelButtonCommand +frame.element=common +frame.top=1 +frame.bottom=1 +frame.left=1 +frame.right=1 + +[Slider] +inherits=PanelButtonCommand +interior=true +frame.element=slider +interior.element=slider +frame.top=3 +frame.bottom=3 +frame.left=3 +frame.right=3 +focusFrame=true + +[SliderCursor] +inherits=PanelButtonCommand +interior=true +interior.element=slidercursor +frame=false + +[LineEdit] +inherits=PanelButtonCommand +frame.element=lineedit +interior.element=lineedit + +[IndicatorSpinBox] +inherits=LineEdit +frame.element=lineedit +interior.element=lineedit +frame.top=0 +frame.bottom=2 +frame.left=2 +frame.right=2 +indicator.size=8 + +[DropDownButton] +inherits=PanelButtonCommand +frame.top=2 +frame.bottom=2 +frame.left=0 +frame.right=1 +indicator.size=8 + +[ToolboxTab] +inherits=PanelButtonCommand +frame.element=tabframe +frame.top=1 +frame.bottom=1 +frame.left=1 +frame.right=1 + +[Tab] +inherits=PanelButtonCommand +interior.element=tab +frame.element=tab +frame.top=2 +frame.bottom=3 +frame.left=3 +frame.right=3 +indicator.size=10 +text.normal.color=#585B70 +text.focus.color=#CDD6F4 +text.press.color=#CDD6F4 +text.toggle.color=#CDD6F4 +focusFrame=true + +[TabBarFrame] +inherits=GenericFrame +frame=true +frame.element=tabBarFrame +interior=false +frame.top=4 +frame.bottom=4 +frame.left=4 +frame.right=4 + +[TabFrame] +inherits=PanelButtonCommand +frame.element=tabframe +interior.element=tabframe + +[Dialog] +inherits=TabBarFrame +frame.element=tabframe +interior=false +frame=false +frame.top=1 +frame.bottom=1 +frame.left=1 +frame.right=1 + +[HeaderSection] +inherits=PanelButtonCommand +interior.element=header +frame.element=header +frame.top=0 +frame.bottom=1 +frame.left=1 +frame.right=1 +frame.expansion=0 +text.normal.color=#CDD6F4 +text.focus.color=#F5E0DC +text.press.color=#CDD6F4 +text.toggle.color=#CDD6F4 +indicator.element=harrow + +[SizeGrip] +inherits=PanelButtonCommand +frame=false +interior=false +indicator.element=resize-grip +indicator.size=0 + +[Toolbar] +inherits=PanelButtonCommand +interior.element=menubar +frame.element=menubar +frame=true +frame.bottom=4 +frame.left=4 +frame.right=4 +text.normal.color=#CDD6F4 +text.focus.color=#CDD6F4 +text.press.color=#F5E0DC +text.toggle.color=#F5E0DC +text.bold=false + +[MenuBar] +inherits=PanelButtonCommand +frame.element=menubar +interior.element=menubar +frame.bottom=0 +text.normal.color=#CDD6F4 +frame.expansion=0 +text.bold=false + +[ToolbarButton] +frame.element=tbutton +interior.element=tbutton +indicator.element=arrow +text.normal.color=#CDD6F4 +text.focus.color=#CDD6F4 +text.press.color=#181825 +text.toggle.color=#181825 +text.bold=false + +[Scrollbar] +inherits=PanelButtonCommand +indicator.size=0 +interior=false +frame=false + +[ScrollbarGroove] +inherits=PanelButtonCommand +interior=false +frame=false + +[ScrollbarSlider] +inherits=PanelButtonCommand +interior=false +frame.element=scrollbarslider +frame.top=4 +frame.bottom=4 +frame.left=4 +frame.right=4 + +[ProgressbarContents] +inherits=PanelButtonCommand +frame=true +frame.element=progress-pattern +interior.element=progress-pattern +frame.top=2 +frame.bottom=2 +frame.left=2 +frame.right=2 + +[Progressbar] +inherits=PanelButtonCommand +frame.element=progress +interior.element=progress +frame.top=2 +frame.bottom=2 +frame.left=2 +frame.right=2 +text.margin=0 +text.normal.color=#CDD6F4 +text.focus.color=#CDD6F4 +text.press.color=#181825 +text.toggle.color=#181825 +text.bold=false +frame.expansion=18 + +[RadioButton] +inherits=PanelButtonCommand + +[Menu] +frame.element=menu +interior.element=menu +inherits=PanelButtonCommand +text.press.color=#181825 +text.toggle.color=#181825 +text.bold=false +frame.top=3 +frame.bottom=3 +frame.left=3 +frame.right=3 + +[MenuItem] +inherits=PanelButtonCommand +interior.element=menuitem +indicator.size=8 +text.focus.color=#CDD6F4 +text.press.color=#CDD6F4 + +[MenuBarItem] +inherits=PanelButtonCommand +interior.element=menubaritem +frame=false +text.margin.top=3 +text.margin.bottom=3 +text.margin.left=5 +text.margin.right=5 + +[StatusBar] +inherits=Toolbar +frame.element=toolbar +font.bold=true +text.normal.color=#CDD6F4 +frame=true +frame.top=0 +frame.bottom=0 + +[TitleBar] +inherits=PanelButtonCommand +frame=false +interior=false +text.margin.top=2 +text.margin.bottom=2 +text.margin.left=3 +text.margin.right=3 + +[ComboBox] +inherits=PanelButtonCommand +indicator.size=8 +frame.top=3 +frame.bottom=3 +frame.left=3 +frame.right=3 +text.margin.top=1 +text.margin.bottom=1 +text.margin.left=3 +text.margin.right=3 +text.toggle.color=#CDD6F4 + +[ToolboxTab] +inherits=PanelButtonCommand +text.normal.color=#CDD6F4 +text.press.color=#CDD6F4 +text.focus.color=#CDD6F4 + +[Hacks] +transparent_dolphin_view=true +blur_konsole=true +transparent_ktitle_label=true +transparent_menutitle=true +respect_darkness=true +kcapacitybar_as_progressbar=true +force_size_grip=false +iconless_pushbutton=true +iconless_menu=true +disabled_icon_opacity=80 +lxqtmainmenu_iconsize=0 +normal_default_pushbutton=true +single_top_toolbar=false +tint_on_mouseover=0 +transparent_pcmanfm_sidepane=true +transparent_pcmanfm_view=true +blur_translucent=true +centered_forms=false +kinetic_scrolling=false +middle_click_scroll=false +no_selection_tint=false +noninteger_translucency=false +style_vertical_toolbars=false +blur_only_active_window=false + +[Window] +interior=true +interior.element=window +frame.top=0 +frame.bottom=0 +frame.left=0 +frame.right=0 diff --git a/config/Kvantum/Catppuccin-Mocha/Catppuccin-Mocha.svg b/config/Kvantum/Catppuccin-Mocha/Catppuccin-Mocha.svg new file mode 100644 index 00000000..c6dbf03a --- /dev/null +++ b/config/Kvantum/Catppuccin-Mocha/Catppuccin-Mocha.svg @@ -0,0 +1,1958 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/config/Kvantum/Tokyo-Night/Tokyo-Night.kvconfig b/config/Kvantum/Tokyo-Night/Tokyo-Night.kvconfig new file mode 100644 index 00000000..0e98b176 --- /dev/null +++ b/config/Kvantum/Tokyo-Night/Tokyo-Night.kvconfig @@ -0,0 +1,466 @@ +[%General] +author=elkrien based on Arc Dark style +comment=Tokyo-Night +spread_menuitems=true +left_tabs=true +mirror_doc_tabs=true +scroll_width=8 +attach_active_tab=true +composite=true +menu_shadow_depth=7 +tooltip_shadow_depth=0 +splitter_width=7 +check_size=16 +slider_width=4 +slider_handle_width=18 +slider_handle_length=18 +textless_progressbar=false +menubar_mouse_tracking=true +slim_toolbars=false +toolbutton_style=1 +x11drag=menubar_and_primary_toolbar +double_click=false +translucent_windows=false +blurring=false +popup_blurring=true +opaque=audacious,kaffeine,kmplayer,subtitlecomposer,kdenlive,vlc,smplayer,smplayer2,avidemux,avidemux2_qt4,avidemux3_qt4,avidemux3_qt5,kamoso,QtCreator,VirtualBox,VirtualBoxVM,trojita,dragon,digikam,lyx +group_toolbar_buttons=false +vertical_spin_indicators=false +fill_rubberband=false +spread_progressbar=true +merge_menubar_with_toolbar=true +small_icon_size=16 +large_icon_size=32 +button_icon_size=16 +scroll_arrows=false +iconless_pushbutton=true +toolbar_icon_size=16 +combo_as_lineedit=true +button_contents_shift=false +groupbox_top_label=true +inline_spin_indicators=true +joined_inactive_tabs=false +layout_spacing=2 +submenu_overlap=0 +tooltip_delay=-1 +animate_states=true +transient_scrollbar=true +alt_mnemonic=true +combo_menu=true +layout_margin=4 +no_window_pattern=false +respect_DE=true +scroll_min_extent=36 +scrollable_menu=false +scrollbar_in_view=false +spin_button_width=16 +submenu_delay=250 +tree_branch_line=true +progressbar_thickness=8 +click_behavior=0 +contrast=1.00 +dialog_button_layout=0 +drag_from_buttons=false +hide_combo_checkboxes=false +intensity=1.00 +no_inactiveness=false +reduce_menu_opacity=0 +reduce_window_opacity=10 +saturation=1.00 +shadowless_popup=true +transient_groove=false +menu_blur_radius=6 +tooltip_blur_radius=6 + +[GeneralColors] +window.color=#24283b +base.color=#414868 +alt.base.color=#414868 +button.color=#c0caf5 +light.color=#7dcfff +mid.light.color=#7dcfff +dark.color=#414868 +mid.color=#414868 +highlight.color=#2ac3de +inactive.highlight.color=#2ac3de +text.color=#a9b1d6 +window.text.color=#a9b1d6 +button.text.color=#a9b1d6 +disabled.text.color=#565f89 +tooltip.text.color=#a9b1d6 +highlight.text.color=#414868 +link.color=#2ac3de +link.visited.color=#73daca + +[ItemView] +inherits=PanelButtonCommand +frame.element=itemview +interior.element=itemview +frame=true +interior=true +text.iconspacing=3 +text.toggle.color=#414868 + +[RadioButton] +inherits=PanelButtonCommand +frame=false +interior.element=radio + +[CheckBox] +inherits=PanelButtonCommand +frame=false +interior.element=checkbox + +[TreeExpander] +indicator.element=tree +indicator.size=8 + +[ToolTip] +frame.top=4 +frame.right=4 +frame.bottom=4 +frame.left=4 +frame=true + +[PanelButtonCommand] +inherits=PanelButtonCommand +interior.element=button +frame.element=button +text.normal.color=#a9b1d6 +text.focus.color=#a9b1d6 +text.press.color=#414868 +text.toggle.color=#414868 + +[PanelButtonTool] +inherits=PanelButtonCommand + +[DockTitle] +inherits=PanelButtonCommand +interior=false +frame=false +text.margin.top=5 +text.margin.bottom=5 +text.margin.left=5 +text.margin.right=5 +indicator.size=0 + +[Dock] +interior.element=toolbar +frame.element=toolbar +frame=true +interior=true + +[GroupBox] +inherits=PanelButtonCommand +interior.element=tabframe +interior=true +frame=false + +[Focus] +inherits=PanelButtonCommand +frame=true +frame.element=focus +frame.top=1 +frame.bottom=1 +frame.left=1 +frame.right=1 +frame.patternsize=20 + +[GenericFrame] +inherits=PanelButtonCommand +frame.element=common +frame.top=1 +frame.bottom=1 +frame.left=1 +frame.right=1 + +[Slider] +inherits=PanelButtonCommand +interior=true +frame.element=slider +interior.element=slider +frame.top=3 +frame.bottom=3 +frame.left=3 +frame.right=3 +focusFrame=true + +[SliderCursor] +inherits=PanelButtonCommand +interior=true +interior.element=slidercursor +frame=false + +[LineEdit] +inherits=PanelButtonCommand +frame.element=lineedit +interior.element=lineedit + +[IndicatorSpinBox] +inherits=LineEdit +frame.element=lineedit +interior.element=lineedit +frame.top=0 +frame.bottom=2 +frame.left=2 +frame.right=2 +indicator.size=8 + +[DropDownButton] +inherits=PanelButtonCommand +frame.top=2 +frame.bottom=2 +frame.left=0 +frame.right=1 +indicator.size=8 + +[ToolboxTab] +inherits=PanelButtonCommand +frame.element=tabframe +frame.top=1 +frame.bottom=1 +frame.left=1 +frame.right=1 + +[Tab] +inherits=PanelButtonCommand +interior.element=tab +frame.element=tab +frame.top=2 +frame.bottom=3 +frame.left=3 +frame.right=3 +indicator.size=10 +text.normal.color=#565f89 +text.focus.color=#a9b1d6 +text.press.color=#a9b1d6 +text.toggle.color=#a9b1d6 +focusFrame=true + +[TabBarFrame] +inherits=GenericFrame +frame=true +frame.element=tabBarFrame +interior=false +frame.top=4 +frame.bottom=4 +frame.left=4 +frame.right=4 + +[TabFrame] +inherits=PanelButtonCommand +frame.element=tabframe +interior.element=tabframe + +[Dialog] +inherits=TabBarFrame +frame.element=tabframe +interior=false +frame=false +frame.top=1 +frame.bottom=1 +frame.left=1 +frame.right=1 + +[HeaderSection] +inherits=PanelButtonCommand +interior.element=header +frame.element=header +frame.top=0 +frame.bottom=1 +frame.left=1 +frame.right=1 +frame.expansion=0 +text.normal.color=#a9b1d6 +text.focus.color=#2ac3de +text.press.color=#a9b1d6 +text.toggle.color=#a9b1d6 +indicator.element=harrow + +[SizeGrip] +inherits=PanelButtonCommand +frame=false +interior=false +indicator.element=resize-grip +indicator.size=0 + +[Toolbar] +inherits=PanelButtonCommand +interior.element=menubar +frame.element=menubar +frame=true +frame.bottom=4 +frame.left=4 +frame.right=4 +text.normal.color=#a9b1d6 +text.focus.color=#a9b1d6 +text.press.color=#2ac3de +text.toggle.color=#2ac3de +text.bold=false + +[MenuBar] +inherits=PanelButtonCommand +frame.element=menubar +interior.element=menubar +frame.bottom=0 +text.normal.color=#a9b1d6 +frame.expansion=0 +text.bold=false + +[ToolbarButton] +frame.element=tbutton +interior.element=tbutton +indicator.element=arrow +text.normal.color=#a9b1d6 +text.focus.color=#a9b1d6 +text.press.color=#414868 +text.toggle.color=#414868 +text.bold=false + +[Scrollbar] +inherits=PanelButtonCommand +indicator.size=0 +interior=false +frame=false + +[ScrollbarGroove] +inherits=PanelButtonCommand +interior=false +frame=false + +[ScrollbarSlider] +inherits=PanelButtonCommand +interior=false +frame.element=scrollbarslider +frame.top=4 +frame.bottom=4 +frame.left=4 +frame.right=4 + +[ProgressbarContents] +inherits=PanelButtonCommand +frame=true +frame.element=progress-pattern +interior.element=progress-pattern +frame.top=2 +frame.bottom=2 +frame.left=2 +frame.right=2 + +[Progressbar] +inherits=PanelButtonCommand +frame.element=progress +interior.element=progress +frame.top=2 +frame.bottom=2 +frame.left=2 +frame.right=2 +text.margin=0 +text.normal.color=#a9b1d6 +text.focus.color=#a9b1d6 +text.press.color=#414868 +text.toggle.color=#414868 +text.bold=false +frame.expansion=18 + +[RadioButton] +inherits=PanelButtonCommand + +[Menu] +frame.element=menu +interior.element=menu +inherits=PanelButtonCommand +text.press.color=#414868 +text.toggle.color=#414868 +text.bold=false +frame.top=3 +frame.bottom=3 +frame.left=3 +frame.right=3 + +[MenuItem] +inherits=PanelButtonCommand +interior.element=menuitem +indicator.size=8 +text.focus.color=#a9b1d6 +text.press.color=#a9b1d6 + +[MenuBarItem] +inherits=PanelButtonCommand +interior.element=menubaritem +frame=false +text.margin.top=3 +text.margin.bottom=3 +text.margin.left=5 +text.margin.right=5 + +[StatusBar] +inherits=Toolbar +frame.element=toolbar +font.bold=true +text.normal.color=#a9b1d6 +frame=true +frame.top=0 +frame.bottom=0 + +[TitleBar] +inherits=PanelButtonCommand +frame=false +interior=false +text.margin.top=2 +text.margin.bottom=2 +text.margin.left=3 +text.margin.right=3 + +[ComboBox] +inherits=PanelButtonCommand +indicator.size=8 +frame.top=3 +frame.bottom=3 +frame.left=3 +frame.right=3 +text.margin.top=1 +text.margin.bottom=1 +text.margin.left=3 +text.margin.right=3 +text.toggle.color=#a9b1d6 + +[ToolboxTab] +inherits=PanelButtonCommand +text.normal.color=#a9b1d6 +text.press.color=#a9b1d6 +text.focus.color=#a9b1d6 + +[Hacks] +transparent_dolphin_view=true +blur_konsole=true +transparent_ktitle_label=true +transparent_menutitle=true +respect_darkness=true +kcapacitybar_as_progressbar=true +force_size_grip=false +iconless_pushbutton=true +iconless_menu=true +disabled_icon_opacity=80 +lxqtmainmenu_iconsize=0 +normal_default_pushbutton=true +single_top_toolbar=false +tint_on_mouseover=0 +transparent_pcmanfm_sidepane=true +transparent_pcmanfm_view=true +blur_translucent=true +centered_forms=false +kinetic_scrolling=false +middle_click_scroll=false +no_selection_tint=false +noninteger_translucency=false +style_vertical_toolbars=false +blur_only_active_window=false + +[Window] +interior=true +interior.element=window +frame.top=0 +frame.bottom=0 +frame.left=0 +frame.right=0 diff --git a/config/Kvantum/Tokyo-Night/Tokyo-Night.svg b/config/Kvantum/Tokyo-Night/Tokyo-Night.svg new file mode 100644 index 00000000..7dafd75d --- /dev/null +++ b/config/Kvantum/Tokyo-Night/Tokyo-Night.svg @@ -0,0 +1,7279 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/config/Kvantum/kvantum.kvconfig b/config/Kvantum/kvantum.kvconfig new file mode 100644 index 00000000..11b3c467 --- /dev/null +++ b/config/Kvantum/kvantum.kvconfig @@ -0,0 +1,2 @@ +[General] +theme=Tokyo-Night diff --git a/config/Thunar/accels.scm b/config/Thunar/accels.scm new file mode 100644 index 00000000..7a9cdd48 --- /dev/null +++ b/config/Thunar/accels.scm @@ -0,0 +1,116 @@ +; Thunar GtkAccelMap rc-file -*- scheme -*- +; this file is an automated accelerator map dump +; +; (gtk_accel_path "/ThunarActionManager/restore" "") +; (gtk_accel_path "/ThunarActionManager/undo" "z") +; (gtk_accel_path "/ThunarStandardView/select-all-files" "a") +; (gtk_accel_path "/ThunarStandardView/sort-by-dtime" "") +; (gtk_accel_path "/ThunarStatusBar/toggle-last-modified" "") +; (gtk_accel_path "/ThunarStandardView/invert-selection" "") +; (gtk_accel_path "/ThunarStatusBar/toggle-display-name" "") +; (gtk_accel_path "/ThunarActionManager/cut" "x") +; (gtk_accel_path "/ThunarActionManager/restore-show" "") +; (gtk_accel_path "/ThunarWindow/zoom-in" "plus") +; (gtk_accel_path "/ThunarStandardView/sort-ascending" "") +; (gtk_accel_path "/ThunarWindow/empty-trash" "") +; (gtk_accel_path "/ThunarWindow/reload" "r") +; (gtk_accel_path "/ThunarWindow/toggle-image-preview" "") +; (gtk_accel_path "/ThunarActionManager/cut-2" "") +; (gtk_accel_path "/ThunarWindow/view-side-pane-menu" "") +; (gtk_accel_path "/ThunarActionManager/trash-delete" "Delete") +; (gtk_accel_path "/ThunarWindow/open-network" "") +; (gtk_accel_path "/ThunarActionManager/trash-delete-2" "KP_Delete") +; (gtk_accel_path "/ThunarWindow/contents/help-menu" "") +; (gtk_accel_path "/ThunarActionManager/delete" "") +; (gtk_accel_path "/ThunarStandardView/set-default-app" "") +; (gtk_accel_path "/ThunarStandardView/back-alt" "BackSpace") +; (gtk_accel_path "/ThunarActionManager/open-in-new-tab" "p") +; (gtk_accel_path "/ThunarWindow/switch-next-tab" "Page_Down") +; (gtk_accel_path "/ThunarWindow/open-file-menu" "F10") +; (gtk_accel_path "/ThunarWindow/view-as-compact-list" "3") +; (gtk_accel_path "/ThunarWindow/about" "") +; (gtk_accel_path "/ThunarWindow/open-computer" "") +; (gtk_accel_path "/ThunarWindow/clear-directory-specific-settings" "") +; (gtk_accel_path "/ThunarWindow/open-file-system" "") +; (gtk_accel_path "/ThunarWindow/open-parent" "Up") +; (gtk_accel_path "/ThunarWindow/view-menu" "") +; (gtk_accel_path "/ThunarActionManager/copy" "c") +; (gtk_accel_path "/ThunarStandardView/properties" "Return") +; (gtk_accel_path "/ThunarStandardView/back" "Left") +; (gtk_accel_path "/ThunarWindow/sendto-menu" "") +; (gtk_accel_path "/ThunarStandardView/sort-by-mtime" "") +; (gtk_accel_path "/ThunarActionManager/open-location" "") +; (gtk_accel_path "/ThunarWindow/bookmarks-menu" "") +; (gtk_accel_path "/ThunarWindow/reload-alt" "F5") +; (gtk_accel_path "/ThunarWindow/view-location-selector-buttons" "") +; (gtk_accel_path "/ThunarStatusBar/toggle-size-in-bytes" "") +; (gtk_accel_path "/ThunarStandardView/unselect-all-files" "Escape") +; (gtk_accel_path "/ThunarActionManager/copy-2" "Insert") +; (gtk_accel_path "/ThunarWindow/zoom-out-alt" "KP_Subtract") +; (gtk_accel_path "/ThunarWindow/cancel-search" "Escape") +; (gtk_accel_path "/ThunarStandardView/select-by-pattern" "s") +; (gtk_accel_path "/ThunarStandardView/rename" "F2") +; (gtk_accel_path "/ThunarStandardView/create-document" "") +; (gtk_accel_path "/ThunarShortcutsPane/sendto-shortcuts" "d") +; (gtk_accel_path "/ThunarActionManager/move-to-trash" "") +; (gtk_accel_path "/ThunarWindow/close-tab" "w") +; (gtk_accel_path "/ThunarWindow/view-side-pane-tree" "e") +; (gtk_accel_path "/ThunarActionManager/open" "o") +; (gtk_accel_path "/ThunarWindow/toggle-side-pane" "F9") +; (gtk_accel_path "/ThunarWindow/view-location-selector-entry" "") +; (gtk_accel_path "/ThunarWindow/open-recent" "") +; (gtk_accel_path "/ThunarWindow/open-home" "Home") +; (gtk_accel_path "/ThunarWindow/toggle-split-view" "F3") +; (gtk_accel_path "/ThunarWindow/open-templates" "") +; (gtk_accel_path "/ThunarWindow/open-location-alt" "d") +; (gtk_accel_path "/ThunarStandardView/create-folder" "n") +; (gtk_accel_path "/ThunarWindow/search" "f") +; (gtk_accel_path "/ThunarStandardView/sort-by-type" "") +; (gtk_accel_path "/ThunarActionManager/paste-2" "Insert") +; (gtk_accel_path "/ThunarWindow/zoom-in-alt2" "equal") +; (gtk_accel_path "/ThunarStandardView/duplicate" "") +; (gtk_accel_path "/ThunarWindow/remove-from-recent" "") +; (gtk_accel_path "/ThunarWindow/zoom-out" "minus") +; (gtk_accel_path "/ThunarWindow/close-window" "q") +; (gtk_accel_path "/ThunarWindow/edit-menu" "") +; (gtk_accel_path "/ThunarWindow/view-side-pane-shortcuts" "b") +; (gtk_accel_path "/ThunarWindow/show-highlight" "") +; (gtk_accel_path "/ThunarWindow/contents" "F1") +; (gtk_accel_path "/ThunarWindow/preferences" "") +; (gtk_accel_path "/ThunarWindow/switch-previous-tab" "Page_Up") +; (gtk_accel_path "/ThunarWindow/zoom-in-alt1" "KP_Add") +; (gtk_accel_path "/ThunarStandardView/toggle-sort-order" "") +; (gtk_accel_path "/ThunarActionManager/open-in-new-window" "o") +; (gtk_accel_path "/ThunarWindow/view-configure-toolbar" "") +; (gtk_accel_path "/ThunarWindow/view-location-selector-menu" "") +; (gtk_accel_path "/ThunarWindow/view-statusbar" "") +; (gtk_accel_path "/ThunarWindow/close-all-windows" "w") +; (gtk_accel_path "/ThunarWindow/open-trash" "") +; (gtk_accel_path "/ThunarActionManager/paste" "v") +; (gtk_accel_path "/ThunarActionManager/delete-3" "KP_Delete") +; (gtk_accel_path "/ThunarActionManager/execute" "") +; (gtk_accel_path "/ThunarWindow/open-desktop" "") +; (gtk_accel_path "/ThunarActionManager/open-with-other" "") +; (gtk_accel_path "/ThunarStatusBar/toggle-size" "") +; (gtk_accel_path "/ThunarActionManager/sendto-desktop" "") +; (gtk_accel_path "/ThunarWindow/open-location" "l") +; (gtk_accel_path "/ThunarWindow/view-menubar" "m") +; (gtk_accel_path "/ThunarWindow/zoom-reset-alt" "KP_0") +; (gtk_accel_path "/ThunarWindow/view-as-detailed-list" "2") +; (gtk_accel_path "/ThunarWindow/view-as-icons" "1") +; (gtk_accel_path "/ThunarWindow/new-window" "n") +; (gtk_accel_path "/ThunarStandardView/forward" "Right") +; (gtk_accel_path "/ThunarActionManager/redo" "z") +; (gtk_accel_path "/ThunarStandardView/sort-descending" "") +; (gtk_accel_path "/ThunarWindow/file-menu" "") +; (gtk_accel_path "/ThunarStandardView/make-link" "") +; (gtk_accel_path "/ThunarActionManager/delete-2" "Delete") +; (gtk_accel_path "/ThunarWindow/new-tab" "t") +; (gtk_accel_path "/ThunarWindow/go-menu" "") +; (gtk_accel_path "/ThunarStandardView/sort-by-size" "") +; (gtk_accel_path "/ThunarStandardView/arrange-items-menu" "") +; (gtk_accel_path "/ThunarWindow/show-hidden" "h") +; (gtk_accel_path "/ThunarStandardView/sort-by-name" "") +; (gtk_accel_path "/ThunarWindow/zoom-reset" "0") +; (gtk_accel_path "/ThunarStatusBar/toggle-filetype" "") +; (gtk_accel_path "/ThunarWindow/detach-tab" "") diff --git a/config/Thunar/renamerrc b/config/Thunar/renamerrc new file mode 100644 index 00000000..1cbe9052 --- /dev/null +++ b/config/Thunar/renamerrc @@ -0,0 +1,10 @@ +[Configuration] +LastActiveMode=THUNAR_RENAMER_MODE_NAME +LastActiveRenamer=ThunarSbrDateRenamer + +[ThunarSbrDateRenamer] +Offset=0 +Mode=THUNAR_SBR_DATE_MODE_NOW +Format=%Y%m%d +OffsetMode=THUNAR_SBR_OFFSET_MODE_LEFT + diff --git a/config/Thunar/uca.xml b/config/Thunar/uca.xml new file mode 100644 index 00000000..ca68a007 --- /dev/null +++ b/config/Thunar/uca.xml @@ -0,0 +1,15 @@ + + + + utilities-terminal + Open Terminal Here + + 1488955845049151-1 + /usr/bin/kitty %f + + + * + + + + diff --git a/config/btop/btop.conf b/config/btop/btop.conf new file mode 100644 index 00000000..85b54f94 --- /dev/null +++ b/config/btop/btop.conf @@ -0,0 +1,212 @@ +#? Config file for btop v. 1.2.13 + +#* Name of a btop++/bpytop/bashtop formatted ".theme" file, "Default" and "TTY" for builtin themes. +#* Themes should be placed in "../share/btop/themes" relative to binary or "$HOME/.config/btop/themes" +color_theme = "/home/proxzima/.config/btop/themes/proxzima.theme" + +#* If the theme set background should be shown, set to False if you want terminal background transparency. +theme_background = False + +#* Sets if 24-bit truecolor should be used, will convert 24-bit colors to 256 color (6x6x6 color cube) if false. +truecolor = True + +#* Set to true to force tty mode regardless if a real tty has been detected or not. +#* Will force 16-color mode and TTY theme, set all graph symbols to "tty" and swap out other non tty friendly symbols. +force_tty = False + +#* Define presets for the layout of the boxes. Preset 0 is always all boxes shown with default settings. Max 9 presets. +#* Format: "box_name:P:G,box_name:P:G" P=(0 or 1) for alternate positions, G=graph symbol to use for box. +#* Use whitespace " " as separator between different presets. +#* Example: "cpu:0:default,mem:0:tty,proc:1:default cpu:0:braille,proc:0:tty" +presets = "cpu:1:default,proc:0:default cpu:0:default,mem:0:default,net:0:default cpu:0:block,net:0:tty" + +#* Set to True to enable "h,j,k,l,g,G" keys for directional control in lists. +#* Conflicting keys for h:"help" and k:"kill" is accessible while holding shift. +vim_keys = False + +#* Rounded corners on boxes, is ignored if TTY mode is ON. +rounded_corners = True + +#* Default symbols to use for graph creation, "braille", "block" or "tty". +#* "braille" offers the highest resolution but might not be included in all fonts. +#* "block" has half the resolution of braille but uses more common characters. +#* "tty" uses only 3 different symbols but will work with most fonts and should work in a real TTY. +#* Note that "tty" only has half the horizontal resolution of the other two, so will show a shorter historical view. +graph_symbol = "braille" + +# Graph symbol to use for graphs in cpu box, "default", "braille", "block" or "tty". +graph_symbol_cpu = "default" + +# Graph symbol to use for graphs in cpu box, "default", "braille", "block" or "tty". +graph_symbol_mem = "default" + +# Graph symbol to use for graphs in cpu box, "default", "braille", "block" or "tty". +graph_symbol_net = "default" + +# Graph symbol to use for graphs in cpu box, "default", "braille", "block" or "tty". +graph_symbol_proc = "default" + +#* Manually set which boxes to show. Available values are "cpu mem net proc", separate values with whitespace. +shown_boxes = "cpu mem net proc" + +#* Update time in milliseconds, recommended 2000 ms or above for better sample times for graphs. +update_ms = 1500 + +#* Processes sorting, "pid" "program" "arguments" "threads" "user" "memory" "cpu lazy" "cpu direct", +#* "cpu lazy" sorts top process over time (easier to follow), "cpu direct" updates top process directly. +proc_sorting = "memory" + +#* Reverse sorting order, True or False. +proc_reversed = False + +#* Show processes as a tree. +proc_tree = True + +#* Use the cpu graph colors in the process list. +proc_colors = True + +#* Use a darkening gradient in the process list. +proc_gradient = True + +#* If process cpu usage should be of the core it's running on or usage of the total available cpu power. +proc_per_core = True + +#* Show process memory as bytes instead of percent. +proc_mem_bytes = True + +#* Show cpu graph for each process. +proc_cpu_graphs = True + +#* Use /proc/[pid]/smaps for memory information in the process info box (very slow but more accurate) +proc_info_smaps = False + +#* Show proc box on left side of screen instead of right. +proc_left = False + +#* (Linux) Filter processes tied to the Linux kernel(similar behavior to htop). +proc_filter_kernel = False + +#* Sets the CPU stat shown in upper half of the CPU graph, "total" is always available. +#* Select from a list of detected attributes from the options menu. +cpu_graph_upper = "total" + +#* Sets the CPU stat shown in lower half of the CPU graph, "total" is always available. +#* Select from a list of detected attributes from the options menu. +cpu_graph_lower = "total" + +#* Toggles if the lower CPU graph should be inverted. +cpu_invert_lower = True + +#* Set to True to completely disable the lower CPU graph. +cpu_single_graph = False + +#* Show cpu box at bottom of screen instead of top. +cpu_bottom = False + +#* Shows the system uptime in the CPU box. +show_uptime = True + +#* Show cpu temperature. +check_temp = True + +#* Which sensor to use for cpu temperature, use options menu to select from list of available sensors. +cpu_sensor = "Auto" + +#* Show temperatures for cpu cores also if check_temp is True and sensors has been found. +show_coretemp = True + +#* Set a custom mapping between core and coretemp, can be needed on certain cpus to get correct temperature for correct core. +#* Use lm-sensors or similar to see which cores are reporting temperatures on your machine. +#* Format "x:y" x=core with wrong temp, y=core with correct temp, use space as separator between multiple entries. +#* Example: "4:0 5:1 6:3" +cpu_core_map = "" + +#* Which temperature scale to use, available values: "celsius", "fahrenheit", "kelvin" and "rankine". +temp_scale = "celsius" + +#* Use base 10 for bits/bytes sizes, KB = 1000 instead of KiB = 1024. +base_10_sizes = False + +#* Show CPU frequency. +show_cpu_freq = True + +#* Draw a clock at top of screen, formatting according to strftime, empty string to disable. +#* Special formatting: /host = hostname | /user = username | /uptime = system uptime +clock_format = "%X" + +#* Update main ui in background when menus are showing, set this to false if the menus is flickering too much for comfort. +background_update = True + +#* Custom cpu model name, empty string to disable. +custom_cpu_name = "" + +#* Optional filter for shown disks, should be full path of a mountpoint, separate multiple values with whitespace " ". +#* Begin line with "exclude=" to change to exclude filter, otherwise defaults to "most include" filter. Example: disks_filter="exclude=/boot /home/user". +disks_filter = "" + +#* Show graphs instead of meters for memory values. +mem_graphs = True + +#* Show mem box below net box instead of above. +mem_below_net = False + +#* Count ZFS ARC in cached and available memory. +zfs_arc_cached = True + +#* If swap memory should be shown in memory box. +show_swap = True + +#* Show swap as a disk, ignores show_swap value above, inserts itself after first disk. +swap_disk = True + +#* If mem box should be split to also show disks info. +show_disks = True + +#* Filter out non physical disks. Set this to False to include network disks, RAM disks and similar. +only_physical = True + +#* Read disks list from /etc/fstab. This also disables only_physical. +use_fstab = True + +#* Setting this to True will hide all datasets, and only show ZFS pools. (IO stats will be calculated per-pool) +zfs_hide_datasets = False + +#* Set to true to show available disk space for privileged users. +disk_free_priv = False + +#* Toggles if io activity % (disk busy time) should be shown in regular disk usage view. +show_io_stat = True + +#* Toggles io mode for disks, showing big graphs for disk read/write speeds. +io_mode = False + +#* Set to True to show combined read/write io graphs in io mode. +io_graph_combined = False + +#* Set the top speed for the io graphs in MiB/s (100 by default), use format "mountpoint:speed" separate disks with whitespace " ". +#* Example: "/mnt/media:100 /:20 /boot:1". +io_graph_speeds = "" + +#* Set fixed values for network graphs in Mebibits. Is only used if net_auto is also set to False. +net_download = 100 + +net_upload = 100 + +#* Use network graphs auto rescaling mode, ignores any values set above and rescales down to 10 Kibibytes at the lowest. +net_auto = True + +#* Sync the auto scaling for download and upload to whichever currently has the highest scale. +net_sync = False + +#* Starts with the Network Interface specified here. +net_iface = "" + +#* Show battery stats in top right if battery is present. +show_battery = True + +#* Which battery to use if multiple are present. "Auto" for auto detection. +selected_battery = "Auto" + +#* Set loglevel for "~/.config/btop/btop.log" levels are: "ERROR" "WARNING" "INFO" "DEBUG". +#* The level set includes all lower levels, i.e. "DEBUG" will show all logging info. +log_level = "WARNING" \ No newline at end of file diff --git a/config/btop/btop.log b/config/btop/btop.log new file mode 100644 index 00000000..f3b03fd1 --- /dev/null +++ b/config/btop/btop.log @@ -0,0 +1,3 @@ + +2022/06/30 (12:53:42) | ===> btop++ v.1.2.3 +2022/06/30 (12:53:42) | ERROR: Failed to get size of terminal! diff --git a/config/btop/themes/proxzima.theme b/config/btop/themes/proxzima.theme new file mode 100644 index 00000000..02d14d96 --- /dev/null +++ b/config/btop/themes/proxzima.theme @@ -0,0 +1,43 @@ +theme[main_bg]="#161925" +theme[main_fg]="#CDD6F4" +theme[title]="#CDD6F4" +theme[hi_fg]="#89B4FA" +theme[selected_bg]="#45475A" +theme[selected_fg]="#89B4FA" +theme[inactive_fg]="#7F849C" +theme[graph_text]="#F5E0DC" +theme[meter_bg]="#45475A" +theme[proc_misc]="#F5E0DC" +theme[cpu_box]="#74C7EC" +theme[mem_box]="#A6E3A1" +theme[net_box]="#CBA6F7" +theme[proc_box]="#F2CDCD" +theme[div_line]="#6C7086" +theme[temp_start]="#F9E2AF" +theme[temp_mid]="#FAB387" +theme[temp_end]="#F38BA8" +theme[cpu_start]="#74C7EC" +theme[cpu_mid]="#89DCEB" +theme[cpu_end]="#94E2D5" +theme[free_start]="#94E2D5" +theme[free_mid]="#94E2D5" +theme[free_end]="#A6E3A1" +theme[cached_start]="#F5C2E7" +theme[cached_mid]="#F5C2E7" +theme[cached_end]="#CBA6F7" +theme[available_start]="#F5E0DC" +theme[available_mid]="#F2CDCD" +theme[available_end]="#F2CDCD" +theme[used_start]="#FAB387" +theme[used_mid]="#FAB387" +theme[used_end]="#F38BA8" +theme[download_start]="#B4BEFE" +theme[download_mid]="#B4BEFE" +theme[download_end]="#CBA6F7" +theme[upload_start]="#B4BEFE" +theme[upload_mid]="#B4BEFE" +theme[upload_end]="#CBA6F7" +theme[process_start]="#74C7EC" +theme[process_mid]="#89DCEB" +theme[process_end]="#94E2D5" + diff --git a/config/cava/config b/config/cava/config new file mode 100644 index 00000000..06f4be63 --- /dev/null +++ b/config/cava/config @@ -0,0 +1,163 @@ +## Configuration file for CAVA. Default values are commented out. Use either ';' or '#' for commenting. + + +[general] + +# Smoothing mode. Can be 'normal', 'scientific' or 'waves'. +mode = normal + +# Accepts only non-negative values. +framerate = 60 + +# 'autosens' will attempt to decrease sensitivity if the bars peak. 1 = on, 0 = off +# 'overshoot' allows bars to overshoot (in % of terminal height) without initiating autosens. +; autosens = 1 +; overshoot = 20 + +# Manual sensitivity in %. Autosens must be turned off for this to take effect. +# 200 means double height. Accepts only non-negative values. +; sensitivity = 100 + +# The number of bars (0-200). 0 sets it to auto (fill up console). +# Bars' width and space between bars in number of characters. +bars = 0 +bar_width = 4 +bar_spacing = 1 + +# Lower and higher cutoff frequencies for lowest and highest bars +# the bandwidth of the visualizer. +# Note: there is a minimum total bandwidth of 43Mhz x number of bars. +# Cava will automatically increase the higher cutoff if a too low band is specified. +; lower_cutoff_freq = 50 +; higher_cutoff_freq = 10000 + + + +[input] + +# Audio capturing method. Possible methods are: 'pulse', 'alsa' or 'fifo'. +# Defaults to 'pulse', 'alsa' or 'fifo', in that order, dependent on what support cava was built with. +# +# All input methods uses the same config variable 'source' +# to define where it should get the audio. +# +# For pulseaudio 'source' will be the source. Default: 'auto', which uses the monitor source of the default sink +# (all pulseaudio sinks(outputs) have 'monitor' sources(inputs) associated with them). +# +# For alsa 'source' will be the capture device. +# For fifo 'source' will be the path to fifo-file. +method = pulse +source = auto + +; method = alsa +; source = hw:Loopback,1 + +; method = fifo +; source = /tmp/mpd.fifo + + + +[output] + +# Ouput method. Can be 'ncurses', 'noncurses' or 'raw'. +# 'noncurses' is for systems that does not suport ncurses. +# 'raw' is a 16 bit data stream of the bar heights that can be used to send to other applications. +# 'raw' defaults to 200 bars, which can be adjusted in the 'bars' option above. +method = ncurses + +# Visual styles. Can be 'stereo' or 'mono'. +# 'stereo' mirrors both channels with low frequencies in center. +# 'mono' averages both channels and outputs left to right lowest to highest frequencies. +style = mono + +# Raw output target. A fifo will be created if target does not exist. +; raw_target = /dev/stdout + +# Raw data format. Can be 'binary' or 'ascii'. +; data_format = binary + +# Binary bit format, can be '8bit' (0-255) or '16bit' (0-65530). +; bit_format = 16bit + +# Ascii max value. In 'ascii' mode range will run from 0 to value specified here +; ascii_max_range = 1000 + +# Ascii delimiters. In ascii format each bar and frame is separated by a delimiters. +# Use decimal value in ascii table (i.e. 59 = ';' and 10 = '\n' (line feed)). +; bar_delimiter = 59 +; frame_delimiter = 10 + + + +# [color] + +# # Colors can be one of seven predefined: black, blue, cyan, green, magenta, red, white, yellow. +# # Or defined by hex code '#xxxxxx' (hex code must be within ''). User defined colors requires a +# # terminal that can change color definitions such as Gnome-terminal or rxvt. +# ; background = black +# ; foreground = cyan + +# # Gradient mode, only hex defined colors are supported, background must also be defined in hex +# # or remain commented out. 1 = on, 0 = off. Warning: for certain terminal emulators cava will +# # not able to restore color definitions on exit, simply restart your terminal to restore colors. +# gradient = 1 +# gradient_color_1 = '#0099ff' +# gradient_color_2 = '#ff3399' + + + +[smoothing] + +# Multiplier for the integral smoothing calculations. Takes values from 0-0.99. +# Higher values means smoother, but less precise. Set to 0 to disable. +; integral = 0.7 + +# Disables or enables the so-called "Monstercat smoothing". Set to 0 to disable. +; monstercat = 1 +; waves = 1 + +# Set gravity multiplier for "drop off". Higher values means bars will drop faster. +# Accepts only non-negative values. 0.5 means half gravity, 2 means double. Set to 0 to disable "drop off". +; gravity = 1 + + +# In bar height, bars that would have been lower that this will not be drawn. +; ignore = 0 + + +[eq] + +# This one is tricky. You can have as much keys as you want. +# Remember to uncomment more then one key! More keys = more precision. +# Look at readme.md on github for further explanations and examples. +; 1 = 1 # bass +; 2 = 1 +; 3 = 1 # midtone +; 4 = 1 +; 5 = 1 # treble + + +[color] + +background = '#161925' +gradient = 1 +gradient_count = 6 +gradient_color_1 = '#31748f' +gradient_color_2 = '#9ccfd8' +gradient_color_3 = '#c4a7e7' +gradient_color_4 = '#ebbcba' +gradient_color_5 = '#f6c177' +gradient_color_6 = '#eb6f92' + +[color] + +gradient = 1 + +gradient_color_1 = '#94e2d5' +gradient_color_2 = '#89dceb' +gradient_color_3 = '#74c7ec' +gradient_color_4 = '#89b4fa' +gradient_color_5 = '#cba6f7' +gradient_color_6 = '#f5c2e7' +gradient_color_7 = '#eba0ac' +gradient_color_8 = '#f38ba8' diff --git a/config/cava/shaders/bar_spectrum.frag b/config/cava/shaders/bar_spectrum.frag new file mode 100644 index 00000000..b0789132 --- /dev/null +++ b/config/cava/shaders/bar_spectrum.frag @@ -0,0 +1,79 @@ +#version 330 + +in vec2 fragCoord; +out vec4 fragColor; + +// bar values. defaults to left channels first (low to high), then right (high to low). +uniform float bars[512]; + +uniform int bars_count; // number of bars (left + right) (configurable) +uniform int bar_width; // bar width (configurable), not used here +uniform int bar_spacing; // space bewteen bars (configurable) + +uniform vec3 u_resolution; // window resolution + +//colors, configurable in cava config file (r,g,b) (0.0 - 1.0) +uniform vec3 bg_color; // background color +uniform vec3 fg_color; // foreground color + +uniform int gradient_count; +uniform vec3 gradient_colors[8]; // gradient colors + +vec3 normalize_C(float y,vec3 col_1, vec3 col_2, float y_min, float y_max) +{ + //create color based on fraction of this color and next color + float yr = (y - y_min) / (y_max - y_min); + return col_1 * (1.0 - yr) + col_2 * yr; +} + +void main() +{ + // find which bar to use based on where we are on the x axis + float x = u_resolution.x * fragCoord.x; + int bar = int(bars_count * fragCoord.x); + + //calculate a bar size + float bar_size = u_resolution.x / bars_count; + + //the y coordinate and bar values are the same + float y = bars[bar]; + + // make sure there is a thin line at bottom + if (y * u_resolution.y < 1.0) + { + y = 1.0 / u_resolution.y; + } + + //draw the bar up to current height + if (y > fragCoord.y) + { + //make some space between bars basen on settings + if (x > (bar + 1) * (bar_size) - bar_spacing) + { + fragColor = vec4(bg_color,1.0); + } + else + { + if (gradient_count == 0) + { + fragColor = vec4(fg_color,1.0); + } + else + { + //find which color in the configured gradient we are at + int color = int((gradient_count - 1) * fragCoord.y); + + //find where on y this and next color is supposed to be + float y_min = color / (gradient_count - 1.0); + float y_max = (color + 1.0) / (gradient_count - 1.0); + + //make color + fragColor = vec4(normalize_C(fragCoord.y, gradient_colors[color], gradient_colors[color + 1], y_min, y_max), 1.0); + } + } + } + else + { + fragColor = vec4(bg_color,1.0); + } +} \ No newline at end of file diff --git a/config/cava/shaders/northern_lights.frag b/config/cava/shaders/northern_lights.frag new file mode 100644 index 00000000..ecd859a7 --- /dev/null +++ b/config/cava/shaders/northern_lights.frag @@ -0,0 +1,34 @@ +#version 330 + +in vec2 fragCoord; +out vec4 fragColor; + +// bar values. defaults to left channels first (low to high), then right (high to low). +uniform float bars[512]; + +uniform int bars_count; // number of bars (left + right) (configurable) + +uniform vec3 u_resolution; // window resolution, not used here + +//colors, configurable in cava config file +uniform vec3 bg_color; // background color(r,g,b) (0.0 - 1.0), not used here +uniform vec3 fg_color; // foreground color, not used here + +void main() +{ + // find which bar to use based on where we are on the x axis + int bar = int(bars_count * fragCoord.x); + + float bar_y = 1.0 - abs((fragCoord.y - 0.5)) * 2.0; + float y = (bars[bar]) * bar_y; + + float bar_x = (fragCoord.x - float(bar) / float(bars_count)) * bars_count; + float bar_r = 1.0 - abs((bar_x - 0.5)) * 2; + + bar_r = bar_r * bar_r * 2; + + // set color + fragColor.r = fg_color.x * y * bar_r; + fragColor.g = fg_color.y * y * bar_r; + fragColor.b = fg_color.z * y * bar_r; +} diff --git a/config/cava/shaders/pass_through.vert b/config/cava/shaders/pass_through.vert new file mode 100644 index 00000000..a4f20e52 --- /dev/null +++ b/config/cava/shaders/pass_through.vert @@ -0,0 +1,14 @@ +#version 330 + + +// Input vertex data, different for all executions of this shader. +layout(location = 0) in vec3 vertexPosition_modelspace; + +// Output data ; will be interpolated for each fragment. +out vec2 fragCoord; + +void main() +{ + gl_Position = vec4(vertexPosition_modelspace,1); + fragCoord = (vertexPosition_modelspace.xy+vec2(1,1))/2.0; +} diff --git a/config/geany/colorschemes/Sweet-Dracula.conf b/config/geany/colorschemes/Sweet-Dracula.conf new file mode 100644 index 00000000..5d5d2e99 --- /dev/null +++ b/config/geany/colorschemes/Sweet-Dracula.conf @@ -0,0 +1,119 @@ +# Sweet-Dracula.conf +# +# Copyright 2022 PROxZIMA +# Reference the filetypes files before editing this config file. +# +# Color Palette +# Background 0x161925 +# Current Line 0x44475a +# Selection 0x44475a +# Foreground 0xf8f8f2 +# Comment 0x6272a4 +# Cyan 0x8be9fd +# Green 0x50fa7b +# Orange 0xffb86c +# Pink 0xff79c6 +# Purple 0xbd93f9 +# Red 0xff5555 +# Yellow 0xf1fa8c + +[theme_info] +name=Sweet Dracula +description=Sweet Dracula Theme for Geany +version=1.0.0 +author=PROxZIMA +url= + +[named_styles] + +default=0xf8f8f2;0x161925 +error=0xffff5555 + + +# Editor styles +#------------------------------------------------------------------------------- +selection=;0x2F3438;true;true +current_line=0x44475a +brace_good=0x50fa7b;;true +brace_bad=0xff5555;;true +margin_line_number=0x6272a4;0x161925 +margin_folding=0x6272a4;0x161925 +fold_symbol_highlight=0x161925 +indent_guide=0x586e75 +caret=0xf8f8f2 +marker_line=0x6272a4; +marker_search=0x6272a4; +marker_mark=0x6272a4; +call_tips=0x839496;0x002b36 +white_space=indent_guide + + +# Programming languages +#------------------------------------------------------------------------------- + +comment=0x6272a4 +comment_doc=comment +comment_line=comment +comment_line_doc=comment_doc +comment_doc_keyword=comment_doc,bold +comment_doc_keyword_error=comment_doc,italic + +number=0xbd93f9 +number_1=number +number_2=number_1 + +type=0xff79c6 +class=type +function=0x50fa7b +parameter=function + +keyword=0x8be9fd;;false;true +keyword_1=keyword +keyword_2=keyword +keyword_3=keyword_1 +keyword_4=keyword_1 + +identifier=default +identifier_1=identifier +identifier_2=identifier +identifier_3=identifier_1 +identifier_4=identifier_1 + +string=0xf1fa8c +string_1=string +string_2=string_1 +string_3=default +string_4=default +string_eol=0xdc322f +character=string_1 +backtick=string_2 +here_doc=string_2 + +scalar=string_2 +label=default,bold +preprocessor=0xcb4b16 +regex=0x6c71c4 +operator=0xff79c6 +decorator=0x50fa7b +other=default +extra=keyword; + + +# Markup-type languages +#------------------------------------------------------------------------------- + +tag=type +tag_unknown=tag,bold +tag_end=tag,bold +attribute=keyword_1 +attribute_unknown=attribute,bold +value=string_1 +entity=default + + +# Diff +#------------------------------------------------------------------------------- + +line_added=0x859900 +line_removed=0xdc322f +line_changed=0x268bd2 diff --git a/config/geany/filedefs/filetypes.README b/config/geany/filedefs/filetypes.README new file mode 100644 index 00000000..fe58ed10 --- /dev/null +++ b/config/geany/filedefs/filetypes.README @@ -0,0 +1,2 @@ +Copy files from /usr/share/geany/filedefs to this directory to overwrite them. To use the defaults, just delete the file in this directory. +For more information read the documentation (in /usr/share/doc/geany/html/index.html or visit https://www.geany.org/). \ No newline at end of file diff --git a/config/geany/geany.conf b/config/geany/geany.conf new file mode 100644 index 00000000..398fb153 --- /dev/null +++ b/config/geany/geany.conf @@ -0,0 +1,236 @@ +[geany] +default_open_path= +cmdline_new_files=true +notebook_double_click_hides_widgets=false +tab_close_switch_to_mru=true +tab_pos_sidebar=2 +sidebar_pos=0 +symbols_sort_mode=1 +msgwin_orientation=0 +highlighting_invert_all=false +pref_main_search_use_current_word=true +check_detect_indent=false +detect_indent_width=true +use_tab_to_indent=true +pref_editor_tab_width=4 +indent_mode=3 +indent_type=0 +virtualspace=1 +autocomplete_doc_words=true +completion_drops_rest_of_word=false +autocompletion_max_entries=30 +autocompletion_update_freq=250 +color_scheme=Sweet-Dracula.conf +scroll_lines_around_cursor=20 +mru_length=10 +disk_check_timeout=30 +show_editor_scrollbars=true +brace_match_ltgt=false +use_gtk_word_boundaries=true +complete_snippets_whilst_editing=false +indent_hard_tab_width=8 +editor_ime_interaction=0 +use_atomic_file_saving=false +gio_unsafe_save_backup=false +use_gio_unsafe_file_saving=true +keep_edit_history_on_reload=true +show_keep_edit_history_on_reload_msg=false +reload_clean_doc_on_file_change=false +save_config_on_file_change=true +extract_filetype_regex=-\\*-\\s*([^\\s]+)\\s*-\\*- +allow_always_save=false +find_selection_type=0 +replace_and_find_by_default=true +show_symbol_list_expanders=true +compiler_tab_autoscroll=true +statusbar_template=line: %l / %L col: %c sel: %s %w %t %mmode: %M encoding: %e filetype: %f scope: %S +new_document_after_close=false +msgwin_status_visible=true +msgwin_compiler_visible=true +msgwin_messages_visible=true +msgwin_scribble_visible=true +documents_show_paths=true +sidebar_page=2 +pref_main_load_session=true +pref_main_project_session=true +pref_main_project_file_in_basedir=false +pref_main_save_winpos=true +pref_main_save_wingeom=true +pref_main_confirm_exit=false +pref_main_suppress_status_messages=false +switch_msgwin_pages=false +beep_on_errors=true +auto_focus=false +sidebar_symbol_visible=true +sidebar_openfiles_visible=true +editor_font=OperatorMonoSSmLig Nerd Font weight=325 10 +tagbar_font=Operator Mono SSm Lig weight=330 9 +msgwin_font=Operator Mono SSm Lig weight=330 9 +show_notebook_tabs=true +show_tab_cross=true +tab_order_ltr=true +tab_order_beside=false +tab_pos_editor=2 +tab_pos_msgwin=2 +use_native_windows_dialogs=false +show_indent_guide=false +show_white_space=false +show_line_endings=false +show_markers_margin=true +show_linenumber_margin=true +long_line_enabled=false +long_line_type=0 +long_line_column=72 +long_line_color=#252525 +symbolcompletion_max_height=10 +symbolcompletion_min_chars=1 +use_folding=true +unfold_all_children=false +use_indicators=true +line_wrapping=true +auto_close_xml_tags=true +complete_snippets=true +auto_complete_symbols=true +pref_editor_disable_dnd=false +pref_editor_smart_home_key=true +pref_editor_newline_strip=true +line_break_column=72 +auto_continue_multiline=true +comment_toggle_mark=~ +scroll_stop_at_last_line=false +autoclose_chars=0 +pref_editor_default_new_encoding=UTF-8 +pref_editor_default_open_encoding=none +default_eol_character=2 +pref_editor_new_line=true +pref_editor_ensure_convert_line_endings=true +pref_editor_replace_tabs=false +pref_editor_trail_space=true +pref_toolbar_show=false +pref_toolbar_append_to_menu=true +pref_toolbar_use_gtk_default_style=false +pref_toolbar_use_gtk_default_icon=false +pref_toolbar_icon_style=1 +pref_toolbar_icon_size=1 +pref_template_developer=PROxZIMA +pref_template_company= +pref_template_mail=contact@proxzima.dev +pref_template_initial=P +pref_template_version=1.0 +pref_template_year=%Y +pref_template_date=%Y-%m-%d +pref_template_datetime=%d.%m.%Y %H:%M:%S %Z +context_action_cmd= +sidebar_visible=false +statusbar_visible=true +msgwindow_visible=false +fullscreen=false +color_picker_palette= +scribble_text=Yoo Sup! +scribble_pos=8 +treeview_position=209 +msgwindow_position=534 +geometry=0;0;941;498;1; +custom_date_format= +tab_label_length=1000 +show_line_endings_only_when_differ=false +symbols_group_by_type=true +openfiles_path_mode=2 +backspace_unindent=true +change_history_markers=false +change_history_indicators=false +warn_on_project_close=true + +[build-menu] +number_ft_menu_items=0 +number_non_ft_menu_items=0 +number_exec_menu_items=0 + +[search] +pref_search_hide_find_dialog=true +pref_search_always_wrap=false +pref_search_current_file_dir=true +find_all_expanded=false +replace_all_expanded=true +position_find_x=0 +position_find_y=0 +position_replace_x=0 +position_replace_y=0 +position_fif_x=-1 +position_fif_y=-1 +fif_regexp=false +fif_case_sensitive=true +fif_match_whole_word=false +fif_invert_results=false +fif_recursive=false +fif_extra_options= +fif_use_extra_options=false +fif_files= +fif_files_mode=0 +find_regexp=false +find_regexp_multiline=false +find_case_sensitive=false +find_escape_sequences=false +find_match_whole_word=false +find_match_word_start=true +find_close_dialog=true +replace_regexp=true +replace_regexp_multiline=true +replace_case_sensitive=false +replace_escape_sequences=false +replace_match_whole_word=false +replace_match_word_start=true +replace_search_backwards=false +replace_close_dialog=false + +[plugins] +load_plugins=true +custom_plugin_path= +active_plugins=/usr/lib/geany/autoclose.so;/usr/lib/geany/git-changebar.so;/usr/lib/geany/treebrowser.so; + +[VTE] +send_cmd_prefix= +send_selection_unsafe=false +load_vte=true +font=CaskaydiaCove Nerd Font 10 +scroll_on_key=true +scroll_on_out=false +enable_bash_keys=true +ignore_menu_bar_accel=false +follow_path=false +run_in_vte=false +skip_run_script=false +cursor_blinks=true +scrollback_lines=500 +shell=/usr/bin/zsh +colour_fore=#F8F8F8 +colour_back=#161925 +last_dir=/home/proxzima + +[tools] +terminal_cmd=x-terminal-emulator -e "/bin/sh %c" +browser_cmd=firefox +grep_cmd=grep + +[printing] +print_cmd=lpr '%f' +use_gtk_printing=true +print_line_numbers=true +print_page_numbers=true +print_page_header=true +page_header_basename=false +page_header_datefmt=%c + +[project] +session_file= +project_file_path=/home/proxzima/Documents/PROxZIMA + +[files] +recent_files=/home/proxzima/.scripts/screenshot_full;/home/proxzima/.config/gamemode.ini;/home/proxzima/Documents/PROxZIMA/DarkSpider/modules/visualization.py;/home/proxzima/.config/user-dirs.dirs;/home/proxzima/.config/user-dirs.locale;/home/proxzima/.scripts/screenshot;/home/proxzima/.config/hypr/hyprland.conf;/home/proxzima/.scripts/wttr;/home/proxzima/.scripts/appindicator.py;/home/proxzima/Downloads/a/x.sh; +recent_projects= +current_page=4 +FILE_NAME_0=919;Python;0;EUTF-8;0;1;1;%2Fhome%2Fproxzima%2FDocuments%2FPROxZIMA%2FDarkSpider%2Fmodules%2Fhelper%2Fhelper.py;0;4 +FILE_NAME_1=2488;Python;0;EUTF-8;0;1;1;%2Fhome%2Fproxzima%2F.local%2Flib%2Fpython3.10%2Fsite-packages%2Fmatplotlib%2Fbackends%2Fbackend_gtk4.py;0;4 +FILE_NAME_2=80;Python;0;EUTF-8;0;1;1;%2Fhome%2Fproxzima%2F.python_startup.py;0;4 +FILE_NAME_3=5419;Python;0;EUTF-8;0;1;1;%2Fhome%2Fproxzima%2F.scripts%2Fappindicator.py;0;4 +FILE_NAME_4=5432;Conf;0;EUTF-8;0;1;1;%2Fhome%2Fproxzima%2F.config%2Fhypr%2Fhyprland.conf;0;4 diff --git a/config/geany/keybindings.conf b/config/geany/keybindings.conf new file mode 100644 index 00000000..bb77578e --- /dev/null +++ b/config/geany/keybindings.conf @@ -0,0 +1,168 @@ +[Bindings] +menu_new=n +menu_open=o +menu_open_selected=o +menu_save=s +menu_saveas= +menu_saveall=s +file_properties=v +menu_print=p +menu_close=w +menu_closeall=w +menu_reloadfile=r +menu_reloadall= +file_openlasttab= +menu_quit=q +menu_undo=z +menu_redo=y +edit_duplicateline=d +edit_deleteline=k +edit_deletelinetoend=Delete +edit_deletelinetobegin=BackSpace +edit_transposeline= +edit_scrolltoline=l +edit_scrolllineup=Up +edit_scrolllinedown=Down +edit_completesnippet=Tab +move_snippetnextcursor= +edit_suppresssnippetcompletion= +popup_contextaction= +edit_autocomplete=space +edit_calltip=space +edit_wordpartcompletion=Tab +edit_movelineup=Page_Up +edit_movelinedown=Page_Down +menu_cut=x +menu_copy=c +menu_paste=v +edit_copyline=c +edit_cutline=x +menu_selectall=a +edit_selectword=w +edit_selectline=l +edit_selectparagraph=p +edit_selectwordpartleft= +edit_selectwordpartright= +edit_togglecase=u +edit_commentlinetoggle=e +edit_commentline=slash +edit_uncommentline= +edit_increaseindent=i +edit_decreaseindent=u +edit_increaseindentbyspace= +edit_decreaseindentbyspace= +edit_autoindent= +edit_sendtocmd1=1 +edit_sendtocmd2=2 +edit_sendtocmd3=3 +edit_sendtocmd4= +edit_sendtocmd5= +edit_sendtocmd6= +edit_sendtocmd7= +edit_sendtocmd8= +edit_sendtocmd9= +edit_sendtovte= +format_reflowparagraph=j +edit_joinlines= +menu_insert_date=d +edit_insertwhitespace= +edit_insertlinebefore= +edit_insertlineafter= +menu_preferences=p +menu_pluginpreferences= +menu_find=f +menu_findnext=g +menu_findprevious=g +menu_findnextsel= +menu_findprevsel= +menu_replace=h +menu_findinfiles=f +menu_nextmessage= +menu_previousmessage= +popup_findusage=e +popup_finddocumentusage=d +find_markall=m +nav_back=Left +nav_forward=Right +menu_gotoline=l +edit_gotomatchingbrace= +edit_togglemarker=m +edit_gotonextmarker=period +edit_gotopreviousmarker=comma +popup_gototagdefinition=t +popup_gototagdeclaration=t +edit_gotolinestart=Home +edit_gotolineend=End +edit_gotolinestartvisual=Home +edit_gotolineendvisual=End +edit_prevwordstart= +edit_nextwordstart= +menu_toggleall= +menu_fullscreen=F11 +menu_messagewindow=grave +toggle_sidebar=b +menu_zoomin=plus +menu_zoomout=minus +normal_size=0 +menu_linewrap= +menu_linebreak= +menu_clone= +menu_strip_trailing_spaces= +menu_replacetabs= +menu_replacespaces= +menu_togglefold= +menu_foldall= +menu_unfoldall= +reloadtaglist=r +remove_markers= +remove_error_indicators= +remove_markers_and_indicators= +project_new= +project_open= +project_properties= +project_close= +build_compile=F8 +build_link=F9 +build_make=F9 +build_makeowntarget=F9 +build_makeobject=F8 +build_nexterror= +build_previouserror= +build_run=F5 +build_options= +menu_opencolorchooser= +menu_help=F1 +switch_editor=F2 +switch_search_bar=F7 +switch_message_window= +switch_compiler= +switch_messages= +switch_scribble=F6 +switch_vte=F4 +switch_sidebar= +switch_sidebar_symbol_list= +switch_sidebar_doc_list= +switch_tableft=Page_Up +switch_tabright=Page_Down +switch_tablastused=Tab +move_tableft=Page_Up +move_tabright=Page_Down +move_tabfirst= +move_tablast= + +[split_window] +split_horizontal=backslash +split_vertical=underscore +split_unsplit= + +[lua_scripts] +lua_script_1=Alt_L + +[file_browser] +focus_file_list= +focus_path_entry= +rename_object= +create_file= +create_dir= +rename_refresh= +track_current= diff --git a/config/geany/plugins/addons/addons.conf b/config/geany/plugins/addons/addons.conf new file mode 100644 index 00000000..d3674c73 --- /dev/null +++ b/config/geany/plugins/addons/addons.conf @@ -0,0 +1,17 @@ +[addons] +show_toolbar_doclist_item=true +doclist_sort_mode=2 +enable_openuri=false +enable_tasks=true +tasks_token_list=TODO;FIXME +tasks_scan_all_documents=true +enable_systray=true +enable_bookmarklist=false +enable_markword=true +enable_markword_single_click_deselect=true +strip_trailing_blank_lines=false +enable_xmltagging=false +enable_enclose_words=false +enable_enclose_words_auto=false +enable_colortip=true +enable_double_click_color_chooser=true diff --git a/config/geany/plugins/autoclose/autoclose.conf b/config/geany/plugins/autoclose/autoclose.conf new file mode 100644 index 00000000..568931b0 --- /dev/null +++ b/config/geany/plugins/autoclose/autoclose.conf @@ -0,0 +1,23 @@ +[autoclose] +parenthesis=true +abracket=true +abracket_htmlonly=true +cbracket=true +sbracket=true +dquote=true +squote=true +backquote=true +backquote_bashonly=true +comments_ac_enable=false +delete_pairing_brace=true +suppress_doubling=true +enclose_selections=true +comments_enclose=false +keep_selection=true +make_indent_for_cbracket=true +move_cursor_to_beginning=true +improved_cbracket_indent=true +whitesmiths_style=false +close_functions=true +bcksp_remove_pair=false +jump_on_tab=true diff --git a/config/geany/plugins/filebrowser/filebrowser.conf b/config/geany/plugins/filebrowser/filebrowser.conf new file mode 100644 index 00000000..561177d5 --- /dev/null +++ b/config/geany/plugins/filebrowser/filebrowser.conf @@ -0,0 +1,7 @@ +[filebrowser] +open_command=nautilus "%d" +show_hidden_files=true +hide_object_files=true +hidden_file_extensions=.o .obj .so .dll .a .lib .pyc +fb_follow_path=false +fb_set_project_base_path=true diff --git a/config/geany/plugins/geanylua/events/cleanup.lua b/config/geany/plugins/geanylua/events/cleanup.lua new file mode 100644 index 00000000..d6118abe --- /dev/null +++ b/config/geany/plugins/geanylua/events/cleanup.lua @@ -0,0 +1,2 @@ +geany.signal("hbox_menubar", "show") +geany.signal("vbox1", "style-updated") diff --git a/config/geany/plugins/geanylua/events/init.lua b/config/geany/plugins/geanylua/events/init.lua new file mode 100644 index 00000000..fc0c0057 --- /dev/null +++ b/config/geany/plugins/geanylua/events/init.lua @@ -0,0 +1,14 @@ +-- load and initialize toggle_menu script +local lua_path = geany.appinfo().scriptdir..geany.dirsep + +--[[ + start_action options: + restore - startup with the last menu bar state + *hide - startup with menu bar hidden + show - startup with menu bar visible + toggle - startup with visibility toggled from the last menu bar state +--]] +start_action = "hide" + +toggle_menu_bar = loadfile(lua_path.."toggle-menu-bar.lua") +toggle_menu_bar() diff --git a/config/geany/plugins/geanylua/hotkeys.cfg b/config/geany/plugins/geanylua/hotkeys.cfg new file mode 100644 index 00000000..f987198b --- /dev/null +++ b/config/geany/plugins/geanylua/hotkeys.cfg @@ -0,0 +1 @@ +toggle-menu-bar.lua diff --git a/config/geany/plugins/geanylua/toggle-menu-bar-hidden b/config/geany/plugins/geanylua/toggle-menu-bar-hidden new file mode 100644 index 00000000..e69de29b diff --git a/config/geany/plugins/geanylua/toggle-menu-bar.lua b/config/geany/plugins/geanylua/toggle-menu-bar.lua new file mode 100644 index 00000000..99c8b8d4 --- /dev/null +++ b/config/geany/plugins/geanylua/toggle-menu-bar.lua @@ -0,0 +1,63 @@ +lua_path=geany.appinfo().scriptdir..geany.dirsep +state_file=lua_path.."toggle-menu-bar-hidden" + +function is_visible() + local state_stat = geany.stat(state_file) + if (state_stat) and (state_stat.type == "r") then + return false + else + return true + end +end + +function hide() + file = io.open(state_file, "w+") + io.close(file) + geany.signal("hbox_menubar", "hide") + update() +end + +function show() + geany.signal("hbox_menubar", "show") + os.remove(state_file) + update() +end + +function update() + geany.signal("vbox1", "style-updated") +end + +function restore() + if is_visible() then + show() + else + hide() + end +end + +function toggle() + if is_visible() then + hide() + else + show() + end +end + +-- --------------- + +if not start_action then + toggle(); +else + local action_tbl = + { + ["hide"] = hide, + ["show"] = show, + ["restore"] = restore, + ["toggle"] = toggle, + } + + local func = action_tbl[start_action] + if (func) then + func() + end +end diff --git a/config/geany/plugins/git-changebar/git-changebar.conf b/config/geany/plugins/git-changebar/git-changebar.conf new file mode 100644 index 00000000..d77a83cc --- /dev/null +++ b/config/geany/plugins/git-changebar/git-changebar.conf @@ -0,0 +1,7 @@ +[general] +monitor-repository=true + +[colors] +line-added=#50fa7b +line-changed=#ffb86c +line-removed=#ff5454 diff --git a/config/geany/plugins/treebrowser/treebrowser.conf b/config/geany/plugins/treebrowser/treebrowser.conf new file mode 100644 index 00000000..167372e8 --- /dev/null +++ b/config/geany/plugins/treebrowser/treebrowser.conf @@ -0,0 +1,16 @@ +[treebrowser] +open_external_cmd=xdg-open '%d' +open_terminal=xterm +reverse_filter=false +one_click_chdoc=false +show_hidden_files=true +hide_object_files=false +show_bars=0 +chroot_on_dclick=false +follow_current_doc=true +on_delete_close_file=true +on_open_focus_editor=false +show_tree_lines=true +show_bookmarks=false +show_icons=2 +open_new_files=true diff --git a/config/geany/session.conf b/config/geany/session.conf new file mode 100644 index 00000000..e96a5132 --- /dev/null +++ b/config/geany/session.conf @@ -0,0 +1,29 @@ +[files] +current_page=-1 +recent_files=/home/sankalp/Downloads/New Empty File;/home/proxzima/.scripts/screenshot_full;/home/proxzima/.config/gamemode.ini;/home/proxzima/Documents/PROxZIMA/DarkSpider/modules/visualization.py;/home/proxzima/.config/user-dirs.dirs;/home/proxzima/.config/user-dirs.locale;/home/proxzima/.scripts/screenshot;/home/proxzima/.config/hypr/hyprland.conf;/home/proxzima/.scripts/wttr;/home/proxzima/.scripts/appindicator.py; +recent_projects= + +[project] +session_file= +project_file_path=/home/proxzima/Documents/PROxZIMA + +[geany] +treeview_position=209 +msgwindow_position=534 +geometry=0;0;946;1026;1; +sidebar_page=0 + +[search] +find_all_expanded=false +replace_all_expanded=true +position_find_x=0 +position_find_y=0 +position_replace_x=0 +position_replace_y=0 +position_fif_x=-1 +position_fif_y=-1 + +[plugins] +load_plugins=true +custom_plugin_path= +active_plugins=; diff --git a/config/geany/templates/templates.README b/config/geany/templates/templates.README new file mode 100644 index 00000000..3d25d1af --- /dev/null +++ b/config/geany/templates/templates.README @@ -0,0 +1,2 @@ +There are several template files in this directory. For these templates you can use wildcards. +For more information read the documentation (in /usr/share/doc/geany/html/index.html or visit https://www.geany.org/). \ No newline at end of file diff --git a/config/geany/ui_toolbar.xml b/config/geany/ui_toolbar.xml new file mode 100644 index 00000000..63f8a65f --- /dev/null +++ b/config/geany/ui_toolbar.xml @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/config/hypr/.current_wallpaper b/config/hypr/.current_wallpaper new file mode 120000 index 00000000..bad0f1fd --- /dev/null +++ b/config/hypr/.current_wallpaper @@ -0,0 +1 @@ +/home/sankalp/Pictures/wallpapers//25.jpg \ No newline at end of file diff --git a/config/hypr/UserConfigs/ENVariables.conf b/config/hypr/UserConfigs/ENVariables.conf new file mode 100644 index 00000000..25f720e8 --- /dev/null +++ b/config/hypr/UserConfigs/ENVariables.conf @@ -0,0 +1,20 @@ +#environment-variables +env = CLUTTER_BACKEND,wayland +env = GDK_BACKEND,wayland,x11 +env = QT_AUTO_SCREEN_SCALE_FACTOR,1 +env = QT_QPA_PLATFORM,wayland;xcb +env = QT_QPA_PLATFORMTHEME,qt5ct +env = QT_SCALE_FACTOR,1 +env = QT_WAYLAND_DISABLE_WINDOWDECORATION,1 +env = XDG_CURRENT_DESKTOP,Hyprland +env = XDG_SESSION_DESKTOP,Hyprland +env = XDG_SESSION_TYPE,wayland + +# vulkan +#env = WLR_RENDERER,vulkan + +# firefox +env = MOZ_ENABLE_WAYLAND,1 + +# Cursor size +env = XCURSOR_SIZE,6 diff --git a/config/hypr/UserConfigs/LaptopDisplay.conf b/config/hypr/UserConfigs/LaptopDisplay.conf new file mode 100644 index 00000000..ad597074 --- /dev/null +++ b/config/hypr/UserConfigs/LaptopDisplay.conf @@ -0,0 +1,4 @@ +## NOTE, THIS FILE IS BEING USED by disabling Laptop display monitor behaviour when closing lid. +## See notes on Laptops.conf + +#monitor = eDP-1, preferred, auto, 1 \ No newline at end of file diff --git a/config/hypr/UserConfigs/Laptops.conf b/config/hypr/UserConfigs/Laptops.conf new file mode 100644 index 00000000..a3ebd480 --- /dev/null +++ b/config/hypr/UserConfigs/Laptops.conf @@ -0,0 +1,66 @@ + +# See https://wiki.hyprland.org/Configuring/Keywords/ for more variable settings +# These configs are mostly for laptops. This is addemdum to Keybinds.conf + +$configs = $HOME/.config/hypr/configs +$UserConfigs = $HOME/.config/hypr/UserConfigs +$mainMod = SUPER +$scriptsDir = $HOME/.config/hypr/scripts + +# media controls using keyboards +bind = , xf86AudioPlayPause, exec, $scriptsDir/MediaCtrl.sh --pause +bind = , xf86AudioPause, exec, $scriptsDir/MediaCtrl.sh --pause +bind = , xf86AudioPlay, exec, $scriptsDir/MediaCtrl.sh --pause +bind = , xf86AudioNext, exec, $scriptsDir/MediaCtrl.sh --nxt +bind = , xf86AudioPrev, exec, $scriptsDir/MediaCtrl.sh --prv +bind = , xf86audiostop, exec, $scriptsDir/MediaCtrl.sh --stop + +#Brightness Control +bind = ,xf86KbdBrightnessDown, exec, $scriptsDir/BrightnessKbd.sh --dec #Keyboard brightness Down +bind = ,xf86KbdBrightnessUp, exec, $scriptsDir/BrightnessKbd.sh --inc #Keyboard brightness up +bind = ,XF86MonBrightnessUp, exec, $scriptsDir/Brightness.sh --inc +bind = ,XF86MonBrightnessDown, exec, $scriptsDir/Brightness.sh --dec +bind = $mainMod_SHIFT, D, exec, $scriptsDir/TouchPad.sh # Disable Touchpad + +#VolumeControl +bind = ,XF86AudioRaiseVolume, exec, $scriptsDir/Volume.sh --inc +bind = ,XF86AudioLowerVolume, exec, $scriptsDir/Volume.sh --dec +bind = ,XF86AudioMute, exec, $scriptsDir/Volume.sh --toggle +bind = ,XF86AudioMicMute, exec, $scriptsDir/Volume.sh --toggle-mic +bind = ,XF86AudioNext, exec, playerctl next +bind = ,XF86AudioPrev, exec, playerctl previous +bind = ,XF86AudioPlay, exec, playerctl play +bind = ,XF86AudioStop, exec, playerctl pause + + +# ScreenShot +bind = , Print, exec, $scriptsDir/ScreenShot.sh --now # Fullscreen +bind = ALT, Print, exec, $scriptsDir/ScreenShot.sh --in5 # Screenshot in 5 Sec +bind = SHIFT, Print, exec, $scriptsDir/ScreenShot.sh --in10 # Screenshot in 10 sec +bind = $mainMod, Z, exec, $scriptsDir/ScreenShot.sh --area + +# Laptops Other Key +bind = , xf86Sleep, exec, systemctl suspend # sleep button + +# Below are useful when you are connecting your laptop in external display +# Suggest you edit below for your laptop display +# From WIKI This is to disable laptop monitor when lid is closed. +# consult https://wiki.hyprland.org/hyprland-wiki/pages/Configuring/Binds/#switches +#bindl = , switch:off:Lid Switch,exec,hyprctl keyword monitor "eDP-1, preferred, auto, 1" +#bindl = , switch:on:Lid Switch,exec,hyprctl keyword monitor "eDP-1, disable" + +############################################################################# +### WARNING! Using this method has some caveats!! USE THIS PART WITH SOME CAUTION! +# CONS of doing this, is that you need to set up your wallpaper (SUPER W) and choose wallpaper. +# CAVEATS! Sometimes the Main Laptop Monitor DOES NOT have display that it needs to re-connect your external monitor +# One work around is to ensure that before shutting down laptop, MAKE SURE your laptop lid is OPEN!! +# Make sure to comment (put # on the both the bindl = , switch ......) above +# NOTE: Display for laptop are being generated into LaptopDisplay.conf +# This part is to be use if you do not want your main laptop monitor to wake up during say wallpaper change etc + +#bindl = , switch:off:Lid Switch,exec,echo "monitor = eDP-1, preferred, auto, 1" > $UserConfigs/LaptopDisplay.conf +#bindl = , switch:on:Lid Switch,exec,echo "monitor = eDP-1, disable" > $UserConfigs/LaptopDisplay.conf + +# for laptop-lid action (to erase the last entry) +#exec-once = echo "eDP-1, preferred, auto, 1" > $HOME/.config/hypr/UserConfigs/LaptopDisplay.conf +############################################################################## diff --git a/config/hypr/UserConfigs/Monitors.conf b/config/hypr/UserConfigs/Monitors.conf new file mode 100644 index 00000000..dca2e701 --- /dev/null +++ b/config/hypr/UserConfigs/Monitors.conf @@ -0,0 +1,49 @@ +# Monitor Configuration +# See Hyprland wiki for more details +# https://wiki.hyprland.org/Configuring/Monitors/ +# Configure your Display resolution, offset, scale and Monitors here, use `hyprctl monitors` to get the info. + +#Could help when scaling and not pixelating +xwayland { + force_zero_scaling = true +} + +# Monitors +monitor=,preferred,auto,1 + +# NOTE: for laptop, kindly check notes in Laptops.conf regarding display +# Created this inorder for the monitor display to not wake up if not intended. +# See here: https://github.com/hyprwm/Hyprland/issues/4090 + +#monitor = eDP-1, preferred, auto, 1 +#monitor = eDP-1, 2560x1440@165, 0x0, 1 #own screen +#monitor = DP-2, preferred, auto, 1 +#monitor = DP-1, preferred, auto, 1 +#monitor = HDMI-A-1, preferred,auto,1 + +# QEMU-KVM or any virtual box +#monitor = Virtual-1, 1920x1080@60,auto,1 + +# Hi Refresh Rate +#monitor=,highrr,auto,1 + +# High Resolution +#monitor=,highres,auto,1 + +# to disable a monitor +#monitor=name,disable + +# Mirror +#monitor=DP-3,1920x1080@60,0x0,1,mirror,DP-2 +#monitor=,preferred,auto,1,mirror,eDP-1 + + +# Example : +#monitor=eDP-1,2560x1440@165,0x0,1 +#workspace=HDMI-A-1,1 +#monitor=HDMI-A-1,2560x1440@144,0x0,1,mirror,eDP-1 +#workspace=HDMI-A-2,2 + +#monitor=eDP-1,transform,0 +#monitor=eDP-1,addreserved,10,10,10,49 +#workspace=eDP-1,1 diff --git a/config/hypr/UserConfigs/Startup_Apps.conf b/config/hypr/UserConfigs/Startup_Apps.conf new file mode 100644 index 00000000..8dcf69c3 --- /dev/null +++ b/config/hypr/UserConfigs/Startup_Apps.conf @@ -0,0 +1,57 @@ +#Commands & Apps to be executed at launch + +$scriptsDir = $HOME/.config/hypr/scripts +$UserscriptsDir = $HOME/.config/hypr/UserScripts +$lock = swaylock +$SwwwRandom = $scriptsDir/WallpaperRandom.sh +$WallpaperPath = $HOME/Pictures/wallpapers + + +# wallpaper stuff / More wallpaper options below +exec-once = swww query || swww init +exec-once = $SwwwRandom $WallpaperPath # random wallpaper switcher every 30 minutes + +# Startup +exec-once = dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP +exec-once = systemctl --user import-environment WAYLAND_DISPLAY XDG_CURRENT_DESKTOP + +# Polkit (Polkit Gnome / KDE) +exec-once = $scriptsDir/Polkit.sh + +# Battery Notification +exec-once = $UserScriptsDir/BatteryNotify.sh + +# starup apps +exec-once = waybar & +exec-once = swaync & +exec-once = blueman-applet & +exec-once = nm-applet --indicator & +exec-once = udiskie & +exec-once = blueman-applet & + + +#clipboard manager +exec-once = wl-paste --type text --watch cliphist store +exec-once = wl-paste --type image --watch cliphist store + +# Rainbow borders +exec-once = $UserscriptsDir/RainbowBorders.sh + +# sway-idle with lock only +#exec-once = swayidle -w timeout 900 '$lock' +# sway-idle with lock and sleep +#exec-once = swayidle -w timeout 900 '$lock' timeout 1200 'hyprctl dispatch dpms off' resume 'hyprctl dispatch dpms on' before-sleep '$lock' +# sway idle without lock +#exec-once = swayidle -w timeout 900 'hyprctl dispatch dpms off' resume 'hyprctl dispatch dpms on' + +## Here are list of features available but disabled by default +#exec-once = swww query || swww init && swww img $HOME/Pictures/wallpapers/3.png # persistent wallpaper + +#gnome polkit for nixos +#exec-once = $scriptsDir/Polkit-NixOS.sh + +# xdg-desktop-portal-hyprland (should be auto starting. However, you can force to start) +#exec-once = $scriptsDir/PortalHyprland.sh + +# wlsunset - for automatic gamma adjustment. Default is 1900 to 0700 (7pm to 7am). Edit Sunset.sh accordingly +# exec-once = $UserScriptsDir/Sunset.sh diff --git a/config/hypr/UserConfigs/UserKeybinds.conf b/config/hypr/UserConfigs/UserKeybinds.conf new file mode 100644 index 00000000..ebe1393d --- /dev/null +++ b/config/hypr/UserConfigs/UserKeybinds.conf @@ -0,0 +1,61 @@ +# This is where you put your own keybinds. Be Mindful to check as well ~/.config/hypr/configs/Keybinds.conf to avoid conflict + +# See https://wiki.hyprland.org/Configuring/Keywords/ for more settings and variables +# See also Laptops.conf for laptops keybinds + +$mainMod = SUPER +$files = thunar +$term = kitty +$browser = firefox +$scriptsDir = $HOME/.config/hypr/scripts +$UserScripts = $HOME/.config/hypr/UserScripts + +# rofi App launcher +bindr = $mainMod, $mainMod_L, exec, pkill rofi || rofi -show drun -modi drun,filebrowser,run,window +bind = $mainMod, D, exec, pkill rofi || rofi -show drun -modi drun,filebrowser,run,window + +# Terminals +bind = CTRL_ALT, Return, exec, kitty --start-as=fullscreen --title all_is_kitty +bind = ALT_SHIFT,Return, exec, kitty --title fly_is_kitty --single-instance +bind = $mainMod, Return, exec, $term + +# Apps +bind = $mainMod, E, exec, $files +bind = ALT, F, exec, $browser +bind = ALT, Y, exec, kitty --title fly_is_kitty sh -c 'yazi' +bind = $mainMod, Slash, exec, kitty nvim +bind = $mainMod_SHIFT, Slash, exec, code + +# FEATURES / EXTRAS +bind = $mainMod ALT, R, exec, $scriptsDir/Refresh.sh # Refresh waybar, swaync, rofi +bind = $mainMod, F1, exec, $UserScripts/KeyBinds.sh # Keybinds +bind = $mainMod, X, exec, $scriptsDir/RofiPower.sh # Powermenu +bind = $mainMod, N, exec, $scriptsDir/RofiNotes.sh # Notes +bind = $mainMod, T, exec, $scriptsDir/RofiTmux.sh # Tmux +bind = $mainMod_SHIFT, A, exec, $scriptsDir/ToggleAnimation.sh -t # Animation ON/OFF +bind = ALT, slash, exec, $scriptsDir/RofiEmoji.sh # Emoji +bind = ALT, Q, exec, $scriptsDir/QuickLink.sh # QuickOpen Links +bind = ALT, E, exec, $scriptsDir/QuickEdit.sh # Quick Edit Hyprland Settings +bind = SHIFT_ALT, T, exec, $scriptsDir/RofiTodo.sh # Todo List +bind = ALT, F1, exec, $scriptsDir/SwitchKeyboardLayout.sh # Switch Keyboard Layout +bind = $mainMod_SHIFT, Q, exec, $scriptsDir/ChangeBlur.sh # Toggle blur settings +bind = $mainMod, R, exec, $scriptsDir/RofiRecord.sh # Screen Recorder +bind = $mainMod_SHIFT, R, exec, pkill wf-recorder --signal SIGINT && notify-send "๐Ÿ›‘ Recording stopped" && pkill -RTMIN+8 waybar +bind = $mainMod, space, exec, $scriptsDir/ChangeLayout.sh # Toggle Master or Dwindle Layout +bind = SHIFT_ALT, C, exec, $scriptsDir/ClipManager.sh # Clipboard Manager +bind = $mainMod_SHIFT, N, exec, swaync-client -t -sw # swayNC panel + +# Online Music related keybinds +bind = ALT, M, exec, $scriptsDir/RofiMusic.sh +bind = ALT, S, exec, $scriptsDir/MusicControl.sh -s # Stop +bind = ALT, N, exec, $scriptsDir/MusicControl.sh -n # Next +bind = ALT, P, exec, $scriptsDir/MusicControl.sh -p # Previous +bind = ALT, R, exec, $scriptsDir/MusicControl.sh -k # Resume + +# Wallpaper related keybinds +bind = $mainMod_SHIFT, W, exec, $scriptsDir/WallpaperSelect.sh # Select Wallpaper to apply +bind = SHIFT_ALT, W, exec, $scriptsDir/Wallpaper.sh # Random Wallpapers + +# Waybar / Bar related +bind = $mainMod, H, exec, killall -SIGUSR1 waybar # Toggle hide/show waybar +bind = ALT, W, exec, $UserScripts/WaybarLayout.sh # Waybar Layout Menu diff --git a/config/hypr/UserConfigs/UserSettings.conf b/config/hypr/UserConfigs/UserSettings.conf new file mode 100644 index 00000000..d750ddc9 --- /dev/null +++ b/config/hypr/UserConfigs/UserSettings.conf @@ -0,0 +1,146 @@ +# User Settings + +## refer to Hyprland wiki for more info https://wiki.hyprland.org/Configuring/Variables + +# blurls = waybar +# blurls = rofi + +dwindle { + pseudotile = yes + preserve_split = yes + special_scale_factor = 0.8 +} + +master { + new_is_master=1 + new_on_top=1 + mfact = 0.5 +} + +general { + sensitivity = 1.00 + apply_sens_to_raw = 1 + gaps_in = 4 + gaps_out = 8 + border_size = 2 + resize_on_border = true + + col.active_border = rgb(7287fd) rgb(74c7ec) rgb(89b4fa) 45deg + col.inactive_border = rgb(6c7086) + + layout = master +} + +group { + col.border_active = 00XFF4BC66D + + groupbar { + col.active = 0XFFDB696B + } +} + +decoration { + rounding = 8 + + active_opacity = 1.0 + inactive_opacity = 0.9 + fullscreen_opacity = 1.0 + + dim_inactive = true + dim_strength = 0.1 + + drop_shadow = true + shadow_range = 6 + shadow_render_power = 1 + col.shadow = rgb(cba7f7) + col.shadow_inactive = 0X50000000 + + blur { + enabled = true + size = 5 + passes = 2 + ignore_opacity = true + new_optimizations = true + } +} + +animations { + enabled = yes + + bezier = myBezier, 0.05, 0.9, 0.1, 1.05 + bezier = linear, 0.0, 0.0, 1.0, 1.0 + bezier = wind, 0.05, 0.9, 0.1, 1.05 + bezier = winIn, 0.1, 1.1, 0.1, 1.1 + bezier = winOut, 0.3, -0.3, 0, 1 + bezier = slow, 0, 0.85, 0.3, 1 + bezier = overshot, 0.7, 0.6, 0.1, 1.1 + bezier = bounce, 1.1, 1.6, 0.1, 0.85 + bezier = sligshot, 1, -1, 0.15, 1.25 + bezier = nice, 0, 6.9, 0.5, -4.20 + + animation = windowsIn, 1, 5, slow, popin + animation = windowsOut, 1, 5, winOut, popin + animation = windowsMove, 1, 5, wind, slide + animation = border, 1, 10, linear + animation = borderangle, 1, 180, linear, loop #used by rainbow borders and rotating colors + animation = fade, 1, 5, overshot + animation = workspaces, 1, 5, wind + animation = windows, 1, 5, bounce, popin +} + +input { + kb_layout=us,np + kb_variant = + kb_model = + kb_options = + kb_rules = + repeat_rate = 50 + repeat_delay = 300 + numlock_by_default = true + left_handed = 0 + follow_mouse = 1 + float_switch_override_focus = 0 + + touchpad { + disable_while_typing = 1 + natural_scroll = 0 + clickfinger_behavior = 0 + middle_button_emulation = 1 + tap-to-click = 1 + drag_lock = 0 + } +} + +gestures { + workspace_swipe=1 + workspace_swipe_fingers=3 + workspace_swipe_distance=400 + workspace_swipe_invert=1 + workspace_swipe_min_speed_to_force=30 + workspace_swipe_cancel_ratio=0.5 + workspace_swipe_create_new=1 + workspace_swipe_forever=1 +} + +misc { + disable_hyprland_logo = true + disable_splash_rendering = true + mouse_move_enables_dpms = true + #vrr = 0 + enable_swallow = true + no_direct_scanout = true #for fullscreen games + focus_on_activate = false + swallow_regex = ^(kitty)$ + #disable_autoreload = true +} + +binds { + workspace_back_and_forth=1 + allow_workspace_cycles=1 + pass_mouse_when_bound=0 +} + +#Could help when scaling and not pixelating +xwayland { + force_zero_scaling = true +} diff --git a/config/hypr/UserConfigs/WindowRules.conf b/config/hypr/UserConfigs/WindowRules.conf new file mode 100644 index 00000000..879e6df0 --- /dev/null +++ b/config/hypr/UserConfigs/WindowRules.conf @@ -0,0 +1,245 @@ +# See https://wiki.hyprland.org/Configuring/Window-Rules/ for more + + +#### Opacity Rules +windowrulev2 = opacity 0.9 0.6, class:^([Rr]ofi)$ +windowrulev2 = opacity 0.9 0.6, class:^(yad)$ +windowrulev2 = opacity 0.9 0.6, class:^(mousepad)$ +windowrulev2 = opacity 0.9 0.6, class:^(geany)$ +windowrulev2 = opacity 0.80 0.70,class:^(nm-applet)$ +windowrulev2 = opacity 0.80 0.70,class:^(nm-connection-editor)$ + +#windowrulev2 = bordercolor rgb(EE4B55) rgb(880808), fullscreen:1 +#windowrulev2 = bordercolor rgb(282737) rgb(1E1D2D), floating:1 +#windowrulev2 = opacity 0.8 0.8, pinned:1 + +### Workspace Rules +windowrule = workspace 7, ^(.*vlc*)$ +windowrulev2 = workspace 5 silent, class:^(lutris)$ +windowrulev2 = workspace 6, class:^(virt-manager)$ +windowrulev2 = workspace 7 silent, class:^(WebCord)$ +windowrulev2 = workspace 9 silent, class:^(audacious)$ + + +# MPV +windowrule = workspace 7, ^(.*mpv*)$ +windowrulev2 = float, class:^(.*mpv.*) +windowrulev2 = move 83% 79%, class:^(.*mpv.*) +windowrulev2 = size 15% 15%, class:^(.*mpv.*) + + +# Do not lose focus when rofi or gnome polkit is opened +windowrulev2 = stayfocused, class:(rofi) +windowrulev2 = stayfocused, class:(polkit-gnome-authentication-agent-1) + +# Pavucontrol +windowrulev2 = float, class:(pavucontrol) +windowrulev2 = size 533 533, class:(pavucontrol) +windowrulev2 = center, class:(pavucontrol) + +# Zathura +$zathura = class:^(.*zathura.*)$ +windowrulev2 = float, $zathura +windowrulev2 = size 35% 90%, $zathura +windowrulev2 = center 1, $zathura + + +########### OBS + +# Main window / Profile screen +windowrulev2 = size 75% 70%, class:(com.obsproject.Studio), title:(.*Profile:.*) + +# Class settings +windowrulev2 = workspace 6, class:(com.obsproject.Studio) +windowrulev2 = float, class:(com.obsproject.Studio) +windowrulev2 = center, class:(com.obsproject.Studio) + +# Folder picker +windowrulev2 = size 50% 45%, class:(com.obsproject.Studio), title:(Select Recording Directory) +windowrulev2 = center, class:(com.obsproject.Studio), title:(Select Recording Directory) + + +# Fireox class settings +windowrulev2 = workspace 2, class:^(firefox)$ +windowrulev2 = workspace 2, class:^(Firefox-esr)$ +windowrulev2 = opacity 0.9 0.6, class:^(firefox)$ +windowrulev2 = float, class:(firefox), title:(Library) +windowrulev2 = size, 994 587, class:(firefox), title:(Library) +windowrulev2 = center, class:(firefox), title:(Library) + +# Sharing Indicator, i.e discord streaming / using microphone +windowrulev2 = workspace special, class:(firefox), title:(.*Sharing Indicator.*) + +windowrulev2 = opacity 0.95 0.75, class:(firefox), title:(.*YouTube) +windowrulev2 = opacity 0.95 0.75, class:(firefox), title:(.*.png) +windowrulev2 = opacity 0.95 0.75, class:(firefox), title:(.*.jpg) +windowrulev2 = opacity 0.95 0.75, class:(firefox), title:(.*.webp) + +# The Google Chrome window class is not described in this rule because +# `hyprctl clients` cannot recognize the window class that notifies you when the screen is streaming. +# Therefore, the only solution is to use a regular expression from the window title +windowrulev2 = workspace special, title:(.*is sharing your screen..*) +windowrulev2 = workspace special, title:(.*is sharing your window..*) + + +# Thunar +windowrulev2 = size 456 884, title:(.*Compress.*), class:(thunar) +windowrulev2 = center, title:(.*Compress.*), class:(thunar) +windowrulev2 = float, title:(.*Compress.*), class:(thunar) + +windowrulev2 = size 516 158, title:(.*Rename.*), class:(thunar) +windowrulev2 = center, title:(.*Rename.*), class:(thunar) + +windowrulev2 = size 840 270, title:(Confirm to replace files), class:(thunar) +windowrulev2 = center, title:(Confirm to replace files), class:(thunar) +windowrulev2 = float,title:^(Confirm to replace files) + +windowrulev2 = size 444 103, title:(File Operation Progress), class:(thunar) +windowrulev2 = center, title:(File Operation Progress), class:(thunar) + +windowrulev2 = size 565 591, class:(thunar), title:(Properties) +windowrulev2 = center, class:(thunar), title:(Properties) + +windowrulev2 = size 477 149, class:(thunar), title:(Create New Folder) +windowrulev2 = center, class:(thunar), title:(Create New Folder) + +windowrulev2 = workspace 3, class:(thunar) +windowrulev2 = opacity 0.9 0.7, class:^([Tt]hunar)$ +#windowrulev2 = float, class:(thunar) +#windowrulev2 = size 1161 619, class:(thunar) +#windowrulev2 = center, class:(thunar) + + +### File / Folder pickers +windowrulev2 = float, title:(.*Open Files.*) +windowrulev2 = size 60% 50%, title:(.*Open Files.*) +windowrulev2 = center, title:(.*Open Files.*) + +windowrulev2 = float, title:(.*Open File.*) +windowrulev2 = size 60% 50%, title:(.*Open File.*) +windowrulev2 = center, title:(.*Open File.*) + +windowrulev2 = float, title:(.*Open Folder.*) +windowrulev2 = size 60% 50%, title:(.*Open Folder.*) +windowrulev2 = center, title:(.*Open Folder.*) + +windowrulev2 = float, title:(.*Save As.*) +windowrulev2 = size 60% 50%, title:(.*Save As.*) +windowrulev2 = center, title:(.*Save AS.*) + +windowrulev2 = float, title:(.*Save File.*) +windowrulev2 = size 60% 50%, title:(.*Save File.*) +windowrulev2 = center, title:(.*Save File.*) + + +# VS Code +windowrulev2 = workspace 1, class:(Code) +windowrulev2 = opacity 0.9 0.6, class:(Code) + + +# Telegram +# windowrulev2 = fullscreen, class:(org.telegram.desktop), title:(Media viewer) + +windowrulev2 = opacity 0.90, class:^(org.telegram.desktop)$ +windowrulev2 = workspace 4, class:(org.telegram.desktop) +windowrulev2 = size 833 455, class:(org.telegram.desktop), title:(Choose Files) +windowrulev2 = center, class:(org.telegram.desktop), title:(Choose Files) +windowrulev2 = float, class:^(org.telegram.desktop)$ +windowrulev2 = center, class:^(org.telegram.desktop)$ +windowrulev2 = size 800 800, class:^(org.telegram.desktop)$ + + +# File Roller +windowrulev2 = workspace 3, class:(file-roller), title:(Archive Manager) +windowrulev2 = float, class:(file-roller), title:(Archive Manager) +windowrulev2 = size 45% 50%, class:(file-roller), title:(Archive Manager) +windowrulev2 = center, class:(file-roller), title:(Archive Manager) +windowrulev2 = float, class:(file-roller), title:(Extract archive) +windowrulev2 = size 30% 15%, class:(file-roller), title:(Extract archive) +windowrulev2 = center, class:(file-roller), title:(Extract archive) + + +# G4Music +windowrule = workspace 5, ^(.*g4music*)$ +windowrule = float,^(com.github.neithern.g4music)$ +windowrule = size 670 635,^(com.github.neithern.g4music)$ +windowrule = move center,^(com.github.neithern.g4music)$ + + +# qBittorrent +windowrulev2 = workspace 6, class:(org.qbittorrent.qBittorrent) +windowrulev2 = float, class:(org.qbittorrent.qBittorrent) +windowrulev2 = size 1137 547, class:(org.qbittorrent.qBittorrent), title:(.*qbittorrent.*) +windowrulev2 = center, class:(org.qbittorrent.qBittorrent), title:(.*qbittorrent.*) + + +# Discord +windowrulev2 = opacity 0.80 0.80, class:^(discord)$ +windowrulev2 = workspace 4, class:(.*discord.*) + +# Discord Updater +windowrulev2 = size 300 350, class:(.*iscord.*), title:(Discord Updater) +windowrulev2 = center, class:(.*iscord.*), title:(Discord Updater) +windowrulev2 = nodim, class:(.*iscord.*), title:(Discord Updater) + +# Discord file picker +windowrulev2 = size 1000 527, class:(.*iscord.*), floating:1 +windowrulev2 = dimaround, class:(.*iscord.*), floating:1 + +# Discord Developer Tools +windowrulev2 = nodim, class:(.*iscord.*), title:(.*Developer Tools.*) +windowrulev2 = tile, class:(.*iscord.*), title:(.*Developer Tools.*) + + +# Kitty +windowrule = opacity 0.9 0.7,kitty +windowrule = float, title:^(fly_is_kitty)$ +windowrule = size 800 500, title:^(fly_is_kitty)$ +windowrule = move center, title:^(fly_is_kitty)$ +windowrule = animation slide, title:^(fly_is_kitty)$ +windowrule = float, title:^(all_is_kitty)$ +windowrule = float, kitty_float + + +# Bluetooth applet +windowrulev2 = float, class:(blueberry) +windowrulev2 = size 665 637, class:(blueberry) +windowrulev2 = center, class:(blueberry) + + +# qt5ct / qt6ct +windowrulev2 = float, class:(qt5ct) +windowrulev2 = float, class:(qt6ct) + +windowrulev2 = size 1256 689, class:(qt5ct) +windowrulev2 = size 1256 689, class:(qt6ct) + +windowrulev2 = center, class:(qt5ct) +windowrulev2 = center, class:(qt6ct) + +windowrulev2 = size 257 116, class:(qt5ct), title:(Enter Color Scheme Name) +windowrulev2 = size 257 116, class:(qt6ct), title:(Enter Color Scheme Name) + +windowrulev2 = size 548 476, class:(qt5ct), title:(Select Color) +windowrulev2 = size 548 476, class:(qt6ct), title:(Select Color) + + +########### Other +windowrule = float, nm-connection-editor|vlc|yad|rofi|Lxappearance +windowrule = float, org.kde.polkit-kde-authentication-agent-1 +windowrulev2 = size 543 239, class:^(polkit-gnome-authentication-agent-1)$ +windowrulev2 = float, class:^(polkit-gnome-authentication-agent-1)$ +windowrulev2 = center, class:(polkit-gnome-authentication-agent-1) +windowrulev2 = workspace special, class:^(firefox)$, title:^(.*Sharing Indicator.*)$ + + +windowrulev2 = float, title:(File Operation Progress) +windowrulev2 = center, title:(File Operation Progress) + + + + + + + + diff --git a/config/hypr/UserScripts/BatteryNotify.sh b/config/hypr/UserScripts/BatteryNotify.sh new file mode 100755 index 00000000..63a85210 --- /dev/null +++ b/config/hypr/UserScripts/BatteryNotify.sh @@ -0,0 +1,177 @@ +#!/bin/bash +trap resume_processes SIGINT +in_range() { local num=$1 local min=$2 local max=$3 ; [[ $num =~ ^[0-9]+$ ]] && (( num >= min && num <= max )); } +mnc=5 mxc=80 mnl=20 mxl=50 mnu=80 mxu=100 mnt=60 mxt=1000 mnf=80 mxf=100 mnn=1 mxn=60 mni=1 mxi=10 verbose=false undock=false #Defaults Ranges +while (( "$#" )); do # Parse command-line arguments and defaults + case "$1" in +"--full"|"-f") if in_range "$2" $mnf $mxf; then battery_full_threshold=$2 ; shift 2 ; else echo "$1 Error: Full Threshold must be $mnf - $mxf." >&2 ; exit 1 ; fi;; +"--critical"|"-c") if in_range "$2" $mnc $mxc; then battery_critical_threshold=$2 ; shift 2 ; else echo "$1 ERROR: Critical Threshold must be $mnc - $mxc." >&2 ; exit 1 ; fi;; +"--low"|"-l") if in_range "$2" $mnl $mnu; then battery_low_threshold=$2 ; shift 2 ; else echo "$1 ERROR: Low Threshold $mnl - $mnu." >&2 ; exit 1 ; fi;; +"--unplug"|"-u") if in_range "$2" $mnu $mxu; then unplug_charger_threshold=$2 ; shift 2 ; else echo "$1 ERROR: Unplug Threshold must be $mnu $mxu." >&2 ; exit 1 ; fi;; +"--timer"|"-t") if in_range "$2" $mnt $mxt; then timer=$2 ; shift 2 ; else echo "$1 ERROR: Timer must be $mnt - $mxt." >&2 ; exit 1 ; fi;; +"--notify"|"-n") if in_range "$2" $mnn $mxn; then notify=$2 ; shift 2 ; else echo "$1 ERROR: Notify must be $mnn - $mxn in minutes." >&2 ; exit 1 ; fi;; +"--interval"|"-i") if in_range "$2" $mni $mxi; then interval=$2 ; shift 2 ; else echo "$1 ERROR: Interval must be by $mni% - $mxi% intervals." >&2 ; exit 1 ; fi;; +"--verbose"|"-v") verbose=true ; shift ;; +"--undock"|"on") undock=true ; shift ;; +"--execute"|"-e") execute=$2 ; shift 2 ;; + + *|"--help"|"-h") + echo "Usage: $0 [options]" + echo " --verbose, -v Verbose Mode" + echo " --undock, on Shows Battery Plug In/Out/Full Notification" + echo " --full, -f Set battery full threshold (default: 100% percent)" + echo " --critical, -c Set battery critical threshold (default: 10% percent)" + echo " --low, -l Set battery low threshold (default: 20% percent)" + echo " --unplug, -u Set unplug charger threshold (default: 80% percent )" + echo " --timer, -t Set countdown timer (default: 120 seconds)" + echo " --interval, -i Set notify interval on LOW UNPLUG Status (default: 5% percent)" + echo " --notify, -n Set notify interval for Battery Full Status (default: 1140 mins/ 1 day)" + echo " --execute, -e Set command/script to execute if battery on critical threshold (default: systemctl suspend)" + echo " --help, -h Show this help message + Visit https://github.com/prasanthrangan/hyprdots for the Github Repo" + exit 0 + ;; + esac +done +is_laptop() { # Check if the system is a laptop + if grep -q "Battery" /sys/class/power_supply/BAT*/type; then + return 0 # It's a laptop + else + echo "Cannot Detect a Battery. If this seems an error please report an issue to https://github.com/prasanthrangan/hyprdots." + exit 0 # It's not a laptop + fi +} +fn_verbose () { +if $verbose; then +cat << VERBOSE +============================================= + Battery Status: $battery_status + Battery Percentage: $battery_percentage +============================================= + + +VERBOSE +fi +} +fn_notify () { # Send notification + + notify-send -a "Power" $1 -u $2 "$3" "$4" -p # Call the notify-send command with the provided arguments \$1 is the flags \$2 is the urgency \$3 is the title \$4 is the message +} +fn_percentage () { + if [[ "$battery_percentage" -ge "$unplug_charger_threshold" ]] && [[ "$battery_status" != "Discharging" ]] && [[ "$battery_status" != "Full" ]] && (( (battery_percentage - last_notified_percentage) >= $interval )); then if $verbose; then echo "Prompt:UNPLUG: $battery_unplug_threshold $battery_status $battery_percentage" ; fi + fn_notify "-t 5000 " "CRITICAL" "Battery Charged" "Battery is at $battery_percentage%. You can unplug the charger!" + last_notified_percentage=$battery_percentage + elif [[ "$battery_percentage" -le "$battery_critical_threshold" ]]; then + count=$(( timer > $mnt ? timer : $mnt )) # reset count + while [ $count -gt 0 ] && [[ $battery_status == "Discharging"* ]]; do + for battery in /sys/class/power_supply/BAT*; do battery_status=$(< "$battery/status") ; done + if [[ $battery_status != "Discharging" ]] ; then break ; fi + fn_notify "-t 5000 -r 69 " "CRITICAL" "Battery Critically Low" "$battery_percentage% is critically low. Device will execute $execute in $((count/60)):$((count%60)) ." + count=$((count-1)) + sleep 1 + done + [ $count -eq 0 ] && fn_action + elif [[ "$battery_percentage" -le "$battery_low_threshold" ]] && [[ "$battery_status" == "Discharging" ]] && (( (last_notified_percentage - battery_percentage) >= $interval )); then if $verbose; then echo "Prompt:LOW: $battery_low_threshold $battery_status $battery_percentage" ; fi + fn_notify "-t 5000 " "CRITICAL" "Battery Low" "Battery is at $battery_percentage%. Connect the charger." + last_notified_percentage=$battery_percentage + fi +} +fn_action () { #handles the $execute command + count=$(( timer > $mnt ? timer : $mnt )) # reset count + nohup $execute +} + +fn_status () { +if [[ $battery_percentage -ge $battery_full_threshold ]] && [ "$battery_status" == *"Charging"* ]; then echo "Full and $battery_status" + battery_status="Full" ;fi +case "$battery_status" in # Handle the power supply status + "Discharging") if $verbose; then echo "Case:$battery_status Level: $battery_percentage" ;fi + if [[ "$prev_status" != "Discharging" ]] || [[ "$prev_status" == "Full" ]] ; then + prev_status=$battery_status + urgency=$([[ $battery_percentage -le "$battery_low_threshold" ]] && echo "CRITICAL" || echo "NORMAL") + fn_notify "-t 5000 -r 54321 " "$urgency" "Charger Plug OUT" "Battery is at $battery_percentage%." + fi + fn_percentage + ;; + "Not"*|"Charging") if $verbose; then echo "Case:$battery_status Level: $battery_percentage" ;fi + # Due to modifications of some devices Not Charging after reaching 99 or limits + #if [[ ! -f "/tmp/hyprdots.batterynotify.status.$battery_status-$$" ]] && [[ "$battery_status" == "Not"* ]] ; then + #touch "/tmp/hyprdots.batterynotify.status.$battery_status-$$" + #count=$(( timer > $mnt ? timer : $mnt )) # reset count + #echo "Status: '==>> "$battery_status" <<==' Device Reports Not Charging!,This may be device Specific errors." + #fn_notify "-t 5000 " "CRITICAL" "Charger Plug In" "Battery is at $battery_percentage%." + #fi + if [[ "$prev_status" == "Discharging" ]] || [[ "$prev_status" == "Not"* ]] ; then + prev_status=$battery_status + count=$(( timer > $mnt ? timer : $mnt )) # reset count + urgency=$([[ "$battery_percentage" -ge $unplug_charger_threshold ]] && echo "CRITICAL" || echo "NORMAL") + fn_notify "-t 5000 -r 54321 " "$urgency" "Charger Plug In" "Battery is at $battery_percentage%." + fi + fn_percentage + ;; + "Full") if $verbose; then echo "Case:$battery_status Level: $battery_percentage" ;fi + + if [[ $battery_status != "Discharging" ]]; then + now=$(date +%s) + if [[ "$prev_status" == *"harging"* ]] || ((now - lt >= $((notify*60)) )); then + fn_notify "-t 5000 -r 54321" "CRITICAL" "Battery Full" "Please unplug your Charger" + prev_status=$battery_status lt=$now + fi + fi + ;; + *) + if [[ ! -f "/tmp/hyprdots.batterynotify.status.fallback.$battery_status-$$" ]]; then + echo "Status: '==>> "$battery_status" <<==' Script on Fallback mode,Unknown power supply status.Please copy this line and raise an issue to the Github Repo.Also run 'ls /tmp/hyprdots.batterynotify' to see the list of lock files.*" + touch "/tmp/hyprdots.batterynotify.status.fallback.$battery_status-$$" + fi + fn_percentage + ;; + esac +} + +fn_status_change () { # Handle when status changes +for battery in /sys/class/power_supply/BAT*; do battery_status=$(< "$battery/status") battery_percentage=$(< "$battery/capacity") + if [ "$battery_status" != "$last_battery_status" ] || [ "$battery_percentage" != "$last_battery_percentage" ]; then last_battery_status=$battery_status last_battery_percentage=$battery_percentage # Check if battery status or percentage has changed +fn_verbose +fn_percentage +if $undock; then fn_status echo yes ; fi +fi +done +} +resume_processes() { for pid in $pids ; do if [ $pid -ne $current_pid ] ; then kill -CONT $pid ; notify-send -a "Battery Notify" -t 2000 -r 9889 -u "CRITICAL" "Debugging ENDED, Resuming Regular Process" ; fi ; done } +main() { # Main function + if is_laptop; then +rm -fr /tmp/hyprdots.batterynotify* # Cleaning the lock file +battery_full_threshold=${battery_full_threshold:-100} +battery_critical_threshold=${battery_critical_threshold:-10} +unplug_charger_threshold=${unplug_charger_threshold:-80} +battery_low_threshold=${battery_low_threshold:-20} +timer=${timer:-120} +notify=${notify:-1140} +interval=${interval:-5} + +execute=${execute:-"systemctl suspend"} +cat << EOF +Script is running... +Check $0 --help for options. + + STATUS THRESHOLD INTERVAL + Full $battery_full_threshold $notify Minutes + Critical $battery_critical_threshold $timer Seconds then "$execute" + Low $battery_low_threshold $interval Percent + Unplug $unplug_charger_threshold $interval Percent + + +EOF +if $verbose; then for line in "Verbose Mode is ON..." "" "" "" "" ; do echo $line ; done; +current_pid=$$ +pids=$(pgrep -f "/bin/bash $HOME/.config/hypr/scripts/batterynotify.sh" ) +for pid in $pids ; do if [ $pid -ne $current_pid ] ;then kill -STOP $pid ;notify-send -a "Battery Notify" -t 2000 -r 9889 -u "CRITICAL" "Debugging STARTED, Pausing Regular Process" ;fi ; done ; trap resume_processes SIGINT ; fi + fn_status_change # initiate the function + last_notified_percentage=$battery_percentage + prev_status=$battery_status + +dbus-monitor --system "type='signal',interface='org.freedesktop.DBus.Properties',path='$(upower -e | grep battery)'" 2> /dev/null | while read -r battery_status_change; do fn_status_change ; done + fi +} +main diff --git a/config/hypr/UserScripts/Caway.sh b/config/hypr/UserScripts/Caway.sh new file mode 100755 index 00000000..7b46f651 --- /dev/null +++ b/config/hypr/UserScripts/Caway.sh @@ -0,0 +1,115 @@ +#!/usr/bin/bash + +# Nuke all internal spawns when script dies +trap "trap - SIGTERM && kill -- -$$" SIGINT SIGTERM + +BARS=14; +FRAMERATE=60; +EQUILIZER=1; + +# Get script options +while getopts 'b:f:m:eh' flag; do + case "${flag}" in + b) BARS="${OPTARG}" ;; + f) FRAMERATE="${OPTARG}" ;; + e) EQUILIZER=0 ;; + h) + echo "caway usage: caway [ options ... ]" + echo "where options include:" + echo + echo " -b (Number of bars to display. Default 8)" + echo " -f (Framerate of the equilizer. Default 60)" + echo " -e (Disable equilizer. Default enabled)" + echo " -h (Show help message)" + exit 0 + ;; + esac +done + +bar="โ–โ–‚โ–ƒโ–„โ–…โ–†โ–‡โ–ˆ" +dict="s/;//g;" + +# creating "dictionary" to replace char with bar + thin space "โ€‰" +i=0 +while [ $i -lt ${#bar} ] +do + dict="${dict}s/$i/${bar:$i:1}โ€‰/g;" + i=$((i=i+1)) +done + +# Remove last extra thin space +dict="${dict}s/.$//;" + +clean_create_pipe() { + if [ -p $1 ]; then + unlink $1 + fi + mkfifo $1 +} + +kill_pid_file() { + if [[ -f $1 ]]; then + while read pid; do + { kill "$pid" && wait "$pid"; } 2>/dev/null + done < $1 + fi +} + +# PID of the cava process and while loop launched from the script +cava_waybar_pid="/tmp/cava_waybar_pid" + +# Clean pipe for cava +cava_waybar_pipe="/tmp/cava_waybar.fifo" +clean_create_pipe $cava_waybar_pipe + +# Custom cava config +cava_waybar_config="/tmp/cava_waybar_config" +echo " +[general] +mode = normal +framerate = $FRAMERATE +bars = $BARS + +[output] +method = raw +raw_target = $cava_waybar_pipe +data_format = ascii +ascii_max_range = 7 +" > $cava_waybar_config + +# Clean pipe for playerctl +playerctl_waybar_pipe="/tmp/playerctl_waybar.fifo" +clean_create_pipe $playerctl_waybar_pipe + +# playerctl output into playerctl_waybar_pipe +playerctl -a metadata --format '{"text": "{{artist}} - {{title}}", "tooltip": "{{playerName}} : {{markup_escape(artist)}} - {{markup_escape(title)}}", "alt": "{{status}}", "class": "{{status}}"}' -F >$playerctl_waybar_pipe & + +# Read the playerctl o/p via its fifo pipe +while read -r line; do + # Kill the cava process to stop the input to cava_waybar_pipe + kill_pid_file $cava_waybar_pid + + echo "$line" | jq --unbuffered --compact-output + + # If the class says "Playing" and equilizer is enabled + # then show the cava equilizer + if [[ $EQUILIZER == 1 && $(echo $line | jq -r '.class') == 'Playing' ]]; then + # Show the playing title for 2 seconds + sleep 2 + + # cava output into cava_waybar_pipe + cava -p $cava_waybar_config >$cava_waybar_pipe & + + # Save the PID of child process + echo $! > $cava_waybar_pid + + # Read the cava o/p via its fifo pipe + while read -r cmd2; do + # Change the "text" key to bars + echo "$line" | jq --arg a $(echo $cmd2 | sed "$dict") '.text = $a' --unbuffered --compact-output + done < $cava_waybar_pipe & # Do this fifo read in background + + # Save the while loop PID into the file as well + echo $! >> $cava_waybar_pid + fi +done < $playerctl_waybar_pipe diff --git a/config/hypr/UserScripts/KeyBinds.sh b/config/hypr/UserScripts/KeyBinds.sh new file mode 100755 index 00000000..100529db --- /dev/null +++ b/config/hypr/UserScripts/KeyBinds.sh @@ -0,0 +1,5 @@ +#!/usr/bin/env bash + +CONFIG=$(rofi -show file-browser-extended -file-browser-stdout -file-browser-dir "$HOME"/.config/keyb/bindings -config ~/.config/rofi/keybinds.rasi) + +hyprctl dispatch exec "[float;size 45% 80%;center 1] kitty keyb -k '$CONFIG'" diff --git a/config/hypr/UserScripts/RainbowBorders.sh b/config/hypr/UserScripts/RainbowBorders.sh new file mode 100755 index 00000000..1f5e6cdb --- /dev/null +++ b/config/hypr/UserScripts/RainbowBorders.sh @@ -0,0 +1,10 @@ +#!/bin/bash + +function random_hex() { + random_hex=("0xff$(openssl rand -hex 3)") + echo $random_hex +} + +hyprctl keyword general:col.active_border $(random_hex) $(random_hex) $(random_hex) $(random_hex) $(random_hex) $(random_hex) $(random_hex) $(random_hex) $(random_hex) $(random_hex) 270deg + +hyprctl keyword general:col.inactive_border $(random_hex) $(random_hex) $(random_hex) $(random_hex) $(random_hex) $(random_hex) $(random_hex) $(random_hex) $(random_hex) $(random_hex) 270deg \ No newline at end of file diff --git a/config/hypr/UserScripts/Sunset.sh b/config/hypr/UserScripts/Sunset.sh new file mode 100755 index 00000000..96c27c5b --- /dev/null +++ b/config/hypr/UserScripts/Sunset.sh @@ -0,0 +1,2 @@ +#!/bin/bash +wlsunset -t 4000 -T 6500 -d 900 -S 07:00 -s 19:00 \ No newline at end of file diff --git a/config/hypr/UserScripts/WaybarCava.sh b/config/hypr/UserScripts/WaybarCava.sh new file mode 100755 index 00000000..458a31bb --- /dev/null +++ b/config/hypr/UserScripts/WaybarCava.sh @@ -0,0 +1,29 @@ +# #! /bin/bash + +#----- Optimized bars animation without much CPU usage increase -------- +bar="โ–โ–‚โ–ƒโ–„โ–…โ–†โ–‡โ–ˆ" +dict="s/;//g" + +# Calculate the length of the bar outside the loop +bar_length=${#bar} + +# Create dictionary to replace char with bar +for ((i = 0; i < bar_length; i++)); do + dict+=";s/$i/${bar:$i:1}/g" +done + +# Create cava config +config_file="/tmp/bar_cava_config" +cat >"$config_file" </dev/null; then + pkill waybar + sleep 0.1 # Delay for Waybar to completely terminate + fi + "${scripts_dir}/Refresh.sh" & +} + +# Main function +main() { + choice=$(menu | rofi -dmenu -config "$rofi_config") + + if [[ -z "$choice" ]]; then + echo "No option selected. Exiting." + exit 0 + fi + + case $choice in + "no panel") + pgrep -x "waybar" && pkill waybar || true + ;; + *) + apply_config "$choice" + ;; + esac +} + +# Kill Rofi if already running before execution +if pgrep -x "rofi" >/dev/null; then + pkill rofi + exit 0 +fi + +main diff --git a/config/hypr/UserScripts/Weather.py b/config/hypr/UserScripts/Weather.py new file mode 100755 index 00000000..b5b514de --- /dev/null +++ b/config/hypr/UserScripts/Weather.py @@ -0,0 +1,121 @@ +#!/usr/bin/env python3 +# From https://raw.githubusercontent.com/rxyhn/dotfiles/main/home/rxyhn/modules/desktop/waybar/scripts/waybar-wttr.py + +## ensure to insert city inside "" +import json +import requests +from datetime import datetime + +WEATHER_CODES = { + '113': '๎Œ ', + '116': '๓ฐ–• ', + '119': '๎Œ’ ', + '122': '๎Œ’ ', + '143': '๎Œ’ ', + '176': '๎ˆน ', + '179': '๎ˆน ', + '182': '๎ˆน ', + '185': '๎ˆน ', + '200': 'โ›ˆ๏ธ', + '227': '๐ŸŒจ๏ธ', + '230': '๐ŸŒจ๏ธ', + '248': 'โ˜๏ธ', + '260': 'โ˜๏ธ', + '263': '๐ŸŒง๏ธ', + '266': '๐ŸŒง๏ธ', + '281': '๐ŸŒง๏ธ', + '284': '๐ŸŒง๏ธ', + '293': '๐ŸŒง๏ธ', + '296': '๐ŸŒง๏ธ', + '299': '๐ŸŒง๏ธ', + '302': '๐ŸŒง๏ธ', + '305': '๐ŸŒง๏ธ', + '308': '๐ŸŒง๏ธ', + '311': '๐ŸŒง๏ธ', + '314': '๐ŸŒง๏ธ', + '317': '๐ŸŒง๏ธ', + '320': '๐ŸŒจ๏ธ', + '323': '๐ŸŒจ๏ธ', + '326': '๐ŸŒจ๏ธ', + '329': 'โ„๏ธ', + '332': 'โ„๏ธ', + '335': 'โ„๏ธ', + '338': 'โ„๏ธ', + '350': '๐ŸŒง๏ธ', + '353': '๐ŸŒง๏ธ', + '356': '๐ŸŒง๏ธ', + '359': '๐ŸŒง๏ธ', + '362': '๐ŸŒง๏ธ', + '365': '๐ŸŒง๏ธ', + '368': '๐ŸŒง๏ธ', + '371': 'โ„๏ธ', + '374': '๐ŸŒจ๏ธ', + '377': '๐ŸŒจ๏ธ', + '386': '๐ŸŒจ๏ธ', + '389': '๐ŸŒจ๏ธ', + '392': '๐ŸŒง๏ธ', + '395': 'โ„๏ธ' +} + +data = {} + + +weather = requests.get("https://wttr.in/Kohalpur?format=j1").json() + + +def format_time(time): + return time.replace("00", "").zfill(2) + + +def format_temp(temp): + return (hour['FeelsLikeC']+"ยฐ").ljust(3) + + +def format_chances(hour): + chances = { + "chanceoffog": "Fog", + "chanceoffrost": "Frost", + "chanceofovercast": "Overcast", + "chanceofrain": "Rain", + "chanceofsnow": "Snow", + "chanceofsunshine": "Sunshine", + "chanceofthunder": "Thunder", + "chanceofwindy": "Wind" + } + + conditions = [] + for event in chances.keys(): + if int(hour[event]) > 0: + conditions.append(chances[event]+" "+hour[event]+"%") + return ", ".join(conditions) + +tempint = int(weather['current_condition'][0]['FeelsLikeC']) +extrachar = '' +if tempint > 0 and tempint < 10: + extrachar = '+' + + +data['text'] = 'โ€‰'+WEATHER_CODES[weather['current_condition'][0]['weatherCode']] + \ + " "+extrachar+weather['current_condition'][0]['FeelsLikeC']+"ยฐ" + +data['tooltip'] = f"{weather['current_condition'][0]['weatherDesc'][0]['value']} {weather['current_condition'][0]['temp_C']}ยฐ\n" +data['tooltip'] += f"Feels like: {weather['current_condition'][0]['FeelsLikeC']}ยฐ\n" +data['tooltip'] += f"Wind: {weather['current_condition'][0]['windspeedKmph']}Km/h\n" +data['tooltip'] += f"Humidity: {weather['current_condition'][0]['humidity']}%\n" +for i, day in enumerate(weather['weather']): + data['tooltip'] += f"\n" + if i == 0: + data['tooltip'] += "Today, " + if i == 1: + data['tooltip'] += "Tomorrow, " + data['tooltip'] += f"{day['date']}\n" + data['tooltip'] += f"โฌ†๏ธ{day['maxtempC']}ยฐ โฌ‡๏ธ{day['mintempC']}ยฐ " + data['tooltip'] += f"๐ŸŒ…{day['astronomy'][0]['sunrise']} ๐ŸŒ‡{day['astronomy'][0]['sunset']}\n" + for hour in day['hourly']: + if i == 0: + if int(format_time(hour['time'])) < datetime.now().hour-2: + continue + data['tooltip'] += f"{format_time(hour['time'])} {WEATHER_CODES[hour['weatherCode']]} {format_temp(hour['FeelsLikeC'])} {hour['weatherDesc'][0]['value']}, {format_chances(hour)}\n" + + +print(json.dumps(data)) diff --git a/config/hypr/configs/Keybinds.conf b/config/hypr/configs/Keybinds.conf new file mode 100644 index 00000000..6c6b8da5 --- /dev/null +++ b/config/hypr/configs/Keybinds.conf @@ -0,0 +1,129 @@ + +# Default Keybinds + +$mainMod = SUPER + + +# Master Layout +bind = ALT, Space, layoutmsg, removemaster +bind = $mainMod, I, layoutmsg, addmaster +bind = $mainMod, J, layoutmsg, cyclenext +bind = $mainMod, K, layoutmsg, cycleprev +bind = $mainMod, M, exec, hyprctl dispatch splitratio 0.3 +bind = $mainMod, P, pseudo, # dwindle +bind = $mainMod, S, layoutmsg, swapwithmaster +bind = $mainMod SHIFT, M, exec, hyprctl dispatch splitratio -0.3 + + +# Hyprland +bind = $mainMod, C, killactive, #quit app +bind = $mainMod_SHIFT, C, closewindow, +bind = $mainMod, F, exec, hyprctl dispatch togglefloating && hyprctl dispatch centerwindow 1 +bind = CTRL_ALT, Delete, exit, #exit hyprland +bind = $mainMod_SHIFT, Space, fullscreen, 0 +bind = $mainMod_SHIFT, O, toggleopaque + +# Change Workspace Mode +bind = $mainMod_SHIFT, F, exec, hyprctl dispatch workspaceopt allfloat +bind = $mainMod_SHIFT, P, exec, hyprctl dispatch workspaceopt, allpseudo + +# Group +bind = $mainMod, G, togglegroup +bind = ALT, Tab, changegroupactive # change focus to another window + +# Workspaces related +bind = $mainMod, Tab, workspace, m+1 +bind = $mainMod SHIFT, Tab, workspace, m-1 + +# Special Workspace +bind = $mainMod, U, togglespecialworkspace, +bind = $mainMod SHIFT, U, movetoworkspace, special + + +# Resize Active +binde = $mainMod_ALT, left, resizeactive, -20 0 +binde = $mainMod_ALT, right,resizeactive, 20 0 +binde = $mainMod_ALT, up, resizeactive, 0 -20 +binde = $mainMod_ALT, down, resizeactive, 0 20 + + +# Move Active +bind = $mainMod_SHIFT, left, movewindow, l +bind = $mainMod_SHIFT, right, movewindow, r +bind = $mainMod_SHIFT, up, movewindow, u +bind = $mainMod_SHIFT, down, movewindow, d + + +# Change Focus +bind = $mainMod, left, movefocus, l +bind = $mainMod, right, movefocus, r +bind = $mainMod, up, movefocus, u +bind = $mainMod, down, movefocus, d + + +# Move Active (Floating Only) +binde = $mainMod_CTRL, left, moveactive, -20 0 +binde = $mainMod_CTRL, right, moveactive, 20 0 +binde = $mainMod_CTRL, up, moveactive, 0 -20 +binde = $mainMod_CTRL, down, moveactive, 0 20 + + +# Switch Workspaces +bind = $mainMod, 1, workspace, 1 +bind = $mainMod, 2, workspace, 2 +bind = $mainMod, 3, workspace, 3 +bind = $mainMod, 4, workspace, 4 +bind = $mainMod, 5, workspace, 5 +bind = $mainMod, 6, workspace, 6 +bind = $mainMod, 7, workspace, 7 +bind = $mainMod, 8, workspace, 8 +bind = $mainMod, 9, workspace, 9 +bind = $mainMod, 0, workspace, 10 + + +# Move active window and follow to workspace +bind = $mainMod SHIFT, 1, movetoworkspace, 1 +bind = $mainMod SHIFT, 2, movetoworkspace, 2 +bind = $mainMod SHIFT, 3, movetoworkspace, 3 +bind = $mainMod SHIFT, 4, movetoworkspace, 4 +bind = $mainMod SHIFT, 5, movetoworkspace, 5 +bind = $mainMod SHIFT, 6, movetoworkspace, 6 +bind = $mainMod SHIFT, 7, movetoworkspace, 7 +bind = $mainMod SHIFT, 8, movetoworkspace, 8 +bind = $mainMod SHIFT, 9, movetoworkspace, 9 +bind = $mainMod SHIFT, 0, movetoworkspace, 10 +bind = $mainMod SHIFT, bracketleft, movetoworkspace, -1 # brackets [ or ] +bind = $mainMod SHIFT, bracketright, movetoworkspace, +1 + + +# Move active window workspace silently +bind = SHIFT_ALT, 1, movetoworkspacesilent, 1 +bind = SHIFT_ALT, 2, movetoworkspacesilent, 2 +bind = SHIFT_ALT, 3, movetoworkspacesilent, 3 +bind = SHIFT_ALT, 4, movetoworkspacesilent, 4 +bind = SHIFT_ALT, 5, movetoworkspacesilent, 5 +bind = SHIFT_ALT, 6, movetoworkspacesilent, 6 +bind = SHIFT_ALT, 7, movetoworkspacesilent, 7 +bind = SHIFT_ALT, 8, movetoworkspacesilent, 8 +bind = SHIFT_ALT, 9, movetoworkspacesilent, 9 +bind = SHIFT_ALT, 0, movetoworkspacesilent, 10 +bind = SHIFT_ALT, bracketleft, movetoworkspacesilent, -1 +bind = SHIFT_ALT, bracketright, movetoworkspacesilent, +1 + + +# Scroll through existing workspaces with mainMod +bind = SHIFT_ALT, d, workspace, e+1 +bind = SHIFT_ALT, a, workspace, e-1 + + +# Scroll through existing workspaces with mainMod + scroll +bind = $mainMod, mouse_down, workspace, e+1 +bind = $mainMod, mouse_up, workspace, e-1 + + +# Move/resize windows with mainMod + LMB/RMB and dragging +bindm = $mainMod, mouse:272, movewindow +bindm = $mainMod, mouse:273, resizewindow + + + diff --git a/config/hypr/configs/Settings.conf b/config/hypr/configs/Settings.conf new file mode 100644 index 00000000..1b6cacab --- /dev/null +++ b/config/hypr/configs/Settings.conf @@ -0,0 +1,3 @@ + +# Initial boot script enable to apply initial wallpapers, theming, new settings etc. +exec-once = $HOME/.config/hypr/initial-boot.sh diff --git a/config/hypr/hyprland.conf b/config/hypr/hyprland.conf new file mode 100644 index 00000000..30731aac --- /dev/null +++ b/config/hypr/hyprland.conf @@ -0,0 +1,19 @@ +# Sourcing external config files + +###### Default Configs +$configs = $HOME/.config/hypr/configs + +source=$configs/Settings.conf +source=$configs/Keybinds.conf + +#### User Configs +$UserConfigs = $HOME/.config/hypr/UserConfigs + +source= $UserConfigs/Startup_Apps.conf +source= $UserConfigs/ENVariables.conf +source= $UserConfigs/UserKeybinds.conf +source= $UserConfigs/UserSettings.conf +source= $UserConfigs/Monitors.conf +source= $UserConfigs/Laptops.conf +source= $UserConfigs/LaptopDisplay.conf +source= $UserConfigs/WindowRules.conf diff --git a/config/hypr/initial-boot.sh b/config/hypr/initial-boot.sh new file mode 100755 index 00000000..417fc0c2 --- /dev/null +++ b/config/hypr/initial-boot.sh @@ -0,0 +1,40 @@ +#!/bin/bash + +# A bash script designed to run only once dotfiles installed + +# THIS SCRIPT CAN BE DELETED ONCE SUCCESSFULLY BOOTED!! And also, edit ~/.config/hypr/configs/Execs.conf +# not necessary to do since this script is only designed to run only once as long as the marker exists + +# Variables +scriptsDir=$HOME/.config/hypr/scripts +wallpaper=$HOME/.config/hypr/.current_wallpaper +kvantum_theme="Tokyo-Night" + +swww="swww img" +effect="--transition-bezier .43,1.19,1,.4 --transition-fps 30 --transition-type grow --transition-pos 0.925,0.977 --transition-duration 2" + +# Check if a marker file exists. +if [ ! -f $HOME/cache/.initial_startup_done ]; then + + + # Initial scripts to load in order to have a proper wallpaper waybar + swww init || swww query && $swww "$wallpaper" $effect + + # Refreshing waybar, dunst, rofi etc. + "$scriptsDir/Refresh.sh" > /dev/null 2>&1 & + + # initiate GTK dark mode and apply icon and cursor theme + gsettings set org.gnome.desktop.interface gtk-theme Tokyonight-Dark-BL-LB > /dev/null 2>&1 & + gsettings set org.gnome.desktop.interface icon-theme Tokyonight-Dark > /dev/null 2>&1 & + gsettings set org.gnome.desktop.interface cursor-theme Bibata-Modern-Ice > /dev/null 2>&1 & + gsettings set org.gnome.desktop.interface cursor-size 6 > /dev/null 2>&1 & + gsettings set org.gnome.desktop.interface font-name JetBrainsMono Nerd Font 10 > /dev/null 2>&1 & + + # initiate kvantum theme + kvantummanager --set "$kvantum_theme" > /dev/null 2>&1 & + + # Create a marker file to indicate that the script has been executed. + touch $HOME/.cache/.initial_startup_done + + exit +fi diff --git a/config/hypr/scripts/AirplaneMode.sh b/config/hypr/scripts/AirplaneMode.sh new file mode 100755 index 00000000..f3a50629 --- /dev/null +++ b/config/hypr/scripts/AirplaneMode.sh @@ -0,0 +1,14 @@ +#!/bin/bash + +notif="$HOME/.config/swaync/images/bell.png" + +# Check if any wireless device is blocked +wifi_blocked=$(rfkill list wifi | grep -o "Soft blocked: yes") + +if [ -n "$wifi_blocked" ]; then + rfkill unblock wifi + notify-send -u low -i "$notif" 'Airplane mode: OFF' +else + rfkill block wifi + notify-send -u low -i "$notif" 'Airplane mode: ON' +fi diff --git a/config/hypr/scripts/Brightness.sh b/config/hypr/scripts/Brightness.sh new file mode 100755 index 00000000..14c03da5 --- /dev/null +++ b/config/hypr/scripts/Brightness.sh @@ -0,0 +1,51 @@ +#!/bin/bash + +iDIR="$HOME/.config/swaync/icons" +notification_timeout=1000 + +# Get brightness +get_backlight() { + echo $(brightnessctl -m | cut -d, -f4) +} + +# Get icons +get_icon() { + current=$(get_backlight | sed 's/%//') + if [ "$current" -le "20" ]; then + icon="$iDIR/brightness-20.png" + elif [ "$current" -le "40" ]; then + icon="$iDIR/brightness-40.png" + elif [ "$current" -le "60" ]; then + icon="$iDIR/brightness-60.png" + elif [ "$current" -le "80" ]; then + icon="$iDIR/brightness-80.png" + else + icon="$iDIR/brightness-100.png" + fi +} + +# Notify +notify_user() { + notify-send -e -h string:x-canonical-private-synchronous:brightness_notif -h int:value:$current -u low -i "$icon" "Brightness : $current%" +} + +# Change brightness +change_backlight() { + brightnessctl set "$1" && get_icon && notify_user +} + +# Execute accordingly +case "$1" in + "--get") + get_backlight + ;; + "--inc") + change_backlight "+10%" + ;; + "--dec") + change_backlight "10%-" + ;; + *) + get_backlight + ;; +esac \ No newline at end of file diff --git a/config/hypr/scripts/BrightnessKbd.sh b/config/hypr/scripts/BrightnessKbd.sh new file mode 100755 index 00000000..3bdcebcb --- /dev/null +++ b/config/hypr/scripts/BrightnessKbd.sh @@ -0,0 +1,49 @@ +#!/bin/bash + +iDIR="$HOME/.config/swaync/icons" + +# Get keyboard brightness +get_kbd_backlight() { + echo $(brightnessctl -d '*::kbd_backlight' -m | cut -d, -f4) +} + +# Get icons +get_icon() { + current=$(get_kbd_backlight | sed 's/%//') + if [ "$current" -le "20" ]; then + icon="$iDIR/brightness-20.png" + elif [ "$current" -le "40" ]; then + icon="$iDIR/brightness-40.png" + elif [ "$current" -le "60" ]; then + icon="$iDIR/brightness-60.png" + elif [ "$current" -le "80" ]; then + icon="$iDIR/brightness-80.png" + else + icon="$iDIR/brightness-100.png" + fi +} +# Notify +notify_user() { + notify-send -e -h string:x-canonical-private-synchronous:brightness_notif -h int:value:$current -u low -i "$icon" "Keyboard Brightness : $current%" +} + +# Change brightness +change_kbd_backlight() { + brightnessctl -d *::kbd_backlight set "$1" && get_icon && notify_user +} + +# Execute accordingly +case "$1" in + "--get") + get_kbd_backlight + ;; + "--inc") + change_kbd_backlight "+30%" + ;; + "--dec") + change_kbd_backlight "30%-" + ;; + *) + get_kbd_backlight + ;; +esac diff --git a/config/hypr/scripts/ChangeBlur.sh b/config/hypr/scripts/ChangeBlur.sh new file mode 100755 index 00000000..95789f5c --- /dev/null +++ b/config/hypr/scripts/ChangeBlur.sh @@ -0,0 +1,15 @@ +#!/bin/bash + +notif="$HOME/.config/swaync/images/bell.png" + +STATE=$(hyprctl -j getoption decoration:blur:passes | jq ".int") + +if [ "${STATE}" == "2" ]; then + hyprctl keyword decoration:blur:size 2 + hyprctl keyword decoration:blur:passes 1 + notify-send -e -u low -i "$notif" "Less blur" +else + hyprctl keyword decoration:blur:size 5 + hyprctl keyword decoration:blur:passes 2 + notify-send -e -u low -i "$notif" "Normal blur" +fi diff --git a/config/hypr/scripts/ChangeLayout.sh b/config/hypr/scripts/ChangeLayout.sh new file mode 100755 index 00000000..93bc2fe9 --- /dev/null +++ b/config/hypr/scripts/ChangeLayout.sh @@ -0,0 +1,28 @@ +#!/bin/bash + +notif="$HOME/.config/swaync/images/bell.png" + +LAYOUT=$(hyprctl -j getoption general:layout | jq '.str' | sed 's/"//g') + +case $LAYOUT in +"master") + hyprctl keyword general:layout dwindle + hyprctl keyword unbind SUPER,J + hyprctl keyword unbind SUPER,K + hyprctl keyword bind SUPER,J,cyclenext + hyprctl keyword bind SUPER,K,cyclenext,prev + hyprctl keyword bind SUPER,O,togglesplit + notify-send -e -u low -i "$notif" "Dwindle Layout" + ;; +"dwindle") + hyprctl keyword general:layout master + hyprctl keyword unbind SUPER,J + hyprctl keyword unbind SUPER,K + hyprctl keyword unbind SUPER,O + hyprctl keyword bind SUPER,J,layoutmsg,cyclenext + hyprctl keyword bind SUPER,K,layoutmsg,cycleprev + notify-send -e -u low -i "$notif" "Master Layout" + ;; +*) ;; + +esac diff --git a/config/hypr/scripts/ClipManager.sh b/config/hypr/scripts/ClipManager.sh new file mode 100755 index 00000000..19d4e903 --- /dev/null +++ b/config/hypr/scripts/ClipManager.sh @@ -0,0 +1,9 @@ +#!/bin/bash +# +# Clipboard Manager + +if [[ ! $(pidof rofi) ]]; then + cliphist list | rofi -dmenu -config ~/.config/rofi/config-clipboard.rasi | cliphist decode | wl-copy +else + pkill rofi +fi diff --git a/config/hypr/scripts/HeatSensors.sh b/config/hypr/scripts/HeatSensors.sh new file mode 100755 index 00000000..a674af27 --- /dev/null +++ b/config/hypr/scripts/HeatSensors.sh @@ -0,0 +1,65 @@ +#!/bin/sh + +##################################### +# # +# @author : 00xZ4CKX # +# ๏‚› GitHub : @S4NKALP # +# ๏„ก Developer : Sankalp Tharu # +# ๏ซฅ Copyright : Sankalp Tharu # +# # +##################################### + + +# Select the right temperature file. # +for temp_dir in /sys/class/hwmon/*; do + [[ "$(< "${temp_dir}/name")" =~ (coretemp|fam15h_power|k10temp) ]] && { + + temp_dirs=("$temp_dir"/temp*_input) + temp_dir=${temp_dirs[0]} + break + + } + +done + + +# Get CPU temp. # +[[ -f "$temp_dir" ]] && deg="$(($(< "$temp_dir") * 100 / 10000))" + +# Add CPU temp to the output. # +if [[ "$cpu_temp" != "off" && "$deg" ]]; then + deg="${deg//.}" + + # Convert to Fahrenheit if enabled + [[ "$cpu_temp" == "F" ]] && deg="$((deg * 90 / 50 + 320))" + + deg_no_format="${deg/${deg: -1}}" + + # Format the output + deg="${deg/${deg: -1}}ยฐ${cpu_temp:-C}" + + +fi + +# from 0ยฐC to 40ยฐC print -> ๏‹‹ +if [[ "$deg_no_format" -le 40 ]] + then + echo -e "๏‹‹ $deg" + +# from 40ยฐC to 60ยฐC print -> ๏‹‰ +elif [[ "$deg_no_format" -le 60 ]] + then + echo -e "๏‹‰ $deg" + + +# from 60ยฐC to 85ยฐC print -> ๏‹ˆ +elif [[ "$deg_no_format" -le 85 ]] + then + echo -e "๏‹ˆ $deg" + +# from 85ยฐC to +... print -> ๏‹‡ +elif [[ "$deg_no_format" -gt 85 ]] + then + # the ' -n "%{F#FF0008}" ' -> red font as 85ยฐC to +... is the default warn temperature + echo -e "${BRed}๏‹‡ $deg" +fi diff --git a/config/hypr/scripts/KeyHints.sh b/config/hypr/scripts/KeyHints.sh new file mode 100755 index 00000000..ac4b70d9 --- /dev/null +++ b/config/hypr/scripts/KeyHints.sh @@ -0,0 +1,57 @@ +#!/bin/bash + + + yad --width=850 --height=950 \ + --center \ + --title="Keybindings" \ + --no-buttons \ + --list \ + --column=Key: \ + --column=Description: \ + --column=Command: \ +"ESC" "close this app" "๏—" "๏…ผ=๏…บ" "SUPER KEY" "(SUPER KEY)" \ +"๏…ผ ENTER" "Terminal" "(kitty)" \ +"ALT ENTeR" "FullScreen Terminal" "(all_kitty)" \ +"ALT SHIFT enter" "Float Terminal" "(kitty_float)" \ +"๏…ผ D" "App Launcher" "(rofi)" \ +"๏…ผ " "App Launcher" "(rofi)" \ +"๏…ผ E" "Open File Manager" "(Thunar)" \ +"๏…ผ C" "close focused app" "(kill)" \ +"๏…ผ SHIFT W" "Wallpaper Select" "(swww)" \ +"ALT SHIFT W" "Random Wallpaper" "(swww)" \ +"CTRL E" "RofiEmoji" "" \ +"๏…ผ N" "ROfiNotes" "" \ +"๏…ผ T" "RofiTmux" "" \ +"ALT M" "RofiMusic" "" \ +"๏…ผ SHIFT T" "RofiTodo" ""\ +"ALT S" "Stop" "(ROfi Music)" \ +"ALT N" "Next track" "(ROfi Music)" \ +"ALT P" "Previous Track" "(ROfi Music)" \ +"ALT R" "Resume" "(ROfi Music)" \ +"ALT W" "Choose waybar layout" "(waybar layout)" \ +"PRINT" "screenshot now" "(grim)" \ +"๏…ผ Z" "screenshot area" "(grim + slurp)" \ +"CTRL PRINT" "screenshot win" "(grim)" \ +"๏…ผ X" "power-menu" "(rofi)" \ +"CTRL ALT Del" "Hyprland Exit" "(SAVE YOUR WORK!!!)" \ +"๏…ผ SHIFT SPACE" "Fullscreen" "(Toggles to full screen)" \ +"๏…ผ A" "Toggle Dwindle | Master Layout" "(Hyprland Layout)" \ +"๏…ผ P" "Toggle Dwindle" "(Pseudo)" \ +"๏…ผ F" "Toggle float" "(single window)" \ +"๏…ผ SHIFT F" "Toggle all windows to float" "(all windows)" \ +"CTRL 1" "cava" "(fly_is_kitty)" \ +"CTRL 2" "donut" "(donut_is_kitty)" \ +"CTRL 3" "tty-clock" "(clock_is_kitty)" \ +"๏…ผ SHIFT A" "All animations off" "" \ +"๏…ผ Shift Q" "Toggle Blur" "normal or less blur" \ +"๏…ผ R" "Record Screen" "(wf-recorder)" \ +"๏…ผ SHIFT R" "Stop Recording" "" \ +"๏…ผ SHIFT O" "Opaque" "" \ +"๏…ผ G" "Toggle Group" "" \ +"๏…ผ U" "Toggle Special Workspace" "" \ +"๏…ผ SHIFT U" "Move Toward Special" "" \ +"๏…ผ F1" "Launch this app" "" \ +"ALT E" "View or EDIT Keybinds, Settings, Monitor" "" \ +"" "" "" \ +"" "For other you can find in ~/.config/hypr/configs/keybind.conf" ""\ + diff --git a/config/hypr/scripts/MediaCtrl.sh b/config/hypr/scripts/MediaCtrl.sh new file mode 100755 index 00000000..9d970443 --- /dev/null +++ b/config/hypr/scripts/MediaCtrl.sh @@ -0,0 +1,59 @@ +#!/bin/bash + +music_icon="$HOME/.config/swaync/icons/music.png" + +# Play the next track +play_next() { + playerctl next + show_music_notification +} + +# Play the previous track +play_previous() { + playerctl previous + show_music_notification +} + +# Toggle play/pause +toggle_play_pause() { + playerctl play-pause + show_music_notification +} + +# Stop playback +stop_playback() { + playerctl stop + notify-send -e -u low -i "$music_icon" "Playback Stopped" +} + +# Display notification with song information +show_music_notification() { + status=$(playerctl status) + if [[ "$status" == "Playing" ]]; then + song_title=$(playerctl metadata title) + song_artist=$(playerctl metadata artist) + notify-send -e -u low -i "$music_icon" "Now Playing:" "$song_title\nby $song_artist" + elif [[ "$status" == "Paused" ]]; then + notify-send -e -u low -i "$music_icon" "Playback Paused" + fi +} + +# Get media control action from command line argument +case "$1" in + "--nxt") + play_next + ;; + "--prv") + play_previous + ;; + "--pause") + toggle_play_pause + ;; + "--stop") + stop_playback + ;; + *) + echo "Usage: $0 [--nxt|--prv|--pause|--stop]" + exit 1 + ;; +esac diff --git a/config/hypr/scripts/MusicControl.sh b/config/hypr/scripts/MusicControl.sh new file mode 100755 index 00000000..b3814e29 --- /dev/null +++ b/config/hypr/scripts/MusicControl.sh @@ -0,0 +1,63 @@ +#! /usr/bin/env bash + +# Control moosic using keyboard + +# SUPER + M should open a submap +# M should open the rofi-music menu +# i should increase volume +# u should decrease volume +# n should trigger next track +# p should trigger previous track +# k should pause resume music +# s should stop music + +function open_rofi_music(){ + exec $HOME/.config/hypr/scripts/RofiMusic.sh +} + +function increase_volume(){ + current_volume=$(playerctl --player=mpv volume) + new_volume=$(echo "$current_volume + 0.1" | bc) + playerctl --player=mpv volume $new_volume && notify-send "๐Ÿ”Š Increasing track volume" +} + +function decrease_volume(){ + current_volume=$(playerctl --player=mpv volume) + new_volume=$(echo "$current_volume - 0.1" | bc) + playerctl --player=mpv volume $new_volume && notify-send "๐Ÿ”‰ Decreasing track volume" +} + +function next_track(){ + playerctl --player=mpv next && notify-send "โญ๏ธ Next track playing" +} + +function prev_track(){ + playerctl --player=mpv previous && notify-send "โฎ๏ธ Previous track playing" +} + +function play_pause(){ + status=$(playerctl --player=mpv status) + if [[ "$status" == "Playing" ]] + then + playerctl --player=mpv pause && notify-send "โธ๏ธ Music paused" + else + playerctl --player=mpv play && notify-send "โ–ถ๏ธ Resuming music" + fi +} + +function stop_music(){ + kill $(pidof "rofi-music") && notify-send "๐Ÿ›‘ Music stopped" +} + +while getopts midnpks flag +do + case "${flag}" in + m) open_rofi_music ;; + i) increase_volume ;; + d) decrease_volume ;; + s) stop_music ;; + n) next_track ;; + p) prev_track ;; + k) play_pause ;; + esac +done diff --git a/config/hypr/scripts/Polkit.sh b/config/hypr/scripts/Polkit.sh new file mode 100755 index 00000000..d4e8342e --- /dev/null +++ b/config/hypr/scripts/Polkit.sh @@ -0,0 +1,28 @@ +#!/bin/bash + +# Polkit possible paths files to check +polkit=( + "/usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1" + "/usr/lib/polkit-kde-authentication-agent-1" + "/usr/lib/polkit-gnome-authentication-agent-1" + "/usr/libexec/polkit-gnome-authentication-agent-1" + "/usr/lib/x86_64-linux-gnu/libexec/polkit-kde-authentication-agent-1" + "/usr/lib/policykit-1-gnome/polkit-gnome-authentication-agent-1" +) + +executed=false # Flag to track if a file has been executed + +# Loop through the list of files +for file in "${polkit[@]}"; do + if [ -e "$file" ]; then + echo "File $file found, executing command..." + exec "$file" + executed=true + break + fi +done + +# If none of the files were found, you can add a fallback command here +if [ "$executed" == false ]; then + echo "None of the specified files were found. Install a Polkit" +fi diff --git a/config/hypr/scripts/QuickEdit.sh b/config/hypr/scripts/QuickEdit.sh new file mode 100755 index 00000000..7c269662 --- /dev/null +++ b/config/hypr/scripts/QuickEdit.sh @@ -0,0 +1,53 @@ +#!/bin/bash + +defaultDir="$HOME/.config/hypr/configs" +userDir="$HOME/.config/hypr/UserConfigs" + +menu(){ + printf "1. view Env-variables\n" + printf "2. view Window-Rules\n" + printf "3. view Startup_Apps\n" + printf "4. view User-Keybinds\n" + printf "5. view Monitors\n" + printf "6. view Laptop-Keybinds\n" + printf "7. view User-Settings\n" + printf "8. view Default-Settings\n" + printf "9. view Default-Keybinds\n" +} + +main() { + choice=$(menu | rofi -dmenu -config ~/.config/rofi/config-quickedit.rasi | cut -d. -f1) + case $choice in + 1) + kitty -e nano "$userDir/ENVariables.conf" + ;; + 2) + kitty -e nano "$userDir/WindowRules.conf" + ;; + 3) + kitty -e nano "$userDir/Startup_Apps.conf" + ;; + 4) + kitty -e nano "$userDir/UserKeybinds.conf" + ;; + 5) + kitty -e nano "$userDir/Monitors.conf" + ;; + 6) + kitty -e nano "$userDir/Laptops.conf" + ;; + 7) + kitty -e nano "$userDir/UserSettings.conf" + ;; + 8) + kitty -e nano "$defaultDir/Settings.conf" + ;; + 9) + kitty -e nano "$defaultDir/Keybinds.conf" + ;; + *) + ;; + esac +} + +main diff --git a/config/hypr/scripts/QuickLink.sh b/config/hypr/scripts/QuickLink.sh new file mode 100755 index 00000000..3332262f --- /dev/null +++ b/config/hypr/scripts/QuickLink.sh @@ -0,0 +1,98 @@ +#!/usr/bin/env bash + + +# Import Theme +theme="$HOME/.config/rofi/config-quicklink.rasi" + +# Theme Elements +prompt="Quick Links: Using '$BROWSER' as web browser" + +# Check if the theme variable is not empty +if [ -n "$theme" ]; then + list_col='6' + list_row='1' +fi + +# Options +if [ -z "$BROWSER" ]; then + BROWSER="firefox" # Set your default browser here + prompt="Quick Links: Using '$BROWSER' as web browser" +else + prompt="Quick Links: Using '$BROWSER' as web browser" +fi + +layout=$(grep 'USE_ICON' "$theme" | cut -d'=' -f2) +if [ "$layout" == 'NO' ]; then + option_1="๏†  Google" + option_2="๏ƒ  Gmail" + option_3="๏…ช Youtube" + option_4="๏‚› Github" + option_5="๏Ё Reddit" + option_6="๓ฐˆŒ Facebook" +else + option_1="๏† " + option_2="๏ƒ " + option_3="๏…ช" + option_4="๏‚›" + option_5="๏Ё" + option_6="๓ฐˆŒ" +fi + +# Define the font variable +efonts="Fira Code SemiBold 28" + +# Rofi CMD +rofi_cmd() { + rofi -theme-str "listview {columns: $list_col; lines: $list_row;}" \ + -theme-str 'textbox-prompt-colon {str: "๏‚ฌ";}' \ + -theme-str "element-text {font: \"$efonts\";}" \ + -dmenu \ + -p "$prompt" \ + -markup-rows \ + -theme "$theme" +} + +# Pass variables to rofi dmenu +run_rofi() { + echo -e "$option_1\n$option_2\n$option_3\n$option_4\n$option_5\n$option_6" | rofi_cmd +} + +# Execute Command +run_cmd() { + if [ "$1" == '--opt1' ]; then + xdg-open 'https://www.google.com/' + elif [ "$1" == '--opt2' ]; then + xdg-open 'https://mail.google.com/' + elif [ "$1" == '--opt3' ]; then + xdg-open 'https://www.youtube.com/' + elif [ "$1" == '--opt4' ]; then + xdg-open 'https://www.github.com/' + elif [ "$1" == '--opt5' ]; then + xdg-open 'https://www.reddit.com/' + elif [ "$1" == '--opt6' ]; then + xdg-open 'https://www.facebook.com/' + fi +} + +# Actions +chosen="$(run_rofi)" +case $chosen in + $option_1) + run_cmd --opt1 + ;; + $option_2) + run_cmd --opt2 + ;; + $option_3) + run_cmd --opt3 + ;; + $option_4) + run_cmd --opt4 + ;; + $option_5) + run_cmd --opt5 + ;; + $option_6) + run_cmd --opt6 + ;; +esac diff --git a/config/hypr/scripts/Refresh.sh b/config/hypr/scripts/Refresh.sh new file mode 100755 index 00000000..93d3c4d6 --- /dev/null +++ b/config/hypr/scripts/Refresh.sh @@ -0,0 +1,38 @@ +#!/usr/bin/env bash + +SCRIPTSDIR=$HOME/.config/hypr/scripts +UserSCRIPTSDIR=$HOME/.config/hypr/UserScripts + +# Define file_exists function +file_exists() { + if [ -e "$1" ]; then + return 0 # File exists + else + return 1 # File does not exist + fi +} + +# Kill already running processes +_ps=(waybar rofi swaync) +for _prs in "${_ps[@]}"; do + if pidof "${_prs}" >/dev/null; then + pkill "${_prs}" + fi +done + +sleep 0.3 +# Relaunch waybar +waybar & + +# relaunch swaync +sleep 0.5 +swaync > /dev/null 2>&1 & + +# Relaunching rainbow borders if the script exists +sleep 1 +if file_exists "${UserSCRIPTSDIR}/RainbowBorders.sh"; then + ${UserSCRIPTSDIR}/RainbowBorders.sh & +fi + + +exit 0 diff --git a/config/hypr/scripts/RofiEmoji.sh b/config/hypr/scripts/RofiEmoji.sh new file mode 100755 index 00000000..324a738b --- /dev/null +++ b/config/hypr/scripts/RofiEmoji.sh @@ -0,0 +1,1544 @@ +#!/bin/bash + +sed '1,/^### DATA ###$/d' $0 | +rofi -dmenu -config ~/.config/rofi/config-emoji.rasi | +cut -d ' ' -f 1 | tr -d '\n' | wl-copy + +exit + +### DATA ### +๐Ÿ˜€ Grinning Face +๐Ÿ˜ Beaming Face With Smiling Eyes +๐Ÿ˜‚ Face With Tears Of Joy +๐Ÿคฃ Rolling On The Floor Laughing +๐Ÿ˜ƒ Grinning Face With Big Eyes +๐Ÿ˜„ Grinning Face With Smiling Eyes +๐Ÿ˜… Grinning Face With Sweat +๐Ÿ˜† Grinning Squinting Face +๐Ÿ˜‰ Winking Face +๐Ÿ˜Š Smiling Face With Smiling Eyes +๐Ÿฅฐ Smiling Face with Hearts +๐Ÿ˜‹ Face Savoring Food +๐Ÿ˜Ž Smiling Face With Sunglasses +๐Ÿ˜ Smiling Face With Heart-Eyes +๐Ÿ˜˜ Face Blowing A Kiss +๐Ÿ˜— Kissing Face +๐Ÿ˜™ Kissing Face With Smiling Eyes +๐Ÿ˜š Kissing Face With Closed Eyes +โ˜บ๏ธ Smiling Face +๐Ÿ™‚ Slightly Smiling Face +๐Ÿค— Hugging Face +๐Ÿคฉ Star-Struck +๐Ÿค” Thinking Face +๐Ÿคจ Face With Raised Eyebrow +๐Ÿ˜ Neutral Face +๐Ÿ˜‘ Expressionless Face +๐Ÿ˜ถ Face Without Mouth +๐Ÿ™„ Face With Rolling Eyes +๐Ÿ˜ Smirking Face +๐Ÿ˜ฃ Persevering Face +๐Ÿ˜ฅ Sad But Relieved Face +๐Ÿ˜ฎ Face With Open Mouth +๐Ÿค Zipper-Mouth Face +๐Ÿ˜ฏ Hushed Face +๐Ÿ˜ช Sleepy Face +๐Ÿ˜ซ Tired Face +๐Ÿฅฑ Yawning Face +๐Ÿ˜ด Sleeping Face +๐Ÿ˜Œ Relieved Face +๐Ÿ˜› Face With Tongue +๐Ÿ˜œ Winking Face With Tongue +๐Ÿ˜ Squinting Face With Tongue +๐Ÿคค Drooling Face +๐Ÿ˜’ Unamused Face +๐Ÿ˜“ Downcast Face With Sweat +๐Ÿ˜” Pensive Face +๐Ÿ˜• Confused Face +๐Ÿ™ƒ Upside-Down Face +๐Ÿค‘ Money-Mouth Face +๐Ÿ˜ฒ Astonished Face +โ˜น๏ธ Frowning Face +๐Ÿ™ Slightly Frowning Face +๐Ÿ˜– Confounded Face +๐Ÿ˜ž Disappointed Face +๐Ÿ˜Ÿ Worried Face +๐Ÿ˜ค Face With Steam From Nose +๐Ÿ˜ข Crying Face +๐Ÿ˜ญ Loudly Crying Face +๐Ÿ˜ฆ Frowning Face With Open Mouth +๐Ÿ˜ง Anguished Face +๐Ÿ˜จ Fearful Face +๐Ÿ˜ฉ Weary Face +๐Ÿคฏ Exploding Head +๐Ÿ˜ฌ Grimacing Face +๐Ÿ˜ฐ Anxious Face With Sweat +๐Ÿ˜ฑ Face Screaming In Fear +๐Ÿ˜ณ Flushed Face +๐Ÿฅบ pleading face +๐Ÿคช Zany Face +๐Ÿ˜ต Dizzy Face +๐Ÿ˜ก Pouting Face +๐Ÿ˜  Angry Face +๐Ÿคฌ Face With Symbols On Mouth +๐Ÿ˜ท Face With Medical Mask +๐Ÿค’ Face With Thermometer +๐Ÿค• Face With Head-Bandage +๐Ÿคข Nauseated Face +๐Ÿคฎ Face Vomiting +๐Ÿคง Sneezing Face +๐Ÿ˜‡ Smiling Face With Halo +๐Ÿค  Cowboy Hat Face +๐Ÿคฅ Lying Face +๐Ÿคซ Shushing Face +๐Ÿคญ Face With Hand Over Mouth +๐Ÿง Face With Monocle +๐Ÿค“ Nerd Face +๐Ÿ˜ˆ Smiling Face With Horns +๐Ÿ‘ฟ Angry Face With Horns +๐Ÿคก Clown Face +๐Ÿ‘น Ogre +๐Ÿ‘บ Goblin +๐Ÿ’€ Skull +โ˜ ๏ธ Skull And Crossbones +๐Ÿ‘ป Ghost +๐Ÿ‘ฝ Alien +๐Ÿ‘พ Alien Monster +๐Ÿค– Robot Face +๐Ÿ’ฉ Pile Of Poo +๐Ÿ˜บ Grinning Cat Face +๐Ÿ˜ธ Grinning Cat Face With Smiling Eyes +๐Ÿ˜น Cat Face With Tears Of Joy +๐Ÿ˜ป Smiling Cat Face With Heart-Eyes +๐Ÿ˜ผ Cat Face With Wry Smile +๐Ÿ˜ฝ Kissing Cat Face +๐Ÿ™€ Weary Cat Face +๐Ÿ˜ฟ Crying Cat Face +๐Ÿ˜พ Pouting Cat Face +๐Ÿ™ˆ See-No-Evil Monkey +๐Ÿ™‰ Hear-No-Evil Monkey +๐Ÿ™Š Speak-No-Evil Monkey +๐Ÿ‘ถ Baby +๐Ÿง’ Child +๐Ÿ‘ฆ Boy +๐Ÿ‘ง Girl +๐Ÿง‘ Adult +๐Ÿ‘จ Man +๐Ÿ‘ฉ Woman +๐Ÿง“ Older Adult +๐Ÿ‘ด Old Man +๐Ÿ‘ต Old Woman +๐Ÿ‘จโ€โš•๏ธ Man Health Worker +๐Ÿ‘ฉโ€โš•๏ธ Woman Health Worker +๐Ÿ‘จโ€๐ŸŽ“ Man Student +๐Ÿ‘ฉโ€๐ŸŽ“ Woman Student +๐Ÿ‘จโ€๐Ÿซ Man Teacher +๐Ÿ‘ฉโ€๐Ÿซ Woman Teacher +๐Ÿ‘จโ€โš–๏ธ Man Judge +๐Ÿ‘ฉโ€โš–๏ธ Woman Judge +๐Ÿ‘จโ€๐ŸŒพ Man Farmer +๐Ÿ‘ฉโ€๐ŸŒพ Woman Farmer +๐Ÿ‘จโ€๐Ÿณ Man Cook +๐Ÿ‘ฉโ€๐Ÿณ Woman Cook +๐Ÿ‘จโ€๐Ÿ”ง Man Mechanic +๐Ÿ‘ฉโ€๐Ÿ”ง Woman Mechanic +๐Ÿ‘จโ€๐Ÿญ Man Factory Worker +๐Ÿ‘ฉโ€๐Ÿญ Woman Factory Worker +๐Ÿ‘จโ€๐Ÿ’ผ Man Office Worker +๐Ÿ‘ฉโ€๐Ÿ’ผ Woman Office Worker +๐Ÿ‘จโ€๐Ÿ”ฌ Man Scientist +๐Ÿ‘ฉโ€๐Ÿ”ฌ Woman Scientist +๐Ÿ‘จโ€๐Ÿ’ป Man Technologist +๐Ÿ‘ฉโ€๐Ÿ’ป Woman Technologist +๐Ÿ‘จโ€๐ŸŽค Man Singer +๐Ÿ‘ฉโ€๐ŸŽค Woman Singer +๐Ÿ‘จโ€๐ŸŽจ Man Artist +๐Ÿ‘ฉโ€๐ŸŽจ Woman Artist +๐Ÿ‘จโ€โœˆ๏ธ Man Pilot +๐Ÿ‘ฉโ€โœˆ๏ธ Woman Pilot +๐Ÿ‘จโ€๐Ÿš€ Man Astronaut +๐Ÿ‘ฉโ€๐Ÿš€ Woman Astronaut +๐Ÿ‘จโ€๐Ÿš’ Man Firefighter +๐Ÿ‘ฉโ€๐Ÿš’ Woman Firefighter +๐Ÿ‘ฎ Police Officer +๐Ÿ‘ฎโ€โ™‚๏ธ Man Police Officer +๐Ÿ‘ฎโ€โ™€๏ธ Woman Police Officer +๐Ÿ•ต๏ธ Detective +๐Ÿ•ต๏ธโ€โ™‚๏ธ Man Detective +๐Ÿ•ต๏ธโ€โ™€๏ธ Woman Detective +๐Ÿ’‚ Guard +๐Ÿ’‚โ€โ™‚๏ธ Man Guard +๐Ÿ’‚โ€โ™€๏ธ Woman Guard +๐Ÿ‘ท Construction Worker +๐Ÿ‘ทโ€โ™‚๏ธ Man Construction Worker +๐Ÿ‘ทโ€โ™€๏ธ Woman Construction Worker +๐Ÿคด Prince +๐Ÿ‘ธ Princess +๐Ÿ‘ณ Person Wearing Turban +๐Ÿ‘ณโ€โ™‚๏ธ Man Wearing Turban +๐Ÿ‘ณโ€โ™€๏ธ Woman Wearing Turban +๐Ÿ‘ฒ Man With Chinese Cap +๐Ÿง• Woman With Headscarf +๐Ÿง” Bearded Person +๐Ÿ‘ฑโ€โ™‚๏ธ Blond-Haired Man +๐Ÿ‘ฑโ€โ™€๏ธ Blond-Haired Woman +๐Ÿคต Man In Tuxedo +๐Ÿ‘ฐ Bride With Veil +๐Ÿคฐ Pregnant Woman +๐Ÿคฑ Breast-Feeding +๐Ÿ‘ผ Baby Angel +๐ŸŽ… Santa Claus +๐Ÿคถ Mrs. Claus +๐Ÿง™ Mage +๐Ÿง™โ€โ™€๏ธ Woman Mage +๐Ÿง™โ€โ™‚๏ธ Man Mage +๐Ÿงš Fairy +๐Ÿงšโ€โ™€๏ธ Woman Fairy +๐Ÿงšโ€โ™‚๏ธ Man Fairy +๐Ÿง› Vampire +๐Ÿง›โ€โ™€๏ธ Woman Vampire +๐Ÿง›โ€โ™‚๏ธ Man Vampire +๐Ÿงœ Merperson +๐Ÿงœโ€โ™€๏ธ Mermaid +๐Ÿงœโ€โ™‚๏ธ Merman +๐Ÿง Elf +๐Ÿงโ€โ™€๏ธ Woman Elf +๐Ÿงโ€โ™‚๏ธ Man Elf +๐Ÿงž Genie +๐Ÿงžโ€โ™€๏ธ Woman Genie +๐Ÿงžโ€โ™‚๏ธ Man Genie +๐ŸงŸ Zombie +๐ŸงŸโ€โ™€๏ธ Woman Zombie +๐ŸงŸโ€โ™‚๏ธ Man Zombie +๐Ÿ™ Person Frowning +๐Ÿ™โ€โ™‚๏ธ Man Frowning +๐Ÿ™โ€โ™€๏ธ Woman Frowning +๐Ÿ™Ž Person Pouting +๐Ÿ™Žโ€โ™‚๏ธ Man Pouting +๐Ÿ™Žโ€โ™€๏ธ Woman Pouting +๐Ÿ™… Person Gesturing No +๐Ÿ™…โ€โ™‚๏ธ Man Gesturing No +๐Ÿ™…โ€โ™€๏ธ Woman Gesturing No +๐Ÿ™† Person Gesturing Ok +๐Ÿ™†โ€โ™‚๏ธ Man Gesturing Ok +๐Ÿ™†โ€โ™€๏ธ Woman Gesturing Ok +๐Ÿ’ Person Tipping Hand +๐Ÿ’โ€โ™‚๏ธ Man Tipping Hand +๐Ÿ’โ€โ™€๏ธ Woman Tipping Hand +๐Ÿ™‹ Person Raising Hand +๐Ÿ™‹โ€โ™‚๏ธ Man Raising Hand +๐Ÿ™‹โ€โ™€๏ธ Woman Raising Hand +๐Ÿ™‡ Person Bowing +๐Ÿ™‡โ€โ™‚๏ธ Man Bowing +๐Ÿ™‡โ€โ™€๏ธ Woman Bowing +๐Ÿคฆ Person Facepalming +๐Ÿคฆโ€โ™‚๏ธ Man Facepalming +๐Ÿคฆโ€โ™€๏ธ Woman Facepalming +๐Ÿคท Person Shrugging +๐Ÿคทโ€โ™‚๏ธ Man Shrugging +๐Ÿคทโ€โ™€๏ธ Woman Shrugging +๐Ÿ’† Person Getting Massage +๐Ÿ’†โ€โ™‚๏ธ Man Getting Massage +๐Ÿ’†โ€โ™€๏ธ Woman Getting Massage +๐Ÿ’‡ Person Getting Haircut +๐Ÿ’‡โ€โ™‚๏ธ Man Getting Haircut +๐Ÿ’‡โ€โ™€๏ธ Woman Getting Haircut +๐Ÿšถ Person Walking +๐Ÿšถโ€โ™‚๏ธ Man Walking +๐Ÿšถโ€โ™€๏ธ Woman Walking +๐Ÿƒ Person Running +๐Ÿƒโ€โ™‚๏ธ Man Running +๐Ÿƒโ€โ™€๏ธ Woman Running +๐Ÿ’ƒ Woman Dancing +๐Ÿ•บ Man Dancing +๐Ÿ‘ฏ People With Bunny Ears +๐Ÿ‘ฏโ€โ™‚๏ธ Men With Bunny Ears +๐Ÿ‘ฏโ€โ™€๏ธ Women With Bunny Ears +๐Ÿง– Person In Steamy Room +๐Ÿง–โ€โ™€๏ธ Woman In Steamy Room +๐Ÿง–โ€โ™‚๏ธ Man In Steamy Room +๐Ÿง— Person Climbing +๐Ÿง—โ€โ™€๏ธ Woman Climbing +๐Ÿง—โ€โ™‚๏ธ Man Climbing +๐Ÿง˜ Person In Lotus Position +๐Ÿง˜โ€โ™€๏ธ Woman In Lotus Position +๐Ÿง˜โ€โ™‚๏ธ Man In Lotus Position +๐Ÿ›€ Person Taking Bath +๐Ÿ›Œ Person In Bed +๐Ÿ•ด๏ธ Man In Suit Levitating +๐Ÿ—ฃ๏ธ Speaking Head +๐Ÿ‘ค Bust In Silhouette +๐Ÿ‘ฅ Busts In Silhouette +๐Ÿคบ Person Fencing +๐Ÿ‡ Horse Racing +โ›ท๏ธ Skier +๐Ÿ‚ Snowboarder +๐ŸŒ๏ธ Person Golfing +๐ŸŒ๏ธโ€โ™‚๏ธ Man Golfing +๐ŸŒ๏ธโ€โ™€๏ธ Woman Golfing +๐Ÿ„ Person Surfing +๐Ÿ„โ€โ™‚๏ธ Man Surfing +๐Ÿ„โ€โ™€๏ธ Woman Surfing +๐Ÿšฃ Person Rowing Boat +๐Ÿšฃโ€โ™‚๏ธ Man Rowing Boat +๐Ÿšฃโ€โ™€๏ธ Woman Rowing Boat +๐ŸŠ Person Swimming +๐ŸŠโ€โ™‚๏ธ Man Swimming +๐ŸŠโ€โ™€๏ธ Woman Swimming +โ›น๏ธ Person Bouncing Ball +โ›น๏ธโ€โ™‚๏ธ Man Bouncing Ball +โ›น๏ธโ€โ™€๏ธ Woman Bouncing Ball +๐Ÿ‹๏ธ Person Lifting Weights +๐Ÿ‹๏ธโ€โ™‚๏ธ Man Lifting Weights +๐Ÿ‹๏ธโ€โ™€๏ธ Woman Lifting Weights +๐Ÿšด Person Biking +๐Ÿšดโ€โ™‚๏ธ Man Biking +๐Ÿšดโ€โ™€๏ธ Woman Biking +๐Ÿšต Person Mountain Biking +๐Ÿšตโ€โ™‚๏ธ Man Mountain Biking +๐Ÿšตโ€โ™€๏ธ Woman Mountain Biking +๐ŸŽ๏ธ Racing Car +๐Ÿ๏ธ Motorcycle +๐Ÿคธ Person Cartwheeling +๐Ÿคธโ€โ™‚๏ธ Man Cartwheeling +๐Ÿคธโ€โ™€๏ธ Woman Cartwheeling +๐Ÿคผ People Wrestling +๐Ÿคผโ€โ™‚๏ธ Men Wrestling +๐Ÿคผโ€โ™€๏ธ Women Wrestling +๐Ÿคฝ Person Playing Water Polo +๐Ÿคฝโ€โ™‚๏ธ Man Playing Water Polo +๐Ÿคฝโ€โ™€๏ธ Woman Playing Water Polo +๐Ÿคพ Person Playing Handball +๐Ÿคพโ€โ™‚๏ธ Man Playing Handball +๐Ÿคพโ€โ™€๏ธ Woman Playing Handball +๐Ÿคน Person Juggling +๐Ÿคนโ€โ™‚๏ธ Man Juggling +๐Ÿคนโ€โ™€๏ธ Woman Juggling +๐Ÿ‘ซ Man And Woman Holding Hands +๐Ÿ‘ฌ Two Men Holding Hands +๐Ÿ‘ญ Two Women Holding Hands +๐Ÿ’ Kiss +๐Ÿ’‘ Couple With Heart +๐Ÿ‘ช Family +๐Ÿคณ Selfie +๐Ÿ’ช Flexed Biceps +๐Ÿ‘ˆ Backhand Index Pointing Left +๐Ÿ‘‰ Backhand Index Pointing Right +โ˜๏ธ Index Pointing Up +๐Ÿ‘† Backhand Index Pointing Up +๐Ÿ–• Middle Finger +๐Ÿ‘‡ Backhand Index Pointing Down +โœŒ๏ธ Victory Hand +๐Ÿคž Crossed Fingers +๐Ÿ–– Vulcan Salute +๐Ÿค˜ Sign Of The Horns +๐Ÿค™ Call Me Hand +๐Ÿ–๏ธ Hand With Fingers Splayed +โœ‹ Raised Hand +๐Ÿ‘Œ Ok Hand +๐Ÿ‘ Thumbs Up +๐Ÿ‘Ž Thumbs Down +โœŠ Raised Fist +๐Ÿ‘Š Oncoming Fist +๐Ÿค› Left-Facing Fist +๐Ÿคœ Right-Facing Fist +๐Ÿคš Raised Back Of Hand +๐Ÿ‘‹ Waving Hand +๐ŸคŸ Love-You Gesture +โœ๏ธ Writing Hand +๐Ÿ‘ Clapping Hands +๐Ÿ‘ Open Hands +๐Ÿ™Œ Raising Hands +๐Ÿคฒ Palms Up Together +๐Ÿ™ Folded Hands +๐Ÿค Handshake +๐Ÿ’… Nail Polish +๐Ÿ‘‚ Ear +๐Ÿ‘ƒ Nose +๐Ÿ‘ฃ Footprints +๐Ÿ‘€ Eyes +๐Ÿ‘๏ธ Eye +๐Ÿ‘๏ธโ€๐Ÿ—จ๏ธ Eye In Speech Bubble +๐Ÿง  Brain +๐Ÿ‘… Tongue +๐Ÿ‘„ Mouth +๐Ÿ’‹ Kiss Mark +๐Ÿ’˜ Heart With Arrow +โค๏ธ Red Heart +๐Ÿ’“ Beating Heart +๐Ÿ’” Broken Heart +๐Ÿ’• Two Hearts +๐Ÿ’– Sparkling Heart +๐Ÿ’— Growing Heart +๐Ÿ’™ Blue Heart +๐Ÿ’š Green Heart +๐Ÿ’› Yellow Heart +๐Ÿงก Orange Heart +๐Ÿ’œ Purple Heart +๐Ÿ–ค Black Heart +๐Ÿค White Heart +๐ŸคŽ Brown Heart +๐Ÿ’ Heart With Ribbon +๐Ÿ’ž Revolving Hearts +๐Ÿ’Ÿ Heart Decoration +โฃ๏ธ Heavy Heart Exclamation +๐Ÿ’Œ Love Letter +๐Ÿ’ค Zzz +๐Ÿ’ข Anger Symbol +๐Ÿ’ฃ Bomb +๐Ÿ’ฅ Collision +๐Ÿ’ฆ Sweat Droplets +๐Ÿ’จ Dashing Away +๐Ÿ’ซ Dizzy +๐Ÿ’ฌ Speech Balloon +๐Ÿ—จ๏ธ Left Speech Bubble +๐Ÿ—ฏ๏ธ Right Anger Bubble +๐Ÿ’ญ Thought Balloon +๐Ÿ•ณ๏ธ Hole +๐Ÿ‘“ Glasses +๐Ÿ•ถ๏ธ Sunglasses +๐Ÿ‘” Necktie +๐Ÿ‘• T-Shirt +๐Ÿ‘– Jeans +๐Ÿงฃ Scarf +๐Ÿงค Gloves +๐Ÿงฅ Coat +๐Ÿงฆ Socks +๐Ÿ‘— Dress +๐Ÿ‘˜ Kimono +๐Ÿ‘™ Bikini +๐Ÿ‘š Woman's Clothes +๐Ÿ‘› Purse +๐Ÿ‘œ Handbag +๐Ÿ‘ Clutch Bag +๐Ÿ›๏ธ Shopping Bags +๐ŸŽ’ School Backpack +๐Ÿ‘ž Man's Shoe +๐Ÿ‘Ÿ Running Shoe +๐Ÿ‘  High-Heeled Shoe +๐Ÿ‘ก Woman's Sandal +๐Ÿ‘ข Woman's Boot +๐Ÿ‘‘ Crown +๐Ÿ‘’ Woman's Hat +๐ŸŽฉ Top Hat +๐ŸŽ“ Graduation Cap +๐Ÿงข Billed Cap +โ›‘๏ธ Rescue Worker's Helmet +๐Ÿ“ฟ Prayer Beads +๐Ÿ’„ Lipstick +๐Ÿ’ Ring +๐Ÿ’Ž Gem Stone +๐Ÿต Monkey Face +๐Ÿ’ Monkey +๐Ÿฆ Gorilla +๐Ÿถ Dog Face +๐Ÿ• Dog +๐Ÿฉ Poodle +๐Ÿบ Wolf Face +๐ŸฆŠ Fox Face +๐Ÿฑ Cat Face +๐Ÿˆ Cat +๐Ÿฆ Lion Face +๐Ÿฏ Tiger Face +๐Ÿ… Tiger +๐Ÿ† Leopard +๐Ÿด Horse Face +๐ŸŽ Horse +๐Ÿฆ„ Unicorn Face +๐Ÿฆ“ Zebra +๐ŸฆŒ Deer +๐Ÿฎ Cow Face +๐Ÿ‚ Ox +๐Ÿƒ Water Buffalo +๐Ÿ„ Cow +๐Ÿท Pig Face +๐Ÿ– Pig +๐Ÿ— Boar +๐Ÿฝ Pig Nose +๐Ÿ Ram +๐Ÿ‘ Ewe +๐Ÿ Goat +๐Ÿช Camel +๐Ÿซ Two-Hump Camel +๐Ÿฆ’ Giraffe +๐Ÿ˜ Elephant +๐Ÿฆ Rhinoceros +๐Ÿญ Mouse Face +๐Ÿ Mouse +๐Ÿ€ Rat +๐Ÿน Hamster Face +๐Ÿฐ Rabbit Face +๐Ÿ‡ Rabbit +๐Ÿฟ๏ธ Chipmunk +๐Ÿฆ” Hedgehog +๐Ÿฆ‡ Bat +๐Ÿป Bear Face +๐Ÿจ Koala +๐Ÿผ Panda Face +๐Ÿพ Paw Prints +๐Ÿฆƒ Turkey +๐Ÿ” Chicken +๐Ÿ“ Rooster +๐Ÿฃ Hatching Chick +๐Ÿค Baby Chick +๐Ÿฅ Front-Facing Baby Chick +๐Ÿฆ Bird +๐Ÿง Penguin +๐Ÿ•Š๏ธ Dove +๐Ÿฆ… Eagle +๐Ÿฆ† Duck +๐Ÿฆ‰ Owl +๐Ÿธ Frog Face +๐ŸŠ Crocodile +๐Ÿข Turtle +๐ŸฆŽ Lizard +๐Ÿ Snake +๐Ÿฒ Dragon Face +๐Ÿ‰ Dragon +๐Ÿฆ• Sauropod +๐Ÿฆ– T-Rex +๐Ÿณ Spouting Whale +๐Ÿ‹ Whale +๐Ÿฌ Dolphin +๐ŸŸ Fish +๐Ÿ  Tropical Fish +๐Ÿก Blowfish +๐Ÿฆˆ Shark +๐Ÿ™ Octopus +๐Ÿš Spiral Shell +๐Ÿฆ€ Crab +๐Ÿฆ Shrimp +๐Ÿฆ‘ Squid +๐ŸŒ Snail +๐Ÿฆ‹ Butterfly +๐Ÿ› Bug +๐Ÿœ Ant +๐Ÿ Honeybee +๐Ÿž Lady Beetle +๐Ÿฆ— Cricket +๐Ÿ•ท๏ธ Spider +๐Ÿ•ธ๏ธ Spider Web +๐Ÿฆ‚ Scorpion +๐Ÿ’ Bouquet +๐ŸŒธ Cherry Blossom +๐Ÿ’ฎ White Flower +๐Ÿต๏ธ Rosette +๐ŸŒน Rose +๐Ÿฅ€ Wilted Flower +๐ŸŒบ Hibiscus +๐ŸŒป Sunflower +๐ŸŒผ Blossom +๐ŸŒท Tulip +๐ŸŒฑ Seedling +๐ŸŒฒ Evergreen Tree +๐ŸŒณ Deciduous Tree +๐ŸŒด Palm Tree +๐ŸŒต Cactus +๐ŸŒพ Sheaf Of Rice +๐ŸŒฟ Herb +โ˜˜๏ธ Shamrock +๐Ÿ€ Four Leaf Clover +๐Ÿ Maple Leaf +๐Ÿ‚ Fallen Leaf +๐Ÿƒ Leaf Fluttering In Wind +๐Ÿ‡ Grapes +๐Ÿˆ Melon +๐Ÿ‰ Watermelon +๐ŸŠ Tangerine +๐Ÿ‹ Lemon +๐ŸŒ Banana +๐Ÿ Pineapple +๐ŸŽ Red Apple +๐Ÿ Green Apple +๐Ÿ Pear +๐Ÿ‘ Peach +๐Ÿ’ Cherries +๐Ÿ“ Strawberry +๐Ÿฅ Kiwi Fruit +๐Ÿ… Tomato +๐Ÿฅฅ Coconut +๐Ÿฅ‘ Avocado +๐Ÿ† Eggplant +๐Ÿฅ” Potato +๐Ÿฅ• Carrot +๐ŸŒฝ Ear Of Corn +๐ŸŒถ๏ธ Hot Pepper +๐Ÿฅ’ Cucumber +๐Ÿฅฆ Broccoli +๐Ÿ„ Mushroom +๐Ÿฅœ Peanuts +๐ŸŒฐ Chestnut +๐Ÿž Bread +๐Ÿฅ Croissant +๐Ÿฅ– Baguette Bread +๐Ÿฅจ Pretzel +๐Ÿฅž Pancakes +๐Ÿง€ Cheese Wedge +๐Ÿ– Meat On Bone +๐Ÿ— Poultry Leg +๐Ÿฅฉ Cut Of Meat +๐Ÿฅ“ Bacon +๐Ÿ” Hamburger +๐ŸŸ French Fries +๐Ÿ• Pizza +๐ŸŒญ Hot Dog +๐Ÿฅช Sandwich +๐ŸŒฎ Taco +๐ŸŒฏ Burrito +๐Ÿฅ™ Stuffed Flatbread +๐Ÿฅš Egg +๐Ÿณ Cooking +๐Ÿฅ˜ Shallow Pan Of Food +๐Ÿฒ Pot Of Food +๐Ÿฅฃ Bowl With Spoon +๐Ÿฅ— Green Salad +๐Ÿฟ Popcorn +๐Ÿฅซ Canned Food +๐Ÿฑ Bento Box +๐Ÿ˜ Rice Cracker +๐Ÿ™ Rice Ball +๐Ÿš Cooked Rice +๐Ÿ› Curry Rice +๐Ÿœ Steaming Bowl +๐Ÿ Spaghetti +๐Ÿ  Roasted Sweet Potato +๐Ÿข Oden +๐Ÿฃ Sushi +๐Ÿค Fried Shrimp +๐Ÿฅ Fish Cake With Swirl +๐Ÿก Dango +๐ŸฅŸ Dumpling +๐Ÿฅ  Fortune Cookie +๐Ÿฅก Takeout Box +๐Ÿฆ Soft Ice Cream +๐Ÿง Shaved Ice +๐Ÿจ Ice Cream +๐Ÿฉ Doughnut +๐Ÿช Cookie +๐ŸŽ‚ Birthday Cake +๐Ÿฐ Shortcake +๐Ÿฅง Pie +๐Ÿซ Chocolate Bar +๐Ÿฌ Candy +๐Ÿญ Lollipop +๐Ÿฎ Custard +๐Ÿฏ Honey Pot +๐Ÿผ Baby Bottle +๐Ÿฅ› Glass Of Milk +โ˜• Hot Beverage +๐Ÿต Teacup Without Handle +๐Ÿถ Sake +๐Ÿพ Bottle With Popping Cork +๐Ÿท Wine Glass +๐Ÿธ Cocktail Glass +๐Ÿน Tropical Drink +๐Ÿบ Beer Mug +๐Ÿป Clinking Beer Mugs +๐Ÿฅ‚ Clinking Glasses +๐Ÿฅƒ Tumbler Glass +๐Ÿฅค Cup With Straw +๐Ÿฅข Chopsticks +๐Ÿฝ๏ธ Fork And Knife With Plate +๐Ÿด Fork And Knife +๐Ÿฅ„ Spoon +๐Ÿ”ช Kitchen Knife +๐Ÿบ Amphora +๐ŸŒ Globe Showing Europe-Africa +๐ŸŒŽ Globe Showing Americas +๐ŸŒ Globe Showing Asia-Australia +๐ŸŒ Globe With Meridians +๐Ÿ—บ๏ธ World Map +๐Ÿ—พ Map Of Japan +๐Ÿ”๏ธ Snow-Capped Mountain +โ›ฐ๏ธ Mountain +๐ŸŒ‹ Volcano +๐Ÿ—ป Mount Fuji +๐Ÿ•๏ธ Camping +๐Ÿ–๏ธ Beach With Umbrella +๐Ÿœ๏ธ Desert +๐Ÿ๏ธ Desert Island +๐Ÿž๏ธ National Park +๐ŸŸ๏ธ Stadium +๐Ÿ›๏ธ Classical Building +๐Ÿ—๏ธ Building Construction +๐Ÿ˜๏ธ Houses +๐Ÿš๏ธ Derelict House +๐Ÿ  House +๐Ÿก House With Garden +๐Ÿข Office Building +๐Ÿฃ Japanese Post Office +๐Ÿค Post Office +๐Ÿฅ Hospital +๐Ÿฆ Bank +๐Ÿจ Hotel +๐Ÿฉ Love Hotel +๐Ÿช Convenience Store +๐Ÿซ School +๐Ÿฌ Department Store +๐Ÿญ Factory +๐Ÿฏ Japanese Castle +๐Ÿฐ Castle +๐Ÿ’’ Wedding +๐Ÿ—ผ Tokyo Tower +๐Ÿ—ฝ Statue Of Liberty +โ›ช Church +๐Ÿ•Œ Mosque +๐Ÿ• Synagogue +โ›ฉ๏ธ Shinto Shrine +๐Ÿ•‹ Kaaba +โ›ฒ Fountain +โ›บ Tent +๐ŸŒ Foggy +๐ŸŒƒ Night With Stars +๐Ÿ™๏ธ Cityscape +๐ŸŒ„ Sunrise Over Mountains +๐ŸŒ… Sunrise +๐ŸŒ† Cityscape At Dusk +๐ŸŒ‡ Sunset +๐ŸŒ‰ Bridge At Night +โ™จ๏ธ Hot Springs +๐ŸŒŒ Milky Way +๐ŸŽ  Carousel Horse +๐ŸŽก Ferris Wheel +๐ŸŽข Roller Coaster +๐Ÿ’ˆ Barber Pole +๐ŸŽช Circus Tent +๐Ÿš‚ Locomotive +๐Ÿšƒ Railway Car +๐Ÿš„ High-Speed Train +๐Ÿš… Bullet Train +๐Ÿš† Train +๐Ÿš‡ Metro +๐Ÿšˆ Light Rail +๐Ÿš‰ Station +๐ŸšŠ Tram +๐Ÿš Monorail +๐Ÿšž Mountain Railway +๐Ÿš‹ Tram Car +๐ŸšŒ Bus +๐Ÿš Oncoming Bus +๐ŸšŽ Trolleybus +๐Ÿš Minibus +๐Ÿš‘ Ambulance +๐Ÿš’ Fire Engine +๐Ÿš“ Police Car +๐Ÿš” Oncoming Police Car +๐Ÿš• Taxi +๐Ÿš– Oncoming Taxi +๐Ÿš— Automobile +๐Ÿš˜ Oncoming Automobile +๐Ÿš™ Sport Utility Vehicle +๐Ÿšš Delivery Truck +๐Ÿš› Articulated Lorry +๐Ÿšœ Tractor +๐Ÿšฒ Bicycle +๐Ÿ›ด Kick Scooter +๐Ÿ›ต Motor Scooter +๐Ÿš Bus Stop +๐Ÿ›ฃ๏ธ Motorway +๐Ÿ›ค๏ธ Railway Track +๐Ÿ›ข๏ธ Oil Drum +โ›ฝ Fuel Pump +๐Ÿšจ Police Car Light +๐Ÿšฅ Horizontal Traffic Light +๐Ÿšฆ Vertical Traffic Light +๐Ÿ›‘ Stop Sign +๐Ÿšง Construction +โš“ Anchor +โ›ต Sailboat +๐Ÿ›ถ Canoe +๐Ÿšค Speedboat +๐Ÿ›ณ๏ธ Passenger Ship +โ›ด๏ธ Ferry +๐Ÿ›ฅ๏ธ Motor Boat +๐Ÿšข Ship +โœˆ๏ธ Airplane +๐Ÿ›ฉ๏ธ Small Airplane +๐Ÿ›ซ Airplane Departure +๐Ÿ›ฌ Airplane Arrival +๐Ÿ’บ Seat +๐Ÿš Helicopter +๐ŸšŸ Suspension Railway +๐Ÿš  Mountain Cableway +๐Ÿšก Aerial Tramway +๐Ÿ›ฐ๏ธ Satellite +๐Ÿš€ Rocket +๐Ÿ›ธ Flying Saucer +๐Ÿ›Ž๏ธ Bellhop Bell +โŒ› Hourglass Done +โณ Hourglass Not Done +โŒš Watch +โฐ Alarm Clock +โฑ๏ธ Stopwatch +โฒ๏ธ Timer Clock +๐Ÿ•ฐ๏ธ Mantelpiece Clock +๐Ÿ•› Twelve Oโ€™Clock +๐Ÿ•ง Twelve-Thirty +๐Ÿ• One Oโ€™Clock +๐Ÿ•œ One-Thirty +๐Ÿ•‘ Two Oโ€™Clock +๐Ÿ• Two-Thirty +๐Ÿ•’ Three Oโ€™Clock +๐Ÿ•ž Three-Thirty +๐Ÿ•“ Four Oโ€™Clock +๐Ÿ•Ÿ Four-Thirty +๐Ÿ•” Five Oโ€™Clock +๐Ÿ•  Five-Thirty +๐Ÿ•• Six Oโ€™Clock +๐Ÿ•ก Six-Thirty +๐Ÿ•– Seven Oโ€™Clock +๐Ÿ•ข Seven-Thirty +๐Ÿ•— Eight Oโ€™Clock +๐Ÿ•ฃ Eight-Thirty +๐Ÿ•˜ Nine Oโ€™Clock +๐Ÿ•ค Nine-Thirty +๐Ÿ•™ Ten Oโ€™Clock +๐Ÿ•ฅ Ten-Thirty +๐Ÿ•š Eleven Oโ€™Clock +๐Ÿ•ฆ Eleven-Thirty +๐ŸŒ‘ New Moon +๐ŸŒ’ Waxing Crescent Moon +๐ŸŒ“ First Quarter Moon +๐ŸŒ” Waxing Gibbous Moon +๐ŸŒ• Full Moon +๐ŸŒ– Waning Gibbous Moon +๐ŸŒ— Last Quarter Moon +๐ŸŒ˜ Waning Crescent Moon +๐ŸŒ™ Crescent Moon +๐ŸŒš New Moon Face +๐ŸŒ› First Quarter Moon Face +๐ŸŒœ Last Quarter Moon Face +๐ŸŒก๏ธ Thermometer +โ˜€๏ธ Sun +๐ŸŒ Full Moon Face +๐ŸŒž Sun With Face +โญ Star +๐ŸŒŸ Glowing Star +๐ŸŒ  Shooting Star +โ˜๏ธ Cloud +โ›… Sun Behind Cloud +โ›ˆ๏ธ Cloud With Lightning And Rain +๐ŸŒค๏ธ Sun Behind Small Cloud +๐ŸŒฅ๏ธ Sun Behind Large Cloud +๐ŸŒฆ๏ธ Sun Behind Rain Cloud +๐ŸŒง๏ธ Cloud With Rain +๐ŸŒจ๏ธ Cloud With Snow +๐ŸŒฉ๏ธ Cloud With Lightning +๐ŸŒช๏ธ Tornado +๐ŸŒซ๏ธ Fog +๐ŸŒฌ๏ธ Wind Face +๐ŸŒ€ Cyclone +๐ŸŒˆ Rainbow +๐ŸŒ‚ Closed Umbrella +โ˜‚๏ธ Umbrella +โ˜” Umbrella With Rain Drops +โ›ฑ๏ธ Umbrella On Ground +โšก High Voltage +โ„๏ธ Snowflake +โ˜ƒ๏ธ Snowman +โ›„ Snowman Without Snow +โ˜„๏ธ Comet +๐Ÿ”ฅ Fire +๐Ÿ’ง Droplet +๐ŸŒŠ Water Wave +๐ŸŽƒ Jack-O-Lantern +๐ŸŽ„ Christmas Tree +๐ŸŽ† Fireworks +๐ŸŽ‡ Sparkler +โœจ Sparkles +๐ŸŽˆ Balloon +๐ŸŽ‰ Party Popper +๐ŸŽŠ Confetti Ball +๐ŸŽ‹ Tanabata Tree +๐ŸŽ Pine Decoration +๐ŸŽŽ Japanese Dolls +๐ŸŽ Carp Streamer +๐ŸŽ Wind Chime +๐ŸŽ‘ Moon Viewing Ceremony +๐ŸŽ€ Ribbon +๐ŸŽ Wrapped Gift +๐ŸŽ—๏ธ Reminder Ribbon +๐ŸŽŸ๏ธ Admission Tickets +๐ŸŽซ Ticket +๐ŸŽ–๏ธ Military Medal +๐Ÿ† Trophy +๐Ÿ… Sports Medal +๐Ÿฅ‡ 1St Place Medal +๐Ÿฅˆ 2Nd Place Medal +๐Ÿฅ‰ 3Rd Place Medal +โšฝ Soccer Ball +โšพ Baseball +๐Ÿ€ Basketball +๐Ÿ Volleyball +๐Ÿˆ American Football +๐Ÿ‰ Rugby Football +๐ŸŽพ Tennis +๐ŸŽณ Bowling +๐Ÿ Cricket Game +๐Ÿ‘ Field Hockey +๐Ÿ’ Ice Hockey +๐Ÿ“ Ping Pong +๐Ÿธ Badminton +๐ŸฅŠ Boxing Glove +๐Ÿฅ‹ Martial Arts Uniform +๐Ÿฅ… Goal Net +โ›ณ Flag In Hole +โ›ธ๏ธ Ice Skate +๐ŸŽฃ Fishing Pole +๐ŸŽฝ Running Shirt +๐ŸŽฟ Skis +๐Ÿ›ท Sled +๐ŸฅŒ Curling Stone +๐ŸŽฏ Direct Hit +๐ŸŽฑ Pool 8 Ball +๐Ÿ”ฎ Crystal Ball +๐ŸŽฎ Video Game +๐Ÿ•น๏ธ Joystick +๐ŸŽฐ Slot Machine +๐ŸŽฒ Game Die +โ™ ๏ธ Spade Suit +โ™ฅ๏ธ Heart Suit +โ™ฆ๏ธ Diamond Suit +โ™ฃ๏ธ Club Suit +โ™Ÿ๏ธ Chess Pawn +๐Ÿƒ Joker +๐Ÿ€„ Mahjong Red Dragon +๐ŸŽด Flower Playing Cards +๐ŸŽญ Performing Arts +๐Ÿ–ผ๏ธ Framed Picture +๐ŸŽจ Artist Palette +๐Ÿ”‡ Muted Speaker +๐Ÿ”ˆ Speaker Low Volume +๐Ÿ”‰ Speaker Medium Volume +๐Ÿ”Š Speaker High Volume +๐Ÿ“ข Loudspeaker +๐Ÿ“ฃ Megaphone +๐Ÿ“ฏ Postal Horn +๐Ÿ”” Bell +๐Ÿ”• Bell With Slash +๐ŸŽผ Musical Score +๐ŸŽต Musical Note +๐ŸŽถ Musical Notes +๐ŸŽ™๏ธ Studio Microphone +๐ŸŽš๏ธ Level Slider +๐ŸŽ›๏ธ Control Knobs +๐ŸŽค Microphone +๐ŸŽง Headphone +๐Ÿ“ป Radio +๐ŸŽท Saxophone +๐ŸŽธ Guitar +๐ŸŽน Musical Keyboard +๐ŸŽบ Trumpet +๐ŸŽป Violin +๐Ÿฅ Drum +๐Ÿ“ฑ Mobile Phone +๐Ÿ“ฒ Mobile Phone With Arrow +โ˜Ž๏ธ Telephone +๐Ÿ“ž Telephone Receiver +๐Ÿ“Ÿ Pager +๐Ÿ“  Fax Machine +๐Ÿ”‹ Battery +๐Ÿ”Œ Electric Plug +๐Ÿ’ป Laptop Computer +๐Ÿ–ฅ๏ธ Desktop Computer +๐Ÿ–จ๏ธ Printer +โŒจ๏ธ Keyboard +๐Ÿ–ฑ๏ธ Computer Mouse +๐Ÿ–ฒ๏ธ Trackball +๐Ÿ’ฝ Computer Disk +๐Ÿ’พ Floppy Disk +๐Ÿ’ฟ Optical Disk +๐Ÿ“€ Dvd +๐ŸŽฅ Movie Camera +๐ŸŽž๏ธ Film Frames +๐Ÿ“ฝ๏ธ Film Projector +๐ŸŽฌ Clapper Board +๐Ÿ“บ Television +๐Ÿ“ท Camera +๐Ÿ“ธ Camera With Flash +๐Ÿ“น Video Camera +๐Ÿ“ผ Videocassette +๐Ÿ” Magnifying Glass Tilted Left +๐Ÿ”Ž Magnifying Glass Tilted Right +๐Ÿ•ฏ๏ธ Candle +๐Ÿ’ก Light Bulb +๐Ÿ”ฆ Flashlight +๐Ÿฎ Red Paper Lantern +๐Ÿ“” Notebook With Decorative Cover +๐Ÿ“• Closed Book +๐Ÿ“– Open Book +๐Ÿ“— Green Book +๐Ÿ“˜ Blue Book +๐Ÿ“™ Orange Book +๐Ÿ“š Books +๐Ÿ““ Notebook +๐Ÿ“’ Ledger +๐Ÿ“ƒ Page With Curl +๐Ÿ“œ Scroll +๐Ÿ“„ Page Facing Up +๐Ÿ“ฐ Newspaper +๐Ÿ—ž๏ธ Rolled-Up Newspaper +๐Ÿ“‘ Bookmark Tabs +๐Ÿ”– Bookmark +๐Ÿท๏ธ Label +๐Ÿ’ฐ Money Bag +๐Ÿ’ด Yen Banknote +๐Ÿ’ต Dollar Banknote +๐Ÿ’ถ Euro Banknote +๐Ÿ’ท Pound Banknote +๐Ÿ’ธ Money With Wings +๐Ÿ’ณ Credit Card +๐Ÿ’น Chart Increasing With Yen +๐Ÿ’ฑ Currency Exchange +๐Ÿ’ฒ Heavy Dollar Sign +โœ‰๏ธ Envelope +๐Ÿ“ง E-Mail +๐Ÿ“จ Incoming Envelope +๐Ÿ“ฉ Envelope With Arrow +๐Ÿ“ค Outbox Tray +๐Ÿ“ฅ Inbox Tray +๐Ÿ“ฆ Package +๐Ÿ“ซ Closed Mailbox With Raised Flag +๐Ÿ“ช Closed Mailbox With Lowered Flag +๐Ÿ“ฌ Open Mailbox With Raised Flag +๐Ÿ“ญ Open Mailbox With Lowered Flag +๐Ÿ“ฎ Postbox +๐Ÿ—ณ๏ธ Ballot Box With Ballot +โœ๏ธ Pencil +โœ’๏ธ Black Nib +๐Ÿ–‹๏ธ Fountain Pen +๐Ÿ–Š๏ธ Pen +๐Ÿ–Œ๏ธ Paintbrush +๐Ÿ–๏ธ Crayon +๐Ÿ“ Memo +๐Ÿ’ผ Briefcase +๐Ÿ“ File Folder +๐Ÿ“‚ Open File Folder +๐Ÿ—‚๏ธ Card Index Dividers +๐Ÿ“… Calendar +๐Ÿ“† Tear-Off Calendar +๐Ÿ—’๏ธ Spiral Notepad +๐Ÿ—“๏ธ Spiral Calendar +๐Ÿ“‡ Card Index +๐Ÿ“ˆ Chart Increasing +๐Ÿ“‰ Chart Decreasing +๐Ÿ“Š Bar Chart +๐Ÿ“‹ Clipboard +๐Ÿ“Œ Pushpin +๐Ÿ“ Round Pushpin +๐Ÿ“Ž Paperclip +๐Ÿ–‡๏ธ Linked Paperclips +๐Ÿ“ Straight Ruler +๐Ÿ“ Triangular Ruler +โœ‚๏ธ Scissors +๐Ÿ—ƒ๏ธ Card File Box +๐Ÿ—„๏ธ File Cabinet +๐Ÿ—‘๏ธ Wastebasket +๐Ÿ”’ Locked +๐Ÿ”“ Unlocked +๐Ÿ” Locked With Pen +๐Ÿ” Locked With Key +๐Ÿ”‘ Key +๐Ÿ—๏ธ Old Key +๐Ÿ”จ Hammer +โ›๏ธ Pick +โš’๏ธ Hammer And Pick +๐Ÿ› ๏ธ Hammer And Wrench +๐Ÿ—ก๏ธ Dagger +โš”๏ธ Crossed Swords +๐Ÿ”ซ Pistol +๐Ÿน Bow And Arrow +๐Ÿ›ก๏ธ Shield +๐Ÿ”ง Wrench +๐Ÿ”ฉ Nut And Bolt +โš™๏ธ Gear +๐Ÿ—œ๏ธ Clamp +โš–๏ธ Balance Scale +๐Ÿ”— Link +โ›“๏ธ Chains +โš—๏ธ Alembic +๐Ÿ”ฌ Microscope +๐Ÿ”ญ Telescope +๐Ÿ“ก Satellite Antenna +๐Ÿ’‰ Syringe +๐Ÿ’Š Pill +๐Ÿšช Door +๐Ÿ›๏ธ Bed +๐Ÿ›‹๏ธ Couch And Lamp +๐Ÿšฝ Toilet +๐Ÿšฟ Shower +๐Ÿ› Bathtub +๐Ÿ›’ Shopping Cart +๐Ÿšฌ Cigarette +โšฐ๏ธ Coffin +โšฑ๏ธ Funeral Urn +๐Ÿ—ฟ Moai +๐Ÿง Atm Sign +๐Ÿšฎ Litter In Bin Sign +๐Ÿšฐ Potable Water +โ™ฟ Wheelchair Symbol +๐Ÿšน Men's Room +๐Ÿšบ Women's Room +๐Ÿšป Restroom +๐Ÿšผ Baby Symbol +๐Ÿšพ Water Closet +๐Ÿ›‚ Passport Control +๐Ÿ›ƒ Customs +๐Ÿ›„ Baggage Claim +๐Ÿ›… Left Luggage +โš ๏ธ Warning +๐Ÿšธ Children Crossing +โ›” No Entry +๐Ÿšซ Prohibited +๐Ÿšณ No Bicycles +๐Ÿšญ No Smoking +๐Ÿšฏ No Littering +๐Ÿšฑ Non-Potable Water +๐Ÿšท No Pedestrians +๐Ÿ“ต No Mobile Phones +๐Ÿ”ž No One Under Eighteen +โ˜ข๏ธ Radioactive +โ˜ฃ๏ธ Biohazard +โฌ†๏ธ Up Arrow +โ†—๏ธ Up-Right Arrow +โžก๏ธ Right Arrow +โ†˜๏ธ Down-Right Arrow +โฌ‡๏ธ Down Arrow +โ†™๏ธ Down-Left Arrow +โฌ…๏ธ Left Arrow +โ†–๏ธ Up-Left Arrow +โ†•๏ธ Up-Down Arrow +โ†”๏ธ Left-Right Arrow +โ†ฉ๏ธ Right Arrow Curving Left +โ†ช๏ธ Left Arrow Curving Right +โคด๏ธ Right Arrow Curving Up +โคต๏ธ Right Arrow Curving Down +๐Ÿ”ƒ Clockwise Vertical Arrows +๐Ÿ”„ Counterclockwise Arrows Button +๐Ÿ”™ Back Arrow +๐Ÿ”š End Arrow +๐Ÿ”› On! Arrow +๐Ÿ”œ Soon Arrow +๐Ÿ” Top Arrow +๐Ÿ› Place Of Worship +โš›๏ธ Atom Symbol +๐Ÿ•‰๏ธ Om +โœก๏ธ Star Of David +โ˜ธ๏ธ Wheel Of Dharma +โ˜ฏ๏ธ Yin Yang +โœ๏ธ Latin Cross +โ˜ฆ๏ธ Orthodox Cross +โ˜ช๏ธ Star And Crescent +โ˜ฎ๏ธ Peace Symbol +๐Ÿ•Ž Menorah +๐Ÿ”ฏ Dotted Six-Pointed Star +โ™ˆ Aries +โ™‰ Taurus +โ™Š Gemini +โ™‹ Cancer +โ™Œ Leo +โ™ Virgo +โ™Ž Libra +โ™ Scorpio +โ™ Sagittarius +โ™‘ Capricorn +โ™’ Aquarius +โ™“ Pisces +โ›Ž Ophiuchus +๐Ÿ”€ Shuffle Tracks Button +๐Ÿ” Repeat Button +๐Ÿ”‚ Repeat Single Button +โ–ถ๏ธ Play Button +โฉ Fast-Forward Button +โญ๏ธ Next Track Button +โฏ๏ธ Play Or Pause Button +โ—€๏ธ Reverse Button +โช Fast Reverse Button +โฎ๏ธ Last Track Button +๐Ÿ”ผ Upwards Button +โซ Fast Up Button +๐Ÿ”ฝ Downwards Button +โฌ Fast Down Button +โธ๏ธ Pause Button +โน๏ธ Stop Button +โบ๏ธ Record Button +โ๏ธ Eject Button +๐ŸŽฆ Cinema +๐Ÿ”… Dim Button +๐Ÿ”† Bright Button +๐Ÿ“ถ Antenna Bars +๐Ÿ“ณ Vibration Mode +๐Ÿ“ด Mobile Phone Off +โ™€๏ธ Female Sign +โ™‚๏ธ Male Sign +โš•๏ธ Medical Symbol +โ™พ๏ธ Infinity +โ™ป๏ธ Recycling Symbol +โšœ๏ธ Fleur-De-Lis +๐Ÿ”ฑ Trident Emblem +๐Ÿ“› Name Badge +๐Ÿ”ฐ Japanese Symbol For Beginner +โญ• Heavy Large Circle +โœ… White Heavy Check Mark +โ˜‘๏ธ Ballot Box With Check +โœ”๏ธ Heavy Check Mark +โœ–๏ธ Heavy Multiplication X +โŒ Cross Mark +โŽ Cross Mark Button +โž• Heavy Plus Sign +โž– Heavy Minus Sign +โž— Heavy Division Sign +โžฐ Curly Loop +โžฟ Double Curly Loop +ใ€ฝ๏ธ Part Alternation Mark +โœณ๏ธ Eight-Spoked Asterisk +โœด๏ธ Eight-Pointed Star +โ‡๏ธ Sparkle +โ€ผ๏ธ Double Exclamation Mark +โ‰๏ธ Exclamation Question Mark +โ“ Question Mark +โ” White Question Mark +โ• White Exclamation Mark +โ— Exclamation Mark +ใ€ฐ๏ธ Wavy Dash +ยฉ๏ธ Copyright +ยฎ๏ธ Registered +โ„ข๏ธ Trade Mark +#๏ธโƒฃ Keycap: # +*๏ธโƒฃ Keycap: * +0๏ธโƒฃ Keycap: 0 +1๏ธโƒฃ Keycap: 1 +2๏ธโƒฃ Keycap: 2 +3๏ธโƒฃ Keycap: 3 +4๏ธโƒฃ Keycap: 4 +5๏ธโƒฃ Keycap: 5 +6๏ธโƒฃ Keycap: 6 +7๏ธโƒฃ Keycap: 7 +8๏ธโƒฃ Keycap: 8 +9๏ธโƒฃ Keycap: 9 +๐Ÿ”Ÿ Keycap: 10 +๐Ÿ’ฏ Hundred Points +๐Ÿ”  Input Latin Uppercase +๐Ÿ”ก Input Latin Lowercase +๐Ÿ”ข Input Numbers +๐Ÿ”ฃ Input Symbols +๐Ÿ”ค Input Latin Letters +๐Ÿ…ฐ๏ธ A Button (Blood Type) +๐Ÿ†Ž Ab Button (Blood Type) +๐Ÿ…ฑ๏ธ B Button (Blood Type) +๐Ÿ†‘ Cl Button +๐Ÿ†’ Cool Button +๐Ÿ†“ Free Button +โ„น๏ธ Information +๐Ÿ†” Id Button +โ“œ๏ธ Circled M +๐Ÿ†• New Button +๐Ÿ†– Ng Button +๐Ÿ…พ๏ธ O Button (Blood Type) +๐Ÿ†— Ok Button +๐Ÿ…ฟ๏ธ P Button +๐Ÿ†˜ Sos Button +๐Ÿ†™ Up! Button +๐Ÿ†š Vs Button +๐Ÿˆ Japanese โ€œHereโ€ Button +๐Ÿˆ‚๏ธ Japanese โ€œService Chargeโ€ Button +๐Ÿˆท๏ธ Japanese โ€œMonthly Amountโ€ Button +๐Ÿˆถ Japanese โ€œNot Free Of Chargeโ€ Button +๐Ÿˆฏ Japanese โ€œReservedโ€ Button +๐Ÿ‰ Japanese โ€œBargainโ€ Button +๐Ÿˆน Japanese โ€œDiscountโ€ Button +๐Ÿˆš Japanese โ€œFree Of Chargeโ€ Button +๐Ÿˆฒ Japanese โ€œProhibitedโ€ Button +๐Ÿ‰‘ Japanese โ€œAcceptableโ€ Button +๐Ÿˆธ Japanese โ€œApplicationโ€ Button +๐Ÿˆด Japanese โ€œPassing Gradeโ€ Button +๐Ÿˆณ Japanese โ€œVacancyโ€ Button +ใŠ—๏ธ Japanese โ€œCongratulationsโ€ Button +ใŠ™๏ธ Japanese โ€œSecretโ€ Button +๐Ÿˆบ Japanese โ€œOpen For Businessโ€ Button +๐Ÿˆต Japanese โ€œNo Vacancyโ€ Button +โ–ช๏ธ Black Small Square +โ–ซ๏ธ White Small Square +โ—ป๏ธ White Medium Square +โ—ผ๏ธ Black Medium Square +โ—ฝ White Medium-Small Square +โ—พ Black Medium-Small Square +โฌ› Black Large Square +โฌœ White Large Square +๐Ÿ”ถ Large Orange Diamond +๐Ÿ”ท Large Blue Diamond +๐Ÿ”ธ Small Orange Diamond +๐Ÿ”น Small Blue Diamond +๐Ÿ”บ Red Triangle Pointed Up +๐Ÿ”ป Red Triangle Pointed Down +๐Ÿ’  Diamond With A Dot +๐Ÿ”˜ Radio Button +๐Ÿ”ฒ Black Square Button +๐Ÿ”ณ White Square Button +โšช White Circle +โšซ Black Circle +๐Ÿ”ด Red Circle +๐Ÿ”ต Blue Circle +๐Ÿ Chequered Flag +๐Ÿšฉ Triangular Flag +๐ŸŽŒ Crossed Flags +๐Ÿด Black Flag +๐Ÿณ๏ธ White Flag +๐Ÿณ๏ธโ€๐ŸŒˆ Rainbow Flag +๐Ÿดโ€โ˜ ๏ธ Pirate Flag +๐Ÿ‡ฆ๐Ÿ‡จ Ascension Island +๐Ÿ‡ฆ๐Ÿ‡ฉ Andorra +๐Ÿ‡ฆ๐Ÿ‡ช United Arab Emirates +๐Ÿ‡ฆ๐Ÿ‡ซ Afghanistan +๐Ÿ‡ฆ๐Ÿ‡ฌ Antigua & Barbuda +๐Ÿ‡ฆ๐Ÿ‡ฎ Anguilla +๐Ÿ‡ฆ๐Ÿ‡ฑ Albania +๐Ÿ‡ฆ๐Ÿ‡ฒ Armenia +๐Ÿ‡ฆ๐Ÿ‡ด Angola +๐Ÿ‡ฆ๐Ÿ‡ถ Antarctica +๐Ÿ‡ฆ๐Ÿ‡ท Argentina +๐Ÿ‡ฆ๐Ÿ‡ธ American Samoa +๐Ÿ‡ฆ๐Ÿ‡น Austria +๐Ÿ‡ฆ๐Ÿ‡บ Australia +๐Ÿ‡ฆ๐Ÿ‡ผ Aruba +๐Ÿ‡ฆ๐Ÿ‡ฝ ร…land Islands +๐Ÿ‡ฆ๐Ÿ‡ฟ Azerbaijan +๐Ÿ‡ง๐Ÿ‡ฆ Bosnia & Herzegovina +๐Ÿ‡ง๐Ÿ‡ง Barbados +๐Ÿ‡ง๐Ÿ‡ฉ Bangladesh +๐Ÿ‡ง๐Ÿ‡ช Belgium +๐Ÿ‡ง๐Ÿ‡ซ Burkina Faso +๐Ÿ‡ง๐Ÿ‡ฌ Bulgaria +๐Ÿ‡ง๐Ÿ‡ญ Bahrain +๐Ÿ‡ง๐Ÿ‡ฎ Burundi +๐Ÿ‡ง๐Ÿ‡ฏ Benin +๐Ÿ‡ง๐Ÿ‡ฑ St. Barthรฉlemy +๐Ÿ‡ง๐Ÿ‡ฒ Bermuda +๐Ÿ‡ง๐Ÿ‡ณ Brunei +๐Ÿ‡ง๐Ÿ‡ด Bolivia +๐Ÿ‡ง๐Ÿ‡ถ Caribbean Netherlands +๐Ÿ‡ง๐Ÿ‡ท Brazil +๐Ÿ‡ง๐Ÿ‡ธ Bahamas +๐Ÿ‡ง๐Ÿ‡น Bhutan +๐Ÿ‡ง๐Ÿ‡ป Bouvet Island +๐Ÿ‡ง๐Ÿ‡ผ Botswana +๐Ÿ‡ง๐Ÿ‡พ Belarus +๐Ÿ‡ง๐Ÿ‡ฟ Belize +๐Ÿ‡จ๐Ÿ‡ฆ Canada +๐Ÿ‡จ๐Ÿ‡จ Cocos (Keeling) Islands +๐Ÿ‡จ๐Ÿ‡ฉ Congo - Kinshasa +๐Ÿ‡จ๐Ÿ‡ซ Central African Republic +๐Ÿ‡จ๐Ÿ‡ฌ Congo - Brazzaville +๐Ÿ‡จ๐Ÿ‡ญ Switzerland +๐Ÿ‡จ๐Ÿ‡ฎ Cรดte dโ€™Ivoire +๐Ÿ‡จ๐Ÿ‡ฐ Cook Islands +๐Ÿ‡จ๐Ÿ‡ฑ Chile +๐Ÿ‡จ๐Ÿ‡ฒ Cameroon +๐Ÿ‡จ๐Ÿ‡ณ China +๐Ÿ‡จ๐Ÿ‡ด Colombia +๐Ÿ‡จ๐Ÿ‡ต Clipperton Island +๐Ÿ‡จ๐Ÿ‡ท Costa Rica +๐Ÿ‡จ๐Ÿ‡บ Cuba +๐Ÿ‡จ๐Ÿ‡ป Cape Verde +๐Ÿ‡จ๐Ÿ‡ผ Curaรงao +๐Ÿ‡จ๐Ÿ‡ฝ Christmas Island +๐Ÿ‡จ๐Ÿ‡พ Cyprus +๐Ÿ‡จ๐Ÿ‡ฟ Czechia +๐Ÿ‡ฉ๐Ÿ‡ช Germany +๐Ÿ‡ฉ๐Ÿ‡ฌ Diego Garcia +๐Ÿ‡ฉ๐Ÿ‡ฏ Djibouti +๐Ÿ‡ฉ๐Ÿ‡ฐ Denmark +๐Ÿ‡ฉ๐Ÿ‡ฒ Dominica +๐Ÿ‡ฉ๐Ÿ‡ด Dominican Republic +๐Ÿ‡ฉ๐Ÿ‡ฟ Algeria +๐Ÿ‡ช๐Ÿ‡ฆ Ceuta & Melilla +๐Ÿ‡ช๐Ÿ‡จ Ecuador +๐Ÿ‡ช๐Ÿ‡ช Estonia +๐Ÿ‡ช๐Ÿ‡ฌ Egypt +๐Ÿ‡ช๐Ÿ‡ญ Western Sahara +๐Ÿ‡ช๐Ÿ‡ท Eritrea +๐Ÿ‡ช๐Ÿ‡ธ Spain +๐Ÿ‡ช๐Ÿ‡น Ethiopia +๐Ÿ‡ช๐Ÿ‡บ European Union +๐Ÿ‡ซ๐Ÿ‡ฎ Finland +๐Ÿ‡ซ๐Ÿ‡ฏ Fiji +๐Ÿ‡ซ๐Ÿ‡ฐ Falkland Islands +๐Ÿ‡ซ๐Ÿ‡ฒ Micronesia +๐Ÿ‡ซ๐Ÿ‡ด Faroe Islands +๐Ÿ‡ซ๐Ÿ‡ท France +๐Ÿ‡ฌ๐Ÿ‡ฆ Gabon +๐Ÿ‡ฌ๐Ÿ‡ง United Kingdom +๐Ÿ‡ฌ๐Ÿ‡ฉ Grenada +๐Ÿ‡ฌ๐Ÿ‡ช Georgia +๐Ÿ‡ฌ๐Ÿ‡ซ French Guiana +๐Ÿ‡ฌ๐Ÿ‡ฌ Guernsey +๐Ÿ‡ฌ๐Ÿ‡ญ Ghana +๐Ÿ‡ฌ๐Ÿ‡ฎ Gibraltar +๐Ÿ‡ฌ๐Ÿ‡ฑ Greenland +๐Ÿ‡ฌ๐Ÿ‡ฒ Gambia +๐Ÿ‡ฌ๐Ÿ‡ณ Guinea +๐Ÿ‡ฌ๐Ÿ‡ต Guadeloupe +๐Ÿ‡ฌ๐Ÿ‡ถ Equatorial Guinea +๐Ÿ‡ฌ๐Ÿ‡ท Greece +๐Ÿ‡ฌ๐Ÿ‡ธ South Georgia & South Sandwich Islands +๐Ÿ‡ฌ๐Ÿ‡น Guatemala +๐Ÿ‡ฌ๐Ÿ‡บ Guam +๐Ÿ‡ฌ๐Ÿ‡ผ Guinea-Bissau +๐Ÿ‡ฌ๐Ÿ‡พ Guyana +๐Ÿ‡ญ๐Ÿ‡ฐ Hong Kong SAR China +๐Ÿ‡ญ๐Ÿ‡ฒ Heard & McDonald Islands +๐Ÿ‡ญ๐Ÿ‡ณ Honduras +๐Ÿ‡ญ๐Ÿ‡ท Croatia +๐Ÿ‡ญ๐Ÿ‡น Haiti +๐Ÿ‡ญ๐Ÿ‡บ Hungary +๐Ÿ‡ฎ๐Ÿ‡จ Canary Islands +๐Ÿ‡ฎ๐Ÿ‡ฉ Indonesia +๐Ÿ‡ฎ๐Ÿ‡ช Ireland +๐Ÿ‡ฎ๐Ÿ‡ฑ Israel +๐Ÿ‡ฎ๐Ÿ‡ฒ Isle of Man +๐Ÿ‡ฎ๐Ÿ‡ณ India +๐Ÿ‡ฎ๐Ÿ‡ด British Indian Ocean Territory +๐Ÿ‡ฎ๐Ÿ‡ถ Iraq +๐Ÿ‡ฎ๐Ÿ‡ท Iran +๐Ÿ‡ฎ๐Ÿ‡ธ Iceland +๐Ÿ‡ฎ๐Ÿ‡น Italy +๐Ÿ‡ฏ๐Ÿ‡ช Jersey +๐Ÿ‡ฏ๐Ÿ‡ฒ Jamaica +๐Ÿ‡ฏ๐Ÿ‡ด Jordan +๐Ÿ‡ฏ๐Ÿ‡ต Japan +๐Ÿ‡ฐ๐Ÿ‡ช Kenya +๐Ÿ‡ฐ๐Ÿ‡ฌ Kyrgyzstan +๐Ÿ‡ฐ๐Ÿ‡ญ Cambodia +๐Ÿ‡ฐ๐Ÿ‡ฎ Kiribati +๐Ÿ‡ฐ๐Ÿ‡ฒ Comoros +๐Ÿ‡ฐ๐Ÿ‡ณ St. Kitts & Nevis +๐Ÿ‡ฐ๐Ÿ‡ต North Korea +๐Ÿ‡ฐ๐Ÿ‡ท South Korea +๐Ÿ‡ฐ๐Ÿ‡ผ Kuwait +๐Ÿ‡ฐ๐Ÿ‡พ Cayman Islands +๐Ÿ‡ฐ๐Ÿ‡ฟ Kazakhstan +๐Ÿ‡ฑ๐Ÿ‡ฆ Laos +๐Ÿ‡ฑ๐Ÿ‡ง Lebanon +๐Ÿ‡ฑ๐Ÿ‡จ St. Lucia +๐Ÿ‡ฑ๐Ÿ‡ฎ Liechtenstein +๐Ÿ‡ฑ๐Ÿ‡ฐ Sri Lanka +๐Ÿ‡ฑ๐Ÿ‡ท Liberia +๐Ÿ‡ฑ๐Ÿ‡ธ Lesotho +๐Ÿ‡ฑ๐Ÿ‡น Lithuania +๐Ÿ‡ฑ๐Ÿ‡บ Luxembourg +๐Ÿ‡ฑ๐Ÿ‡ป Latvia +๐Ÿ‡ฑ๐Ÿ‡พ Libya +๐Ÿ‡ฒ๐Ÿ‡ฆ Morocco +๐Ÿ‡ฒ๐Ÿ‡จ Monaco +๐Ÿ‡ฒ๐Ÿ‡ฉ Moldova +๐Ÿ‡ฒ๐Ÿ‡ช Montenegro +๐Ÿ‡ฒ๐Ÿ‡ซ St. Martin +๐Ÿ‡ฒ๐Ÿ‡ฌ Madagascar +๐Ÿ‡ฒ๐Ÿ‡ญ Marshall Islands +๐Ÿ‡ฒ๐Ÿ‡ฐ Macedonia +๐Ÿ‡ฒ๐Ÿ‡ฑ Mali +๐Ÿ‡ฒ๐Ÿ‡ฒ Myanmar (Burma) +๐Ÿ‡ฒ๐Ÿ‡ณ Mongolia +๐Ÿ‡ฒ๐Ÿ‡ด Macau SAR China +๐Ÿ‡ฒ๐Ÿ‡ต Northern Mariana Islands +๐Ÿ‡ฒ๐Ÿ‡ถ Martinique +๐Ÿ‡ฒ๐Ÿ‡ท Mauritania +๐Ÿ‡ฒ๐Ÿ‡ธ Montserrat +๐Ÿ‡ฒ๐Ÿ‡น Malta +๐Ÿ‡ฒ๐Ÿ‡บ Mauritius +๐Ÿ‡ฒ๐Ÿ‡ป Maldives +๐Ÿ‡ฒ๐Ÿ‡ผ Malawi +๐Ÿ‡ฒ๐Ÿ‡ฝ Mexico +๐Ÿ‡ฒ๐Ÿ‡พ Malaysia +๐Ÿ‡ฒ๐Ÿ‡ฟ Mozambique +๐Ÿ‡ณ๐Ÿ‡ฆ Namibia +๐Ÿ‡ณ๐Ÿ‡จ New Caledonia +๐Ÿ‡ณ๐Ÿ‡ช Niger +๐Ÿ‡ณ๐Ÿ‡ซ Norfolk Island +๐Ÿ‡ณ๐Ÿ‡ฌ Nigeria +๐Ÿ‡ณ๐Ÿ‡ฎ Nicaragua +๐Ÿ‡ณ๐Ÿ‡ฑ Netherlands +๐Ÿ‡ณ๐Ÿ‡ด Norway +๐Ÿ‡ณ๐Ÿ‡ต Nepal +๐Ÿ‡ณ๐Ÿ‡ท Nauru +๐Ÿ‡ณ๐Ÿ‡บ Niue +๐Ÿ‡ณ๐Ÿ‡ฟ New Zealand +๐Ÿ‡ด๐Ÿ‡ฒ Oman +๐Ÿ‡ต๐Ÿ‡ฆ Panama +๐Ÿ‡ต๐Ÿ‡ช Peru +๐Ÿ‡ต๐Ÿ‡ซ French Polynesia +๐Ÿ‡ต๐Ÿ‡ฌ Papua New Guinea +๐Ÿ‡ต๐Ÿ‡ญ Philippines +๐Ÿ‡ต๐Ÿ‡ฐ Pakistan +๐Ÿ‡ต๐Ÿ‡ฑ Poland +๐Ÿ‡ต๐Ÿ‡ฒ St. Pierre & Miquelon +๐Ÿ‡ต๐Ÿ‡ณ Pitcairn Islands +๐Ÿ‡ต๐Ÿ‡ท Puerto Rico +๐Ÿ‡ต๐Ÿ‡ธ Palestinian Territories +๐Ÿ‡ต๐Ÿ‡น Portugal +๐Ÿ‡ต๐Ÿ‡ผ Palau +๐Ÿ‡ต๐Ÿ‡พ Paraguay +๐Ÿ‡ถ๐Ÿ‡ฆ Qatar +๐Ÿ‡ท๐Ÿ‡ช Rรฉunion +๐Ÿ‡ท๐Ÿ‡ด Romania +๐Ÿ‡ท๐Ÿ‡ธ Serbia +๐Ÿ‡ท๐Ÿ‡บ Russia +๐Ÿ‡ท๐Ÿ‡ผ Rwanda +๐Ÿ‡ธ๐Ÿ‡ฆ Saudi Arabia +๐Ÿ‡ธ๐Ÿ‡ง Solomon Islands +๐Ÿ‡ธ๐Ÿ‡จ Seychelles +๐Ÿ‡ธ๐Ÿ‡ฉ Sudan +๐Ÿ‡ธ๐Ÿ‡ช Sweden +๐Ÿ‡ธ๐Ÿ‡ฌ Singapore +๐Ÿ‡ธ๐Ÿ‡ญ St. Helena +๐Ÿ‡ธ๐Ÿ‡ฎ Slovenia +๐Ÿ‡ธ๐Ÿ‡ฏ Svalbard & Jan Mayen +๐Ÿ‡ธ๐Ÿ‡ฐ Slovakia +๐Ÿ‡ธ๐Ÿ‡ฑ Sierra Leone +๐Ÿ‡ธ๐Ÿ‡ฒ San Marino +๐Ÿ‡ธ๐Ÿ‡ณ Senegal +๐Ÿ‡ธ๐Ÿ‡ด Somalia +๐Ÿ‡ธ๐Ÿ‡ท Suriname +๐Ÿ‡ธ๐Ÿ‡ธ South Sudan +๐Ÿ‡ธ๐Ÿ‡น Sรฃo Tomรฉ & Prรญncipe +๐Ÿ‡ธ๐Ÿ‡ป El Salvador +๐Ÿ‡ธ๐Ÿ‡ฝ Sint Maarten +๐Ÿ‡ธ๐Ÿ‡พ Syria +๐Ÿ‡ธ๐Ÿ‡ฟ Swaziland +๐Ÿ‡น๐Ÿ‡ฆ Tristan da Cunha +๐Ÿ‡น๐Ÿ‡จ Turks & Caicos Islands +๐Ÿ‡น๐Ÿ‡ฉ Chad +๐Ÿ‡น๐Ÿ‡ซ French Southern Territories +๐Ÿ‡น๐Ÿ‡ฌ Togo +๐Ÿ‡น๐Ÿ‡ญ Thailand +๐Ÿ‡น๐Ÿ‡ฏ Tajikistan +๐Ÿ‡น๐Ÿ‡ฐ Tokelau +๐Ÿ‡น๐Ÿ‡ฑ Timor-Leste +๐Ÿ‡น๐Ÿ‡ฒ Turkmenistan +๐Ÿ‡น๐Ÿ‡ณ Tunisia +๐Ÿ‡น๐Ÿ‡ด Tonga +๐Ÿ‡น๐Ÿ‡ท Turkey +๐Ÿ‡น๐Ÿ‡น Trinidad & Tobago +๐Ÿ‡น๐Ÿ‡ป Tuvalu +๐Ÿ‡น๐Ÿ‡ผ Taiwan +๐Ÿ‡น๐Ÿ‡ฟ Tanzania +๐Ÿ‡บ๐Ÿ‡ฆ Ukraine +๐Ÿ‡บ๐Ÿ‡ฌ Uganda +๐Ÿ‡บ๐Ÿ‡ณ United Nations +๐Ÿ‡บ๐Ÿ‡ธ United States +๐Ÿ‡บ๐Ÿ‡พ Uruguay +๐Ÿ‡บ๐Ÿ‡ฟ Uzbekistan +๐Ÿ‡ป๐Ÿ‡ฆ Vatican City +๐Ÿ‡ป๐Ÿ‡จ St. Vincent & Grenadines +๐Ÿ‡ป๐Ÿ‡ช Venezuela +๐Ÿ‡ป๐Ÿ‡ฌ British Virgin Islands +๐Ÿ‡ป๐Ÿ‡ฎ U.S. Virgin Islands +๐Ÿ‡ป๐Ÿ‡ณ Vietnam +๐Ÿ‡ป๐Ÿ‡บ Vanuatu +๐Ÿ‡ผ๐Ÿ‡ซ Wallis & Futuna +๐Ÿ‡ผ๐Ÿ‡ธ Samoa +๐Ÿ‡ฝ๐Ÿ‡ฐ Kosovo +๐Ÿ‡พ๐Ÿ‡ช Yemen +๐Ÿ‡พ๐Ÿ‡น Mayotte +๐Ÿ‡ฟ๐Ÿ‡ฆ South Africa +๐Ÿ‡ฟ๐Ÿ‡ฒ Zambia +๐Ÿ‡ฟ๐Ÿ‡ผ Zimbabwe diff --git a/config/hypr/scripts/RofiMusic.sh b/config/hypr/scripts/RofiMusic.sh new file mode 100755 index 00000000..7890c628 --- /dev/null +++ b/config/hypr/scripts/RofiMusic.sh @@ -0,0 +1,84 @@ +#!/usr/bin/env bash + +# Directory for icons +iDIR="$HOME/.config/swaync/icons" + + +LOFI_STREAM="https://www.youtube.com/watch?v=jfKfPfyJRdk" +ALL_TIME_CHILL_HITS="https://www.youtube.com/playlist?list=PL1FPWPLPHKhysG2trm9RKV8FG3eQ7J4VN" +ALL_TIME_MALAYALAM_HITS="https://www.youtube.com/playlist?list=PL1FPWPLPHKhyZeoBv-Ws_eRiWiUYKkuDz" +HAND_PICKED_HITS="https://music.youtube.com/playlist?list=PLAj6caR1_EYHevz9nP5CzbE-z8viVAyI3&feature=share" +BHAJAN="https://youtube.com/playlist?list=PLwIh-QEhrDJDM8IF3gLUgnEyZm6dBgr_n&si=_RDHngYobHlcxaJW" + +# Player menu controls +play="๎ฌฌ Play music" +pause="๏Œ Pause music" +stop="๎ฎฅ Stop music" +next_track="๎ชŸ Next track" +prev_track="๎ชž Previous track" +increase_volume="๓ฐ Increase volume" +decrease_volume="๓ฐž Decrease volume" + +# Music menu controls +play_bhajan="๓ฐฅณ Play Bhajan" +play_lofi="๏€ Play lofi girl" +play_chill_hits="1. ๏‹œ Play All time chill hits" +play_malayalam_hits="2. ๏‹œ Play All time malayalam hits" +play_hand_picked_hits="3. ๏‹œ Play hand picked hits" + +function notify() { + notify-send -u normal -i "$iDIR/music.png" "$1" +} + +function music() { + local chosen=$(printf "%s\n%s\n%s\n%s\n" "$play_bhajan" "$play_lofi" "$play_chill_hits" "$play_malayalam_hits" "$play_hand_picked_hits" | rofi -dmenu -i -l 6 -config ~/.config/rofi/config-rofi-music.rasi) + + + if [[ "$chosen" == "$play_bhajan" ]]; then + notify "Playing Bhajan" + exec -a "rofi-music" mpv --no-video $BHAJAN + elif [[ "$chosen" == "$play_lofi" ]]; then + notify "๐ŸŽน Playing lofi girl" + exec -a "rofi-music" mpv --no-video $LOFI_STREAM + elif [[ "$chosen" == "$play_chill_hits" ]]; then + notify "๐ŸŽน Playing all time chill hits" + exec -a "rofi-music" mpv --no-video "$ALL_TIME_CHILL_HITS" --shuffle + elif [[ "$chosen" == "$play_malayalam_hits" ]]; then + notify "๐ŸŽน Playing malayalam hits" + exec -a "rofi-music" mpv --no-video "$ALL_TIME_MALAYALAM_HITS" --shuffle + elif [[ "$chosen" == "$play_hand_picked_hits" ]]; then + notify "๐ŸŽน Playing hand picked hits" + exec -a "rofi-music" mpv --no-video "$HAND_PICKED_HITS" --shuffle + fi +} + +function controls() { + local chosen=$(printf "%s\n%s\n%s\n%s\n%s\n%s\n%s\n" "$play" "$pause" "$stop" "$next_track" "$prev_track" "$increase_volume" "$decrease_volume" | rofi -dmenu -i -l 7 -config ~/.config/rofi/config-rofi-music.rasi) + + if [[ "$chosen" == "$play" ]]; then + playerctl --player=mpv play && notify-send -u normal -i "$1" "โ–ถ๏ธ Resuming music" + elif [[ "$chosen" == "$pause" ]]; then + playerctl --player=mpv pause && notify-send -u normal -i "$1" "โธ๏ธ Music paused" + elif [[ "$chosen" == "$stop" ]]; then + kill $(pidof "rofi-music") && notify-send -u normal -i "$1" "๐Ÿ›‘ Music stopped" + elif [[ "$chosen" == "$next_track" ]]; then + playerctl --player=mpv next && notify-send -u normal -i "$1" "โญ๏ธ Next track playing" + elif [[ "$chosen" == "$prev_track" ]]; then + playerctl --player=mpv previous && notify-send -u normal -i "$1" "โฎ๏ธ Previous track playing" + elif [[ "$chosen" == "$increase_volume" ]]; then + current_volume=$(playerctl --player=mpv volume) + new_volume=$(echo "$current_volume + 0.1" | bc) + playerctl --player=mpv volume $new_volume && notify-send -u normal -i "$1" "๐Ÿ”Š Increasing track volume" + elif [[ "$chosen" == "$decrease_volume" ]]; then + current_volume=$(playerctl --player=mpv volume) + new_volume=$(echo "$current_volume - 0.1" | bc) + playerctl --player=mpv volume $new_volume && notify-send -u normal -i "$1" "๐Ÿ”‰ Decreasing track volume" + fi +} + +# Check if music is running +if pidof "rofi-music" > /dev/null; then + controls +else + music +fi diff --git a/config/hypr/scripts/RofiNotes.sh b/config/hypr/scripts/RofiNotes.sh new file mode 100755 index 00000000..eea09247 --- /dev/null +++ b/config/hypr/scripts/RofiNotes.sh @@ -0,0 +1,109 @@ +#!/bin/bash + +# https://github.com/christianholman/rofi_notes + +# default values +AUTHOR=$(whoami) +NOTES_FOLDER="$HOME/Documents/.notes" +NOTES_EDITOR='mousepad' + +theme=~/.config/rofi/config-notes.rasi + +if [[ ! -d "${NOTES_FOLDER}" ]]; then + mkdir -p "$NOTES_FOLDER" +fi + +get_notes() { + ls "${NOTES_FOLDER}" +} + +edit_note() { + note_location=$1 + $NOTES_EDITOR "$note_location" +} + +delete_note() { + local note=$1 + local action=$(echo -e "Yes\nNo" | rofi -theme $theme -dmenu -p "Are you sure you want to delete $note? ") + + case $action in + "Yes") + rm "$NOTES_FOLDER/$note" + main + ;; + "No") + main + esac +} + +note_context() { + local note=$1 + local note_location="$NOTES_FOLDER/$note" + local action=$(echo -e "Edit\nDelete" | rofi -theme $theme -dmenu -p "$note > ") + case $action in + "Edit") + edit_note "$note_location" + exit 0;; + "Delete") + delete_note "$note" + exit 0;; + esac + + exit 1 +} + +new_note() { + local title=$(echo -e "Cancel" | rofi -theme $theme -dmenu -p "Input title: ") + + case "$title" in + "Cancel") + main + ;; + *) + local file=$(echo "$title" | sed 's/ /_/g;s/\(.*\)/\L\1/g') + local template=$(cat <<- END +--- +title: $title +date: $(date --rfc-3339=seconds) +author: $AUTHOR +--- + +# $title +END + ) + + note_location="$NOTES_FOLDER/$file.md" + if [ "$title" != "" ]; then + echo "$template" > "$note_location" | edit_note "$note_location" + exit 0 + fi + ;; + esac +} + +main() +{ + local all_notes="$(get_notes)" + local first_menu="New" + + if [ "$all_notes" ];then + first_menu="New\n${all_notes}" + fi + + local note=$(echo -e "$first_menu" | rofi -theme $theme -dmenu -p "๓ฐšธ Notes") + + case $note in + "New") + new_note + ;; + "") + exit 1;; + *) + note_context "$note" && exit 0 # handle esc key in note_context + esac + + exit 1 +} + + +main diff --git a/config/hypr/scripts/RofiPower.sh b/config/hypr/scripts/RofiPower.sh new file mode 100755 index 00000000..c8aaa090 --- /dev/null +++ b/config/hypr/scripts/RofiPower.sh @@ -0,0 +1,60 @@ +#!/bin/bash + + +# CMDs +uptime_info=$(uptime -p | sed -e 's/up //g') +host=$(hostnamectl hostname) + +# Options with Icons and Text +options=("Lock(l)" "Suspend(u)" "Logout(e)" "Reboot(r)" "Shutdown(s)" "Hibernate(h)") +icons=("๏€ฃ" "๏††" "๓ฐฟ…" "๓ฑ„Œ" "๏€‘" "๓ฐ’ฒ") + +# Rofi CMD +rofi_cmd() { + options_with_icons=() + for ((i = 0; i < ${#options[@]}; i++)); do + options_with_icons+=("${icons[$i]} ${options[$i]}") + done + + chosen_option=$(printf "%s\n" "${options_with_icons[@]}" | \ + rofi -dmenu -i -p "๏†ƒ $USER@$host" -mesg "๏€— Uptime: $uptime_info" \ + -kb-select-1 "l" \ + -kb-select-2 "u" \ + -kb-select-3 "e" \ + -kb-select-4 "r" \ + -kb-select-5 "s" \ + -kb-select-6 "h" \ + -theme ~/.config/rofi/config-powermenu.rasi | awk '{print $1}') + echo "$chosen_option" +} + +# Execute Command +run_cmd() { + case $1 in + "๏€ฃ") + swaylock & + ;; + "๏††") + systemctl suspend + ;; + "๓ฐฟ…") + hyprctl dispatch exit 0 + ;; + "๓ฑ„Œ") + systemctl reboot + ;; + "๏€‘") + systemctl poweroff + ;; + "๓ฐ’ฒ") + systemctl hibernate + ;; + *) + echo "choose: $1" + ;; + esac +} + +# Actions +chosen_option=$(rofi_cmd) +run_cmd "${chosen_option% *}" diff --git a/config/hypr/scripts/RofiRecord.sh b/config/hypr/scripts/RofiRecord.sh new file mode 100755 index 00000000..2a64e9c7 --- /dev/null +++ b/config/hypr/scripts/RofiRecord.sh @@ -0,0 +1,70 @@ +#!/usr/bin/env bash + +# A bash script to record screen using rofi + +# Kill if any other rofi instance is running +if pgrep -x "rofi"; then + killall rofi + exit +fi + +OUTPUT_DIR="$HOME/Videos/ScreenRecord/" +OUTPUT_FILE="$OUTPUT_DIR$(date +%Y-%m-%d_%I-%M-%p).mp4" + +record_screen_with_audio="๓ฐฝŸ Record screen with audio" +record_screen_without_audio="๓ฐฝ  Record screen without audio" +record_selection_with_audio="๓ฐ’‰ Record selection with audio" +record_selection_without_audio="๓ฑŸƒ Record selection without audio" +stop_recording="๏Š Stop recording" + +chosen=$(printf "%s\n%s\n%s\n%s\n%s\n" "$record_screen_with_audio" "$record_screen_without_audio" "$record_selection_with_audio" "$record_selection_without_audio" "$stop_recording"\ + | rofi -dmenu -config ~/.config/rofi/config-record.rasi \ + ) + +function stop_recording(){ + pkill wf-recorder --signal SIGINT && notify-send "๐Ÿ›‘ Recording stopped" && pkill -RTMIN+8 waybar + exit +} + +function count_down(){ + COUNT_DOWN=3 + while [[ $COUNT_DOWN -ne 0 ]]; do + echo "$COUNT_DOWN" + notify-send -t 450 "โบ๏ธ Recording in $COUNT_DOWN" + (( COUNT_DOWN-- )) + sleep 0.5 + done + if [[ ! -d "$OUTPUT_DIR" ]]; then + mkdir -p "$OUTPUT_DIR" + fi + notify-send -t 450 "๐ŸŽฅ Starting recording" + sleep 0.5 +} + +function start_recording(){ + if [[ "$chosen" == "$record_screen_with_audio" ]]; then + count_down + pkill -RTMIN+8 waybar + wf-recorder --force-yuv -c libx264rgb -t -f "$OUTPUT_FILE" --audio=alsa_output.pci-0000_03_00.6.analog-stereo.monitor + elif [[ "$chosen" == "$record_screen_without_audio" ]]; then + count_down + pkill -RTMIN+8 waybar + wf-recorder --force-yuv -c libx264rgb -t -f "$OUTPUT_FILE" + elif [[ "$chosen" == "$record_selection_with_audio" ]]; then + geometry="$(slurp)" + count_down + pkill -RTMIN+8 waybar + wf-recorder --force-yuv -c libx264rgb -t -g "$geometry" -f "$OUTPUT_FILE" --audio=alsa_output.pci-0000_03_00.6.analog-stereo.monitor + elif [[ "$chosen" == "$record_selection_without_audio" ]]; then + geometry="$(slurp)" + count_down + pkill -RTMIN+8 waybar + wf-recorder --force-yuv -c libx264rgb -t -g "$geometry" -f "$OUTPUT_FILE" + elif [[ "$chosen" == "$stop_recording" ]]; then + stop_recording + fi +} + +if [[ ! -z $chosen ]]; then + start_recording +fi diff --git a/config/hypr/scripts/RofiTmux.sh b/config/hypr/scripts/RofiTmux.sh new file mode 100755 index 00000000..5304aded --- /dev/null +++ b/config/hypr/scripts/RofiTmux.sh @@ -0,0 +1,21 @@ +#! /usr/bin/env bash + +TERMINAL="kitty" + +function tmux_sessions() { + tmux list-session -F '#S' +} + +theme=~/.config/rofi/config-tmux.rasi + +TMUX_SESSION=$( (echo new; tmux_sessions) | rofi -dmenu -p "๓ฐ† Tmux" -theme $theme) + +if [[ x"new" = x"${TMUX_SESSION}" ]]; then + $TERMINAL -e tmux new-session & + exit 0 +elif [[ -z "${TMUX_SESSION}" ]]; then + exit 1 +else + $TERMINAL -e tmux attach -t "${TMUX_SESSION}" & + exit 0 +fi diff --git a/config/hypr/scripts/RofiTodo.sh b/config/hypr/scripts/RofiTodo.sh new file mode 100755 index 00000000..69949d70 --- /dev/null +++ b/config/hypr/scripts/RofiTodo.sh @@ -0,0 +1,7 @@ +#!/bin/bash +# +theme=~/.config/rofi/config-todo.rasi + +rofi -modi TODO:$HOME/.config/hypr/scripts/TodoList.sh -show TODO -theme $theme + +exit 0 diff --git a/config/hypr/scripts/ScreenShot.sh b/config/hypr/scripts/ScreenShot.sh new file mode 100755 index 00000000..1d5eeacf --- /dev/null +++ b/config/hypr/scripts/ScreenShot.sh @@ -0,0 +1,106 @@ +#!/bin/bash + +iDIR="$HOME/.config/swaync/icons" +notify_cmd_shot="notify-send -h string:x-canonical-private-synchronous:shot-notify -u low -i ${iDIR}/picture.png" + +time=$(date "+%d-%b_%H-%M-%S") +dir="$(xdg-user-dir)/Pictures/Screenshots" +file="Screenshot_${time}_${RANDOM}.png" + +active_window_class=$(hyprctl -j activewindow | jq -r '(.class)') +active_window_file="Screenshot_${time}_${active_window_class}.png" +active_window_path="${dir}/${active_window_file}" + +# notify and view screenshot +notify_view() { + if [[ "$1" == "active" ]]; then + if [[ -e "${active_window_path}" ]]; then + ${notify_cmd_shot} "Screenshot of '${active_window_class}' Saved." + else + ${notify_cmd_shot} "Screenshot of '${active_window_class}' not Saved" + fi + else + local check_file="$dir/$file" + if [[ -e "$check_file" ]]; then + ${notify_cmd_shot} "Screenshot Saved." + else + ${notify_cmd_shot} "Screenshot NOT Saved." + fi + fi +} + + + +# countdown +countdown() { + for sec in $(seq $1 -1 1); do + notify-send -h string:x-canonical-private-synchronous:shot-notify -t 1000 -i "$iDIR"/timer.png "Taking shot in : $sec" + sleep 1 + done +} + +# take shots +shotnow() { + cd ${dir} && grim - | tee "$file" | wl-copy + sleep 2 + notify_view +} + +shot5() { + countdown '5' + sleep 1 && cd ${dir} && grim - | tee "$file" | wl-copy + sleep 1 + notify_view + +} + +shot10() { + countdown '10' + sleep 1 && cd ${dir} && grim - | tee "$file" | wl-copy + notify_view +} + +shotwin() { + w_pos=$(hyprctl activewindow | grep 'at:' | cut -d':' -f2 | tr -d ' ' | tail -n1) + w_size=$(hyprctl activewindow | grep 'size:' | cut -d':' -f2 | tr -d ' ' | tail -n1 | sed s/,/x/g) + cd ${dir} && grim -g "$w_pos $w_size" - | tee "$file" | wl-copy + notify_view +} + +shotarea() { + cd ${dir} && grim -g "$(slurp)" - | tee "$file" | wl-copy + notify_view +} + +shotactive() { + active_window_class=$(hyprctl -j activewindow | jq -r '(.class)') + active_window_file="Screenshot_${time}_${active_window_class}.png" + active_window_path="${dir}/${active_window_file}" + + hyprctl -j activewindow | jq -r '"\(.at[0]),\(.at[1]) \(.size[0])x\(.size[1])"' | grim -g - "${active_window_path}" + sleep 1 + notify_view "active" +} + + +if [[ ! -d "$dir" ]]; then + mkdir -p "$dir" +fi + +if [[ "$1" == "--now" ]]; then + shotnow +elif [[ "$1" == "--in5" ]]; then + shot5 +elif [[ "$1" == "--in10" ]]; then + shot10 +elif [[ "$1" == "--win" ]]; then + shotwin +elif [[ "$1" == "--area" ]]; then + shotarea +elif [[ "$1" == "--active" ]]; then + shotactive +else + echo -e "Available Options : --now --in5 --in10 --win --area --active" +fi + +exit 0 diff --git a/config/hypr/scripts/SwitchKeyboardLayout.sh b/config/hypr/scripts/SwitchKeyboardLayout.sh new file mode 100755 index 00000000..1ec71e24 --- /dev/null +++ b/config/hypr/scripts/SwitchKeyboardLayout.sh @@ -0,0 +1,43 @@ +#!/usr/bin/env bash + +layout_f="$HOME/.cache/kb_layout" +settings_file="$HOME/.config/hypr/configs/Settings.conf" +notif="$HOME/.config/swaync/images/bell.png" + +# Check if ~/.cache/kb_layout exists and create it with a default layout from Settings.conf if not found +if [ ! -f "$layout_f" ]; then + default_layout=$(grep 'kb_layout=' "$settings_file" | cut -d '=' -f 2 | cut -d ',' -f 1 2>/dev/null) + if [ -z "$default_layout" ]; then + default_layout="us" # Default to 'us' layout if Settings.conf or 'kb_layout' is not found + fi + echo "$default_layout" > "$layout_f" +fi + +current_layout=$(cat "$layout_f") + +# Read keyboard layout settings from Settings.conf +if [ -f "$settings_file" ]; then + kb_layout_line=$(grep 'kb_layout=' "$settings_file" | cut -d '=' -f 2) + IFS=',' read -ra layout_mapping <<< "$kb_layout_line" +fi + +layout_count=${#layout_mapping[@]} + +# Find the index of the current layout in the mapping +for ((i = 0; i < layout_count; i++)); do + if [ "$current_layout" == "${layout_mapping[i]}" ]; then + current_index=$i + break + fi +done + +# Calculate the index of the next layout +next_index=$(( (current_index + 1) % layout_count )) +new_layout="${layout_mapping[next_index]}" + +# Update the keyboard layout +hyprctl keyword input:kb_layout "$new_layout" +echo "$new_layout" > "$layout_f" + +# Notification for the new keyboard layout +notify-send -u low -i "$notif" "new KB_Layout: $new_layout" diff --git a/config/hypr/scripts/TodoList.sh b/config/hypr/scripts/TodoList.sh new file mode 100755 index 00000000..eebaf68a --- /dev/null +++ b/config/hypr/scripts/TodoList.sh @@ -0,0 +1,47 @@ +#!/bin/bash +# +# https://github.com/claudiodangelis/rofi-todo +# +# this script manages a simple to-do list stored locally +# it allows adding and removing to-do entries +# +# dependencies: rofi + +TODO_FILE="${TODO_FILE:-$HOME/Documents/.rofi-todo}" + +if [[ ! -a "${TODO_FILE}" ]]; then + touch "${TODO_FILE}" +fi + +function add_todo() { + echo -e "`date +"%b %d %H:%M"` | $*" >> "${TODO_FILE}" +} + +function remove_todo() { + if [[ ! -z "$DONE_FILE" ]]; then + echo "${*}" >> "${DONE_FILE}" + fi + sed -i "/^${*}$/d" "${TODO_FILE}" +} + +function get_todos() { + echo "Refresh List" + echo "$(cat "${TODO_FILE}")" +} + +if [ -z "$@" ]; then + get_todos +else + LINE=$(echo "${@}" | sed "s/\([^a-zA-Z0-9]\)/\\\\\\1/g") + LINE_UNESCAPED=${@} + if [[ $LINE_UNESCAPED == +* ]]; then + LINE_UNESCAPED=$(echo $LINE_UNESCAPED | sed s/^+//g |sed s/^\s+//g ) + add_todo ${LINE_UNESCAPED} + else + MATCHING=$(grep "^${LINE_UNESCAPED}$" "${TODO_FILE}") + if [[ -n "${MATCHING}" ]]; then + remove_todo ${LINE_UNESCAPED} + fi + fi + get_todos +fi diff --git a/config/hypr/scripts/ToggleAnimation.sh b/config/hypr/scripts/ToggleAnimation.sh new file mode 100755 index 00000000..142e1e21 --- /dev/null +++ b/config/hypr/scripts/ToggleAnimation.sh @@ -0,0 +1,26 @@ +#!/usr/bin/env bash + +notif="$HOME/.config/swaync/images/bell.png" + +# Script to toggle animations in hyprland + +# Function to toggle animations +function toggle_mode() { + status=$(hyprctl getoption animations:enabled -j | jq ".int") + if [[ $status -eq 1 ]]; then + notify-send -e -u low -i "$notif" "All animations off" + hyprctl keyword animations:enabled 0 + swww kill + else + notify-send -e -u normal -i "$notif" "All animations normal" + hyprctl keyword animations:enabled 1 + swww init && swww img "$HOME/.config/hypr/.current_wallpaper" + fi +} + +# Parse options +while getopts t flag; do + case "${flag}" in + t) toggle_mode ;; + esac +done diff --git a/config/hypr/scripts/TouchPad.sh b/config/hypr/scripts/TouchPad.sh new file mode 100755 index 00000000..9ae96a93 --- /dev/null +++ b/config/hypr/scripts/TouchPad.sh @@ -0,0 +1,25 @@ +#!/bin/bash + +notif="$HOME/.config/swaync/images/bell.png" + +# NOTE: find the right device using hyprctl devices + +HYPRLAND_DEVICE="dll07a7:01-044e:120b" + +XDG_RUNTIME_DIR=${XDG_RUNTIME_DIR:-/run/user/$(id -u)} +STATUS_FILE="$XDG_RUNTIME_DIR/touchpad.status" + +toggle_touchpad() { + if [ ! -f "$STATUS_FILE" ] || [ "$(cat "$STATUS_FILE")" = "false" ]; then + echo "true" > "$STATUS_FILE" + action="enabled" + else + echo "false" > "$STATUS_FILE" + action="disabled" + fi + + notify-send -u low -i "$notif" "Touchpad $action" + hyprctl keyword "device:$HYPRLAND_DEVICE:enabled" "$(cat "$STATUS_FILE")" +} + +toggle_touchpad diff --git a/config/hypr/scripts/Volume.sh b/config/hypr/scripts/Volume.sh new file mode 100755 index 00000000..f68491cf --- /dev/null +++ b/config/hypr/scripts/Volume.sh @@ -0,0 +1,135 @@ +#!/bin/bash + +iDIR="$HOME/.config/swaync/icons" + +# Get Volume +get_volume() { + volume=$(pamixer --get-volume) + if [[ "$volume" -eq "0" ]]; then + echo "Muted" + else + echo "$volume%" + fi +} + +# Get icons +get_icon() { + current=$(get_volume) + if [[ "$current" == "Muted" ]]; then + echo "$iDIR/volume-mute.png" + elif [[ "${current%\%}" -le 30 ]]; then + echo "$iDIR/volume-low.png" + elif [[ "${current%\%}" -le 60 ]]; then + echo "$iDIR/volume-mid.png" + else + echo "$iDIR/volume-high.png" + fi +} + +# Notify +notify_user() { + if [[ "$(get_volume)" == "Muted" ]]; then + notify-send -e -h string:x-canonical-private-synchronous:volume_notif -u low -i "$(get_icon)" "Volume: Muted" + else + notify-send -e -h int:value:"$(get_volume | sed 's/%//')" -h string:x-canonical-private-synchronous:volume_notif -u low -i "$(get_icon)" "Volume: $(get_volume)" + fi +} + +# Increase Volume +inc_volume() { + if [ "$(pamixer --get-mute)" == "true" ]; then + pamixer -u && notify_user + fi + pamixer -i 5 && notify_user +} + +# Decrease Volume +dec_volume() { + if [ "$(pamixer --get-mute)" == "true" ]; then + pamixer -u && notify_user + fi + pamixer -d 5 && notify_user +} + +# Toggle Mute +toggle_mute() { + if [ "$(pamixer --get-mute)" == "false" ]; then + pamixer -m && notify-send -e -u low -i "$iDIR/volume-mute.png" "Volume Switched OFF" + elif [ "$(pamixer --get-mute)" == "true" ]; then + pamixer -u && notify-send -e -u low -i "$(get_icon)" "Volume Switched ON" + fi +} + +# Toggle Mic +toggle_mic() { + if [ "$(pamixer --default-source --get-mute)" == "false" ]; then + pamixer --default-source -m && notify-send -e -u low -i "$iDIR/microphone-mute.png" "Microphone Switched OFF" + elif [ "$(pamixer --default-source --get-mute)" == "true" ]; then + pamixer -u --default-source u && notify-send -e -u low -i "$iDIR/microphone.png" "Microphone Switched ON" + fi +} +# Get Mic Icon +get_mic_icon() { + current=$(pamixer --default-source --get-volume) + if [[ "$current" -eq "0" ]]; then + echo "$iDIR/microphone-mute.png" + else + echo "$iDIR/microphone.png" + fi +} + +# Get Microphone Volume +get_mic_volume() { + volume=$(pamixer --default-source --get-volume) + if [[ "$volume" -eq "0" ]]; then + echo "Muted" + else + echo "$volume%" + fi +} + +# Notify for Microphone +notify_mic_user() { + volume=$(get_mic_volume) + icon=$(get_mic_icon) + notify-send -e -h int:value:"$volume" -h "string:x-canonical-private-synchronous:volume_notif" -u low -i "$icon" "Mic-Level: $volume" +} + +# Increase MIC Volume +inc_mic_volume() { + if [ "$(pamixer --default-source --get-mute)" == "true" ]; then + pamixer --default-source -u && notify_mic_user + fi + pamixer --default-source -i 5 && notify_mic_user +} + +# Decrease MIC Volume +dec_mic_volume() { + if [ "$(pamixer --default-source --get-mute)" == "true" ]; then + pamixer --default-source -u && notify_mic_user + fi + pamixer --default-source -d 5 && notify_mic_user +} + +# Execute accordingly +if [[ "$1" == "--get" ]]; then + get_volume +elif [[ "$1" == "--inc" ]]; then + inc_volume +elif [[ "$1" == "--dec" ]]; then + dec_volume +elif [[ "$1" == "--toggle" ]]; then + toggle_mute +elif [[ "$1" == "--toggle-mic" ]]; then + toggle_mic +elif [[ "$1" == "--get-icon" ]]; then + get_icon +elif [[ "$1" == "--get-mic-icon" ]]; then + get_mic_icon +elif [[ "$1" == "--mic-inc" ]]; then + inc_mic_volume +elif [[ "$1" == "--mic-dec" ]]; then + dec_mic_volume +else + get_volume +fi diff --git a/config/hypr/scripts/Wallpaper.sh b/config/hypr/scripts/Wallpaper.sh new file mode 100755 index 00000000..96b7722d --- /dev/null +++ b/config/hypr/scripts/Wallpaper.sh @@ -0,0 +1,21 @@ +#!/bin/bash + +DIR="$HOME/Pictures/wallpapers" + + +PICS=($(find ${DIR} -type f \( -name "*.jpg" -o -name "*.jpeg" -o -name "*.png" -o -name "*.gif" \))) +RANDOMPICS=${PICS[ $RANDOM % ${#PICS[@]} ]} + + +# Transition config +FPS=60 +TYPE="random" +DURATION=1 +BEZIER=".43,1.19,1,.4" +SWWW_PARAMS="--transition-fps $FPS --transition-type $TYPE --transition-duration $DURATION --transition-bezier $BEZIER" + + +swww query || swww init && swww img ${RANDOMPICS} $SWWW_PARAMS + +ln -sf "$RANDOMPICS" "$HOME/.config/hypr/.current_wallpaper" + diff --git a/config/hypr/scripts/WallpaperRandom.sh b/config/hypr/scripts/WallpaperRandom.sh new file mode 100755 index 00000000..6706ca67 --- /dev/null +++ b/config/hypr/scripts/WallpaperRandom.sh @@ -0,0 +1,35 @@ +#!/bin/bash + +DIR="$HOME/Pictures/wallpapers/" +PICS=($(find "${DIR}" -type f \( -name "*.jpg" -o -name "*.jpeg" -o -name "*.png" -o -name "*.gif" \))) +RANDOMPICS=${PICS[$RANDOM % ${#PICS[@]}]} + +# Create symbolic link to the selected wallpaper +ln -sf "${RANDOMPICS}" "$HOME/.config/hypr/.current_wallpaper" + +# Check if swww is initialized +swww query || swww init + +# Set the wallpaper +swww img "$HOME/.config/hypr/.current_wallpaper" + +if [[ $# -lt 1 ]] || [[ ! -d $1 ]]; then + exit 1 +fi + +export SWWW_TRANSITION_TYPE=random + +# This controls (in seconds) when to switch to the next image +INTERVAL=1800 + +while true; do + find "$1" -type f \ + | shuf \ + | while read -r img; do + # Update the symbolic link to the new wallpaper + ln -sf "$img" "$HOME/.config/hypr/.current_wallpaper" + # Set the new wallpaper + swww img "$HOME/.config/hypr/.current_wallpaper" + sleep $INTERVAL + done +done diff --git a/config/hypr/scripts/WallpaperSelect.sh b/config/hypr/scripts/WallpaperSelect.sh new file mode 100755 index 00000000..58fa45ab --- /dev/null +++ b/config/hypr/scripts/WallpaperSelect.sh @@ -0,0 +1,55 @@ +#!/bin/bash + +WALLPAPERS_DIR="$HOME/Pictures/wallpapers/" + +# find image size to display (very slow) +#echo $(identify -format '%[fx:w]x%[fx:h]\' $HOME/Pictures/wallpapers/$A 2>/dev/null) + +build_theme() { + rows=$1 + cols=$2 + icon_size=$3 + + echo "element{orientation:vertical;}element-text{horizontal-align:0.5;}element-icon{size:$icon_size.0000em;}listview{lines:$rows;columns:$cols;}" +} + +theme="$HOME/.config/rofi/config-wallpaper.rasi" + +ROFI_CMD="rofi -dmenu -i -show-icons -theme-str $(build_theme 3 5 6) -theme ${theme}" + +choice=$(ls --escape "$WALLPAPERS_DIR" | xargs -I {} printf "{}\x00icon\x1f$WALLPAPERS_DIR/{}\n" | $ROFI_CMD -p "๓ฐธ‰ Wallpaper") + +wallpaper="$WALLPAPERS_DIR/$choice" + +set_wallpaper_kde() { + qdbus org.kde.plasmashell /PlasmaShell org.kde.PlasmaShell.evaluateScript \ + "var allDesktops = desktops(); for (i=0;i