Skip to content

enhance shell detection for Linux by checking parent process#7267

Merged
waruqi merged 11 commits intoxmake-io:devfrom
luadebug:linux-shell
Jan 28, 2026
Merged

enhance shell detection for Linux by checking parent process#7267
waruqi merged 11 commits intoxmake-io:devfrom
luadebug:linux-shell

Conversation

@luadebug
Copy link
Member

@luadebug luadebug commented Jan 26, 2026

idea similiar to #6927 but for Linux not for Windows.

  1. To make results match to fastfetch I have to check parent process... :(
  2. Add alacritty check as we have ghostty check already. So it would print alacritty instead of unknown.

Would it be convenient to place :lower() & :upper() next to utf8 module instead of overriding existing methods of string.lower string.upper, as we have .reverse() method already inside of utf8 module? or either place reverse.c that overrides reverse for string

@gemini-code-assist
Copy link
Contributor

Summary of Changes

Hello @luadebug, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

This pull request significantly enhances the shell detection capabilities for Linux environments. By introducing a parent process traversal mechanism, the system can more reliably identify the shell from which xmake was invoked, even in complex scenarios. Additionally, it broadens the range of recognized shells, providing better compatibility and user experience for those using modern or less common shell environments.

Highlights

  • Enhanced Linux Shell Detection: Implemented a new mechanism for detecting the current shell on Linux systems by traversing the parent process chain using the /proc filesystem. This improves robustness when direct environment variable checks are insufficient.
  • Expanded Shell Support: Added support for detecting additional shell types, specifically fish, nu (Nushell), and elvish, alongside the existing zsh, bash, and sh.
  • New Module Dependency: The xmake/core/base/tty.lua module now includes a dependency on the path module for handling file paths, particularly for temporary file operations during shell detection.

🧠 New Feature in Public Preview: You can now enable Memory to help Gemini Code Assist learn from your team's feedback. This makes future code reviews more consistent and personalized to your project's style. Click here to enable Memory in your admin console.

Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point by creating a comment using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in pull request comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here.

You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

Copy link
Contributor

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request enhances shell detection on Linux by traversing the parent process tree to identify the shell. This is a good improvement for cases where environment variables are not set.

However, I've found a critical issue in the implementation. The use of os.execv to copy files from /proc will terminate the xmake process. This needs to be replaced with os.run.

I've also included a couple of suggestions to improve maintainability by reducing code duplication. Please take a look at the detailed comments.

@waruqi waruqi merged commit 45f856e into xmake-io:dev Jan 28, 2026
35 checks passed
@waruqi waruqi added this to the v3.0.7 milestone Jan 28, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants