From 1f830307c69e05c8d535748c33c35fa00bb78c87 Mon Sep 17 00:00:00 2001 From: end-4 <97237370+end-4@users.noreply.github.com> Date: Fri, 23 Feb 2024 16:59:48 +0700 Subject: [PATCH 01/32] use dart-sass instead of sassc compilation is twice slower but i guess not deprecated is good. style compile is async and ags takes like 1s to start anyway... --- .config/ags/config.js | 2 +- .config/ags/modules/indicators/musiccontrols.js | 2 +- .config/ags/scripts/color_generation/applycolor.sh | 4 ++-- .config/ags/scripts/color_generation/colorgen.sh | 2 +- .config/ags/scss/_osk.scss | 3 ++- scriptdata/dependencies.conf | 2 +- 6 files changed, 8 insertions(+), 7 deletions(-) diff --git a/.config/ags/config.js b/.config/ags/config.js index 2e13709ef..07b849f19 100644 --- a/.config/ags/config.js +++ b/.config/ags/config.js @@ -29,7 +29,7 @@ Utils.exec(`bash -c 'echo "" > ${App.configDir}/scss/_musicmaterial.scss'`); // async function applyStyle() { const COMPILED_STYLE_DIR = `${GLib.get_user_cache_dir()}/ags/user/generated` Utils.exec(`mkdir -p ${COMPILED_STYLE_DIR}`); - Utils.exec(`sassc ${App.configDir}/scss/main.scss ${COMPILED_STYLE_DIR}/style.css`); + Utils.exec(`sass ${App.configDir}/scss/main.scss ${COMPILED_STYLE_DIR}/style.css`); App.resetCss(); App.applyCss(`${COMPILED_STYLE_DIR}/style.css`); console.log('[LOG] Styles loaded') diff --git a/.config/ags/modules/indicators/musiccontrols.js b/.config/ags/modules/indicators/musiccontrols.js index 4cf052135..5bf8971bb 100644 --- a/.config/ags/modules/indicators/musiccontrols.js +++ b/.config/ags/modules/indicators/musiccontrols.js @@ -213,7 +213,7 @@ const CoverArt = ({ player, ...rest }) => { .then(() => { exec(`wal -i "${player.coverPath}" -n -t -s -e -q ${lightDark}`) exec(`cp ${GLib.get_user_cache_dir()}/wal/colors.scss ${App.configDir}/scss/_musicwal.scss`); - exec(`sassc ${App.configDir}/scss/_music.scss ${stylePath}`); + exec(`sass ${App.configDir}/scss/_music.scss ${stylePath}`); // self.css = `background-image: url('${coverPath}');`; Utils.timeout(200, () => self.attribute.showImage(self, coverPath)); App.applyCss(`${stylePath}`); diff --git a/.config/ags/scripts/color_generation/applycolor.sh b/.config/ags/scripts/color_generation/applycolor.sh index 006361b1c..95df7f338 100755 --- a/.config/ags/scripts/color_generation/applycolor.sh +++ b/.config/ags/scripts/color_generation/applycolor.sh @@ -65,7 +65,7 @@ apply_gtklock() { # Copy template mkdir -p "$HOME"/.cache/ags/user/generated/gtklock - sassc "scripts/templates/gtklock/main.scss" "$HOME"/.cache/ags/user/generated/gtklock/style.css + sass "scripts/templates/gtklock/main.scss" "$HOME"/.cache/ags/user/generated/gtklock/style.css cp "$HOME"/.cache/ags/user/generated/gtklock/style.css "$HOME"/.config/gtklock/style.css } @@ -188,7 +188,7 @@ apply_gtk() { # Using gradience-cli } apply_ags() { - sassc "$HOME"/.config/ags/scss/main.scss "$HOME"/.config/ags/style.css + sass "$HOME"/.config/ags/scss/main.scss "$HOME"/.config/ags/style.css ags run-js 'openColorScheme.value = true; Utils.timeout(2000, () => openColorScheme.value = false);' ags run-js "App.resetCss(); App.applyCss('${HOME}/.config/ags/style.css');" } diff --git a/.config/ags/scripts/color_generation/colorgen.sh b/.config/ags/scripts/color_generation/colorgen.sh index 93a7e7504..1748ffb9d 100755 --- a/.config/ags/scripts/color_generation/colorgen.sh +++ b/.config/ags/scripts/color_generation/colorgen.sh @@ -42,7 +42,7 @@ elif [ "$backend" = "pywal" ]; then cat color_generation/pywal_to_material.scss >> "$HOME"/.cache/ags/user/generated/material_colors.scss if [ "$2" = "--apply" ]; then - sassc "$HOME"/.cache/ags/user/generated/material_colors.scss "$HOME"/.cache/ags/user/generated/colors_classes.scss --style compact + sass "$HOME"/.cache/ags/user/generated/material_colors.scss "$HOME"/.cache/ags/user/generated/colors_classes.scss --style compact sed -i "s/ { color//g" "$HOME"/.cache/ags/user/generated/colors_classes.scss sed -i "s/\./$/g" "$HOME"/.cache/ags/user/generated/colors_classes.scss sed -i "s/}//g" "$HOME"/.cache/ags/user/generated/colors_classes.scss diff --git a/.config/ags/scss/_osk.scss b/.config/ags/scss/_osk.scss index eca128c76..d5e62fffd 100644 --- a/.config/ags/scss/_osk.scss +++ b/.config/ags/scss/_osk.scss @@ -69,7 +69,8 @@ $osk_key_fontsize: 1.091rem; .osk-key-fn { min-width: $osk_key_width * 1.005; - min-height: $osk_key_height / 2; + min-height: calc($osk_key_height / 2); // dart-sass + // min-height: $osk_key_height / 2; // sassc } .osk-key-tab { diff --git a/scriptdata/dependencies.conf b/scriptdata/dependencies.conf index 0dc219432..60244e33a 100644 --- a/scriptdata/dependencies.conf +++ b/scriptdata/dependencies.conf @@ -2,7 +2,7 @@ ### PKGs on same line will be send to `yay` together, unless `-f` is specified. ### Basic -coreutils cliphist curl fuzzel rsync wget ripgrep gojq npm meson typescript gjs sassc +coreutils cliphist curl fuzzel rsync wget ripgrep gojq npm meson typescript gjs dart-sass ### Python # Add `python-setuptools-scm` and `python-wheel` explicitly to fix #197 From e2d26ce874c40a0296900f7f37068cfed2f40600 Mon Sep 17 00:00:00 2001 From: end-4 <97237370+end-4@users.noreply.github.com> Date: Fri, 23 Feb 2024 17:00:15 +0700 Subject: [PATCH 02/32] ai: add privacy notice --- .config/ags/modules/sideleft/apis/chatgpt.js | 2 +- .config/ags/modules/sideleft/apis/gemini.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.config/ags/modules/sideleft/apis/chatgpt.js b/.config/ags/modules/sideleft/apis/chatgpt.js index b4ffaf869..d85d5de65 100644 --- a/.config/ags/modules/sideleft/apis/chatgpt.js +++ b/.config/ags/modules/sideleft/apis/chatgpt.js @@ -49,7 +49,7 @@ const ChatGPTInfo = () => { Button({ className: 'txt-subtext txt-norm icon-material', label: 'info', - tooltipText: 'Uses gpt-3.5-turbo.\nNot affiliated, endorsed, or sponsored by OpenAI.', + tooltipText: 'Uses gpt-3.5-turbo.\nNot affiliated, endorsed, or sponsored by OpenAI.\n\nPrivacy: OpenAI claims they do not use your data when you use their API.', setup: setupCursorHoverInfo, }), ] diff --git a/.config/ags/modules/sideleft/apis/gemini.js b/.config/ags/modules/sideleft/apis/gemini.js index 7f2e4e107..1db6029cf 100644 --- a/.config/ags/modules/sideleft/apis/gemini.js +++ b/.config/ags/modules/sideleft/apis/gemini.js @@ -50,7 +50,7 @@ const GeminiInfo = () => { Button({ className: 'txt-subtext txt-norm icon-material', label: 'info', - tooltipText: 'Uses gemini-pro.\nNot affiliated, endorsed, or sponsored by Google.', + tooltipText: 'Uses gemini-pro.\nNot affiliated, endorsed, or sponsored by Google.\n\nPrivacy: Google collects data for training by default.\nIf you mind, turn off Gemini Apps Activity in your account.', setup: setupCursorHoverInfo, }), ] From 10cde177dbd55aafd1f508c81b46cb2902ddf23d Mon Sep 17 00:00:00 2001 From: end-4 <97237370+end-4@users.noreply.github.com> Date: Sat, 24 Feb 2024 11:26:17 +0700 Subject: [PATCH 03/32] add tip for language --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 4bee3a78e..2e62ec8b4 100644 --- a/README.md +++ b/README.md @@ -29,7 +29,8 @@ bash <(curl -s "https://end-4.github.io/dots-hyprland-wiki/setup.sh") ``` - Manual installation, other distros and more: - - See the [Wiki](https://end-4.github.io/dots-hyprland-wiki/en/i-i/01setup/). + - See the [Wiki](https://end-4.github.io/dots-hyprland-wiki/en/i-i/01setup/) + - (_Available in: English, Vietnamese, and Simplified Chinese. Translations are welcome._) - If you'd like to suggest fixes or maybe a new widget, feel free to [open an issue](https://github.com/end-4/dots-hyprland/issues/new/choose)! From 93963f909bc6bb955b79c26a6d9b2b4a24555171 Mon Sep 17 00:00:00 2001 From: clsty Date: Sat, 24 Feb 2024 18:15:20 +0800 Subject: [PATCH 04/32] Wave goodbye to swaylock --- {.config => Import Manually}/swaylock/config | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename {.config => Import Manually}/swaylock/config (100%) diff --git a/.config/swaylock/config b/Import Manually/swaylock/config similarity index 100% rename from .config/swaylock/config rename to Import Manually/swaylock/config From f2d6bfefe16e341bb6822e2a3338a0c2c263bb81 Mon Sep 17 00:00:00 2001 From: end-4 <97237370+end-4@users.noreply.github.com> Date: Sun, 25 Feb 2024 09:03:35 +0700 Subject: [PATCH 05/32] mention discussions in readme --- README.md | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 2e62ec8b4..2aeecbfe6 100644 --- a/README.md +++ b/README.md @@ -31,7 +31,13 @@ - Manual installation, other distros and more: - See the [Wiki](https://end-4.github.io/dots-hyprland-wiki/en/i-i/01setup/) - (_Available in: English, Vietnamese, and Simplified Chinese. Translations are welcome._) - - If you'd like to suggest fixes or maybe a new widget, feel free to [open an issue](https://github.com/end-4/dots-hyprland/issues/new/choose)! + + +
+ Help improve these dotfiles! + + - Join the [discussions](https://github.com/end-4/dots-hyprland/discussions) + - If you'd like to suggest fixes or a new widget, feel free to [open an issue](https://github.com/end-4/dots-hyprland/issues/new/choose)
### [illogical_impulse](https://github.com/end-4/dots-hyprland/tree/illogical-impulse) From 477b22636f0ddff4267a3218c9c64c9635a6dd22 Mon Sep 17 00:00:00 2001 From: clsty Date: Sun, 25 Feb 2024 11:27:19 +0800 Subject: [PATCH 06/32] Add bibata-cursor --- install.sh | 8 ++++++++ scriptdata/dependencies.conf | 2 +- scriptdata/installers | 13 +++++++++++++ 3 files changed, 22 insertions(+), 1 deletion(-) diff --git a/install.sh b/install.sh index 21649bdf1..d09f97b82 100755 --- a/install.sh +++ b/install.sh @@ -119,6 +119,14 @@ if $(test -d /usr/local/share/icons/OneUI); then else ask_OneUI=true fi if $ask_OneUI;then showfun install-OneUI;v install-OneUI;fi + +if $(test -d /usr/local/share/icons/Bibata-Modern-Classic); then + echo -e "\e[33m[$0]: Cursor theme \"Bibata-Modern-Classic\" already exists, no need to install.\e[0m" + echo -e "\e[34mYou can reinstall it in order to update to the latest version anyway.\e[0m" + ask_bibata=$ask +else ask_bibata=true +fi +if $ask_bibata;then showfun install-bibata;v install-bibata;fi ##################################################################################### printf "\e[36m[$0]: 3. Copying\e[97m\n" diff --git a/scriptdata/dependencies.conf b/scriptdata/dependencies.conf index 60244e33a..129dd260b 100644 --- a/scriptdata/dependencies.conf +++ b/scriptdata/dependencies.conf @@ -2,7 +2,7 @@ ### PKGs on same line will be send to `yay` together, unless `-f` is specified. ### Basic -coreutils cliphist curl fuzzel rsync wget ripgrep gojq npm meson typescript gjs dart-sass +coreutils cliphist curl fuzzel rsync wget ripgrep gojq npm meson typescript gjs dart-sass axel ### Python # Add `python-setuptools-scm` and `python-wheel` explicitly to fix #197 diff --git a/scriptdata/installers b/scriptdata/installers index 8e707b29f..db3b29e88 100644 --- a/scriptdata/installers +++ b/scriptdata/installers @@ -73,3 +73,16 @@ install-OneUI (){ x sudo cp -r OneUI-light /usr/local/share/icons x cd $base } + +install-bibata (){ + x mkdir -p $base/cache/bibata-cursor + x cd $base/cache/bibata-cursor + name="Bibata-Modern-Classic" + file="$name.tar.xz" + # Use axel because `curl -O` always downloads a file with 0 byte size, idk why + x axel https://github.com/ful1e5/Bibata_Cursor/releases/latest/download/$file + tar -xf $file + x sudo mkdir -p /usr/local/share/icons + x sudo cp -r $name /usr/local/share/icons + x cd $base +} From 4b69574774a91c21a3c41465169f892f24838830 Mon Sep 17 00:00:00 2001 From: end-4 <97237370+end-4@users.noreply.github.com> Date: Sun, 25 Feb 2024 13:17:53 +0700 Subject: [PATCH 07/32] idle: turn off screen before sleeping a bit --- .config/hypr/hypridle.conf | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/.config/hypr/hypridle.conf b/.config/hypr/hypridle.conf index 6b2852514..3efbd108a 100644 --- a/.config/hypr/hypridle.conf +++ b/.config/hypr/hypridle.conf @@ -3,19 +3,21 @@ $suspend_cmd = systemctl suspend general { lock_cmd = $lock_cmd - # unlock_cmd before_sleep_cmd = $lock_cmd - # after_sleep_cmd } listener { - timeout = 300 + timeout = 180 # 3mins on-timeout = $lock_cmd - # on-resume } listener { - timeout = 450 - on-timeout = $suspend_cmd - # on-resume + timeout = 240 # 4mins + on-timeout = hyprctl dispatch dpms off + on-resume = hyprctl dispatch dpms on +} + +listener { + timeout = 540 # 9mins + on-timeout = $suspend_cmd } From 4d6eca3ee8fba643489e2c3aaf6f266fc84046f8 Mon Sep 17 00:00:00 2001 From: end-4 <97237370+end-4@users.noreply.github.com> Date: Sun, 25 Feb 2024 22:20:59 +0700 Subject: [PATCH 08/32] styles: compile to cache (more) three's still something compiling styles to ags folder... idk --- .config/ags/config.js | 4 ++-- .config/ags/modules/indicators/musiccontrols.js | 4 +++- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/.config/ags/config.js b/.config/ags/config.js index 07b849f19..59d5e74ba 100644 --- a/.config/ags/config.js +++ b/.config/ags/config.js @@ -17,6 +17,7 @@ import Session from './modules/session/main.js'; import SideLeft from './modules/sideleft/main.js'; import SideRight from './modules/sideright/main.js'; +const COMPILED_STYLE_DIR = `${GLib.get_user_cache_dir()}/ags/user/generated` const range = (length, start = 1) => Array.from({ length }, (_, i) => i + start); function forMonitors(widget) { const n = Gdk.Display.get_default()?.get_n_monitors() || 1; @@ -27,7 +28,6 @@ function forMonitors(widget) { Utils.exec(`bash -c 'echo "" > ${App.configDir}/scss/_musicwal.scss'`); // reset music styles Utils.exec(`bash -c 'echo "" > ${App.configDir}/scss/_musicmaterial.scss'`); // reset music styles async function applyStyle() { - const COMPILED_STYLE_DIR = `${GLib.get_user_cache_dir()}/ags/user/generated` Utils.exec(`mkdir -p ${COMPILED_STYLE_DIR}`); Utils.exec(`sass ${App.configDir}/scss/main.scss ${COMPILED_STYLE_DIR}/style.css`); App.resetCss(); @@ -56,7 +56,7 @@ const Windows = () => [ ]; const CLOSE_ANIM_TIME = 210; // Longer than actual anim time to make sure widgets animate fully export default { - css: `${App.configDir}/style.css`, + css: `${COMPILED_STYLE_DIR}/style.css`, stackTraceOnError: true, closeWindowDelay: { // For animations 'sideright': CLOSE_ANIM_TIME, diff --git a/.config/ags/modules/indicators/musiccontrols.js b/.config/ags/modules/indicators/musiccontrols.js index 5bf8971bb..c4e54853d 100644 --- a/.config/ags/modules/indicators/musiccontrols.js +++ b/.config/ags/modules/indicators/musiccontrols.js @@ -9,6 +9,8 @@ const { Box, EventBox, Icon, Scrollable, Label, Button, Revealer } = Widget; import { AnimatedCircProg } from "../.commonwidgets/cairo_circularprogress.js"; import { showMusicControls } from '../../variables.js'; +const COMPILED_STYLE_DIR = `${GLib.get_user_cache_dir()}/ags/user/generated` + function expandTilde(path) { if (path.startsWith('~')) { return GLib.get_home_dir() + path.slice(1); @@ -187,7 +189,7 @@ const CoverArt = ({ player, ...rest }) => { // Note that cover path still remains, so we're checking title if (!player || player.trackTitle == "") { self.css = `background-image: none;`; - App.applyCss(`${App.configDir}/style.css`); + App.applyCss(`${COMPILED_STYLE_DIR}/style.css`); return; } From 61043a20526387350f9ea45196b9b071b0601cd9 Mon Sep 17 00:00:00 2001 From: end-4 <97237370+end-4@users.noreply.github.com> Date: Mon, 26 Feb 2024 15:19:21 +0700 Subject: [PATCH 09/32] generate styles to cache folder when switching themes --- .config/ags/scripts/color_generation/applycolor.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.config/ags/scripts/color_generation/applycolor.sh b/.config/ags/scripts/color_generation/applycolor.sh index 95df7f338..bb892cada 100755 --- a/.config/ags/scripts/color_generation/applycolor.sh +++ b/.config/ags/scripts/color_generation/applycolor.sh @@ -188,9 +188,9 @@ apply_gtk() { # Using gradience-cli } apply_ags() { - sass "$HOME"/.config/ags/scss/main.scss "$HOME"/.config/ags/style.css + sass "$HOME"/.config/ags/scss/main.scss "$HOME"/.cache/ags/user/generated/style.css ags run-js 'openColorScheme.value = true; Utils.timeout(2000, () => openColorScheme.value = false);' - ags run-js "App.resetCss(); App.applyCss('${HOME}/.config/ags/style.css');" + ags run-js "App.resetCss(); App.applyCss('${HOME}/.cache/ags/user/generated/style.css');" } apply_ags & From 7584c3fcb262288af396cffae0720cff1735d1bc Mon Sep 17 00:00:00 2001 From: end-4 <97237370+end-4@users.noreply.github.com> Date: Mon, 26 Feb 2024 22:34:35 +0700 Subject: [PATCH 10/32] Update rules.conf --- .config/hypr/hyprland/rules.conf | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.config/hypr/hyprland/rules.conf b/.config/hypr/hyprland/rules.conf index cad82a903..f7c195c1a 100644 --- a/.config/hypr/hyprland/rules.conf +++ b/.config/hypr/hyprland/rules.conf @@ -4,7 +4,8 @@ windowrule = noblur,.* # Disables blur for windows. Substantially improves perf # windowrule = opacity 0.89 override 0.89 override, .* # Applies transparency to EVERY WINDOW windowrule = float, ^(steam)$ windowrule = float, ^(guifetch)$ # FlafyDev/guifetch -windowrulev2 = tile,class:(wpsoffice) +windowrulev2 = tile,class:(wps) +windowrulev2 = tile,class:(dev.warp.Warp) # Dialogs From 0c84b6d16611a93ffcd81179a465a4a01076d59a Mon Sep 17 00:00:00 2001 From: end-4 <97237370+end-4@users.noreply.github.com> Date: Mon, 26 Feb 2024 22:36:00 +0700 Subject: [PATCH 11/32] remove comments --- .config/ags/modules/indicators/musiccontrols.js | 4 ---- 1 file changed, 4 deletions(-) diff --git a/.config/ags/modules/indicators/musiccontrols.js b/.config/ags/modules/indicators/musiccontrols.js index c4e54853d..6575c69ff 100644 --- a/.config/ags/modules/indicators/musiccontrols.js +++ b/.config/ags/modules/indicators/musiccontrols.js @@ -188,7 +188,6 @@ const CoverArt = ({ player, ...rest }) => { // Player closed // Note that cover path still remains, so we're checking title if (!player || player.trackTitle == "") { - self.css = `background-image: none;`; App.applyCss(`${COMPILED_STYLE_DIR}/style.css`); return; } @@ -196,14 +195,12 @@ const CoverArt = ({ player, ...rest }) => { const coverPath = player.coverPath; const stylePath = `${player.coverPath}${lightDark}${COVER_COLORSCHEME_SUFFIX}`; if (player.coverPath == lastCoverPath) { // Since 'notify::cover-path' emits on cover download complete - // Utils.timeout(200, () => { self.css = `background-image: url('${coverPath}');`; }); Utils.timeout(200, () => self.attribute.showImage(self, coverPath)); } lastCoverPath = player.coverPath; // If a colorscheme has already been generated, skip generation if (fileExists(stylePath)) { - // Utils.timeout(200, () => { self.css = `background-image: url('${coverPath}');`; }); self.attribute.showImage(self, coverPath) App.applyCss(stylePath); return; @@ -216,7 +213,6 @@ const CoverArt = ({ player, ...rest }) => { exec(`wal -i "${player.coverPath}" -n -t -s -e -q ${lightDark}`) exec(`cp ${GLib.get_user_cache_dir()}/wal/colors.scss ${App.configDir}/scss/_musicwal.scss`); exec(`sass ${App.configDir}/scss/_music.scss ${stylePath}`); - // self.css = `background-image: url('${coverPath}');`; Utils.timeout(200, () => self.attribute.showImage(self, coverPath)); App.applyCss(`${stylePath}`); }) From 01679e18497f8e1ecdffddfaef5e03f07b1b6c0f Mon Sep 17 00:00:00 2001 From: end-4 <97237370+end-4@users.noreply.github.com> Date: Mon, 26 Feb 2024 22:40:50 +0700 Subject: [PATCH 12/32] use grimblast (#290) --- .config/ags/scripts/grimblast.sh | 278 ++++++++++++++++++ .../templates/hypr/hyprland/colors.conf | 2 +- 2 files changed, 279 insertions(+), 1 deletion(-) create mode 100755 .config/ags/scripts/grimblast.sh diff --git a/.config/ags/scripts/grimblast.sh b/.config/ags/scripts/grimblast.sh new file mode 100755 index 000000000..b7a4775a8 --- /dev/null +++ b/.config/ags/scripts/grimblast.sh @@ -0,0 +1,278 @@ +#!/usr/bin/env bash +## Grimblast: a helper for screenshots within hyprland +## Requirements: +## - `grim`: screenshot utility for wayland +## - `slurp`: to select an area +## - `hyprctl`: to read properties of current window (provided by Hyprland) +## - `hyprpicker`: to freeze the screen when selecting area +## - `wl-copy`: clipboard utility (provided by wl-clipboard) +## - `jq`: json utility to parse hyprctl output +## - `notify-send`: to show notifications (provided by libnotify) +## Those are needed to be installed, if unsure, run `grimblast check` +## +## See `man 1 grimblast` or `grimblast usage` for further details. + +## Author: Misterio (https://github.com/misterio77) + +## This tool is based on grimshot, with swaymsg commands replaced by their +## hyprctl equivalents. +## https://github.com/swaywm/sway/blob/master/contrib/grimshot + +getTargetDirectory() { + test -f "${XDG_CONFIG_HOME:-$HOME/.config}/user-dirs.dirs" && + . "${XDG_CONFIG_HOME:-$HOME/.config}/user-dirs.dirs" + + echo "${XDG_SCREENSHOTS_DIR:-${XDG_PICTURES_DIR:-$HOME}}" +} + +tmp_editor_directory() { + echo "/tmp" +} + +#Detect if $GRIMBLAST_EDITOR env exist +env_editor_confirm() { + if [ -n "$GRIMBLAST_EDITOR" ]; then + echo "GRIMBLAST_EDITOR is set. Continuing..." + else + echo "GRIMBLAST_EDITOR is not set. Defaulting to gimp" + GRIMBLAST_EDITOR=gimp + fi +} + +NOTIFY=no +CURSOR= +FREEZE= +WAIT=no +SCALE= +HYPRPICKER_PID=-1 + +while [ $# -gt 0 ]; do + key="$1" + + case $key in + -n | --notify) + NOTIFY=yes + shift # past argument + ;; + -c | --cursor) + CURSOR=yes + shift # past argument + ;; + -f | --freeze) + FREEZE=yes + shift # past argument + ;; + -w | --wait) + shift + WAIT=$1 + if echo "$WAIT" | grep "[^0-9]" -q; then + echo "Invalid value for wait '$WAIT'" >&2 + exit 3 + fi + shift + ;; + -s | --scale) + shift # past argument + if [ $# -gt 0 ]; then + SCALE="$1" # assign the next argument to SCALE + shift # past argument + else + echo "Error: Missing argument for --scale option." + exit 1 + fi + ;; + *) # unknown option + break # done with parsing --flags + ;; + esac +done + +ACTION=${1:-usage} +SUBJECT=${2:-screen} +FILE=${3:-$(getTargetDirectory)/$(date -Ins).png} +FILE_EDITOR=${3:-$(tmp_editor_directory)/$(date -Ins).png} + +if [ "$ACTION" != "save" ] && [ "$ACTION" != "copy" ] && [ "$ACTION" != "edit" ] && [ "$ACTION" != "copysave" ] && [ "$ACTION" != "check" ]; then + echo "Usage:" + echo " grimblast [--notify] [--cursor] [--freeze] [--wait N] [--scale ] (copy|save|copysave|edit) [active|screen|output|area] [FILE|-]" + echo " grimblast check" + echo " grimblast usage" + echo "" + echo "Commands:" + echo " copy: Copy the screenshot data into the clipboard." + echo " save: Save the screenshot to a regular file or '-' to pipe to STDOUT." + echo " copysave: Combine the previous 2 options." + echo " edit: Open screenshot in the image editor of your choice (default is gimp). See man page for info." + echo " check: Verify if required tools are installed and exit." + echo " usage: Show this message and exit." + echo "" + echo "Targets:" + echo " active: Currently active window." + echo " screen: All visible outputs." + echo " output: Currently active output." + echo " area: Manually select a region or window." + exit +fi + +notify() { + notify-send -t 3000 -a grimblast "$@" +} + +notifyOk() { + [ "$NOTIFY" = "no" ] && return + + notify "$@" +} + +notifyError() { + if [ $NOTIFY = "yes" ]; then + TITLE=${2:-"Screenshot"} + MESSAGE=${1:-"Error taking screenshot with grim"} + notify -u critical "$TITLE" "$MESSAGE" + else + echo "$1" + fi +} + +resetFade() { + if [[ -n $FADE && -n $FADEOUT ]]; then + hyprctl keyword animation "$FADE" >/dev/null + hyprctl keyword animation "$FADEOUT" >/dev/null + fi +} + +killHyprpicker() { + if [ ! $HYPRPICKER_PID -eq -1 ]; then + kill $HYPRPICKER_PID + fi +} + +die() { + killHyprpicker + MSG=${1:-Bye} + notifyError "Error: $MSG" + exit 2 +} + +check() { + COMMAND=$1 + if command -v "$COMMAND" >/dev/null 2>&1; then + RESULT="OK" + else + RESULT="NOT FOUND" + fi + echo " $COMMAND: $RESULT" +} + +takeScreenshot() { + FILE=$1 + GEOM=$2 + OUTPUT=$3 + if [ -n "$OUTPUT" ]; then + grim ${CURSOR:+-c} ${SCALE:+-s "$SCALE"} -o "$OUTPUT" "$FILE" || die "Unable to invoke grim" + elif [ -z "$GEOM" ]; then + grim ${CURSOR:+-c} ${SCALE:+-s "$SCALE"} "$FILE" || die "Unable to invoke grim" + else + grim ${CURSOR:+-c} ${SCALE:+-s "$SCALE"} -g "$GEOM" "$FILE" || die "Unable to invoke grim" + resetFade + fi +} + +wait() { + if [ "$WAIT" != "no" ]; then + sleep "$WAIT" + fi +} + +if [ "$ACTION" = "check" ]; then + echo "Checking if required tools are installed. If something is missing, install it to your system and make it available in PATH..." + check grim + check slurp + check hyprctl + check hyprpicker + check wl-copy + check jq + check notify-send + exit +elif [ "$SUBJECT" = "active" ]; then + wait + FOCUSED=$(hyprctl activewindow -j) + GEOM=$(echo "$FOCUSED" | jq -r '"\(.at[0]),\(.at[1]) \(.size[0])x\(.size[1])"') + APP_ID=$(echo "$FOCUSED" | jq -r '.class') + WHAT="$APP_ID window" +elif [ "$SUBJECT" = "screen" ]; then + wait + GEOM="" + WHAT="Screen" +elif [ "$SUBJECT" = "output" ]; then + wait + GEOM="" + OUTPUT=$(hyprctl monitors -j | jq -r '.[] | select(.focused == true)' | jq -r '.name') + WHAT="$OUTPUT" +elif [ "$SUBJECT" = "area" ]; then + if [ "$FREEZE" = "yes" ] && [ "$(command -v "hyprpicker")" ] >/dev/null 2>&1; then + hyprpicker -r -z & + sleep 0.2 + HYPRPICKER_PID=$! + fi + + # get fade & fadeOut animation and unset it + # this removes the black border seen around screenshots + FADE="$(hyprctl -j animations | jq -jr '.[0][] | select(.name == "fade") | .name, ",", (if .enabled == true then "1" else "0" end), ",", (.speed|floor), ",", .bezier')" + FADEOUT="$(hyprctl -j animations | jq -jr '.[0][] | select(.name == "fadeOut") | .name, ",", (if .enabled == true then "1" else "0" end), ",", (.speed|floor), ",", .bezier')" + hyprctl keyword animation 'fade,0,1,default' >/dev/null + hyprctl keyword animation 'fadeOut,0,1,default' >/dev/null + + WORKSPACES="$(hyprctl monitors -j | jq -r 'map(.activeWorkspace.id)')" + WINDOWS="$(hyprctl clients -j | jq -r --argjson workspaces "$WORKSPACES" 'map(select([.workspace.id] | inside($workspaces)))')" + # shellcheck disable=2086 # if we don't split, spaces mess up slurp + GEOM=$(echo "$WINDOWS" | jq -r '.[] | "\(.at[0]),\(.at[1]) \(.size[0])x\(.size[1])"' | slurp $SLURP_ARGS) + + # Check if user exited slurp without selecting the area + if [ -z "$GEOM" ]; then + killHyprpicker + resetFade + exit 1 + fi + WHAT="Area" + wait +elif [ "$SUBJECT" = "window" ]; then + die "Subject 'window' is now included in 'area'" +else + die "Unknown subject to take a screen shot from" "$SUBJECT" +fi + +if [ "$ACTION" = "copy" ]; then + takeScreenshot - "$GEOM" "$OUTPUT" | wl-copy --type image/png || die "Clipboard error" + notifyOk "$WHAT copied to buffer" +elif [ "$ACTION" = "save" ]; then + if takeScreenshot "$FILE" "$GEOM" "$OUTPUT"; then + TITLE="Screenshot of $SUBJECT" + MESSAGE=$(basename "$FILE") + notifyOk "$TITLE" "$MESSAGE" -i "$FILE" + echo "$FILE" + else + notifyError "Error taking screenshot with grim" + fi +elif [ "$ACTION" = "edit" ]; then + env_editor_confirm + if takeScreenshot "$FILE_EDITOR" "$GEOM" "$OUTPUT"; then + TITLE="Screenshot of $SUBJECT" + MESSAGE="Open screenshot in image editor" + notifyOk "$TITLE" "$MESSAGE" -i "$FILE_EDITOR" + $GRIMBLAST_EDITOR "$FILE_EDITOR" + echo "$FILE_EDITOR" + else + notifyError "Error taking screenshot" + fi +else + if [ "$ACTION" = "copysave" ]; then + takeScreenshot - "$GEOM" "$OUTPUT" | tee "$FILE" | wl-copy --type image/png || die "Clipboard error" + notifyOk "$WHAT copied to buffer and saved to $FILE" -i "$FILE" + echo "$FILE" + else + notifyError "Error taking screenshot with grim" + fi +fi + +killHyprpicker diff --git a/.config/ags/scripts/templates/hypr/hyprland/colors.conf b/.config/ags/scripts/templates/hypr/hyprland/colors.conf index 3a0bf4a34..8c0689f31 100644 --- a/.config/ags/scripts/templates/hypr/hyprland/colors.conf +++ b/.config/ags/scripts/templates/hypr/hyprland/colors.conf @@ -1,4 +1,4 @@ -$SLURP_COMMAND="$(slurp -d -c {{ $onSecondaryContainer }}BB -b {{ $secondaryContainer }}44 -s 00000000)" +# exec = export SLURP_ARGS='-d -c {{ $onSecondaryContainer }}BB -b {{ $secondaryContainer }}44 -s 00000000' general { col.active_border = rgba({{ $onSurface }}39) From 09e1e13fea79a30f8b460fd06e7357eca8cd3288 Mon Sep 17 00:00:00 2001 From: end-4 <97237370+end-4@users.noreply.github.com> Date: Mon, 26 Feb 2024 22:41:35 +0700 Subject: [PATCH 13/32] use grimblast --- .config/ags/modules/bar/system.js | 2 +- .config/hypr/hyprland/keybinds.conf | 13 +++++++------ 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/.config/ags/modules/bar/system.js b/.config/ags/modules/bar/system.js index 9a8fc86a8..5efdc0fdc 100644 --- a/.config/ags/modules/bar/system.js +++ b/.config/ags/modules/bar/system.js @@ -75,7 +75,7 @@ const Utilities = () => Box({ children: [ UtilButton({ name: 'Screen snip', icon: 'screenshot_region', onClicked: () => { - Utils.execAsync(['bash', '-c', `grim -g "$(slurp -d -c e2e2e2BB -b 31313122 -s 00000000)" - | wl-copy &`]) + Utils.execAsync(`${App.configDir}/scripts/grimblast.sh`) .catch(print) } }), diff --git a/.config/hypr/hyprland/keybinds.conf b/.config/hypr/hyprland/keybinds.conf index 275d0dba4..3b49f83b6 100644 --- a/.config/hypr/hyprland/keybinds.conf +++ b/.config/hypr/hyprland/keybinds.conf @@ -38,9 +38,9 @@ bind = Control+Shift+Alt, Delete, exec, pkill wlogout || wlogout -p layer-shell bind = Control+Shift+Alt+Super, Delete, exec, systemctl poweroff # Screenshot, Record, OCR, Color picker, Clipboard history -bind = Super+Shift+Alt, S, exec, grim -g $SLURP_COMMAND - | swappy -f - +bind = Super+Shift+Alt, S, exec, grim -g $(slurp $SLURP_ARGS) - | swappy -f - bindl=,Print,exec,grim - | wl-copy -bind = Super+Shift, S, exec, grim -g $SLURP_COMMAND - | wl-copy +bind = Super+Shift, S, exec, ~/.config/ags/scripts/grimblast.sh --freeze copy area bind = Super+Alt, R, exec, ~/.config/ags/scripts/record-script.sh bind = Control+Alt, R, exec, ~/.config/ags/scripts/record-script.sh --fullscreen bind = Super+Shift+Alt, R, exec, ~/.config/ags/scripts/record-script.sh --fullscreen-sound @@ -49,11 +49,11 @@ bind = Super, V, exec, pkill fuzzel || cliphist list | fuzzel --no-fuzzy --dmenu # Text-to-image # Normal -bind = Control+Super+Shift,S,exec,grim -g $SLURP_COMMAND "tmp.png" && tesseract "tmp.png" - | wl-copy && rm "tmp.png" +bind = Control+Super+Shift,S,exec,grim -g $(slurp $SLURP_ARGS) "tmp.png" && tesseract "tmp.png" - | wl-copy && rm "tmp.png" # English -bind = Super+Shift,T,exec,grim -g $SLURP_COMMAND "tmp.png" && tesseract -l eng "tmp.png" - | wl-copy && rm "tmp.png" +bind = Super+Shift,T,exec,grim -g $(slurp $SLURP_ARGS) "tmp.png" && tesseract -l eng "tmp.png" - | wl-copy && rm "tmp.png" # Japanese -bind = Super+Shift,J,exec,grim -g $SLURP_COMMAND "tmp.png" && tesseract -l jpn "tmp.png" - | wl-copy && rm "tmp.png" +bind = Super+Shift,J,exec,grim -g $(slurp $SLURP_ARGS) "tmp.png" && tesseract -l jpn "tmp.png" - | wl-copy && rm "tmp.png" # Media bindl= Super+Shift, N, exec, playerctl next || playerctl position `bc <<< "100 * $(playerctl metadata mpris:length) / 1000000 / 100"` @@ -100,7 +100,8 @@ bind = Control+Super, O, exec, hyprctl plugin unload "~/.config/hypr/plugins/dro # bind = SuperAlt, f12, exec, notify-send "Hyprland version: $(hyprctl version | head -2 | tail -1 | cut -f2 -d ' ')" "owo" -a 'Hyprland keybind' # bind = Super+Alt, f12, exec, notify-send "Millis since epoch" "$(date +%s%N | cut -b1-13)" -a 'Hyprland keybind' bind = Super+Alt, f12, exec, notify-send 'Test notification' "Here's a really long message to test truncation and wrapping\nYou can middle click or flick this notification to dismiss it!" -a 'Shell' -A "Test1=I got it!" -A "Test2=Another action" -bind = Super+Alt, Equal, exec, notify-send "Urgent notification" "Ah hell no" -u critical -a 'Hyprland keybind' +# bind = Super+Alt, Equal, exec, notify-send "Urgent notification" "Ah hell no" -u critical -a 'Hyprland keybind' +bind = Super+Alt, Equal, exec, notify-send 'hmm' ${SLURP_ARGS} ############################ Keybinds for Hyprland ############################ # Swap windows From 9b3ce245da98205aae854653ba4151e907490430 Mon Sep 17 00:00:00 2001 From: end-4 <97237370+end-4@users.noreply.github.com> Date: Mon, 26 Feb 2024 22:43:27 +0700 Subject: [PATCH 14/32] ai: add latex rendering --- .config/ags/modules/.miscutils/md2pango.js | 3 + .../modules/sideleft/apis/ai_chatmessage.js | 66 ++++++++++++++++++- .config/ags/scss/_sidebars.scss | 9 +++ install.sh | 9 +++ scriptdata/installers | 15 +++++ 5 files changed, 100 insertions(+), 2 deletions(-) diff --git a/.config/ags/modules/.miscutils/md2pango.js b/.config/ags/modules/.miscutils/md2pango.js index 054752b14..8f56e3aeb 100644 --- a/.config/ags/modules/.miscutils/md2pango.js +++ b/.config/ags/modules/.miscutils/md2pango.js @@ -83,4 +83,7 @@ console.log('uwu'); \`\`\` - Random instruction thing - To update arch lincox, run \`sudo pacman -Syu\` +\`\`\`tex +\\frac{d}{dx} \\left( \\frac{x-438}{x^2+23x-7} \\right) = \\frac{-x^2 + 869}{(x^2+23x-7)^2} +\`\`\` `; \ No newline at end of file diff --git a/.config/ags/modules/sideleft/apis/ai_chatmessage.js b/.config/ags/modules/sideleft/apis/ai_chatmessage.js index 5bc44f847..2b8864826 100644 --- a/.config/ags/modules/sideleft/apis/ai_chatmessage.js +++ b/.config/ags/modules/sideleft/apis/ai_chatmessage.js @@ -3,12 +3,12 @@ import GtkSource from "gi://GtkSource?version=3.0"; import App from 'resource:///com/github/Aylur/ags/app.js'; import Widget from 'resource:///com/github/Aylur/ags/widget.js'; import * as Utils from 'resource:///com/github/Aylur/ags/utils.js'; -const { Box, Button, Label, Scrollable } = Widget; +const { Box, Button, Label, Icon, Scrollable } = Widget; const { execAsync, exec } = Utils; import { MaterialIcon } from '../../.commonwidgets/materialicon.js'; import md2pango from '../../.miscutils/md2pango.js'; - +const LATEX_DIR = `${GLib.get_user_cache_dir()}/ags/media/latex`; const CUSTOM_SOURCEVIEW_SCHEME_PATH = `${App.configDir}/assets/themes/sourceviewtheme.xml`; const CUSTOM_SCHEME_ID = 'custom'; const USERNAME = GLib.get_user_name(); @@ -82,7 +82,69 @@ const TextBlock = (content = '') => Label({ label: content, }); +Utils.execAsync(['bash', '-c', `rm ${LATEX_DIR}/*`]) + .then(() => Utils.execAsync(['bash', '-c', `mkdir -p ${LATEX_DIR}`])) + .catch(print); +const Latex = (content = '') => { + const latexViewArea = Box({ + // vscroll: 'never', + // hscroll: 'automatic', + attribute: { + render: async (self, text) => { + if (text.length == 0) return; + const styleContext = self.get_style_context(); + const fontSize = styleContext.get_property('font-size', Gtk.StateFlags.NORMAL); + + const timeSinceEpoch = Date.now(); + const fileName = `${timeSinceEpoch}.tex`; + const outFileName = `${timeSinceEpoch}-symbolic.svg`; + const scriptFileName = `${timeSinceEpoch}-render.sh`; + const filePath = `${LATEX_DIR}/${fileName}`; + const outFilePath = `${LATEX_DIR}/${outFileName}`; + const scriptFilePath = `${LATEX_DIR}/${scriptFileName}`; + + Utils.writeFile(text, filePath).catch(print); + // Since MicroTex doesn't support file path input properly, we gotta cat it + // And escaping such a command is a fucking pain so I decided to just generate a script + // Note: MicroTex doesn't support `&=` + // You can add this line in the middle for debugging: echo "$text" > ${filePath}.tmp + const renderScript = `#!/usr/bin/env bash +text=$(cat ${filePath} | sed 's/$/ \\\\\\\\/g' | sed 's/&=/=/g') +LaTeX -headless -input="$text" -output=${outFilePath} -textsize=${fontSize * 1.1} -padding=0 -maxwidth=${latexViewArea.get_allocated_width() * 0.85} +`; + Utils.writeFile(renderScript, scriptFilePath).catch(print); + Utils.exec(`chmod a+x ${scriptFilePath}`) + Utils.timeout(100, () => { + Utils.exec(`bash ${scriptFilePath}`); + Gtk.IconTheme.get_default().append_search_path(LATEX_DIR); + self.child?.destroy(); + self.child = Gtk.Image.new_from_file(outFilePath); + }) + } + }, + setup: (self) => self.attribute.render(self, content).catch(print), + }); + const wholeThing = Box({ + className: 'sidebar-chat-latex', + homogeneous: true, + attribute: { + 'updateText': (text) => { + latexViewArea.attribute.render(latexViewArea, text).catch(print); + } + }, + children: [Scrollable({ + vscroll: 'never', + hscroll: 'automatic', + child: latexViewArea + })] + }) + return wholeThing; +} + const CodeBlock = (content = '', lang = 'txt') => { + if (lang == 'tex' || lang == 'latex') { + return Latex(content); + } const topBar = Box({ className: 'sidebar-chat-codeblock-topbar', children: [ diff --git a/.config/ags/scss/_sidebars.scss b/.config/ags/scss/_sidebars.scss index 51a3b5dde..a4a98d5a4 100644 --- a/.config/ags/scss/_sidebars.scss +++ b/.config/ags/scss/_sidebars.scss @@ -655,6 +655,15 @@ $colorpicker_rounding: 0.341rem; @include readingfont; } +.sidebar-chat-latex { + margin: 0rem 0.682rem; + @if $darkmode ==true { + background-color: white; + } + color: $onBackground; + // background-color: $termbg; +} + .sidebar-chat-codeblock { @include normal-rounding; // @include elevation2; diff --git a/install.sh b/install.sh index d09f97b82..8b2a1d02a 100755 --- a/install.sh +++ b/install.sh @@ -127,6 +127,15 @@ if $(test -d /usr/local/share/icons/Bibata-Modern-Classic); then else ask_bibata=true fi if $ask_bibata;then showfun install-bibata;v install-bibata;fi + +if $(test -d /usr/local/bin/LaTex); then + echo -e "\e[33m[$0]: Program \"MicroTex\" already exists, no need to install.\e[0m" + echo -e "\e[34mYou can reinstall it in order to update to the latest version anyway.\e[0m" + ask_MicroTex=$ask +else ask_MicroTex=true +fi +if $ask_MicroTex;then showfun install-MicroTex;v install-MicroTex;fi + ##################################################################################### printf "\e[36m[$0]: 3. Copying\e[97m\n" diff --git a/scriptdata/installers b/scriptdata/installers index db3b29e88..aad02b94f 100644 --- a/scriptdata/installers +++ b/scriptdata/installers @@ -86,3 +86,18 @@ install-bibata (){ x sudo cp -r $name /usr/local/share/icons x cd $base } + +install-MicroTex (){ + x mkdir -p $base/cache/MicroTex + x cd $base/cache/MicroTex + try git init -b master + try git remote add origin https://github.com/NanoMichael/MicroTeX.git + x git pull origin master && git submodule update --init --recursive + x mkdir -p build + x cd build + x cmake .. + x make -j32 + x sudo mkdir -p /usr/local/bin + x sudo cp ./LaTeX /usr/local/bin/ + x cd $base +} From ccfb4859cf24d5861429a5cbc0918e8cbad5919b Mon Sep 17 00:00:00 2001 From: end-4 <97237370+end-4@users.noreply.github.com> Date: Mon, 26 Feb 2024 22:45:51 +0700 Subject: [PATCH 15/32] ai: make latex block nicer --- .config/ags/scss/_sidebars.scss | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.config/ags/scss/_sidebars.scss b/.config/ags/scss/_sidebars.scss index a4a98d5a4..14103427b 100644 --- a/.config/ags/scss/_sidebars.scss +++ b/.config/ags/scss/_sidebars.scss @@ -656,7 +656,9 @@ $colorpicker_rounding: 0.341rem; } .sidebar-chat-latex { + @include small-rounding; margin: 0rem 0.682rem; + padding: 0.682rem; @if $darkmode ==true { background-color: white; } From 5cd89c72a5ce74b2fd50c20eebf077b153c8529b Mon Sep 17 00:00:00 2001 From: end-4 <97237370+end-4@users.noreply.github.com> Date: Mon, 26 Feb 2024 23:00:02 +0700 Subject: [PATCH 16/32] ai: prompt to make latex rendering more likely to work --- .config/ags/services/gemini.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/.config/ags/services/gemini.js b/.config/ags/services/gemini.js index bcc8cbcb7..e4ba5e39d 100644 --- a/.config/ags/services/gemini.js +++ b/.config/ags/services/gemini.js @@ -8,7 +8,7 @@ import { fileExists } from './messages.js'; const initMessages = [ - { role: "user", parts: [{ text: "You are an assistant on a sidebar of a Wayland Linux desktop. Please always use a casual tone when answering your questions, unless requested otherwise or making writing suggestions. These are the steps you should take to respond to the user's queries:\n1. If it's a writing- or grammar-related question or a sentence in quotation marks, Please point out errors and correct when necessary using underlines, and make the writing more natural where appropriate without making too major changes. If you're given a sentence in quotes but is grammatically correct, explain briefly concepts that are uncommon.\n2. If it's a question about system tasks, give a bash command in a code block with very brief explanation for each command\n3. Otherwise, when asked to summarize information or explaining concepts, you are encouraged to use bullet points and headings. Use casual language and be short and concise. \nThanks!" }], }, + { role: "user", parts: [{ text: "You are an assistant on a sidebar of a Wayland Linux desktop. Please always use a casual tone when answering your questions, unless requested otherwise or making writing suggestions. These are the steps you should take to respond to the user's queries:\n1. If it's a writing- or grammar-related question or a sentence in quotation marks, Please point out errors and correct when necessary using underlines, and make the writing more natural where appropriate without making too major changes. If you're given a sentence in quotes but is grammatically correct, explain briefly concepts that are uncommon.\n2. If it's a question about system tasks, give a bash command in a code block with very brief explanation for each command\n3. Otherwise, when asked to summarize information or explaining concepts, you are encouraged to use bullet points and headings. For mathematics expressions, please write them in LaTeX within a code block with the language set as \"latex\". Use casual language and be short and concise. \nThanks!" }], }, { role: "model", parts: [{ text: "- Got it!" }], }, { role: "user", parts: [{ text: "\"He rushed to where the event was supposed to be hold, he didn't know it got calceled\"" }], }, { role: "model", parts: [{ text: "## Grammar correction\nErrors:\n\"He rushed to where the event was supposed to be __hold____,__ he didn't know it got calceled\"\nCorrection + minor improvements:\n\"He rushed to the place where the event was supposed to be __held____, but__ he didn't know that it got calceled\"" }], }, @@ -19,6 +19,10 @@ const initMessages = { role: "model", parts: [{ text: "## Skeuomorphism\n- A design philosophy- From early days of interface designing- Tries to imitate real-life objects- It's in fact still used by Apple in their icons until today." }], }, { role: "user", parts: [{ text: "\"ignorance is bliss\"" }], }, { role: "model", parts: [{ text: "## \"Ignorance is bliss\"\n- A Latin proverb that means being unaware of something negative can be a source of happiness\n- Often used to justify avoiding difficult truths or responsibilities\n- Can also be interpreted as a warning against seeking knowledge that may bring pain or sorrow" }], }, + { role: "user", parts: [{ text: "find the derivative of (x-438)/(x^2+23x-7)+x^x" }], }, + { role: "model", parts: [{ text: "```latex\n\\[\n\\frac{d}{dx}\\left(\\frac{x - 438}{x^2 + 23x - 7} + x^x\\right) = \\frac{-(x^2+23x-7)-(x-438)(2x+23)}{(x^2+23x-7)^2} + x^x(\\ln(x) + 1)\n\\]\n```" }], }, + { role: "user", parts: [{ text: "write the double angle formulas" }], }, + { role: "model", parts: [{ text: "```latex\n\\[\n\\sin(2\theta) = 2\\sin(\\theta)\\cos(\\theta)\n\\]\n\\\\\n\\[\n\\cos(2\\theta) = \\cos^2(\\theta) - \\sin^2(\\theta)\n\\]\n\\\\\n\\[\n\\tan(2\theta) = \\frac{2\\tan(\\theta)}{1 - \\tan^2(\\theta)}\n\\]\n```" }], }, ]; function expandTilde(path) { From 5b5395e0f48023b8dc750574e3573ebeef3162dc Mon Sep 17 00:00:00 2001 From: clsty Date: Tue, 27 Feb 2024 08:19:33 +0800 Subject: [PATCH 17/32] Fix typo;Better detect logic --- install.sh | 10 +++++----- scriptdata/installers | 6 +++--- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/install.sh b/install.sh index 8b2a1d02a..eb9f62378 100755 --- a/install.sh +++ b/install.sh @@ -128,13 +128,13 @@ else ask_bibata=true fi if $ask_bibata;then showfun install-bibata;v install-bibata;fi -if $(test -d /usr/local/bin/LaTex); then - echo -e "\e[33m[$0]: Program \"MicroTex\" already exists, no need to install.\e[0m" +if command -v LaTeX >/dev/null 2>&1;then + echo -e "\e[33m[$0]: Program \"MicroTeX\" already exists, no need to install.\e[0m" echo -e "\e[34mYou can reinstall it in order to update to the latest version anyway.\e[0m" - ask_MicroTex=$ask -else ask_MicroTex=true + ask_MicroTeX=$ask +else ask_MicroTeX=true fi -if $ask_MicroTex;then showfun install-MicroTex;v install-MicroTex;fi +if $ask_MicroTeX;then showfun install-MicroTeX;v install-MicroTeX;fi ##################################################################################### printf "\e[36m[$0]: 3. Copying\e[97m\n" diff --git a/scriptdata/installers b/scriptdata/installers index aad02b94f..8d2fe7bab 100644 --- a/scriptdata/installers +++ b/scriptdata/installers @@ -87,9 +87,9 @@ install-bibata (){ x cd $base } -install-MicroTex (){ - x mkdir -p $base/cache/MicroTex - x cd $base/cache/MicroTex +install-MicroTeX (){ + x mkdir -p $base/cache/MicroTeX + x cd $base/cache/MicroTeX try git init -b master try git remote add origin https://github.com/NanoMichael/MicroTeX.git x git pull origin master && git submodule update --init --recursive From b5dabc2fee79fe008d698b9f0e4496b3c189f7a3 Mon Sep 17 00:00:00 2001 From: clsty Date: Tue, 27 Feb 2024 11:50:05 +0800 Subject: [PATCH 18/32] replace jq with gojq --- .config/ags/scripts/grimblast.sh | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/.config/ags/scripts/grimblast.sh b/.config/ags/scripts/grimblast.sh index b7a4775a8..db8bb5069 100755 --- a/.config/ags/scripts/grimblast.sh +++ b/.config/ags/scripts/grimblast.sh @@ -17,7 +17,7 @@ ## This tool is based on grimshot, with swaymsg commands replaced by their ## hyprctl equivalents. ## https://github.com/swaywm/sway/blob/master/contrib/grimshot - +jq=gojq getTargetDirectory() { test -f "${XDG_CONFIG_HOME:-$HOME/.config}/user-dirs.dirs" && . "${XDG_CONFIG_HOME:-$HOME/.config}/user-dirs.dirs" @@ -191,14 +191,14 @@ if [ "$ACTION" = "check" ]; then check hyprctl check hyprpicker check wl-copy - check jq + check $jq check notify-send exit elif [ "$SUBJECT" = "active" ]; then wait FOCUSED=$(hyprctl activewindow -j) - GEOM=$(echo "$FOCUSED" | jq -r '"\(.at[0]),\(.at[1]) \(.size[0])x\(.size[1])"') - APP_ID=$(echo "$FOCUSED" | jq -r '.class') + GEOM=$(echo "$FOCUSED" | $jq -r '"\(.at[0]),\(.at[1]) \(.size[0])x\(.size[1])"') + APP_ID=$(echo "$FOCUSED" | $jq -r '.class') WHAT="$APP_ID window" elif [ "$SUBJECT" = "screen" ]; then wait @@ -207,7 +207,7 @@ elif [ "$SUBJECT" = "screen" ]; then elif [ "$SUBJECT" = "output" ]; then wait GEOM="" - OUTPUT=$(hyprctl monitors -j | jq -r '.[] | select(.focused == true)' | jq -r '.name') + OUTPUT=$(hyprctl monitors -j | $jq -r '.[] | select(.focused == true)' | $jq -r '.name') WHAT="$OUTPUT" elif [ "$SUBJECT" = "area" ]; then if [ "$FREEZE" = "yes" ] && [ "$(command -v "hyprpicker")" ] >/dev/null 2>&1; then @@ -218,15 +218,15 @@ elif [ "$SUBJECT" = "area" ]; then # get fade & fadeOut animation and unset it # this removes the black border seen around screenshots - FADE="$(hyprctl -j animations | jq -jr '.[0][] | select(.name == "fade") | .name, ",", (if .enabled == true then "1" else "0" end), ",", (.speed|floor), ",", .bezier')" - FADEOUT="$(hyprctl -j animations | jq -jr '.[0][] | select(.name == "fadeOut") | .name, ",", (if .enabled == true then "1" else "0" end), ",", (.speed|floor), ",", .bezier')" + FADE="$(hyprctl -j animations | $jq -jr '.[0][] | select(.name == "fade") | .name, ",", (if .enabled == true then "1" else "0" end), ",", (.speed|floor), ",", .bezier')" + FADEOUT="$(hyprctl -j animations | $jq -jr '.[0][] | select(.name == "fadeOut") | .name, ",", (if .enabled == true then "1" else "0" end), ",", (.speed|floor), ",", .bezier')" hyprctl keyword animation 'fade,0,1,default' >/dev/null hyprctl keyword animation 'fadeOut,0,1,default' >/dev/null - WORKSPACES="$(hyprctl monitors -j | jq -r 'map(.activeWorkspace.id)')" - WINDOWS="$(hyprctl clients -j | jq -r --argjson workspaces "$WORKSPACES" 'map(select([.workspace.id] | inside($workspaces)))')" + WORKSPACES="$(hyprctl monitors -j | $jq -r 'map(.activeWorkspace.id)')" + WINDOWS="$(hyprctl clients -j | $jq -r --argjson workspaces "$WORKSPACES" 'map(select([.workspace.id] | inside($workspaces)))')" # shellcheck disable=2086 # if we don't split, spaces mess up slurp - GEOM=$(echo "$WINDOWS" | jq -r '.[] | "\(.at[0]),\(.at[1]) \(.size[0])x\(.size[1])"' | slurp $SLURP_ARGS) + GEOM=$(echo "$WINDOWS" | $jq -r '.[] | "\(.at[0]),\(.at[1]) \(.size[0])x\(.size[1])"' | slurp $SLURP_ARGS) # Check if user exited slurp without selecting the area if [ -z "$GEOM" ]; then From f4401abac2c1653c5deb4d425a91e428f10ec754 Mon Sep 17 00:00:00 2001 From: end-4 <97237370+end-4@users.noreply.github.com> Date: Tue, 27 Feb 2024 11:27:47 +0700 Subject: [PATCH 19/32] ai: allow selecting chatgpt-compatible chatbot provider (#152) --- .../ags/assets/icons/ai-openai-symbolic.svg | 1 + .../ags/assets/icons/ai-oxygen-symbolic.svg | 54 ++++++ .config/ags/assets/icons/ai-zukijourney.png | Bin 0 -> 312911 bytes .config/ags/modules/.miscutils/md2pango.js | 2 +- .config/ags/modules/sideleft/apis/chatgpt.js | 161 ++++++++++++++---- .config/ags/modules/sideleft/apis/gemini.js | 61 +++---- .config/ags/modules/sideleft/apiwidgets.js | 6 +- .config/ags/scss/_lib_classes.scss | 2 +- .config/ags/scss/_sidebars.scss | 11 ++ .config/ags/services/gemini.js | 6 +- .config/ags/services/{chatgpt.js => gpt.js} | 89 +++++++--- 11 files changed, 295 insertions(+), 98 deletions(-) create mode 120000 .config/ags/assets/icons/ai-openai-symbolic.svg create mode 100644 .config/ags/assets/icons/ai-oxygen-symbolic.svg create mode 100644 .config/ags/assets/icons/ai-zukijourney.png rename .config/ags/services/{chatgpt.js => gpt.js} (75%) diff --git a/.config/ags/assets/icons/ai-openai-symbolic.svg b/.config/ags/assets/icons/ai-openai-symbolic.svg new file mode 120000 index 000000000..c9ee0b32f --- /dev/null +++ b/.config/ags/assets/icons/ai-openai-symbolic.svg @@ -0,0 +1 @@ +openai-symbolic.svg \ No newline at end of file diff --git a/.config/ags/assets/icons/ai-oxygen-symbolic.svg b/.config/ags/assets/icons/ai-oxygen-symbolic.svg new file mode 100644 index 000000000..5e1cc1937 --- /dev/null +++ b/.config/ags/assets/icons/ai-oxygen-symbolic.svg @@ -0,0 +1,54 @@ + + + + + + + + + + diff --git a/.config/ags/assets/icons/ai-zukijourney.png b/.config/ags/assets/icons/ai-zukijourney.png new file mode 100644 index 0000000000000000000000000000000000000000..917335e7284b2ffc8fc222c126016e23bbbc07ce GIT binary patch literal 312911 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[Ig=D> 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 z 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 z %PiUM7hXe-F%^gF$f_)^i$BAXNT)*$vBUv4a~f7)<=-*f%Jfrs^q<@lPLmoLb) zWy2LjOIBKj!=rESn2wZriEAZ!VL2WhySIDBZoo;4Pl;8S-XvsNoW(owNjp0Fz;HO8 zzqk6X+Y3ov@XL-1VP5ddj!#z%KlKxTDYd=DyM)J~JB7z`6i1w^s3`HeNA=L+QB@%H z0x^R34y`AZrynhCcc32z+O8$rdA4Rx_qN6M_Y5wP?;S6k1F5-wwL<2SGLtOVOPahS zI8VNkXJ?pPN$fDqN8S7}1dlT?bS+LKOz@~hL#Ydj_0V%LN9tumP>M1ol$1E{QTbzKt&$)a z1NB78x+-B9$)zF}(=kvL1-(ziv85#t?^+%zNAYgtXS;^iH!tz+K;46WagBfBDa$~# z0!VbGqp37u$mp;r<>`-+-CO(4OrjPQ(Fc+bT>ova zFC=-vuP9sy^MYS-`1RlS8=oDNKmPCk(d42b+ZHHVOfz|q22miX>4yVK7WCHQy~A2V z+y#8}Jlt(LZg=cd_cp#19fz~yb>(SlGv1dt*t0l3viAyP2wcyJ$d%Hi`tJPDwhmqj>Q6; zDN#jg&wl9WZAWMwJAb4z1Gx}v4oi-CN49&zmA&SmkNh3~(BFL_$P0c&<3gAh{EEkK z`?r4Ze31SJzvJIYdMn8nl0s-iQsk7=VeLok-ZQ)&A;96`$eVW`vHzr}-`-=~NTEt< zGa{8j<^o-pEJu7Jn!vk{-m+K<>eWkJj36}G zVnwq*GK>YS_dMM`4RLA}_hy=7-W~ST#ndvDQc?qXE^%f=6(!kKMJ_XBp3z9peO+>t z0^uzfI1D|7^?Y1N?7^dQ0XneCU!f#u5m2H)E6B7a%Oc0#OhTV-VA~xT#+LBVA&?xd zc6|SD{(%cYUhoZt3t?XH4TXQ>NB_`g97;y zK(8CT@HBae%STjIP~2>&j7NOWCP#x{r}{J9548W$AvI2_@==3{@#E7>ki~U`$K;!_4fy27tloXu0w2A)W*^b z5#KauET#e3b$Gy=k*;sSdsMFQW@O*BxG)Dt`$wmsex70WPu66V52Skfyj2-hKVXAr zD6Xi@4kr>T=lS5$vC2J>Y!W{gJUKNPUKIk?smah}2a@wQf-NJ3epW z;{DrqJY03SpPTM?b9JDJA2NJST@m=}E0;(LGZzwnud_y78Pel&S4DC~&w zj^^PbMiGd{qLN_fT2wB%-=Aic69Mjz-L%W7B>Q7WT^97CIg`}h8`eN(9U%nLFwYcK z#+S@3K3lQW8~S8;=RKYOIgUQ(uz!c_eg=TU;#afoDz0vSEwErQewiV^#Yc;ek=yPK z`{vsLFhbz~KaQAVN0bsJJ#|%n`YE5`LZBZf!c7h=5NTMie(yx?07fA0_fj?X;o|A*iD`_jRTXF@p<<*AZ{ zxtg3w@}O}7S1~Xc!$w86aly(TxfKs&DNvBeLO^9}LcTz^{|{mJvwWO?2d~1< z@bcJlT>X92<68h8QU$)l_8PYs*)4uGI=>>C2mE*h?>UBWChfXPo0f# z*URQyY1UP74w81>Q)D?sCJENz+#Ex;5FFYiuZk_LH+Z*Y6$C}tp*n}r3;g15WgInM zk$)F!G4NeZWA7Glqgez)SQJoqh~fjfRG@*a=}Er8&rV2>#Au#XnI}SbKFt4gC@HC{ z;&IkFjyUgs-sgY81s6=X5atCJ{59~q{^$Sv>xkq}eD^<>PHkDGCe>-_r;2nt4qSWB z;5;bk)N2~EC861dioNN{{hq5j$B2R|m3+s-qPrdX`UBFi;vlZkd&_|mTKKltl68E` zOMOKiB&q+1`+m#&OyHb9dl{XoOk*8|R_Cuh{rEfo@=sof@q!C3xZr{dF1X-=UmX0u X>l-)x)|NV700000NkvXXu0mjfBj_ds literal 0 HcmV?d00001 diff --git a/.config/ags/modules/.miscutils/md2pango.js b/.config/ags/modules/.miscutils/md2pango.js index 8f56e3aeb..1c868757b 100644 --- a/.config/ags/modules/.miscutils/md2pango.js +++ b/.config/ags/modules/.miscutils/md2pango.js @@ -84,6 +84,6 @@ console.log('uwu'); - Random instruction thing - To update arch lincox, run \`sudo pacman -Syu\` \`\`\`tex -\\frac{d}{dx} \\left( \\frac{x-438}{x^2+23x-7} \\right) = \\frac{-x^2 + 869}{(x^2+23x-7)^2} +\\frac{d}{dx} \\left( \\frac{x-438}{x^2+23x-7} \\right) = \\frac{-x^2 + 869}{(x^2+23x-7)^2} hmmmmmm \\frac{d}{dx} \\left( \\frac{x-438}{x^2+23x-7} \\right) = \\frac{-x^2 + 869}{(x^2+23x-7)^2} \`\`\` `; \ No newline at end of file diff --git a/.config/ags/modules/sideleft/apis/chatgpt.js b/.config/ags/modules/sideleft/apis/chatgpt.js index d85d5de65..6ea650ad4 100644 --- a/.config/ags/modules/sideleft/apis/chatgpt.js +++ b/.config/ags/modules/sideleft/apis/chatgpt.js @@ -4,12 +4,13 @@ import Widget from 'resource:///com/github/Aylur/ags/widget.js'; import * as Utils from 'resource:///com/github/Aylur/ags/utils.js'; const { Box, Button, Icon, Label, Revealer, Scrollable } = Widget; -import ChatGPT from '../../../services/chatgpt.js'; +import ChatGPT from '../../../services/gpt.js'; import { setupCursorHover, setupCursorHoverInfo } from '../../.widgetutils/cursorhover.js'; import { SystemMessage, ChatMessage } from "./ai_chatmessage.js"; import { ConfigToggle, ConfigSegmentedSelection, ConfigGap } from '../../.commonwidgets/configwidgets.js'; import { markdownTest } from '../../.miscutils/md2pango.js'; import { MarginRevealer } from '../../.widgethacks/advancedrevealers.js'; +import { MaterialIcon } from '../../.commonwidgets/materialicon.js'; Gtk.IconTheme.get_default().append_search_path(`${App.configDir}/assets/icons`); @@ -19,6 +20,94 @@ export const chatGPTTabIcon = Icon({ icon: `openai-symbolic`, }); +const ProviderSwitcher = () => { + const ProviderChoice = (id, provider) => { + const providerSelected = MaterialIcon('check', 'norm', { + setup: (self) => self.hook(ChatGPT, (self) => { + self.toggleClassName('invisible', ChatGPT.providerID !== id); + }, 'providerChanged') + }); + return Button({ + tooltipText: provider.description, + onClicked: () => { + ChatGPT.providerID = id; + providerList.revealChild = false; + indicatorChevron.label = 'expand_more'; + }, + child: Box({ + className: 'spacing-h-10 txt', + children: [ + Icon({ + icon: provider['logo_name'], + className: 'txt-large' + }), + Label({ + hexpand: true, + xalign: 0, + className: 'txt-small', + label: provider.name, + }), + providerSelected + ], + }), + setup: setupCursorHover, + }); + } + const indicatorChevron = MaterialIcon('expand_more', 'norm'); + const indicatorButton = Button({ + tooltipText: 'Select ChatGPT-compatible API provider', + child: Box({ + className: 'spacing-h-10 txt', + children: [ + MaterialIcon('cloud', 'norm'), + Label({ + hexpand: true, + xalign: 0, + className: 'txt-small', + label: ChatGPT.providerID, + setup: (self) => self.hook(ChatGPT, (self) => { + self.label = `${ChatGPT.providers[ChatGPT.providerID]['name']}`; + }, 'providerChanged') + }), + indicatorChevron, + ] + }), + onClicked: () => { + providerList.revealChild = !providerList.revealChild; + indicatorChevron.label = (providerList.revealChild ? 'expand_less' : 'expand_more'); + }, + setup: setupCursorHover, + }); + const providerList = Revealer({ + revealChild: false, + transition: 'slide_down', + transitionDuration: 180, + child: Box({ + vertical: true, className: 'spacing-v-5 sidebar-chat-providerswitcher-list', + children: [ + Box({ className: 'separator-line margin-top-5 margin-bottom-5' }), + Box({ + className: 'spacing-v-5', + vertical: true, + setup: (self) => self.hook(ChatGPT, (self) => { + self.children = Object.entries(ChatGPT.providers) + .map(([id, provider]) => ProviderChoice(id, provider)); + }, 'initialized'), + }) + ] + }) + }) + return Box({ + hpack: 'center', + vertical: true, + className: 'sidebar-chat-providerswitcher', + children: [ + indicatorButton, + providerList, + ] + }) +} + const ChatGPTInfo = () => { const openAiLogo = Icon({ hpack: 'center', @@ -34,7 +123,7 @@ const ChatGPTInfo = () => { className: 'txt txt-title-small sidebar-chat-welcome-txt', wrap: true, justify: Gtk.Justification.CENTER, - label: 'Assistant (ChatGPT 3.5)', + label: 'Assistant (GPTs)', }), Box({ className: 'spacing-h-5', @@ -134,11 +223,11 @@ export const OpenaiApiKeyInstructions = () => Box({ wrap: true, className: 'txt sidebar-chat-welcome-txt', justify: Gtk.Justification.CENTER, - label: 'An OpenAI API key is required\nYou can grab one here, then enter it below' + label: 'An API key is required\nYou can grab one here, then enter it below' }), setup: setupCursorHover, onClicked: () => { - Utils.execAsync(['bash', '-c', `xdg-open https://platform.openai.com/api-keys &`]); + Utils.execAsync(['bash', '-c', `xdg-open ${ChatGPT.getKeyUrl}`]); } }) })] @@ -180,34 +269,6 @@ const clearChat = () => { } } -export const chatGPTView = Scrollable({ - className: 'sidebar-chat-viewport', - vexpand: true, - child: Box({ - vertical: true, - children: [ - chatGPTWelcome, - chatContent, - ] - }), - setup: (scrolledWindow) => { - // Show scrollbar - scrolledWindow.set_policy(Gtk.PolicyType.NEVER, Gtk.PolicyType.AUTOMATIC); - const vScrollbar = scrolledWindow.get_vscrollbar(); - vScrollbar.get_style_context().add_class('sidebar-scrollbar'); - // Avoid click-to-scroll-widget-to-view behavior - Utils.timeout(1, () => { - const viewport = scrolledWindow.child; - viewport.set_focus_vadjustment(new Gtk.Adjustment(undefined)); - }) - // Always scroll to bottom with new content - const adjustment = scrolledWindow.get_vadjustment(); - adjustment.connect("changed", () => { - adjustment.set_value(adjustment.get_upper() - adjustment.get_page_size()); - }) - } -}); - const CommandButton = (command) => Button({ className: 'sidebar-chat-chip sidebar-chat-chip-action txt txt-small', onClicked: () => sendMessage(command), @@ -267,4 +328,38 @@ export const sendMessage = (text) => { else { ChatGPT.send(text); } -} \ No newline at end of file +} + +export const chatGPTView = Box({ + vertical: true, + children: [ + ProviderSwitcher(), + Scrollable({ + className: 'sidebar-chat-viewport', + vexpand: true, + child: Box({ + vertical: true, + children: [ + chatGPTWelcome, + chatContent, + ] + }), + setup: (scrolledWindow) => { + // Show scrollbar + scrolledWindow.set_policy(Gtk.PolicyType.NEVER, Gtk.PolicyType.AUTOMATIC); + const vScrollbar = scrolledWindow.get_vscrollbar(); + vScrollbar.get_style_context().add_class('sidebar-scrollbar'); + // Avoid click-to-scroll-widget-to-view behavior + Utils.timeout(1, () => { + const viewport = scrolledWindow.child; + viewport.set_focus_vadjustment(new Gtk.Adjustment(undefined)); + }) + // Always scroll to bottom with new content + const adjustment = scrolledWindow.get_vadjustment(); + adjustment.connect("changed", () => { + adjustment.set_value(adjustment.get_upper() - adjustment.get_page_size()); + }) + } + }) + ] +}); \ No newline at end of file diff --git a/.config/ags/modules/sideleft/apis/gemini.js b/.config/ags/modules/sideleft/apis/gemini.js index 1db6029cf..5d323ef15 100644 --- a/.config/ags/modules/sideleft/apis/gemini.js +++ b/.config/ags/modules/sideleft/apis/gemini.js @@ -172,34 +172,6 @@ const clearChat = () => { } } -export const geminiView = Scrollable({ - className: 'sidebar-chat-viewport', - vexpand: true, - child: Box({ - vertical: true, - children: [ - geminiWelcome, - chatContent, - ] - }), - setup: (scrolledWindow) => { - // Show scrollbar - scrolledWindow.set_policy(Gtk.PolicyType.NEVER, Gtk.PolicyType.AUTOMATIC); - const vScrollbar = scrolledWindow.get_vscrollbar(); - vScrollbar.get_style_context().add_class('sidebar-scrollbar'); - // Avoid click-to-scroll-widget-to-view behavior - Utils.timeout(1, () => { - const viewport = scrolledWindow.child; - viewport.set_focus_vadjustment(new Gtk.Adjustment(undefined)); - }) - // Always scroll to bottom with new content - const adjustment = scrolledWindow.get_vadjustment(); - adjustment.connect("changed", () => { - adjustment.set_value(adjustment.get_upper() - adjustment.get_page_size()); - }) - } -}); - const CommandButton = (command) => Button({ className: 'sidebar-chat-chip sidebar-chat-chip-action txt txt-small', onClicked: () => sendMessage(command), @@ -259,4 +231,35 @@ export const sendMessage = (text) => { else { Gemini.send(text); } -} \ No newline at end of file +} + +export const geminiView = Box({ + homogeneous: true, + children: [Scrollable({ + className: 'sidebar-chat-viewport', + vexpand: true, + child: Box({ + vertical: true, + children: [ + geminiWelcome, + chatContent, + ] + }), + setup: (scrolledWindow) => { + // Show scrollbar + scrolledWindow.set_policy(Gtk.PolicyType.NEVER, Gtk.PolicyType.AUTOMATIC); + const vScrollbar = scrolledWindow.get_vscrollbar(); + vScrollbar.get_style_context().add_class('sidebar-scrollbar'); + // Avoid click-to-scroll-widget-to-view behavior + Utils.timeout(1, () => { + const viewport = scrolledWindow.child; + viewport.set_focus_vadjustment(new Gtk.Adjustment(undefined)); + }) + // Always scroll to bottom with new content + const adjustment = scrolledWindow.get_vadjustment(); + adjustment.connect("changed", () => { + adjustment.set_value(adjustment.get_upper() - adjustment.get_page_size()); + }) + } + })] +}); \ No newline at end of file diff --git a/.config/ags/modules/sideleft/apiwidgets.js b/.config/ags/modules/sideleft/apiwidgets.js index c141e32ca..9ae344a1c 100644 --- a/.config/ags/modules/sideleft/apiwidgets.js +++ b/.config/ags/modules/sideleft/apiwidgets.js @@ -6,7 +6,7 @@ const { execAsync, exec } = Utils; import { setupCursorHover, setupCursorHoverInfo } from '../.widgetutils/cursorhover.js'; import { contentStack } from './sideleft.js'; // APIs -import ChatGPT from '../../services/chatgpt.js'; +import ChatGPT from '../../services/gpt.js'; import Gemini from '../../services/gemini.js'; import { geminiView, geminiCommands, sendMessage as geminiSendMessage, geminiTabIcon } from './apis/gemini.js'; import { chatGPTView, chatGPTCommands, sendMessage as chatGPTSendMessage, chatGPTTabIcon } from './apis/chatgpt.js'; @@ -26,12 +26,12 @@ const APIS = [ placeholderText: 'Message Gemini...', }, { - name: 'Assistant (ChatGPT 3.5)', + name: 'Assistant (GPTs)', sendCommand: chatGPTSendMessage, contentWidget: chatGPTView, commandBar: chatGPTCommands, tabIcon: chatGPTTabIcon, - placeholderText: 'Message ChatGPT...', + placeholderText: 'Message the model...', }, { name: 'Waifus', diff --git a/.config/ags/scss/_lib_classes.scss b/.config/ags/scss/_lib_classes.scss index 6cd3f893b..988dee7a2 100644 --- a/.config/ags/scss/_lib_classes.scss +++ b/.config/ags/scss/_lib_classes.scss @@ -167,7 +167,7 @@ } .separator-line { - background-color: $outline; + background-color: mix($subtext, $surface, 50%); min-width: 0.068rem; min-height: 0.068rem; } diff --git a/.config/ags/scss/_sidebars.scss b/.config/ags/scss/_sidebars.scss index 14103427b..1989c9cb8 100644 --- a/.config/ags/scss/_sidebars.scss +++ b/.config/ags/scss/_sidebars.scss @@ -557,6 +557,17 @@ $colorpicker_rounding: 0.341rem; color: $onSecondaryContainer; } +.sidebar-chat-providerswitcher { + @include small-rounding; + padding: 0.477rem 0.682rem; + background-color: $textboxColor; + color: $onSurfaceVariant; +} + +// .sidebar-chat-providerswitcher-list { +// margin: 0.341rem 0rem; +// } + .sidebar-chat-viewport { @include element_decel; // margin: 0.682rem 0rem; diff --git a/.config/ags/services/gemini.js b/.config/ags/services/gemini.js index e4ba5e39d..1caee94ce 100644 --- a/.config/ags/services/gemini.js +++ b/.config/ags/services/gemini.js @@ -8,7 +8,7 @@ import { fileExists } from './messages.js'; const initMessages = [ - { role: "user", parts: [{ text: "You are an assistant on a sidebar of a Wayland Linux desktop. Please always use a casual tone when answering your questions, unless requested otherwise or making writing suggestions. These are the steps you should take to respond to the user's queries:\n1. If it's a writing- or grammar-related question or a sentence in quotation marks, Please point out errors and correct when necessary using underlines, and make the writing more natural where appropriate without making too major changes. If you're given a sentence in quotes but is grammatically correct, explain briefly concepts that are uncommon.\n2. If it's a question about system tasks, give a bash command in a code block with very brief explanation for each command\n3. Otherwise, when asked to summarize information or explaining concepts, you are encouraged to use bullet points and headings. For mathematics expressions, please write them in LaTeX within a code block with the language set as \"latex\". Use casual language and be short and concise. \nThanks!" }], }, + { role: "user", parts: [{ text: "You are an assistant on a sidebar of a Wayland Linux desktop. Please always use a casual tone when answering your questions, unless requested otherwise or making writing suggestions. These are the steps you should take to respond to the user's queries:\n1. If it's a writing- or grammar-related question or a sentence in quotation marks, Please point out errors and correct when necessary using underlines, and make the writing more natural where appropriate without making too major changes. If you're given a sentence in quotes but is grammatically correct, explain briefly concepts that are uncommon.\n2. If it's a question about system tasks, give a bash command in a code block with very brief explanation for each command\n3. Otherwise, when asked to summarize information or explaining concepts, you are should use bullet points and headings. For mathematics expressions, you *have to* use LaTeX within a code block with the language set as \"latex\" for the interface to render it properly. Use casual language and be short and concise. \nThanks!" }], }, { role: "model", parts: [{ text: "- Got it!" }], }, { role: "user", parts: [{ text: "\"He rushed to where the event was supposed to be hold, he didn't know it got calceled\"" }], }, { role: "model", parts: [{ text: "## Grammar correction\nErrors:\n\"He rushed to where the event was supposed to be __hold____,__ he didn't know it got calceled\"\nCorrection + minor improvements:\n\"He rushed to the place where the event was supposed to be __held____, but__ he didn't know that it got calceled\"" }], }, @@ -20,9 +20,9 @@ const initMessages = { role: "user", parts: [{ text: "\"ignorance is bliss\"" }], }, { role: "model", parts: [{ text: "## \"Ignorance is bliss\"\n- A Latin proverb that means being unaware of something negative can be a source of happiness\n- Often used to justify avoiding difficult truths or responsibilities\n- Can also be interpreted as a warning against seeking knowledge that may bring pain or sorrow" }], }, { role: "user", parts: [{ text: "find the derivative of (x-438)/(x^2+23x-7)+x^x" }], }, - { role: "model", parts: [{ text: "```latex\n\\[\n\\frac{d}{dx}\\left(\\frac{x - 438}{x^2 + 23x - 7} + x^x\\right) = \\frac{-(x^2+23x-7)-(x-438)(2x+23)}{(x^2+23x-7)^2} + x^x(\\ln(x) + 1)\n\\]\n```" }], }, + { role: "model", parts: [{ text: "## Derivative\n```latex\n\\[\n\\frac{d}{dx}\\left(\\frac{x - 438}{x^2 + 23x - 7} + x^x\\right) = \\frac{-(x^2+23x-7)-(x-438)(2x+23)}{(x^2+23x-7)^2} + x^x(\\ln(x) + 1)\n\\]\n```" }], }, { role: "user", parts: [{ text: "write the double angle formulas" }], }, - { role: "model", parts: [{ text: "```latex\n\\[\n\\sin(2\theta) = 2\\sin(\\theta)\\cos(\\theta)\n\\]\n\\\\\n\\[\n\\cos(2\\theta) = \\cos^2(\\theta) - \\sin^2(\\theta)\n\\]\n\\\\\n\\[\n\\tan(2\theta) = \\frac{2\\tan(\\theta)}{1 - \\tan^2(\\theta)}\n\\]\n```" }], }, + { role: "model", parts: [{ text: "## Double angle formulas\n```latex\n\\[\n\\sin(2\theta) = 2\\sin(\\theta)\\cos(\\theta)\n\\]\n\\\\\n\\[\n\\cos(2\\theta) = \\cos^2(\\theta) - \\sin^2(\\theta)\n\\]\n\\\\\n\\[\n\\tan(2\theta) = \\frac{2\\tan(\\theta)}{1 - \\tan^2(\\theta)}\n\\]\n```" }], }, ]; function expandTilde(path) { diff --git a/.config/ags/services/chatgpt.js b/.config/ags/services/gpt.js similarity index 75% rename from .config/ags/services/chatgpt.js rename to .config/ags/services/gpt.js index b4264dd37..63a55e6c6 100644 --- a/.config/ags/services/chatgpt.js +++ b/.config/ags/services/gpt.js @@ -6,6 +6,41 @@ import GLib from 'gi://GLib'; import Soup from 'gi://Soup?version=3.0'; import { fileExists } from './messages.js'; +const PROVIDERS = { // There's this list hmm https://github.com/zukixa/cool-ai-stuff/ + 'openai': { + 'name': 'OpenAI', + 'logo_name': 'openai-symbolic', + 'description': 'Official OpenAI API.\nPricing: Free for the first $5 or 3 months, whichever is less.', + 'base_url': 'https://api.openai.com/v1/chat/completions', + 'key_get_url': 'https://platform.openai.com/api-keys', + 'key_file': 'openai_key.txt', + }, + 'oxygen': { + 'name': 'Oxygen', + 'logo_name': 'ai-oxygen-symbolic', + 'description': 'An API from Tornado Softwares\nPricing: Free: 100/day\nRequires you to join their Discord for a key', + 'base_url': 'https://app.oxyapi.uk/v1/chat/completions', + 'key_get_url': 'https://discord.com/invite/kM6MaCqGKA', + 'key_file': 'oxygen_key.txt', + }, + 'zukijourney': { + 'name': 'zukijourney', + 'logo_name': 'ai-zukijourney', + 'description': 'An API from @zukixa on GitHub.\nNote: Keys are IP-locked so it\'s buggy sometimes\nPricing: Free: 10/min, 800/day.\nRequires you to join their Discord for a key', + 'base_url': 'https://zukijourney.xyzbot.net/v1/chat/completions', + 'key_get_url': 'https://discord.com/invite/Y4J6XXnmQ6', + 'key_file': 'zuki_key.txt', + }, + 'zukijourney_roleplay': { + 'name': 'zukijourney (roleplay)', + 'logo_name': 'ai-zukijourney', + 'description': 'An API from @zukixa on GitHub.\nNote: Keys are IP-locked so it\'s buggy sometimes\nPricing: Free: 10/min, 800/day.\nRequires you to join their Discord for a key', + 'base_url': 'https://zukijourney.xyzbot.net/unf/chat/completions', + 'key_get_url': 'https://discord.com/invite/Y4J6XXnmQ6', + 'key_file': 'zuki_key.txt', + }, +} + // Custom prompt const initMessages = [ @@ -21,28 +56,9 @@ const initMessages = { role: "assistant", content: "## Skeuomorphism\n- A design philosophy- From early days of interface designing- Tries to imitate real-life objects- It's in fact still used by Apple in their icons until today.", }, ]; -function expandTilde(path) { - if (path.startsWith('~')) { - return GLib.get_home_dir() + path.slice(1); - } else { - return path; - } -} - // We're using many models to not be restricted to 3 messages per minute. // The whole chat will be sent every request anyway. Utils.exec(`mkdir -p ${GLib.get_user_cache_dir()}/ags/user/ai`); -const KEY_FILE_LOCATION = `${GLib.get_user_cache_dir()}/ags/user/ai/openai_key.txt`; -const APIDOM_FILE_LOCATION = `${GLib.get_user_cache_dir()}/ags/user/openai_api_dom.txt`; -function replaceapidom(URL) { - //Utils.writeFile(URL, "/tmp/openai-url-old.log"); // For debugging - if (fileExists(expandTilde(APIDOM_FILE_LOCATION))) { - var contents = Utils.readFile(expandTilde(APIDOM_FILE_LOCATION)).trim(); - var URL = URL.toString().replace("api.openai.com", contents); - } - //Utils.writeFile(URL, "/tmp/openai-url.log"); // For debugging - return URL; -} const CHAT_MODELS = ["gpt-3.5-turbo-1106", "gpt-3.5-turbo", "gpt-3.5-turbo-16k", "gpt-3.5-turbo-0613"] const ONE_CYCLE_COUNT = 3; @@ -113,25 +129,33 @@ class ChatGPTService extends Service { 'clear': [], 'newMsg': ['int'], 'hasKey': ['boolean'], + 'providerChanged': [], }); } _assistantPrompt = true; - _messages = []; - _cycleModels = true; + _currentProvider = 'openai'; + _cycleModels = false; _requestCount = 0; _temperature = 0.9; + _messages = []; _modelIndex = 0; _key = ''; + _key_file_location = `${GLib.get_user_cache_dir()}/ags/user/ai/${PROVIDERS[this._currentProvider]['key_file']}`; + _url = GLib.Uri.parse(PROVIDERS[this._currentProvider]['base_url'], GLib.UriFlags.NONE); + _decoder = new TextDecoder(); - url = GLib.Uri.parse(replaceapidom('https://api.openai.com/v1/chat/completions'), GLib.UriFlags.NONE); + _initChecks() { + this._key_file_location = `${GLib.get_user_cache_dir()}/ags/user/ai/${PROVIDERS[this._currentProvider]['key_file']}`; + if (fileExists(this._key_file_location)) this._key = Utils.readFile(this._key_file_location).trim(); + else this.emit('hasKey', false); + this._url = GLib.Uri.parse(PROVIDERS[this._currentProvider]['base_url'], GLib.UriFlags.NONE); + } constructor() { super(); - - if (fileExists(expandTilde(KEY_FILE_LOCATION))) this._key = Utils.readFile(expandTilde(KEY_FILE_LOCATION)).trim(); - else this.emit('hasKey', false); + this._initChecks(); if (this._assistantPrompt) this._messages = [...initMessages]; else this._messages = []; @@ -140,12 +164,20 @@ class ChatGPTService extends Service { } get modelName() { return CHAT_MODELS[this._modelIndex] } + get getKeyUrl() { return PROVIDERS[this._currentProvider]['key_get_url'] } + get providerID() { return this._currentProvider } + set providerID(value) { + this._currentProvider = value; + this.emit('providerChanged'); + this._initChecks(); + } + get providers() { return PROVIDERS } - get keyPath() { return KEY_FILE_LOCATION } + get keyPath() { return this._key_file_location } get key() { return this._key } set key(keyValue) { this._key = keyValue; - Utils.writeFile(this._key, expandTilde(KEY_FILE_LOCATION)) + Utils.writeFile(this._key, this._key_file_location) .then(this.emit('hasKey', true)) .catch(err => print(err)); } @@ -197,6 +229,7 @@ class ChatGPTService extends Service { return; } aiResponse.addDelta(result.choices[0].delta.content); + // print(result.choices[0]) } catch { aiResponse.addDelta(line + '\n'); @@ -229,7 +262,7 @@ class ChatGPTService extends Service { const session = new Soup.Session(); const message = new Soup.Message({ method: 'POST', - uri: this.url, + uri: this._url, }); message.request_headers.append('Authorization', `Bearer ${this._key}`); message.set_request_body_from_bytes('application/json', new GLib.Bytes(JSON.stringify(body))); From d028fd162bbe156daa4e7f72424ec167c926e4f8 Mon Sep 17 00:00:00 2001 From: end-4 <97237370+end-4@users.noreply.github.com> Date: Tue, 27 Feb 2024 12:03:48 +0700 Subject: [PATCH 20/32] bar: custom module (#220) --- .config/ags/modules/bar/music.js | 94 +++++++++++++++++++++----------- 1 file changed, 61 insertions(+), 33 deletions(-) diff --git a/.config/ags/modules/bar/music.js b/.config/ags/modules/bar/music.js index f0865b879..2f9c9cc4c 100644 --- a/.config/ags/modules/bar/music.js +++ b/.config/ags/modules/bar/music.js @@ -1,12 +1,17 @@ +const { GLib } = imports.gi; import Widget from 'resource:///com/github/Aylur/ags/widget.js'; import * as Utils from 'resource:///com/github/Aylur/ags/utils.js'; import Mpris from 'resource:///com/github/Aylur/ags/service/mpris.js'; -const { Box, Label, Overlay, Revealer } = Widget; +const { Box, Button, EventBox, Label, Overlay, Revealer, Scrollable } = Widget; const { execAsync, exec } = Utils; import { AnimatedCircProg } from "../.commonwidgets/cairo_circularprogress.js"; import { MaterialIcon } from '../.commonwidgets/materialicon.js'; import { showMusicControls } from '../../variables.js'; +const CUSTOM_MODULE_CONTENT_SCRIPT = `${GLib.get_home_dir()}/.cache/ags/user/scripts/custom-module-poll.sh`; +const CUSTOM_MODULE_LEFTCLICK_SCRIPT = `${GLib.get_home_dir()}/.cache/ags/user/scripts/custom-module-leftclick.sh`; +const CUSTOM_MODULE_RIGHTCLICK_SCRIPT = `${GLib.get_home_dir()}/.cache/ags/user/scripts/custom-module-rightclick.sh`; + function trimTrackTitle(title) { if (!title) return ''; const cleanPatterns = [ @@ -17,10 +22,10 @@ function trimTrackTitle(title) { return title; } -const BarGroup = ({ child }) => Widget.Box({ +const BarGroup = ({ child }) => Box({ className: 'bar-group-margin bar-sides', children: [ - Widget.Box({ + Box({ className: 'bar-group bar-group-standalone bar-group-pad-system', children: [child], }), @@ -34,7 +39,7 @@ const BarResource = (name, icon, command) => { hpack: 'center', }); const resourceProgress = Overlay({ - child: Widget.Box({ + child: Box({ vpack: 'center', className: 'bar-batt', homogeneous: true, @@ -93,14 +98,14 @@ const switchToRelativeWorkspace = async (self, num) => { export default () => { // TODO: use cairo to make button bounce smaller on click, if that's possible - const playingState = Widget.Box({ // Wrap a box cuz overlay can't have margins itself + const playingState = Box({ // Wrap a box cuz overlay can't have margins itself homogeneous: true, - children: [Widget.Overlay({ - child: Widget.Box({ + children: [Overlay({ + child: Box({ vpack: 'center', className: 'bar-music-playstate', homogeneous: true, - children: [Widget.Label({ + children: [Label({ vpack: 'center', className: 'bar-music-playstate-txt', justification: 'center', @@ -121,9 +126,9 @@ export default () => { ] })] }); - const trackTitle = Widget.Scrollable({ + const trackTitle = Scrollable({ hexpand: true, - child: Widget.Label({ + child: Label({ className: 'txt-smallie txt-onSurfaceVariant', setup: (self) => self.hook(Mpris, label => { const mpris = Mpris.getPlayer(''); @@ -142,30 +147,53 @@ export default () => { trackTitle, ] }) - const systemResources = BarGroup({ - child: Box({ - children: [ - BarResource('RAM Usage', 'memory', `LANG=C free | awk '/^Mem/ {printf("%.2f\\n", ($3/$2) * 100)}'`), - Revealer({ - revealChild: true, - transition: 'slide_left', - transitionDuration: 200, - child: Box({ - className: 'spacing-h-10 margin-left-10', - children: [ - BarResource('Swap Usage', 'swap_horiz', `LANG=C free | awk '/^Swap/ {if ($2 > 0) printf("%.2f\\n", ($3/$2) * 100); else print "0";}'`), - BarResource('CPU Usage', 'settings_motion_mode', `LANG=C top -bn1 | grep Cpu | sed 's/\\,/\\./g' | awk '{print $2}'`), - ] - }), - setup: (self) => self.hook(Mpris, label => { - const mpris = Mpris.getPlayer(''); - self.revealChild = (!mpris); + const SystemResourcesOrCustomModule = () => { + // Check if ~/.cache/ags/user/scripts/custom-module-poll.sh exists + if (GLib.file_test(CUSTOM_MODULE_CONTENT_SCRIPT, GLib.FileTest.EXISTS)) { + return BarGroup({ + child: Button({ + child: Label({ + className: 'txt-smallie txt-onSurfaceVariant', + useMarkup: true, + setup: (self) => Utils.timeout(1, () => { + self.label = exec(CUSTOM_MODULE_CONTENT_SCRIPT); + self.poll(5000, (self) => { + const content = exec(CUSTOM_MODULE_CONTENT_SCRIPT); + self.label = content; + }) + }) }), + onPrimaryClickRelease: () => execAsync(CUSTOM_MODULE_LEFTCLICK_SCRIPT).catch(print), + onSecondaryClickRelease: () => execAsync(CUSTOM_MODULE_RIGHTCLICK_SCRIPT).catch(print), }) - ], - }) - }); - return Widget.EventBox({ + }); + } else { + return BarGroup({ + child: Box({ + children: [ + BarResource('RAM Usage', 'memory', `LANG=C free | awk '/^Mem/ {printf("%.2f\\n", ($3/$2) * 100)}'`), + Revealer({ + revealChild: true, + transition: 'slide_left', + transitionDuration: 200, + child: Box({ + className: 'spacing-h-10 margin-left-10', + children: [ + BarResource('Swap Usage', 'swap_horiz', `LANG=C free | awk '/^Swap/ {if ($2 > 0) printf("%.2f\\n", ($3/$2) * 100); else print "0";}'`), + BarResource('CPU Usage', 'settings_motion_mode', `LANG=C top -bn1 | grep Cpu | sed 's/\\,/\\./g' | awk '{print $2}'`), + ] + }), + setup: (self) => self.hook(Mpris, label => { + const mpris = Mpris.getPlayer(''); + self.revealChild = (!mpris); + }), + }) + ], + }) + }); + } + } + return EventBox({ onScrollUp: (self) => switchToRelativeWorkspace(self, -1), onScrollDown: (self) => switchToRelativeWorkspace(self, +1), onPrimaryClickRelease: () => showMusicControls.setValue(!showMusicControls.value), @@ -175,7 +203,7 @@ export default () => { className: 'spacing-h-5', children: [ BarGroup({ child: musicStuff }), - systemResources, + SystemResourcesOrCustomModule(), ] }) }); From 4296b64cf5f56ba0931a3849cfeff32ca378fde7 Mon Sep 17 00:00:00 2001 From: end-4 <97237370+end-4@users.noreply.github.com> Date: Tue, 27 Feb 2024 12:06:47 +0700 Subject: [PATCH 21/32] ai: ignore latex dir clear error --- .config/ags/modules/sideleft/apis/ai_chatmessage.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.config/ags/modules/sideleft/apis/ai_chatmessage.js b/.config/ags/modules/sideleft/apis/ai_chatmessage.js index 2b8864826..cf2498ac8 100644 --- a/.config/ags/modules/sideleft/apis/ai_chatmessage.js +++ b/.config/ags/modules/sideleft/apis/ai_chatmessage.js @@ -84,7 +84,7 @@ const TextBlock = (content = '') => Label({ Utils.execAsync(['bash', '-c', `rm ${LATEX_DIR}/*`]) .then(() => Utils.execAsync(['bash', '-c', `mkdir -p ${LATEX_DIR}`])) - .catch(print); + .catch(() => {}); const Latex = (content = '') => { const latexViewArea = Box({ // vscroll: 'never', From a2c77423d99424ce8dd8ef023665c66a2b77ce8b Mon Sep 17 00:00:00 2001 From: end-4 <97237370+end-4@users.noreply.github.com> Date: Tue, 27 Feb 2024 12:07:12 +0700 Subject: [PATCH 22/32] bar: custom module: add scroll (#220) --- .config/ags/modules/bar/music.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.config/ags/modules/bar/music.js b/.config/ags/modules/bar/music.js index 2f9c9cc4c..ebfa55115 100644 --- a/.config/ags/modules/bar/music.js +++ b/.config/ags/modules/bar/music.js @@ -11,6 +11,8 @@ import { showMusicControls } from '../../variables.js'; const CUSTOM_MODULE_CONTENT_SCRIPT = `${GLib.get_home_dir()}/.cache/ags/user/scripts/custom-module-poll.sh`; const CUSTOM_MODULE_LEFTCLICK_SCRIPT = `${GLib.get_home_dir()}/.cache/ags/user/scripts/custom-module-leftclick.sh`; const CUSTOM_MODULE_RIGHTCLICK_SCRIPT = `${GLib.get_home_dir()}/.cache/ags/user/scripts/custom-module-rightclick.sh`; +const CUSTOM_MODULE_SCROLLUP_SCRIPT = `${GLib.get_home_dir()}/.cache/ags/user/scripts/custom-module-scrollup.sh`; +const CUSTOM_MODULE_SCROLLDOWN_SCRIPT = `${GLib.get_home_dir()}/.cache/ags/user/scripts/custom-module-scrolldown.sh`; function trimTrackTitle(title) { if (!title) return ''; @@ -165,6 +167,8 @@ export default () => { }), onPrimaryClickRelease: () => execAsync(CUSTOM_MODULE_LEFTCLICK_SCRIPT).catch(print), onSecondaryClickRelease: () => execAsync(CUSTOM_MODULE_RIGHTCLICK_SCRIPT).catch(print), + onScrollUp: () => execAsync(CUSTOM_MODULE_SCROLLUP_SCRIPT).catch(print), + onScrollDown: () => execAsync(CUSTOM_MODULE_SCROLLDOWN_SCRIPT).catch(print), }) }); } else { From 5e2bc9ef3448f13698fc34b749e7cd4ebc51f7db Mon Sep 17 00:00:00 2001 From: end-4 <97237370+end-4@users.noreply.github.com> Date: Tue, 27 Feb 2024 12:09:02 +0700 Subject: [PATCH 23/32] and middle click (#220) --- .config/ags/modules/bar/music.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.config/ags/modules/bar/music.js b/.config/ags/modules/bar/music.js index ebfa55115..6df353c6d 100644 --- a/.config/ags/modules/bar/music.js +++ b/.config/ags/modules/bar/music.js @@ -11,6 +11,7 @@ import { showMusicControls } from '../../variables.js'; const CUSTOM_MODULE_CONTENT_SCRIPT = `${GLib.get_home_dir()}/.cache/ags/user/scripts/custom-module-poll.sh`; const CUSTOM_MODULE_LEFTCLICK_SCRIPT = `${GLib.get_home_dir()}/.cache/ags/user/scripts/custom-module-leftclick.sh`; const CUSTOM_MODULE_RIGHTCLICK_SCRIPT = `${GLib.get_home_dir()}/.cache/ags/user/scripts/custom-module-rightclick.sh`; +const CUSTOM_MODULE_MIDDLECLICK_SCRIPT = `${GLib.get_home_dir()}/.cache/ags/user/scripts/custom-module-middleclick.sh`; const CUSTOM_MODULE_SCROLLUP_SCRIPT = `${GLib.get_home_dir()}/.cache/ags/user/scripts/custom-module-scrollup.sh`; const CUSTOM_MODULE_SCROLLDOWN_SCRIPT = `${GLib.get_home_dir()}/.cache/ags/user/scripts/custom-module-scrolldown.sh`; @@ -167,6 +168,7 @@ export default () => { }), onPrimaryClickRelease: () => execAsync(CUSTOM_MODULE_LEFTCLICK_SCRIPT).catch(print), onSecondaryClickRelease: () => execAsync(CUSTOM_MODULE_RIGHTCLICK_SCRIPT).catch(print), + onMiddleClickRelease: () => execAsync(CUSTOM_MODULE_MIDDLECLICK_SCRIPT).catch(print), onScrollUp: () => execAsync(CUSTOM_MODULE_SCROLLUP_SCRIPT).catch(print), onScrollDown: () => execAsync(CUSTOM_MODULE_SCROLLDOWN_SCRIPT).catch(print), }) From 3de63a3d8678172ff9aa5d14e08ff19a4e95fcf3 Mon Sep 17 00:00:00 2001 From: end-4 <97237370+end-4@users.noreply.github.com> Date: Tue, 27 Feb 2024 13:07:28 +0700 Subject: [PATCH 24/32] fix brightness keybind (closes #253) --- .config/hypr/hyprland/keybinds.conf | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/.config/hypr/hyprland/keybinds.conf b/.config/hypr/hyprland/keybinds.conf index 3b49f83b6..d892c0224 100644 --- a/.config/hypr/hyprland/keybinds.conf +++ b/.config/hypr/hyprland/keybinds.conf @@ -6,10 +6,9 @@ bindle=, XF86AudioRaiseVolume, exec, wpctl set-volume -l 1 @DEFAULT_AUDIO_SINK@ bindle=, XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%- # Brightness +# Uncomment these if you can't get AGS to work #bindle=, XF86MonBrightnessUp, exec, brightnessctl set '12.75+' #bindle=, XF86MonBrightnessDown, exec, brightnessctl set '12.75-' -bindle=, XF86MonBrightnessUp, exec, ags run-js 'brightness.screen_value += 0.05;' -bindle=, XF86MonBrightnessDown, exec, ags run-js 'brightness.screen_value -= 0.05;' #################################### Applications ################################### # Apps: just normal apps @@ -87,10 +86,10 @@ bind = Super, K, exec, ags -t 'osk' bind = Control+Alt, Delete, exec, ags -t 'session' bindle = , XF86AudioRaiseVolume, exec, ags run-js 'indicator.popup(1);' bindle = , XF86AudioLowerVolume, exec, ags run-js 'indicator.popup(1);' +bindle=, XF86MonBrightnessUp, exec, ags run-js 'brightness.screen_value += 0.05; indicator.popup(1);' +bindle=, XF86MonBrightnessDown, exec, ags run-js 'brightness.screen_value -= 0.05; indicator.popup(1);' bindl = , XF86AudioMute, exec, ags run-js 'indicator.popup(1);' bindl = Super+Shift,M, exec, ags run-js 'indicator.popup(1);' -bindle = , XF86MonBrightnessUp, exec, ags run-js 'indicator.popup(1);' -bindle = , XF86MonBrightnessDown, exec, ags run-js 'indicator.popup(1);' ###################################### Plugins ######################################### bind = Control+Super, P, exec, hyprctl plugin load "~/.config/hypr/plugins/droidbars.so" From fcb6cd4d395f135447c59dea1576012f3db93ca0 Mon Sep 17 00:00:00 2001 From: clsty Date: Tue, 27 Feb 2024 14:33:32 +0800 Subject: [PATCH 25/32] Fix make deps for microtex --- scriptdata/dependencies.conf | 3 +++ 1 file changed, 3 insertions(+) diff --git a/scriptdata/dependencies.conf b/scriptdata/dependencies.conf index 129dd260b..f6efe73e1 100644 --- a/scriptdata/dependencies.conf +++ b/scriptdata/dependencies.conf @@ -4,6 +4,9 @@ ### Basic coreutils cliphist curl fuzzel rsync wget ripgrep gojq npm meson typescript gjs dart-sass axel +# Make deps of MicroTeX +tinyxml2 gtkmm3 gtksourceviewmm cairomm + ### Python # Add `python-setuptools-scm` and `python-wheel` explicitly to fix #197 python-build python-material-color-utilities python-pillow python-poetry python-pywal python-setuptools-scm python-wheel From b943d365a79c9357460fd66c19eacdf94af9ab08 Mon Sep 17 00:00:00 2001 From: end-4 <97237370+end-4@users.noreply.github.com> Date: Tue, 27 Feb 2024 14:59:06 +0700 Subject: [PATCH 26/32] bar: custom module: custom interval (#220) --- .config/ags/modules/bar/music.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.config/ags/modules/bar/music.js b/.config/ags/modules/bar/music.js index 6df353c6d..9dc4b013a 100644 --- a/.config/ags/modules/bar/music.js +++ b/.config/ags/modules/bar/music.js @@ -8,6 +8,7 @@ import { AnimatedCircProg } from "../.commonwidgets/cairo_circularprogress.js"; import { MaterialIcon } from '../.commonwidgets/materialicon.js'; import { showMusicControls } from '../../variables.js'; +const CUSTOM_MODULE_CONTENT_INTERVAL_FILE = `${GLib.get_home_dir()}/.cache/ags/user/scripts/custom-module-interval.txt`; const CUSTOM_MODULE_CONTENT_SCRIPT = `${GLib.get_home_dir()}/.cache/ags/user/scripts/custom-module-poll.sh`; const CUSTOM_MODULE_LEFTCLICK_SCRIPT = `${GLib.get_home_dir()}/.cache/ags/user/scripts/custom-module-leftclick.sh`; const CUSTOM_MODULE_RIGHTCLICK_SCRIPT = `${GLib.get_home_dir()}/.cache/ags/user/scripts/custom-module-rightclick.sh`; @@ -153,6 +154,7 @@ export default () => { const SystemResourcesOrCustomModule = () => { // Check if ~/.cache/ags/user/scripts/custom-module-poll.sh exists if (GLib.file_test(CUSTOM_MODULE_CONTENT_SCRIPT, GLib.FileTest.EXISTS)) { + const interval = Number(Utils.readFile(CUSTOM_MODULE_CONTENT_INTERVAL_FILE)) || 5000; return BarGroup({ child: Button({ child: Label({ @@ -160,7 +162,7 @@ export default () => { useMarkup: true, setup: (self) => Utils.timeout(1, () => { self.label = exec(CUSTOM_MODULE_CONTENT_SCRIPT); - self.poll(5000, (self) => { + self.poll(interval, (self) => { const content = exec(CUSTOM_MODULE_CONTENT_SCRIPT); self.label = content; }) From 617ef905392196710db7bd57427cff724dccadc9 Mon Sep 17 00:00:00 2001 From: end-4 <97237370+end-4@users.noreply.github.com> Date: Tue, 27 Feb 2024 17:48:12 +0700 Subject: [PATCH 27/32] deps: add cmake --- scriptdata/dependencies.conf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scriptdata/dependencies.conf b/scriptdata/dependencies.conf index f6efe73e1..7ffeed1cf 100644 --- a/scriptdata/dependencies.conf +++ b/scriptdata/dependencies.conf @@ -2,7 +2,7 @@ ### PKGs on same line will be send to `yay` together, unless `-f` is specified. ### Basic -coreutils cliphist curl fuzzel rsync wget ripgrep gojq npm meson typescript gjs dart-sass axel +coreutils cliphist cmake curl fuzzel rsync wget ripgrep gojq npm meson typescript gjs dart-sass axel # Make deps of MicroTeX tinyxml2 gtkmm3 gtksourceviewmm cairomm From 93ce991c8aa8618b3bba479862bfb85a626c19de Mon Sep 17 00:00:00 2001 From: clsty Date: Wed, 28 Feb 2024 10:36:16 +0800 Subject: [PATCH 28/32] Minor fix for inst script --- install.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/install.sh b/install.sh index eb9f62378..836c14f9d 100755 --- a/install.sh +++ b/install.sh @@ -139,8 +139,8 @@ if $ask_MicroTeX;then showfun install-MicroTeX;v install-MicroTeX;fi ##################################################################################### printf "\e[36m[$0]: 3. Copying\e[97m\n" -# In case ~/.local/bin does not exists -v mkdir -p "$HOME/.local/bin" "$HOME/.local/share" +# In case some folders does not exists +v mkdir -p "$HOME"/.{config,cache,local/{bin,share}} # `--delete' for rsync to make sure that # original dotfiles and new ones in the SAME DIRECTORY From 4fdb76242885a497fbab523d41c9535116470d9e Mon Sep 17 00:00:00 2001 From: end-4 <97237370+end-4@users.noreply.github.com> Date: Wed, 28 Feb 2024 23:05:29 +0700 Subject: [PATCH 29/32] add sidebars to noanim --- .config/hypr/hyprland/rules.conf | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.config/hypr/hyprland/rules.conf b/.config/hypr/hyprland/rules.conf index f7c195c1a..996fa2fd1 100644 --- a/.config/hypr/hyprland/rules.conf +++ b/.config/hypr/hyprland/rules.conf @@ -22,6 +22,9 @@ layerrule = xray 1, .* layerrule = noanim, selection layerrule = noanim, overview layerrule = noanim, anyrun +layerrule = noanim, sideleft +layerrule = noanim, sideright +layerrule = noanim, osk layerrule = blur, eww layerrule = ignorealpha 0.8, eww From e1ce65379a840831df89c752492193475a0228c4 Mon Sep 17 00:00:00 2001 From: end-4 <97237370+end-4@users.noreply.github.com> Date: Thu, 29 Feb 2024 12:15:55 +0700 Subject: [PATCH 30/32] readme: new preview --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 2aeecbfe6..16c9af056 100644 --- a/README.md +++ b/README.md @@ -41,7 +41,7 @@ ### [illogical_impulse](https://github.com/end-4/dots-hyprland/tree/illogical-impulse) -![image](https://github.com/end-4/dots-hyprland/assets/97237370/abd05702-a248-4f53-ac82-500219aa19f1) +![image](https://github.com/end-4/dots-hyprland/assets/97237370/90c13b64-cde3-4363-9716-718d35845d95) ![image](https://github.com/end-4/dots-hyprland/assets/97237370/9e7adedd-fae8-4cc8-9c81-d7ad489d7559) ![image](https://github.com/end-4/dots-hyprland/assets/97237370/354431f6-8939-487f-9292-0bac71cf9ca8) ![image](https://github.com/end-4/dots-hyprland/assets/97237370/98fe2c03-a128-45c0-8155-3a6080db3b84) From 67be4f8f3bc1386935235d02d0124bab8810ac85 Mon Sep 17 00:00:00 2001 From: end-4 <97237370+end-4@users.noreply.github.com> Date: Thu, 29 Feb 2024 16:40:44 +0700 Subject: [PATCH 31/32] hyprlock: add battery --- .../ags/scripts/templates/hypr/hyprlock.conf | 18 ++++++++++-- .config/hypr/hyprlock.conf | 28 +++++++++++++------ .config/hypr/hyprlock/status.sh | 22 +++++++++++++++ 3 files changed, 57 insertions(+), 11 deletions(-) create mode 100755 .config/hypr/hyprlock/status.sh diff --git a/.config/ags/scripts/templates/hypr/hyprlock.conf b/.config/ags/scripts/templates/hypr/hyprlock.conf index 3ad0f0d6f..5a42af563 100644 --- a/.config/ags/scripts/templates/hypr/hyprlock.conf +++ b/.config/ags/scripts/templates/hypr/hyprlock.conf @@ -40,7 +40,7 @@ label { # Clock halign = center valign = center } -label { +label { # Greeting monitor = text = hi $USER !!! color = $text_color @@ -51,7 +51,7 @@ label { halign = center valign = center } -label { +label { # lock icon monitor = text = lock color = $text_color @@ -62,7 +62,7 @@ label { halign = center valign = bottom } -label { +label { # "locked" text monitor = text = locked color = $text_color @@ -72,4 +72,16 @@ label { position = 0, 50 halign = center valign = bottom +} + +label { # Status + monitor = + text = cmd[update:5000] ~/.config/hypr/hyprlock/status.sh + color = $text_color + font_size = 14 + font_family = $font_family + + position = 30, -30 + halign = left + valign = top } \ No newline at end of file diff --git a/.config/hypr/hyprlock.conf b/.config/hypr/hyprlock.conf index f2299434d..71d9034be 100644 --- a/.config/hypr/hyprlock.conf +++ b/.config/hypr/hyprlock.conf @@ -1,13 +1,13 @@ -$text_color = rgba(eae0e4FF) -$entry_background_color = rgba(120F1111) -$entry_border_color = rgba(9a8d9555) -$entry_color = rgba(d1c2cbFF) +$text_color = rgba(ede0deFF) +$entry_background_color = rgba(130F0F11) +$entry_border_color = rgba(a08c8955) +$entry_color = rgba(d8c2bfFF) $font_family = Gabarito $font_family_clock = Gabarito $font_material_symbols = Material Symbols Rounded background { - color = rgba(120F1177) + color = rgba(130F0F77) # path = {{ SWWW_WALL }} path = screenshot blur_size = 5 @@ -40,7 +40,7 @@ label { # Clock halign = center valign = center } -label { +label { # Greeting monitor = text = hi $USER !!! color = $text_color @@ -51,7 +51,7 @@ label { halign = center valign = center } -label { +label { # lock icon monitor = text = lock color = $text_color @@ -62,7 +62,7 @@ label { halign = center valign = bottom } -label { +label { # "locked" text monitor = text = locked color = $text_color @@ -72,4 +72,16 @@ label { position = 0, 50 halign = center valign = bottom +} + +label { # Status + monitor = + text = cmd[update:5000] ~/.config/hypr/hyprlock/status.sh + color = $text_color + font_size = 14 + font_family = $font_family + + position = 30, -30 + halign = left + valign = top } \ No newline at end of file diff --git a/.config/hypr/hyprlock/status.sh b/.config/hypr/hyprlock/status.sh new file mode 100755 index 000000000..794c468f4 --- /dev/null +++ b/.config/hypr/hyprlock/status.sh @@ -0,0 +1,22 @@ +#!/usr/bin/env bash + +############ Variables ############ +enable_battery=false + +####### Check availability ######## +for battery in /sys/class/power_supply/*BAT*; do + if [[ -f "$battery/uevent" ]]; then + enable_battery=true + break + fi +done + +############# Output ############# +if [[ $enable_battery == true ]]; then + if [[ $(cat /sys/class/power_supply/*/status | head -1) == "Charging" ]]; then + echo -n "(+) " + fi + echo -n "$(cat /sys/class/power_supply/*/capacity | head -1)"% remaining +fi + +echo '' \ No newline at end of file From 461b4f5c6b33292437b5544794a4b00e4559f41d Mon Sep 17 00:00:00 2001 From: end-4 <97237370+end-4@users.noreply.github.com> Date: Thu, 29 Feb 2024 17:07:49 +0700 Subject: [PATCH 32/32] internal: rename chatgpt to gpt --- .../modules/sideleft/apis/ai_chatmessage.js | 11 +-- .config/ags/modules/sideleft/apis/chatgpt.js | 80 +++++++++---------- .config/ags/modules/sideleft/apis/gemini.js | 40 +++++----- .config/ags/modules/sideleft/apiwidgets.js | 8 +- 4 files changed, 66 insertions(+), 73 deletions(-) diff --git a/.config/ags/modules/sideleft/apis/ai_chatmessage.js b/.config/ags/modules/sideleft/apis/ai_chatmessage.js index cf2498ac8..1c79b3a1c 100644 --- a/.config/ags/modules/sideleft/apis/ai_chatmessage.js +++ b/.config/ags/modules/sideleft/apis/ai_chatmessage.js @@ -12,7 +12,7 @@ const LATEX_DIR = `${GLib.get_user_cache_dir()}/ags/media/latex`; const CUSTOM_SOURCEVIEW_SCHEME_PATH = `${App.configDir}/assets/themes/sourceviewtheme.xml`; const CUSTOM_SCHEME_ID = 'custom'; const USERNAME = GLib.get_user_name(); -const CHATGPT_CURSOR = ' ...'; +const AI_MESSAGE_CURSOR = ' ...'; /////////////////////// Custom source view colorscheme ///////////////////////// @@ -34,13 +34,6 @@ loadCustomColorScheme(CUSTOM_SOURCEVIEW_SCHEME_PATH); ////////////////////////////////////////////////////////////////////////////// -function copyToClipboard(text) { - const clipboard = Gtk.Clipboard.get(Gdk.SELECTION_CLIPBOARD); - const textVariant = new GLib.Variant('s', text); - clipboard.set_text(textVariant, -1); - clipboard.store(); -} - function substituteLang(str) { const subs = [ { from: 'javascript', to: 'js' }, @@ -265,7 +258,7 @@ const MessageContent = (content) => { const lastLabel = kids[kids.length - 1]; let blockContent = lines.slice(lastProcessed, lines.length).join('\n'); if (!inCode) - lastLabel.label = `${md2pango(blockContent)}${useCursor ? CHATGPT_CURSOR : ''}`; + lastLabel.label = `${md2pango(blockContent)}${useCursor ? AI_MESSAGE_CURSOR : ''}`; else lastLabel.attribute.updateText(blockContent); } diff --git a/.config/ags/modules/sideleft/apis/chatgpt.js b/.config/ags/modules/sideleft/apis/chatgpt.js index 6ea650ad4..c3e657aab 100644 --- a/.config/ags/modules/sideleft/apis/chatgpt.js +++ b/.config/ags/modules/sideleft/apis/chatgpt.js @@ -4,7 +4,7 @@ import Widget from 'resource:///com/github/Aylur/ags/widget.js'; import * as Utils from 'resource:///com/github/Aylur/ags/utils.js'; const { Box, Button, Icon, Label, Revealer, Scrollable } = Widget; -import ChatGPT from '../../../services/gpt.js'; +import GPTService from '../../../services/gpt.js'; import { setupCursorHover, setupCursorHoverInfo } from '../../.widgetutils/cursorhover.js'; import { SystemMessage, ChatMessage } from "./ai_chatmessage.js"; import { ConfigToggle, ConfigSegmentedSelection, ConfigGap } from '../../.commonwidgets/configwidgets.js'; @@ -23,14 +23,14 @@ export const chatGPTTabIcon = Icon({ const ProviderSwitcher = () => { const ProviderChoice = (id, provider) => { const providerSelected = MaterialIcon('check', 'norm', { - setup: (self) => self.hook(ChatGPT, (self) => { - self.toggleClassName('invisible', ChatGPT.providerID !== id); + setup: (self) => self.hook(GPTService, (self) => { + self.toggleClassName('invisible', GPTService.providerID !== id); }, 'providerChanged') }); return Button({ tooltipText: provider.description, onClicked: () => { - ChatGPT.providerID = id; + GPTService.providerID = id; providerList.revealChild = false; indicatorChevron.label = 'expand_more'; }, @@ -64,9 +64,9 @@ const ProviderSwitcher = () => { hexpand: true, xalign: 0, className: 'txt-small', - label: ChatGPT.providerID, - setup: (self) => self.hook(ChatGPT, (self) => { - self.label = `${ChatGPT.providers[ChatGPT.providerID]['name']}`; + label: GPTService.providerID, + setup: (self) => self.hook(GPTService, (self) => { + self.label = `${GPTService.providers[GPTService.providerID]['name']}`; }, 'providerChanged') }), indicatorChevron, @@ -89,8 +89,8 @@ const ProviderSwitcher = () => { Box({ className: 'spacing-v-5', vertical: true, - setup: (self) => self.hook(ChatGPT, (self) => { - self.children = Object.entries(ChatGPT.providers) + setup: (self) => self.hook(GPTService, (self) => { + self.children = Object.entries(GPTService.providers) .map(([id, provider]) => ProviderChoice(id, provider)); }, 'initialized'), }) @@ -108,7 +108,7 @@ const ProviderSwitcher = () => { }) } -const ChatGPTInfo = () => { +const GPTInfo = () => { const openAiLogo = Icon({ hpack: 'center', className: 'sidebar-chat-welcome-logo', @@ -147,14 +147,14 @@ const ChatGPTInfo = () => { }); } -export const ChatGPTSettings = () => MarginRevealer({ +const GPTSettings = () => MarginRevealer({ transition: 'slide_down', revealChild: true, extraSetup: (self) => self - .hook(ChatGPT, (self) => Utils.timeout(200, () => { + .hook(GPTService, (self) => Utils.timeout(200, () => { self.attribute.hide(); }), 'newMsg') - .hook(ChatGPT, (self) => Utils.timeout(200, () => { + .hook(GPTService, (self) => Utils.timeout(200, () => { self.attribute.show(); }), 'clear') , @@ -166,7 +166,7 @@ export const ChatGPTSettings = () => MarginRevealer({ hpack: 'center', icon: 'casino', name: 'Randomness', - desc: 'ChatGPT\'s temperature value.\n Precise = 0\n Balanced = 0.5\n Creative = 1', + desc: 'The model\'s temperature value.\n Precise = 0\n Balanced = 0.5\n Creative = 1', options: [ { value: 0.00, name: 'Precise', }, { value: 0.50, name: 'Balanced', }, @@ -174,7 +174,7 @@ export const ChatGPTSettings = () => MarginRevealer({ ], initIndex: 2, onChange: (value, name) => { - ChatGPT.temperature = value; + GPTService.temperature = value; }, }), ConfigGap({ vertical: true, size: 10 }), // Note: size can only be 5, 10, or 15 @@ -187,18 +187,18 @@ export const ChatGPTSettings = () => MarginRevealer({ icon: 'cycle', name: 'Cycle models', desc: 'Helps avoid exceeding the API rate of 3 messages per minute.\nTurn this on if you message rapidly.', - initValue: ChatGPT.cycleModels, + initValue: GPTService.cycleModels, onChange: (self, newValue) => { - ChatGPT.cycleModels = newValue; + GPTService.cycleModels = newValue; }, }), ConfigToggle({ icon: 'model_training', name: 'Enhancements', - desc: 'Tells ChatGPT:\n- It\'s a Linux sidebar assistant\n- Be brief and use bullet points', - initValue: ChatGPT.assistantPrompt, + desc: 'Tells the model:\n- It\'s a Linux sidebar assistant\n- Be brief and use bullet points', + initValue: GPTService.assistantPrompt, onChange: (self, newValue) => { - ChatGPT.assistantPrompt = newValue; + GPTService.assistantPrompt = newValue; }, }), ] @@ -213,8 +213,8 @@ export const OpenaiApiKeyInstructions = () => Box({ transition: 'slide_down', transitionDuration: 150, setup: (self) => self - .hook(ChatGPT, (self, hasKey) => { - self.revealChild = (ChatGPT.key.length == 0); + .hook(GPTService, (self, hasKey) => { + self.revealChild = (GPTService.key.length == 0); }, 'hasKey') , child: Button({ @@ -227,13 +227,13 @@ export const OpenaiApiKeyInstructions = () => Box({ }), setup: setupCursorHover, onClicked: () => { - Utils.execAsync(['bash', '-c', `xdg-open ${ChatGPT.getKeyUrl}`]); + Utils.execAsync(['bash', '-c', `xdg-open ${GPTService.getKeyUrl}`]); } }) })] }); -const chatGPTWelcome = Box({ +const GPTWelcome = () => Box({ vexpand: true, homogeneous: true, child: Box({ @@ -241,9 +241,9 @@ const chatGPTWelcome = Box({ vpack: 'center', vertical: true, children: [ - ChatGPTInfo(), + GPTInfo(), OpenaiApiKeyInstructions(), - ChatGPTSettings(), + GPTSettings(), ] }) }); @@ -252,16 +252,16 @@ export const chatContent = Box({ className: 'spacing-v-15', vertical: true, setup: (self) => self - .hook(ChatGPT, (box, id) => { - const message = ChatGPT.messages[id]; + .hook(GPTService, (box, id) => { + const message = GPTService.messages[id]; if (!message) return; - box.add(ChatMessage(message, 'ChatGPT')) + box.add(ChatMessage(message, `Model (${GPTService.providers[GPTService.providerID]['name']})`)) }, 'newMsg') , }); const clearChat = () => { - ChatGPT.clear(); + GPTService.clear(); const children = chatContent.get_children(); for (let i = 0; i < children.length; i++) { const child = children[i]; @@ -289,16 +289,16 @@ export const chatGPTCommands = Box({ export const sendMessage = (text) => { // Check if text or API key is empty if (text.length == 0) return; - if (ChatGPT.key.length == 0) { - ChatGPT.key = text; - chatContent.add(SystemMessage(`Key saved to\n\`${ChatGPT.keyPath}\``, 'API Key', chatGPTView)); + if (GPTService.key.length == 0) { + GPTService.key = text; + chatContent.add(SystemMessage(`Key saved to\n\`${GPTService.keyPath}\``, 'API Key', chatGPTView)); text = ''; return; } // Commands if (text.startsWith('/')) { if (text.startsWith('/clear')) clearChat(); - else if (text.startsWith('/model')) chatContent.add(SystemMessage(`Currently using \`${ChatGPT.modelName}\``, '/model', chatGPTView)) + else if (text.startsWith('/model')) chatContent.add(SystemMessage(`Currently using \`${GPTService.modelName}\``, '/model', chatGPTView)) else if (text.startsWith('/prompt')) { const firstSpaceIndex = text.indexOf(' '); const prompt = text.slice(firstSpaceIndex + 1); @@ -306,18 +306,18 @@ export const sendMessage = (text) => { chatContent.add(SystemMessage(`Usage: \`/prompt MESSAGE\``, '/prompt', chatGPTView)) } else { - ChatGPT.addMessage('user', prompt) + GPTService.addMessage('user', prompt) } } else if (text.startsWith('/key')) { const parts = text.split(' '); if (parts.length == 1) chatContent.add(SystemMessage( - `Key stored in:\n\`${ChatGPT.keyPath}\`\nTo update this key, type \`/key YOUR_API_KEY\``, + `Key stored in:\n\`${GPTService.keyPath}\`\nTo update this key, type \`/key YOUR_API_KEY\``, '/key', chatGPTView)); else { - ChatGPT.key = parts[1]; - chatContent.add(SystemMessage(`Updated API Key at\n\`${ChatGPT.keyPath}\``, '/key', chatGPTView)); + GPTService.key = parts[1]; + chatContent.add(SystemMessage(`Updated API Key at\n\`${GPTService.keyPath}\``, '/key', chatGPTView)); } } else if (text.startsWith('/test')) @@ -326,7 +326,7 @@ export const sendMessage = (text) => { chatContent.add(SystemMessage(`Invalid command.`, 'Error', chatGPTView)) } else { - ChatGPT.send(text); + GPTService.send(text); } } @@ -340,7 +340,7 @@ export const chatGPTView = Box({ child: Box({ vertical: true, children: [ - chatGPTWelcome, + GPTWelcome(), chatContent, ] }), diff --git a/.config/ags/modules/sideleft/apis/gemini.js b/.config/ags/modules/sideleft/apis/gemini.js index 5d323ef15..7da16e435 100644 --- a/.config/ags/modules/sideleft/apis/gemini.js +++ b/.config/ags/modules/sideleft/apis/gemini.js @@ -4,7 +4,7 @@ import Widget from 'resource:///com/github/Aylur/ags/widget.js'; import * as Utils from 'resource:///com/github/Aylur/ags/utils.js'; const { Box, Button, Icon, Label, Revealer, Scrollable } = Widget; -import Gemini from '../../../services/gemini.js'; +import GeminiService from '../../../services/gemini.js'; import { setupCursorHover, setupCursorHoverInfo } from '../../.widgetutils/cursorhover.js'; import { SystemMessage, ChatMessage } from "./ai_chatmessage.js"; import { ConfigToggle, ConfigSegmentedSelection, ConfigGap } from '../../.commonwidgets/configwidgets.js'; @@ -63,10 +63,10 @@ export const GeminiSettings = () => MarginRevealer({ transition: 'slide_down', revealChild: true, extraSetup: (self) => self - .hook(Gemini, (self) => Utils.timeout(200, () => { + .hook(GeminiService, (self) => Utils.timeout(200, () => { self.attribute.hide(); }), 'newMsg') - .hook(Gemini, (self) => Utils.timeout(200, () => { + .hook(GeminiService, (self) => Utils.timeout(200, () => { self.attribute.show(); }), 'clear') , @@ -86,7 +86,7 @@ export const GeminiSettings = () => MarginRevealer({ ], initIndex: 2, onChange: (value, name) => { - Gemini.temperature = value; + GeminiService.temperature = value; }, }), ConfigGap({ vertical: true, size: 10 }), // Note: size can only be 5, 10, or 15 @@ -99,9 +99,9 @@ export const GeminiSettings = () => MarginRevealer({ icon: 'model_training', name: 'Enhancements', desc: 'Tells Gemini:\n- It\'s a Linux sidebar assistant\n- Be brief and use bullet points', - initValue: Gemini.assistantPrompt, + initValue: GeminiService.assistantPrompt, onChange: (self, newValue) => { - Gemini.assistantPrompt = newValue; + GeminiService.assistantPrompt = newValue; }, }), ] @@ -116,8 +116,8 @@ export const GoogleAiInstructions = () => Box({ transition: 'slide_down', transitionDuration: 150, setup: (self) => self - .hook(Gemini, (self, hasKey) => { - self.revealChild = (Gemini.key.length == 0); + .hook(GeminiService, (self, hasKey) => { + self.revealChild = (GeminiService.key.length == 0); }, 'hasKey') , child: Button({ @@ -155,8 +155,8 @@ export const chatContent = Box({ className: 'spacing-v-15', vertical: true, setup: (self) => self - .hook(Gemini, (box, id) => { - const message = Gemini.messages[id]; + .hook(GeminiService, (box, id) => { + const message = GeminiService.messages[id]; if (!message) return; box.add(ChatMessage(message, MODEL_NAME)) }, 'newMsg') @@ -164,7 +164,7 @@ export const chatContent = Box({ }); const clearChat = () => { - Gemini.clear(); + GeminiService.clear(); const children = chatContent.get_children(); for (let i = 0; i < children.length; i++) { const child = children[i]; @@ -192,16 +192,16 @@ export const geminiCommands = Box({ export const sendMessage = (text) => { // Check if text or API key is empty if (text.length == 0) return; - if (Gemini.key.length == 0) { - Gemini.key = text; - chatContent.add(SystemMessage(`Key saved to\n\`${Gemini.keyPath}\``, 'API Key', geminiView)); + if (GeminiService.key.length == 0) { + GeminiService.key = text; + chatContent.add(SystemMessage(`Key saved to\n\`${GeminiService.keyPath}\``, 'API Key', geminiView)); text = ''; return; } // Commands if (text.startsWith('/')) { if (text.startsWith('/clear')) clearChat(); - else if (text.startsWith('/model')) chatContent.add(SystemMessage(`Currently using \`${Gemini.modelName}\``, '/model', geminiView)) + else if (text.startsWith('/model')) chatContent.add(SystemMessage(`Currently using \`${GeminiService.modelName}\``, '/model', geminiView)) else if (text.startsWith('/prompt')) { const firstSpaceIndex = text.indexOf(' '); const prompt = text.slice(firstSpaceIndex + 1); @@ -209,18 +209,18 @@ export const sendMessage = (text) => { chatContent.add(SystemMessage(`Usage: \`/prompt MESSAGE\``, '/prompt', geminiView)) } else { - Gemini.addMessage('user', prompt) + GeminiService.addMessage('user', prompt) } } else if (text.startsWith('/key')) { const parts = text.split(' '); if (parts.length == 1) chatContent.add(SystemMessage( - `Key stored in:\n\`${Gemini.keyPath}\`\nTo update this key, type \`/key YOUR_API_KEY\``, + `Key stored in:\n\`${GeminiService.keyPath}\`\nTo update this key, type \`/key YOUR_API_KEY\``, '/key', geminiView)); else { - Gemini.key = parts[1]; - chatContent.add(SystemMessage(`Updated API Key at\n\`${Gemini.keyPath}\``, '/key', geminiView)); + GeminiService.key = parts[1]; + chatContent.add(SystemMessage(`Updated API Key at\n\`${GeminiService.keyPath}\``, '/key', geminiView)); } } else if (text.startsWith('/test')) @@ -229,7 +229,7 @@ export const sendMessage = (text) => { chatContent.add(SystemMessage(`Invalid command.`, 'Error', geminiView)) } else { - Gemini.send(text); + GeminiService.send(text); } } diff --git a/.config/ags/modules/sideleft/apiwidgets.js b/.config/ags/modules/sideleft/apiwidgets.js index 9ae344a1c..ac89b6a66 100644 --- a/.config/ags/modules/sideleft/apiwidgets.js +++ b/.config/ags/modules/sideleft/apiwidgets.js @@ -6,7 +6,7 @@ const { execAsync, exec } = Utils; import { setupCursorHover, setupCursorHoverInfo } from '../.widgetutils/cursorhover.js'; import { contentStack } from './sideleft.js'; // APIs -import ChatGPT from '../../services/gpt.js'; +import GPTService from '../../services/gpt.js'; import Gemini from '../../services/gemini.js'; import { geminiView, geminiCommands, sendMessage as geminiSendMessage, geminiTabIcon } from './apis/gemini.js'; import { chatGPTView, chatGPTCommands, sendMessage as chatGPTSendMessage, chatGPTTabIcon } from './apis/chatgpt.js'; @@ -65,9 +65,9 @@ export const chatEntry = TextView({ acceptsTab: false, className: 'sidebar-chat-entry txt txt-smallie', setup: (self) => self - .hook(ChatGPT, (self) => { - if (APIS[currentApiId].name != 'Assistant (ChatGPT 3.5)') return; - self.placeholderText = (ChatGPT.key.length > 0 ? 'Message ChatGPT...' : 'Enter OpenAI API Key...'); + .hook(GPTService, (self) => { + if (APIS[currentApiId].name != 'Assistant (GPTs)') return; + self.placeholderText = (GPTService.key.length > 0 ? 'Message the model...' : 'Enter API Key...'); }, 'hasKey') .hook(Gemini, (self) => { if (APIS[currentApiId].name != 'Assistant (Gemini Pro)') return;