diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md
deleted file mode 100644
index 01f689f1f..000000000
--- a/.github/ISSUE_TEMPLATE/bug_report.md
+++ /dev/null
@@ -1,46 +0,0 @@
----
-name: Bug report
-about: Create a report to help us improve
-title: "[Bug]: Short description of the issue"
-labels: "bug, needs triage"
----
-
-## Bug Report
-
-### Description
-
-[Provide a clear and concise description of the bug.]
-
-### Steps to Reproduce
-
-1. [First Step]
-2. [Second Step]
-3. [and so on...]
-
-### Expected Behavior
-
-[What did you expect to happen?]
-
-### Actual Behavior
-
-[What actually happened?]
-
-### Screenshots
-
-[If applicable, add screenshots to help explain your problem.]
-
-### Environment
-
-[Please add any other relevant information about the bug and remove the unnecessary lines.]
-
-e.g.,
-
-- Linux Distro: [e.g., ArchLinux, EndeavourOS]
-- Linux Version, output of `uname -a`:
-- Hyprland Version, output of `hyprctl version`:
-- Installation Environment: [e.g., On The Main Hardware, On A Virtual Machine]
-- Other info: [e.g., Display Resolution, Resolution, etc]
-
-### Additional Information
-
-[Add any other information about the problem here. For example, you might include the error message, any recent changes that you made to the project, or any other relevant details.]
diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml
new file mode 100644
index 000000000..5229acebf
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/bug_report.yml
@@ -0,0 +1,92 @@
+name: Bug report
+description: Create a report to help us improve
+title: "[Bug]: Short description of the issue"
+labels: ["bug", "needs triage"]
+body:
+ - type: markdown
+ attributes:
+ value: |
+ ## Bug Report
+
+ - type: textarea
+ id: description
+ attributes:
+ label: Description
+ description: Provide a clear and concise description of the bug.
+ placeholder: Provide a clear and concise description of the bug.
+ validations:
+ required: true
+
+ - type: textarea
+ id: steps
+ attributes:
+ label: Steps to Reproduce
+ description: Steps to reproduce the behavior
+ placeholder: |
+ 1. First Step
+ 2. Second Step
+ 3. and so on...
+ validations:
+ required: true
+
+ - type: textarea
+ id: expected
+ attributes:
+ label: Expected Behavior
+ description: What did you expect to happen?
+ placeholder: What did you expect to happen?
+ validations:
+ required: true
+
+ - type: textarea
+ id: actual
+ attributes:
+ label: Actual Behavior
+ description: What actually happened?
+ placeholder: What actually happened?
+ validations:
+ required: true
+
+ - type: textarea
+ id: screenshots
+ attributes:
+ label: Screenshots
+ description: If applicable, add screenshots to help explain your problem.
+ placeholder: If applicable, add screenshots to help explain your problem.
+ validations:
+ required: false
+
+ - type: textarea
+ id: environment
+ attributes:
+ label: Environment
+ description: |
+ Please run this command to save your system information to a file:
+ ```bash
+ hyprctl systeminfo -c > /tmp/hyprland_systeminfo.txt
+ ```
+ Then copy the contents and paste them in the collapsible section below.
+
+ Also include these additional details:
+ - Installation Environment: [e.g., On The Main Hardware, On A Virtual Machine]
+ - Display Resolution: [e.g., 1920x1080]
+ - Graphics Driver: [e.g., nvidia, intel, amd]
+ - Display Server: [e.g., Wayland, X11]
+ placeholder: |
+
+ System Information (Click to expand)
+ ```
+ [Paste the entire output of hyprctl systeminfo -c here]
+ ```
+
+ validations:
+ required: true
+
+ - type: textarea
+ id: additional
+ attributes:
+ label: Additional Information
+ description: Add any other information about the problem here.
+ placeholder: Add any other information about the problem here. For example, you might include the error message, any recent changes that you made to the project, or any other relevant details.
+ validations:
+ required: false
diff --git a/.github/ISSUE_TEMPLATE/custom.md b/.github/ISSUE_TEMPLATE/custom.md
deleted file mode 100644
index 1542d0a88..000000000
--- a/.github/ISSUE_TEMPLATE/custom.md
+++ /dev/null
@@ -1,38 +0,0 @@
----
-name: Custom template
-about: Use this template to submit a custom issue
-title: "[Custom]: Short description of the issue"
-labels: "custom"
----
-
-## Custom Template
-
-### Description
-
-[Provide a clear and concise description of the issue or request.]
-
-### Steps to Reproduce (if applicable)
-
-1. [First Step]
-2. [Second Step]
-3. [and so on...]
-
-### Expected Behavior
-
-[What did you expect to happen?]
-
-### Actual Behavior
-
-[What actually happened?]
-
-### Screenshots (if applicable)
-
-[If applicable, add screenshots to help explain your problem.]
-
-### Proposed Solution (if applicable)
-
-[If you have a specific solution in mind, describe it here. If not, you can skip this section.]
-
-### Additional Information
-
-[Add any other information about the issue or request here. For example, you might include links to similar features in other projects, or screenshots or diagrams to help explain your idea.]
diff --git a/.github/ISSUE_TEMPLATE/custom.yml b/.github/ISSUE_TEMPLATE/custom.yml
new file mode 100644
index 000000000..f1c907434
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/custom.yml
@@ -0,0 +1,75 @@
+name: Custom template
+description: Use this template to submit a custom issue
+title: "[Custom]: Short description of the issue"
+labels: ["custom"]
+body:
+ - type: markdown
+ attributes:
+ value: |
+ ## Custom Template
+
+ - type: textarea
+ id: description
+ attributes:
+ label: Description
+ description: Provide a clear and concise description of the issue or request.
+ placeholder: Provide a clear and concise description of the issue or request.
+ validations:
+ required: true
+
+ - type: textarea
+ id: steps
+ attributes:
+ label: Steps to Reproduce (if applicable)
+ description: Steps to reproduce the behavior if applicable
+ placeholder: |
+ 1. First Step
+ 2. Second Step
+ 3. and so on...
+ validations:
+ required: false
+
+ - type: textarea
+ id: expected
+ attributes:
+ label: Expected Behavior
+ description: What did you expect to happen?
+ placeholder: What did you expect to happen?
+ validations:
+ required: false
+
+ - type: textarea
+ id: actual
+ attributes:
+ label: Actual Behavior
+ description: What actually happened?
+ placeholder: What actually happened?
+ validations:
+ required: false
+
+ - type: textarea
+ id: screenshots
+ attributes:
+ label: Screenshots (if applicable)
+ description: If applicable, add screenshots to help explain your problem.
+ placeholder: If applicable, add screenshots to help explain your problem.
+ validations:
+ required: false
+
+ - type: textarea
+ id: proposed_solution
+ attributes:
+ label: Proposed Solution (if applicable)
+ description: If you have a specific solution in mind, describe it here.
+ placeholder: If you have a specific solution in mind, describe it here. If not, you can skip this section.
+ validations:
+ required: false
+
+ - type: textarea
+ id: additional_information
+ attributes:
+ label: Additional Information
+ description: Add any other information about the issue or request here.
+ placeholder: Add any other information about the issue or request here. For example, you might include links to similar features in other projects, or screenshots or diagrams to help explain your idea.
+ validations:
+ required: false
diff --git a/.github/ISSUE_TEMPLATE/documentation_update.md b/.github/ISSUE_TEMPLATE/documentation_update.md
deleted file mode 100644
index 076038c7d..000000000
--- a/.github/ISSUE_TEMPLATE/documentation_update.md
+++ /dev/null
@@ -1,25 +0,0 @@
----
-name: Documentation update
-about: Propose a change to the project documentation
-title: "[Docs]: Short description of the change"
-labels: "documentation, needs review"
----
-
-
-## Documentation Update
-
-### Description
-
-[Provide a clear and concise description of the documentation update you'd like to see made.]
-
-### Current Documentation
-
-[Provide a link to the current documentation or describe where it can be found.]
-
-### Proposed Documentation
-
-[Provide a clear and concise description of the updated documentation that you'd like to see added.]
-
-### Additional Information
-
-[Add any other information about the documentation update here. For example, you might include links to similar documentation in other projects, or screenshots or diagrams to help explain your idea.]
diff --git a/.github/ISSUE_TEMPLATE/documentation_update.yml b/.github/ISSUE_TEMPLATE/documentation_update.yml
new file mode 100644
index 000000000..7a6d1c20b
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/documentation_update.yml
@@ -0,0 +1,45 @@
+name: Documentation update
+description: Propose a change to the project documentation
+title: "[Docs]: Short description of the change"
+labels: ["documentation", "needs review"]
+body:
+ - type: markdown
+ attributes:
+ value: |
+ ## Documentation Update
+
+ - type: textarea
+ id: description
+ attributes:
+ label: Description
+ description: Provide a clear and concise description of the documentation update you'd like to see made.
+ placeholder: Provide a clear and concise description of the documentation update you'd like to see made.
+ validations:
+ required: true
+
+ - type: textarea
+ id: current_documentation
+ attributes:
+ label: Current Documentation
+ description: Provide a link to the current documentation or describe where it can be found.
+ placeholder: Provide a link to the current documentation or describe where it can be found.
+ validations:
+ required: true
+
+ - type: textarea
+ id: proposed_documentation
+ attributes:
+ label: Proposed Documentation
+ description: Provide a clear and concise description of the updated documentation that you'd like to see added.
+ placeholder: Provide a clear and concise description of the updated documentation that you'd like to see added.
+ validations:
+ required: true
+
+ - type: textarea
+ id: additional_information
+ attributes:
+ label: Additional Information
+ description: Add any other information about the documentation update here.
+ placeholder: Add any other information about the documentation update here. For example, you might include links to similar documentation in other projects, or screenshots or diagrams to help explain your idea.
+ validations:
+ required: false
diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md
deleted file mode 100644
index bd64d0a00..000000000
--- a/.github/ISSUE_TEMPLATE/feature_request.md
+++ /dev/null
@@ -1,28 +0,0 @@
----
-name: Feature request
-about: Suggest a feature for this project
-title: "[Feature Request]: Short description of the feature"
-labels: "enhancement, needs triage, feature request"
----
-
-## Feature Request
-
-### Description
-
-[Provide a clear and concise description of the feature you'd like to see added.]
-
-### Use Case
-
-[Describe how this feature would be useful to you or to other users of the project.]
-
-### Proposed Solution
-
-[If you have a specific solution in mind, describe it here. If not, you can skip this section.]
-
-### Alternatives
-
-[Are there any alternative solutions or workarounds that you've considered? If so, describe them here.]
-
-### Additional Information
-
-[Add any other information about the feature request here. For example, you might include links to similar features in other projects, or screenshots or diagrams to help explain your idea.]
diff --git a/.github/ISSUE_TEMPLATE/feature_request.yml b/.github/ISSUE_TEMPLATE/feature_request.yml
new file mode 100644
index 000000000..f79ba8920
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/feature_request.yml
@@ -0,0 +1,54 @@
+name: Feature request
+description: Suggest a feature for this project
+title: "[Feature Request]: Short description of the feature"
+labels: ["enhancement", "needs triage", "feature request"]
+body:
+ - type: markdown
+ attributes:
+ value: |
+ ## Feature Request
+
+ - type: textarea
+ id: description
+ attributes:
+ label: Description
+ description: Provide a clear and concise description of the feature you'd like to see added.
+ placeholder: Provide a clear and concise description of the feature you'd like to see added.
+ validations:
+ required: true
+
+ - type: textarea
+ id: use_case
+ attributes:
+ label: Use Case
+ description: Describe how this feature would be useful to you or to other users of the project.
+ placeholder: Describe how this feature would be useful to you or to other users of the project.
+ validations:
+ required: true
+
+ - type: textarea
+ id: proposed_solution
+ attributes:
+ label: Proposed Solution
+ description: If you have a specific solution in mind, describe it here.
+ placeholder: If you have a specific solution in mind, describe it here. If not, you can skip this section.
+ validations:
+ required: false
+
+ - type: textarea
+ id: alternatives
+ attributes:
+ label: Alternatives
+ description: Are there any alternative solutions or workarounds that you've considered?
+ placeholder: Are there any alternative solutions or workarounds that you've considered? If so, describe them here.
+ validations:
+ required: false
+
+ - type: textarea
+ id: additional_information
+ attributes:
+ label: Additional Information
+ description: Add any other information about the feature request here.
+ placeholder: Add any other information about the feature request here. For example, you might include links to similar features in other projects, or screenshots or diagrams to help explain your idea.
+ validations:
+ required: false
diff --git a/.github/scripts/promote_to_master.sh b/.github/scripts/promote_to_master.sh
new file mode 100755
index 000000000..f75c7386c
--- /dev/null
+++ b/.github/scripts/promote_to_master.sh
@@ -0,0 +1,39 @@
+#!/bin/bash
+
+COMMIT_LIST=$(git log --pretty=format:"* %s (%h) by %an" origin/master..dev |
+ while IFS= read -r line; do
+ if [[ ! $line =~ ^"* feat"* && ! $line =~ ^"* fix"* && ! $line =~ ^"* docs"* ]]; then
+ echo "* chore${line:1}"
+ else
+ echo "$line"
+ fi
+ done)
+
+if [ -z "$COMMIT_LIST" ]; then
+ COMMIT_LIST="No new commits - branches may be identical"
+fi
+
+MERGE_DATE="Friday"
+
+echo "$COMMIT_LIST" >commit_list.txt
+
+cat <>$GITHUB_ENV
+PR_BODY</dev/null 2>&1; then
+ COMMIT_COUNT=$(git rev-list --count master..dev)
+ echo "commit_count=$COMMIT_COUNT" >> $GITHUB_OUTPUT
+ if [ "$COMMIT_COUNT" -gt 0 ]; then
+ echo "Detected $COMMIT_COUNT commit(s) between master and dev"
+ echo "has_commits=true" >> $GITHUB_OUTPUT
+ else
+ echo "No commits detected between master and dev"
+ echo "has_commits=false" >> $GITHUB_OUTPUT
+ fi
+ else
+ echo "Master branch doesn't exist yet. Assuming changes need to be propagated."
+ echo "commit_count=999" >> $GITHUB_OUTPUT # Use a high number to indicate there are changes
+ echo "has_commits=true" >> $GITHUB_OUTPUT
+ fi
+
+ # Set up git for potential operations
+ - name: Setup git
+ if: steps.check-commits.outputs.has_commits == 'true'
+ run: |
+ git config user.name "GitHub Actions Bot"
+ git config user.email "actions@github.com"
+
+ # Create or update PR using GitHub API with retry logic
+ - name: Create or Update Pull Request
+ if: steps.check-commits.outputs.has_commits == 'true'
+ uses: actions/github-script@v6
+ with:
+ github-token: ${{ secrets.GITHUB_TOKEN }}
+ script: |
+ const { repo, owner } = context.repo;
+ const prBranch = "dev";
+ const prTitle = "chore: release automated changes from dev to master";
+ const prBody = process.env.PR_BODY;
+
+ // Retry helper function
+ async function retryOperation(operation, maxRetries = 3, delay = 5000) {
+ let lastError;
+ for (let attempt = 1; attempt <= maxRetries; attempt++) {
+ try {
+ return await operation();
+ } catch (error) {
+ lastError = error;
+ console.log(`Attempt ${attempt}/${maxRetries} failed: ${error.message}`);
+ if (attempt < maxRetries) {
+ console.log(`Waiting ${delay/1000} seconds before retry...`);
+ await new Promise(resolve => setTimeout(resolve, delay));
+ }
+ }
+ }
+ throw lastError;
+ }
+
+ // Check if PR already exists
+ const prs = await retryOperation(async () => {
+ return github.rest.pulls.list({
+ owner,
+ repo,
+ head: `${owner}:${prBranch}`,
+ base: 'master',
+ state: 'open'
+ });
+ });
+
+ if (prs.data.length > 0) {
+ // Update existing PR
+ console.log(`Updating existing PR #${prs.data[0].number}`);
+ await retryOperation(async () => {
+ return github.rest.pulls.update({
+ owner,
+ repo,
+ pull_number: prs.data[0].number,
+ title: prTitle,
+ body: prBody
+ });
+ });
+ console.log(`PR #${prs.data[0].number} updated successfully.`);
+ } else {
+ // Create new PR
+ try {
+ const result = await retryOperation(async () => {
+ return github.rest.pulls.create({
+ owner,
+ repo,
+ title: prTitle,
+ body: prBody,
+ head: prBranch,
+ base: 'master'
+ });
+ });
+ console.log(`PR created: ${result.data.html_url}`);
+ } catch (error) {
+ console.log(`All attempts to create PR failed: ${error.message}`);
+
+ // As a fallback, output command for manual PR creation
+ console.log(`To create the PR manually, visit: https://github.com/${owner}/${repo}/compare/master...${prBranch}`);
+ throw error;
+ }
+ }
+
+ # Output message when no commits are found
+ - name: No Commits Message
+ if: steps.check-commits.outputs.has_commits == 'false'
+ run: |
+ echo "::notice::No new commits detected between master and dev branches. Skipping PR creation."
+ echo "The branches master and dev are already in sync."
+
+ release:
+ name: release
+ if: ${{ github.ref == 'refs/heads/master' }}
+ runs-on: ubuntu-latest
+ steps:
+ - uses: googleapis/release-please-action@v3
+ id: release
+ with:
+ release-type: simple
+ include-v-in-tag: true
+ package-name: hyde
+ command: github-release
+ token: ${{ secrets.GITHUB_TOKEN }}
+ default-branch: master
+ changelog-types: |
+ [
+ {"type":"feat","section":"Features","hidden":false},
+ {"type":"fix","section":"Bug Fixes","hidden":false},
+ {"type":"docs","section":"Documentation","hidden":false},
+ {"type":"style","section":"Styles","hidden":false},
+ {"type":"refactor","section":"Code Refactoring","hidden":false},
+ {"type":"perf","section":"Performance Improvements","hidden":false},
+ {"type":"test","section":"Tests","hidden":false},
+ {"type":"build","section":"Build System","hidden":false},
+ {"type":"ci","section":"Continuous Integration","hidden":false},
+ {"type":"chore","section":"Miscellaneous Chores","hidden":true}
+ ]
+
+ # Checkout code to work with tags and commits
+ - uses: actions/checkout@v4
+ with:
+ fetch-depth: 0
+
+ # Always update the latest release description, even if no new release is created
+ - name: Update Latest Release Description
+ if: ${{ !steps.release.outputs.release_created }}
+ uses: actions/github-script@v6
+ with:
+ github-token: ${{ secrets.GITHUB_TOKEN }}
+ script: |
+ const { repo, owner } = context.repo;
+
+ // Get latest release
+ const releases = await github.rest.repos.listReleases({
+ owner,
+ repo,
+ per_page: 1
+ });
+
+ if (releases.data.length === 0) {
+ console.log('No releases found to update');
+ return;
+ }
+
+ const latestRelease = releases.data[0];
+ console.log(`Found latest release: ${latestRelease.tag_name}`);
+
+ // Get previous release to calculate commits in between
+ const allReleases = await github.rest.repos.listReleases({
+ owner,
+ repo,
+ per_page: 2
+ });
+
+ const previousTag = allReleases.data.length > 1 ?
+ allReleases.data[1].tag_name :
+ 'HEAD~20'; // Fallback to last 20 commits if no previous release
+
+ // Get commits between the two tags
+ const { execSync } = require('child_process');
+ let commitList;
+ try {
+ commitList = execSync(
+ `git log --pretty=format:"* %s (%h)" ${previousTag}..${latestRelease.tag_name} | grep -v "Merge pull request"`
+ ).toString().trim();
+ } catch (e) {
+ console.log('Error getting commit list:', e);
+ commitList = 'Could not generate commit list automatically';
+ }
+
+ // Format the release notes with sections
+ const features = commitList.split('\n')
+ .filter(line => line.includes('feat:') || line.includes('feat('))
+ .join('\n');
+
+ const fixes = commitList.split('\n')
+ .filter(line => line.includes('fix:') || line.includes('fix('))
+ .join('\n');
+
+ const docs = commitList.split('\n')
+ .filter(line => line.includes('docs:') || line.includes('docs('))
+ .join('\n');
+
+ const other = commitList.split('\n')
+ .filter(line => !line.includes('feat:') && !line.includes('fix:') && !line.includes('docs:') &&
+ !line.includes('feat(') && !line.includes('fix(') && !line.includes('docs('))
+ .join('\n');
+
+ // Build release body
+ let releaseBody = `# What's Changed\n\n`;
+
+ if (features) {
+ releaseBody += `## Features\n${features}\n\n`;
+ }
+
+ if (fixes) {
+ releaseBody += `## Bug Fixes\n${fixes}\n\n`;
+ }
+
+ if (docs) {
+ releaseBody += `## Documentation\n${docs}\n\n`;
+ }
+
+ if (other) {
+ releaseBody += `## Other Changes\n${other}\n\n`;
+ }
+
+ releaseBody += `**Full Changelog**: https://github.com/${owner}/${repo}/compare/${previousTag}...${latestRelease.tag_name}`;
+
+ // Update the release
+ console.log(`Updating release ${latestRelease.id} with new description`);
+ await github.rest.repos.updateRelease({
+ owner,
+ repo,
+ release_id: latestRelease.id,
+ body: releaseBody
+ });
+
+ console.log('Release description updated successfully');
+
+ # Tag stable version (existing logic)
+ - name: tag stable versions
+ if: ${{ steps.release.outputs.release_created }}
+ run: |
+ git config user.name github-actions[bot]
+ git config user.email github-actions[bot]@users.noreply.github.com
+ git remote add gh-token "https://${{ secrets.GITHUB_TOKEN }}@github.com/google-github-actions/release-please-action.git"
+ git tag -d stable || true
+ git push origin :stable || true
+ git tag -a stable -m "Last Stable Release v${{ steps.release.outputs.version }}"
+ git push origin stable
diff --git a/.github/workflows/refresh-release.yml b/.github/workflows/refresh-release.yml
new file mode 100644
index 000000000..b128dedb1
--- /dev/null
+++ b/.github/workflows/refresh-release.yml
@@ -0,0 +1,52 @@
+name: Refresh Release
+
+on:
+ workflow_dispatch:
+ inputs:
+ version_bump:
+ description: "Type of version bump (patch, minor, major)"
+ required: true
+ default: "patch"
+ type: choice
+ options:
+ - patch
+ - minor
+ - major
+
+jobs:
+ refresh-release:
+ runs-on: ubuntu-latest
+ # Add permissions for GitHub token
+ permissions:
+ contents: write # Needed to push to branches
+ pull-requests: write # Needed to create/update PRs
+
+ steps:
+ - name: Checkout code
+ uses: actions/checkout@v4
+ with:
+ fetch-depth: 0
+ # Add token for authentication
+ token: ${{ secrets.GITHUB_TOKEN }}
+
+ - name: Setup Git
+ run: |
+ git config user.name "GitHub Actions Bot"
+ git config user.email "actions@github.com"
+
+ - name: Create conventional commit to trigger release
+ run: |
+ # Create empty commit with appropriate conventional commit message
+ if [[ "${{ github.event.inputs.version_bump }}" == "minor" ]]; then
+ git commit --allow-empty -m "feat: trigger new release refresh"
+ elif [[ "${{ github.event.inputs.version_bump }}" == "major" ]]; then
+ git commit --allow-empty -m "feat!: trigger major release refresh"
+ else
+ git commit --allow-empty -m "fix: trigger patch release refresh"
+ fi
+
+ # Push to master branch
+ git push origin HEAD:master
+
+ - name: Provide feedback
+ run: echo "Release refresh triggered successfully with a ${{ github.event.inputs.version_bump }} version bump!"
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 5da1e7ee8..e65d5a2db 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -5,7 +5,11 @@ Thank you for your interest in contributing to Community Standards! We welcome a
## Getting Started
1. Fork this repository to your GitHub account. This will create a copy of this repository in your account. You can make changes to this copy without affecting the original repository.
+
- For fork this repository, click the **Fork** button in the top right corner of this page or click [here](https://github.com/HyDE-Project/HyDE/fork).
+
+ > **Note for first-time contributors:** All new contributors should start by submitting pull requests. After demonstrating consistent high-quality contributions through PRs, you may be considered for a collaborator role as described in [TEAM_ROLES.md](https://github.com/HyDE-Project/HyDE/blob/master/TEAM_ROLES.md). Direct repository access is granted selectively based on contribution history.
+
2. Clone your forked repository to your local machine.
- Use the following command to clone your forked repository to your local machine.
@@ -39,11 +43,13 @@ Thank you for your interest in contributing to Community Standards! We welcome a
```
6. Submit a **pull request** to the upstream repository.
+ - **Important**: Always submit your pull requests to the `dev` branch, **not** directly to `master`. Following the [RELEASE_POLICY.md](https://github.com/HyDE-Project/HyDE/blob/master/RELEASE_POLICY.md), changes go through the dev branch first for testing before being merged into master during the release window.
- For example, to create a pull request, use the following steps.
1. Go to your forked repository.
2. Click the **Compare & pull request** button next to your `your-branch-name` branch.
- 3. Add a title and description for your pull request.
- 4. Click **Create pull request** and remember to add the relevant labels with using the [pull request template](https://github.com/HyDE-Project/HyDE/blob/master/.github/PULL_REQUEST_TEMPLATE.md).
+ 3. Make sure the base repository branch is set to `dev`.
+ 4. Add a title and description for your pull request.
+ 5. Click **Create pull request** and remember to add the relevant labels with using the [pull request template](https://github.com/HyDE-Project/HyDE/blob/master/.github/PULL_REQUEST_TEMPLATE.md).
## Guidelines
@@ -60,6 +66,8 @@ Thank you for your interest in contributing to Community Standards! We welcome a
- [PULL_REQUEST_TEMPLATE.md](https://github.com/HyDE-Project/HyDE/blob/master/.github/PULL_REQUEST_TEMPLATE.md) - Use this template to submit a pull request.
- [COMMIT_MESSAGE_GUIDELINES.md](https://github.com/HyDE-Project/HyDE/blob/master/COMMIT_MESSAGE_GUIDELINES.md) - Read this file to learn about the commit message guidelines.
- [CONTRIBUTING.md](https://github.com/HyDE-Project/HyDE/blob/master/CONTRIBUTING.md) - Read this file to learn about the contributing guidelines.
+ - [RELEASE_POLICY.md](https://github.com/HyDE-Project/HyDE/blob/master/RELEASE_POLICY.md) - Read this file to understand the release cycle, branch management, and deployment schedule.
+ - [TEAM_ROLES.md](https://github.com/HyDE-Project/HyDE/blob/master/TEAM_ROLES.md) - Learn about the different roles in our project (Collaborators, Triagers, and Testers) and how to join.
- [LICENSE](https://github.com/HyDE-Project/HyDE/blob/master/LICENSE) - Read this file to learn about the license.
- [README.md](https://github.com/HyDE-Project/HyDE/blob/master/README.md) - Read this file to learn about the project.
diff --git a/CONTRIBUTING_HYPRDOTS.md b/CONTRIBUTING_HYPRDOTS.md
deleted file mode 100644
index ed66ce13f..000000000
--- a/CONTRIBUTING_HYPRDOTS.md
+++ /dev/null
@@ -1,68 +0,0 @@
-# Contributing to Community Standards
-
-Thank you for your interest in contributing to Community Standards! We welcome any contributions, including bug fixes, feature enhancements, documentation improvements, and other general improvements.
-
-## Getting Started
-
-1. Fork this repository to your GitHub account. This will create a copy of this repository in your account. You can make changes to this copy without affecting the original repository.
- - For fork this repository, click the **Fork** button in the top right corner of this page or click [here](https://github.com/prasanthrangan/hyprdots/fork).
-2. Clone your forked repository to your local machine.
-
- - Use the following command to clone your forked repository to your local machine.
-
- ```bash
- git clone https://github.com/prasanthrangan/hyprdots.git
- ```
-
-3. Create a new branch for your changes.
-
- - For example, to create a new branch named `your-branch-name`, use the following command.
-
- ```bash
- git checkout -b your-branch-name
- ```
-
-4. Make your changes and commit them with a descriptive commit message.
-
- - For example, to commit your changes, use the following command and make sure to follow the [commit message guidelines](https://github.com/prasanthrangan/hyprdots/blob/main/COMMIT_MESSAGE_GUIDELINES.md).
-
- ```bash
- git commit -m "feat: add a new feature"
- ```
-
-5. Push your changes to your forked repository.
-
- - For example, to push your changes to your forked repository, use the following command.
-
- ```bash
- git push origin your-branch-name
- ```
-
-6. Submit a **pull request** to the upstream repository.
- - For example, to create a pull request, use the following steps.
- 1. Go to your forked repository.
- 2. Click the **Compare & pull request** button next to your `your-branch-name` branch.
- 3. Add a title and description for your pull request.
- 4. Click **Create pull request** and remember to add the relevant labels with using the [pull request template](https://github.com/prasanthrangan/hyprdots/blob/templates/.github/PULL_REQUEST_TEMPLATE.md).
-
-## Guidelines
-
-- Follow the code style of the project.
-- Update the **documentation** if necessary.
-- Add tests if applicable.
-- Make sure all tests pass before submitting your changes.
-- Keep your pull request focused and avoid including unrelated changes.
-- Remember to follow the given files before submitting your changes.
- - [bug_report.md](https://github.com/prasanthrangan/hyprdots/blob/main/.github/ISSUE_TEMPLATE/bug_report.md) - Use this template to create a report to help us improve.
- - [feature_request.md](https://github.com/prasanthrangan/hyprdots/blob/main/.github/ISSUE_TEMPLATE/feature_request.md) - Use this template to suggest a feature for this project.
- - [documentation_update.md](https://github.com/prasanthrangan/hyprdots/blob/main/.github/ISSUE_TEMPLATE/documentation_update.md) - Use this template to propose a change to the documentation.
- - [custom.md](https://github.com/prasanthrangan/hyprdots/blob/main/.github/ISSUE_TEMPLATE/custom.md) - Use this template to submit a custom issue.
- - [PULL_REQUEST_TEMPLATE.md](https://github.com/prasanthrangan/hyprdots/blob/main/.github/PULL_REQUEST_TEMPLATE.md) - Use this template to submit a pull request.
- - [COMMIT_MESSAGE_GUIDELINES.md](https://github.com/prasanthrangan/hyprdots/blob/main/COMMIT_MESSAGE_GUIDELINES.md) - Read this file to learn about the commit message guidelines.
- - [CONTRIBUTING.md](https://github.com/prasanthrangan/hyprdots/blob/main/CONTRIBUTING.md) - Read this file to learn about the contributing guidelines.
- - [LICENSE](https://github.com/prasanthrangan/hyprdots/blob/main/LICENSE) - Read this file to learn about the license.
- - [README.md](https://github.com/prasanthrangan/hyprdots/blob/main/README.md) - Read this file to learn about the project.
-
-## Contact
-
-If you have any questions, feel free to contact via [GitHub Discussions](https://github.com/prasanthrangan/hyprdots/discussions).
diff --git a/CONTRIBUTORS.md b/CONTRIBUTORS.md
new file mode 100644
index 000000000..1fea10635
--- /dev/null
+++ b/CONTRIBUTORS.md
@@ -0,0 +1,44 @@
+# Contributors
+
+This file lists the contributors to the HyDE project and their roles.
+
+## Project Maintainers
+
+- [@kRHYME7](https://github.com/kRHYME7) - "[3]uck ๐ฆ"
+
+## Collaborators
+
+_These contributors help with code review, triaging, and development._
+
+- [@dieBakterie](https://github.com/dieBakterie)
+- [@richen604](https://github.com/richen604)
+- [@Senshi111](https://github.com/Senshi111)
+- [@T-Crypt](https://github.com/T-Crypt)
+- [@Guillaumecoi](https://github.com/Guillaumecoi)
+- [@rubiin](https://github.com/rubiin)
+- [@Metalhearf](https://github.com/Metalhearf)
+- [@prime-run](https://github.com/prime-run)
+
+## Testers
+
+_These contributors help with quality assurance and testing._
+
+
+- [@amit-0i](https://github.com/amit-0i)
+- [@Prof-Shiba](https://github.com/Prof-Shiba)
+- [@UnaTried](https://github.com/UnaTried)
+---
+
+## How to add yourself to this list
+
+1. Fork the repository
+2. Create a new branch for your change
+3. Add your name to the appropriate section in this format:
+ ```
+ - [@your-github-username](https://github.com/your-github-username) - "Your favorite quote"
+ ```
+4. Submit a pull request with the title "Add [Your Name] as [Collaborator/Tester]"
+5. Include in the PR description your relevant experience and what you hope to contribute
+6. Wait for a maintainer to review and merge your PR
+
+Note: New contributors should only add themselves to the Collaborators or Testers sections. Promotion to write access is determined by project maintainers based on the criteria in [TEAM_ROLES.md](https://github.com/HyDE-Project/HyDE/blob/master/TEAM_ROLES.md).
diff --git a/Configs/.config/fastfetch/config.jsonc b/Configs/.config/fastfetch/config.jsonc
index cb53e2a7e..414ec80dd 100644
--- a/Configs/.config/fastfetch/config.jsonc
+++ b/Configs/.config/fastfetch/config.jsonc
@@ -9,7 +9,7 @@ fastfetch --config hyde/*.jsonc
{
"$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json",
"logo": {
- "source": "$(fastfetch.sh logo)",
+ "source": "\"$(fastfetch.sh logo)\"",
"height": 18
},
"display": {
@@ -103,10 +103,11 @@ fastfetch --config hyde/*.jsonc
"keyColor": "magenta"
},
{
- "type": "command",
+ "type": "disk",
"key": " ๓ฑฆ OS Age ",
+ "folders": "/",
"keyColor": "red",
- "text": "birth_install=$(stat -c %W /); current=$(date +%s); time_progression=$((current - birth_install)); days_difference=$((time_progression / 86400)); echo $days_difference days"
+ "format": "{days} days"
},
{
"type": "uptime",
@@ -124,4 +125,4 @@ fastfetch --config hyde/*.jsonc
},
"break"
]
-}
\ No newline at end of file
+}
diff --git a/Configs/.config/fish/config.fish b/Configs/.config/fish/config.fish
index b91657383..fa6707196 100644
--- a/Configs/.config/fish/config.fish
+++ b/Configs/.config/fish/config.fish
@@ -2,10 +2,31 @@ set -g fish_greeting
source ~/.config/fish/hyde_config.fish
-if status is-interactive
+if type -q starship
starship init fish | source
+ set -gx STARSHIP_CACHE $XDG_CACHE_HOME/starship
+ set -gx STARSHIP_CONFIG $XDG_CONFIG_HOME/starship/starship.toml
end
+
+# fzf
+if type -q fzf
+ fzf --fish | source
+end
+
+
+
+
+
+
+
+# example integration with bat :
+# bind -M insert \ce '$EDITOR $(fzf --preview="bat --color=always --plain {}")'
+
+
+set fish_pager_color_prefix cyan
+set fish_color_autosuggestion brblack
+
# List Directory
alias l='eza -lh --icons=auto' # long list
alias ls='eza -1 --icons=auto' # short list
diff --git a/Configs/.config/fish/functions/ffcd.fish b/Configs/.config/fish/functions/ffcd.fish
new file mode 100644
index 000000000..df5fcfbfb
--- /dev/null
+++ b/Configs/.config/fish/functions/ffcd.fish
@@ -0,0 +1,27 @@
+function ffcd
+ set initial_query
+ set max_depth 7
+ if set -q argv[1]
+ set initial_query $argv[1]
+ end
+
+ set fzf_options '--preview=ls -p {} | grep /' \
+ '--preview-window=right:60%' \
+ '--height' '80%' \
+ '--layout=reverse' \
+ '--preview-window' 'right:60%' \
+ '--cycle'
+
+ if set -q initial_query
+ set fzf_options $fzf_options "--query=$initial_query"
+ end
+
+
+ set selected_dir (find . -maxdepth $max_depth \( -name .git -o -name node_modules -o -name .venv -o -name target -o -name .cache \) -prune -o -type d -print 2>/dev/null | fzf $fzf_options)
+
+ if test -n "$selected_dir"; and test -d "$selected_dir"
+ cd "$selected_dir"; or return 1
+ else
+ return 1
+ end
+end
diff --git a/Configs/.config/fish/functions/ffe.fish b/Configs/.config/fish/functions/ffe.fish
new file mode 100644
index 000000000..3a5cfd04d
--- /dev/null
+++ b/Configs/.config/fish/functions/ffe.fish
@@ -0,0 +1,25 @@
+function ffe
+ set initial_query
+ if set -q argv[1]
+ set initial_query $argv[1]
+ end
+
+ set fzf_options '--height' '80%' \
+ '--layout' 'reverse' \
+ '--preview-window' 'right:60%' \
+ '--cycle'
+
+ if set -q initial_query
+ set fzf_options $fzf_options "--query=$initial_query"
+ end
+
+ set max_depth 5
+
+ set selected_file (find . -maxdepth $max_depth -type f 2>/dev/null | fzf $fzf_options)
+
+ if test -n "$selected_file"; and test -f "$selected_file"
+ nvim "$selected_file"
+ else
+ return 1
+ end
+end
diff --git a/Configs/.config/fish/functions/ffec.fish b/Configs/.config/fish/functions/ffec.fish
new file mode 100644
index 000000000..13d5b2914
--- /dev/null
+++ b/Configs/.config/fish/functions/ffec.fish
@@ -0,0 +1,21 @@
+function ffec
+ set grep_pattern ""
+ if set -q argv[1]
+ set grep_pattern $argv[1]
+ end
+
+ set fzf_options '--height' '80%' \
+ '--layout' 'reverse' \
+ '--preview-window' 'right:60%' \
+ '--cycle' \
+ '--preview' 'bat --color always {}' \
+ '--preview-window' 'right:60%'
+
+ set selected_file (grep -irl -- "$grep_pattern" ./ 2>/dev/null | fzf $fzf_options)
+
+ if test -n "$selected_file"
+ nvim "$selected_file"
+ else
+ echo "No file selected or search returned no results."
+ end
+end
diff --git a/Configs/.config/hyde/wallbash/always/discord.dcol b/Configs/.config/hyde/wallbash/always/discord.dcol
index b1ee1dc1a..6fcb1328b 100644
--- a/Configs/.config/hyde/wallbash/always/discord.dcol
+++ b/Configs/.config/hyde/wallbash/always/discord.dcol
@@ -1,74 +1,25 @@
-${cacheDir}/wallbash/discord.css|${WALLBASH_SCRIPTS}/discord.sh
+${XDG_CACHE_HOME}/hyde/wallbash/discord.css|${WALLBASH_SCRIPTS}/discord.sh
+@import url('https://mwittrien.github.io/BetterDiscordAddons/Themes/DiscordRecolor/DiscordRecolor.css');
:root {
- --accent-color: #;
- --border-color: #;
- --background-1: #;
- --background-2: #;
- --background-tertiary: #66;
- --background-mentioned: # !important;
- --background-mentioned-hover: # !important;
- --background-modifier-hover: # !important;
- --background-modifier-active: # !important;
- --text-normal: # !important;
- --text-positive: # !important;
- --text-muted: #66 !important;
- --text-link: # !important;
- --channel-default: #99 !important;
- --button-background: # !important;
- --button-background-hover: # !important;
- --button-background-active: # !important;
- --button-accent: # !important;
- --button-accent-hover: # !important;
- --button-accent-active: # !important;
- --button-destructive: # !important;
- --button-destructive-hover: # !important;
- --button-destructive-active: # !important;
- --settings-icon-color: # !important;
- --tab-selected: # !important;
- --switch: # !important;
+ --accentcolor: ;
+ --accentcolor2: ;
+ --linkcolor: ;
+ --mentioncolor: ;
+ --textbrightest: ;
+ --textbrighter: ;
+ --textbright: ;
+ --textdark: ;
+ --textdarker: ;
+ --textdarkest: ;
- --background-primary: var(--background-1);
- --background-primary-alt: var(--background-1);
- --background-secondary: var(--background-tertiary);
- --background-secondary-alt: var(--background-tertiary);
- --background-accent-gradient: var(--background-1);
- --background-floating: var(--background-2);
- --background-modifier-selected: var(--accent-color);
- --background-modifier-accent: var(--border-color);
- --background-message-hover: transparent;
- --interactive-selected: var(--background-primary);
- --interactive-active: var(--text-positive);
- --interactive-normal: var(--text-normal);
- --interactive-muted: var(--text-muted);
- --channels-default: var(--channel-default);
- --header-primary: var(--text-normal);
- --header-secondary: var(--text-muted);
- --control-brand-foreground: var(--accent-color);
- --info-warning-foreground: var(--accent-color);
- --activity-card-background: var(--background-1);
- --brand-experiment: var(--accent-color) !important;
- --close-button-color: var(--accent-color);
- --maximize-button-color: var(--accent-color);
- --minimize-button-color: var(--accent-color);
- --scrollbar-color-alt: var(--accent-color);
- --scrollbar-thin-track: transparent;
- --scrollbar-auto-thumb: transparent;
- --scrollbar-auto-thumb-hover: var(--accent-color);
- --scrollbar-auto-track: transparent;
- --scrollbar-auto-scrollbar-color-thumb: var(--accent-color);
- --scrollbar-auto-scrollbar-color-track: transparent;
- --channeltextarea-background: var(--accent-color);
- --channeltextarea-background-hover: var(--background-tertiary);
- --avatar-roundess: 5px;
+ --backgroundaccent: ;
+ --backgroundprimary: ;
+ --backgroundsecondary: ;
+ --backgroundsecondaryalt: ;
+ --backgroundtertiary: ;
+ --backgroundfloating: ;;
+ --settingsicons: 0;
}
-.theme-dark {
- --background-primary: var(--background-1);
- --background-primary-alt: var(--background-1);
- --background-secondary: var(--background-tertiary);
- --background-secondary-alt: var(--background-tertiary);
- --background-floating: var(--background-2);
- --background-mentioned: var(--accent-color);
- --background-mentioned-hover: var(--scrollbar-auto-thumb);
-}
+/* Any custom CSS below here */
diff --git a/Configs/.config/hyde/wallbash/always/vim.dcol b/Configs/.config/hyde/wallbash/always/vim.dcol
new file mode 100644
index 000000000..2be658cfc
--- /dev/null
+++ b/Configs/.config/hyde/wallbash/always/vim.dcol
@@ -0,0 +1,495 @@
+${XDG_CONFIG_HOME:-$HOME/.config}/vim/colors/wallbash.vim
+" Name: wallbash
+" Description: wallbash template
+" Author: The HyDE Project
+" License: Same as Vim
+" Last Change: April 2025
+
+if exists('g:loaded_wallbash') | finish | endif
+let g:loaded_wallbash = 1
+
+
+" Detect background based on terminal colors
+if $BACKGROUND =~# 'light'
+ set background=light
+else
+ set background=dark
+endif
+
+" hi clear
+let g:colors_name = 'wallbash'
+
+let s:t_Co = &t_Co
+
+" Terminal color setup
+if (has('termguicolors') && &termguicolors) || has('gui_running')
+ let s:is_dark = &background == 'dark'
+
+ " Define terminal colors based on the background
+ if s:is_dark
+ let g:terminal_ansi_colors = ['', '', '', '',
+ \ '', '', '', '',
+ \ '', '', '', '',
+ \ '', '', '', '']
+ else
+ " Lighter colors for light theme
+ let g:terminal_ansi_colors = ['', '', '', '',
+ \ '', '', '', '',
+ \ '', '', '', '',
+ \ '', '', '', '']
+ endif
+
+ " Nvim uses g:terminal_color_{0-15} instead
+ for i in range(g:terminal_ansi_colors->len())
+ let g:terminal_color_{i} = g:terminal_ansi_colors[i]
+ endfor
+endif
+
+ " For Neovim compatibility
+ if has('nvim')
+ " Set Neovim specific terminal colors
+ let g:terminal_color_0 = '#' . g:terminal_ansi_colors[0]
+ let g:terminal_color_1 = '#' . g:terminal_ansi_colors[1]
+ let g:terminal_color_2 = '#' . g:terminal_ansi_colors[2]
+ let g:terminal_color_3 = '#' . g:terminal_ansi_colors[3]
+ let g:terminal_color_4 = '#' . g:terminal_ansi_colors[4]
+ let g:terminal_color_5 = '#' . g:terminal_ansi_colors[5]
+ let g:terminal_color_6 = '#' . g:terminal_ansi_colors[6]
+ let g:terminal_color_7 = '#' . g:terminal_ansi_colors[7]
+ let g:terminal_color_8 = '#' . g:terminal_ansi_colors[8]
+ let g:terminal_color_9 = '#' . g:terminal_ansi_colors[9]
+ let g:terminal_color_10 = '#' . g:terminal_ansi_colors[10]
+ let g:terminal_color_11 = '#' . g:terminal_ansi_colors[11]
+ let g:terminal_color_12 = '#' . g:terminal_ansi_colors[12]
+ let g:terminal_color_13 = '#' . g:terminal_ansi_colors[13]
+ let g:terminal_color_14 = '#' . g:terminal_ansi_colors[14]
+ let g:terminal_color_15 = '#' . g:terminal_ansi_colors[15]
+ endif
+
+" Function to dynamically invert colors for UI elements
+function! s:inverse_color(color)
+ " This function takes a hex color (without #) and returns its inverse
+ " Convert hex to decimal values
+ let r = str2nr(a:color[0:1], 16)
+ let g = str2nr(a:color[2:3], 16)
+ let b = str2nr(a:color[4:5], 16)
+
+ " Calculate inverse (255 - value)
+ let r_inv = 255 - r
+ let g_inv = 255 - g
+ let b_inv = 255 - b
+
+ " Convert back to hex
+ return printf('%02x%02x%02x', r_inv, g_inv, b_inv)
+endfunction
+
+" Function to be called for selection background
+function! InverseSelectionBg()
+ if &background == 'dark'
+ return ''
+ else
+ return ''
+ endif
+endfunction
+
+" Add high-contrast dynamic selection highlighting using the inverse color function
+augroup WallbashDynamicHighlight
+ autocmd!
+ " Update selection highlight when wallbash colors change
+ autocmd ColorScheme wallbash call s:update_dynamic_highlights()
+augroup END
+
+function! s:update_dynamic_highlights()
+ let l:bg_color = synIDattr(synIDtrans(hlID('Normal')), 'bg#')
+ if l:bg_color != ''
+ let l:bg_color = l:bg_color[1:] " Remove # from hex color
+ let l:inverse = s:inverse_color(l:bg_color)
+
+ " Apply inverse color to selection highlights
+ execute 'highlight! CursorSelection guifg=' . l:bg_color . ' guibg=#' . l:inverse
+
+ " Link dynamic highlights to various selection groups
+ highlight! link NeoTreeCursorLine CursorSelection
+ highlight! link TelescopeSelection CursorSelection
+ highlight! link CmpItemSelected CursorSelection
+ highlight! link PmenuSel CursorSelection
+ highlight! link WinSeparator VertSplit
+ endif
+endfunction
+
+" Make selection visible right away for current colorscheme
+call s:update_dynamic_highlights()
+
+" Conditional highlighting based on background
+if &background == 'dark'
+ " Base UI elements with transparent backgrounds
+ hi Normal guibg=NONE guifg=# gui=NONE cterm=NONE
+ hi Pmenu guibg=# guifg=# gui=NONE cterm=NONE
+ hi StatusLine guifg=# guibg=# gui=NONE cterm=NONE
+ hi StatusLineNC guifg=# guibg=# gui=NONE cterm=NONE
+ hi VertSplit guifg=# guibg=NONE gui=NONE cterm=NONE
+ hi LineNr guifg=# guibg=NONE gui=NONE cterm=NONE
+ hi SignColumn guifg=NONE guibg=NONE gui=NONE cterm=NONE
+ hi FoldColumn guifg=# guibg=NONE gui=NONE cterm=NONE
+
+ " NeoTree with transparent background including unfocused state
+ hi NeoTreeNormal guibg=NONE guifg=# gui=NONE cterm=NONE
+ hi NeoTreeEndOfBuffer guibg=NONE guifg=# gui=NONE cterm=NONE
+ hi NeoTreeFloatNormal guibg=NONE guifg=# gui=NONE cterm=NONE
+ hi NeoTreeFloatBorder guifg=# guibg=NONE gui=NONE cterm=NONE
+ hi NeoTreeWinSeparator guifg=# guibg=NONE gui=NONE cterm=NONE
+
+ " NeoTree with transparent background
+ hi NeoTreeNormal guibg=NONE guifg=# gui=NONE cterm=NONE
+ hi NeoTreeEndOfBuffer guibg=NONE guifg=# gui=NONE cterm=NONE
+ hi NeoTreeRootName guifg=# guibg=NONE gui=bold cterm=bold
+
+ " TabLine highlighting with complementary accents
+ hi TabLine guifg=# guibg=# gui=NONE cterm=NONE
+ hi TabLineFill guifg=NONE guibg=NONE gui=NONE cterm=NONE
+ hi TabLineSel guifg=# guibg=# gui=bold cterm=bold
+ hi TabLineSeparator guifg=# guibg=# gui=NONE cterm=NONE
+
+ " Interactive elements with dynamic contrast
+ hi Search guifg=# guibg=# gui=NONE cterm=NONE
+ hi Visual guifg=# guibg=# gui=NONE cterm=NONE
+ hi MatchParen guifg=# guibg=# gui=bold cterm=bold
+
+ " Menu item hover highlight
+ hi CmpItemAbbrMatch guifg=# guibg=NONE gui=bold cterm=bold
+ hi CmpItemAbbrMatchFuzzy guifg=# guibg=NONE gui=bold cterm=bold
+ hi CmpItemMenu guifg=# guibg=NONE gui=italic cterm=italic
+ hi CmpItemAbbr guifg=# guibg=NONE gui=NONE cterm=NONE
+ hi CmpItemAbbrDeprecated guifg=# guibg=NONE gui=strikethrough cterm=strikethrough
+
+ " Specific menu highlight groups
+ hi WhichKey guifg=# guibg=NONE gui=NONE cterm=NONE
+ hi WhichKeySeperator guifg=# guibg=NONE gui=NONE cterm=NONE
+ hi WhichKeyGroup guifg=# guibg=NONE gui=NONE cterm=NONE
+ hi WhichKeyDesc guifg=# guibg=NONE gui=NONE cterm=NONE
+ hi WhichKeyFloat guibg=# guifg=NONE gui=NONE cterm=NONE
+
+ " Selection and hover highlights with inverted colors
+ hi CursorColumn guifg=NONE guibg=# gui=NONE cterm=NONE
+ hi Cursor guibg=# guifg=# gui=NONE cterm=NONE
+ hi lCursor guibg=# guifg=# gui=NONE cterm=NONE
+ hi CursorIM guibg=# guifg=# gui=NONE cterm=NONE
+ hi TermCursor guibg=# guifg=# gui=NONE cterm=NONE
+ hi TermCursorNC guibg=# guifg=# gui=NONE cterm=NONE
+ hi CursorLine guibg=NONE ctermbg=NONE gui=underline cterm=underline
+ hi CursorLineNr guifg=# guibg=NONE gui=bold cterm=bold
+
+ hi QuickFixLine guifg=# guibg=# gui=NONE cterm=NONE
+ hi IncSearch guifg=# guibg=# gui=NONE cterm=NONE
+ hi NormalNC guibg=# guifg=# gui=NONE cterm=NONE
+ hi Directory guifg=# guibg=NONE gui=NONE cterm=NONE
+ hi WildMenu guifg=# guibg=# gui=bold cterm=bold
+
+ " Add highlight groups for focused items with inverted colors
+ hi CursorLineFold guifg=# guibg=# gui=NONE cterm=NONE
+ hi FoldColumn guifg=# guibg=NONE gui=NONE cterm=NONE
+ hi Folded guifg=# guibg=# gui=italic cterm=italic
+
+ " File explorer specific highlights
+ hi NeoTreeNormal guibg=NONE guifg=# gui=NONE cterm=NONE
+ hi NeoTreeEndOfBuffer guibg=NONE guifg=# gui=NONE cterm=NONE
+ hi NeoTreeRootName guifg=# guibg=NONE gui=bold cterm=bold
+ hi NeoTreeFileName guifg=# guibg=NONE gui=NONE cterm=NONE
+ hi NeoTreeFileIcon guifg=# guibg=NONE gui=NONE cterm=NONE
+ hi NeoTreeDirectoryName guifg=# guibg=NONE gui=NONE cterm=NONE
+ hi NeoTreeDirectoryIcon guifg=# guibg=NONE gui=NONE cterm=NONE
+ hi NeoTreeGitModified guifg=# guibg=NONE gui=NONE cterm=NONE
+ hi NeoTreeGitAdded guifg=# guibg=NONE gui=NONE cterm=NONE
+ hi NeoTreeGitDeleted guifg=# guibg=NONE gui=NONE cterm=NONE
+ hi NeoTreeGitUntracked guifg=# guibg=NONE gui=NONE cterm=NONE
+ hi NeoTreeIndentMarker guifg=# guibg=NONE gui=NONE cterm=NONE
+ hi NeoTreeSymbolicLinkTarget guifg=# guibg=NONE gui=NONE cterm=NONE
+
+ " File explorer cursor highlights with strong contrast
+ " hi NeoTreeCursorLine guibg=# guifg=# gui=bold cterm=bold
+ " hi! link NeoTreeCursor NeoTreeCursorLine
+ " hi! link NeoTreeCursorLineSign NeoTreeCursorLine
+
+ " Use wallbash colors for explorer snack in dark mode
+ hi WinBar guifg=# guibg=# gui=bold cterm=bold
+ hi WinBarNC guifg=# guibg=# gui=NONE cterm=NONE
+ hi ExplorerSnack guibg=# guifg=# gui=bold cterm=bold
+ hi BufferTabpageFill guibg=# guifg=# gui=NONE cterm=NONE
+ hi BufferCurrent guifg=# guibg=# gui=bold cterm=bold
+ hi BufferCurrentMod guifg=# guibg=# gui=bold cterm=bold
+ hi BufferCurrentSign guifg=# guibg=# gui=NONE cterm=NONE
+ hi BufferVisible guifg=# guibg=# gui=NONE cterm=NONE
+ hi BufferVisibleMod guifg=# guibg=# gui=NONE cterm=NONE
+ hi BufferVisibleSign guifg=# guibg=# gui=NONE cterm=NONE
+ hi BufferInactive guifg=# guibg=# gui=NONE cterm=NONE
+ hi BufferInactiveMod guifg=# guibg=# gui=NONE cterm=NONE
+ hi BufferInactiveSign guifg=# guibg=# gui=NONE cterm=NONE
+
+ " Fix link colors to make them more visible
+ hi link Hyperlink NONE
+ hi link markdownLinkText NONE
+ hi Underlined guifg=#FF00FF guibg=NONE gui=bold,underline cterm=bold,underline
+ hi Special guifg=#FF00FF guibg=NONE gui=bold cterm=bold
+ hi markdownUrl guifg=#FF00FF guibg=NONE gui=underline cterm=underline
+ hi markdownLinkText guifg=#FF00FF guibg=NONE gui=bold cterm=bold
+ hi htmlLink guifg=#FF00FF guibg=NONE gui=bold,underline cterm=bold,underline
+
+ " Add more direct highlights for badges in markdown
+ hi markdownH1 guifg=#FF00FF guibg=NONE gui=bold cterm=bold
+ hi markdownLinkDelimiter guifg=#FF00FF guibg=NONE gui=bold cterm=bold
+ hi markdownLinkTextDelimiter guifg=#FF00FF guibg=NONE gui=bold cterm=bold
+ hi markdownIdDeclaration guifg=#FF00FF guibg=NONE gui=bold cterm=bold
+else
+ " Light theme with transparent backgrounds
+ hi Normal guibg=NONE guifg=# gui=NONE cterm=NONE
+ hi Pmenu guibg=# guifg=# gui=NONE cterm=NONE
+ hi StatusLine guifg=# guibg=# gui=NONE cterm=NONE
+ hi StatusLineNC guifg=# guibg=# gui=NONE cterm=NONE
+ hi VertSplit guifg=# guibg=NONE gui=NONE cterm=NONE
+ hi LineNr guifg=# guibg=NONE gui=NONE cterm=NONE
+ hi SignColumn guifg=NONE guibg=NONE gui=NONE cterm=NONE
+ hi FoldColumn guifg=# guibg=NONE gui=NONE cterm=NONE
+
+ " NeoTree with transparent background including unfocused state
+ hi NeoTreeNormal guibg=NONE guifg=# gui=NONE cterm=NONE
+ hi NeoTreeEndOfBuffer guibg=NONE guifg=# gui=NONE cterm=NONE
+ hi NeoTreeFloatNormal guibg=NONE guifg=# gui=NONE cterm=NONE
+ hi NeoTreeFloatBorder guifg=# guibg=NONE gui=NONE cterm=NONE
+ hi NeoTreeWinSeparator guifg=# guibg=NONE gui=NONE cterm=NONE
+
+ " NeoTree with transparent background
+ hi NeoTreeNormal guibg=NONE guifg=# gui=NONE cterm=NONE
+ hi NeoTreeEndOfBuffer guibg=NONE guifg=# gui=NONE cterm=NONE
+ hi NeoTreeRootName guifg=# guibg=NONE gui=bold cterm=bold
+
+ " TabLine highlighting with complementary accents
+ hi TabLine guifg=# guibg=# gui=NONE cterm=NONE
+ hi TabLineFill guifg=NONE guibg=NONE gui=NONE cterm=NONE
+ hi TabLineSel guifg=# guibg=# gui=bold cterm=bold
+ hi TabLineSeparator guifg=# guibg=# gui=NONE cterm=NONE
+
+ " Interactive elements with complementary contrast
+ hi Search guifg=# guibg=# gui=NONE cterm=NONE
+ hi Visual guifg=# guibg=# gui=NONE cterm=NONE
+ hi MatchParen guifg=# guibg=# gui=bold cterm=bold
+
+ " Menu item hover highlight
+ hi CmpItemAbbrMatch guifg=# guibg=NONE gui=bold cterm=bold
+ hi CmpItemAbbrMatchFuzzy guifg=# guibg=NONE gui=bold cterm=bold
+ hi CmpItemMenu guifg=# guibg=NONE gui=italic cterm=italic
+ hi CmpItemAbbr guifg=# guibg=NONE gui=NONE cterm=NONE
+ hi CmpItemAbbrDeprecated guifg=# guibg=NONE gui=strikethrough cterm=strikethrough
+
+ " Specific menu highlight groups
+ hi WhichKey guifg=# guibg=NONE gui=NONE cterm=NONE
+ hi WhichKeySeperator guifg=# guibg=NONE gui=NONE cterm=NONE
+ hi WhichKeyGroup guifg=# guibg=NONE gui=NONE cterm=NONE
+ hi WhichKeyDesc guifg=# guibg=NONE gui=NONE cterm=NONE
+ hi WhichKeyFloat guibg=# guifg=NONE gui=NONE cterm=NONE
+
+ " Selection and hover highlights with inverted colors
+ hi CursorColumn guifg=NONE guibg=# gui=NONE cterm=NONE
+ hi Cursor guibg=# guifg=# gui=NONE cterm=NONE
+ hi lCursor guibg=# guifg=# gui=NONE cterm=NONE
+ hi CursorIM guibg=# guifg=# gui=NONE cterm=NONE
+ hi TermCursor guibg=# guifg=# gui=NONE cterm=NONE
+ hi TermCursorNC guibg=# guifg=# gui=NONE cterm=NONE
+ hi CursorLine guibg=NONE ctermbg=NONE gui=underline cterm=underline
+ hi CursorLineNr guifg=# guibg=NONE gui=bold cterm=bold
+
+ hi QuickFixLine guifg=# guibg=# gui=NONE cterm=NONE
+ hi IncSearch guifg=# guibg=# gui=NONE cterm=NONE
+ hi NormalNC guibg=# guifg=# gui=NONE cterm=NONE
+ hi Directory guifg=# guibg=NONE gui=NONE cterm=NONE
+ hi WildMenu guifg=# guibg=# gui=bold cterm=bold
+
+ " Add highlight groups for focused items with inverted colors
+ hi CursorLineFold guifg=# guibg=# gui=NONE cterm=NONE
+ hi FoldColumn guifg=# guibg=NONE gui=NONE cterm=NONE
+ hi Folded guifg=# guibg=# gui=italic cterm=italic
+
+ " File explorer specific highlights
+ hi NeoTreeNormal guibg=NONE guifg=# gui=NONE cterm=NONE
+ hi NeoTreeEndOfBuffer guibg=NONE guifg=# gui=NONE cterm=NONE
+ hi NeoTreeRootName guifg=#