Plugin: Terminal - integrated terminals in Obsidian

:wave: Hi everyone! I want to share the my new (also first) plugin, Terminal.

The plugin brings integrated terminals like those in Visual Studio Code into Obsidian. There are other features too, which can be found in the repository.

Please do read README.md in the aforementioned repository link carefully as there are extra setup needed. For example, installing Python 3.11/+ is recommended.

The plugin has just been accepted into community plugins. Its version is 2.7.0. For now, it is only extensively tested on Windows and I would like help testing on Linux and macOS. Feedback is wanted! :grinning:

5 Likes

Absolutely loving it, we are getting ever closer the obsidian ide!

1 Like

2.9.0

Hello everyone, I managed to get the integrated terminal working on Linux and macOS as well, so I want to post an update here. The following changelog is copied from the release description.

Changelog

After lots of hard work, v2.9.0 is finally ready! :sweat_smile:

Fixes

  • Fix integrated terminals on Linux and macOS (more generally, Unix). Python 3.10/+ is required but Python packages psutil and pywinctl are no longer required on Unix platforms. This should address the problem with integrated terminals of GH#2. (7812e8f148a0f52c2f576dded17266de07e3cebc5dbea610f75dbadce28d54b90c8549fb6c24fc6e)
  • Change default Python executable to python3 to avoid starting Python 2. (ba931427b1e5e2dd4a716ff90946e7a855eb5aea)
  • Fix error handling. (905d52e06eb83c6f915c9bb4fa4fcb2afece73278ac982e97ab32249135ffe36cc7ffc03548af059)

Internals

  • Validate language files. (e919a7cf4fa165a92dc9c91f40f448ef9ae999c529fdad08527e7b798277d0aed4b231aedf77105e)
  • Housekeeping.

Miscellaneous

  • Allow plugin to be enabled on mobile. It does nothing though. (cb40072e533b1dc20d441485817bced1b49b55eab400a4412f29fda901e579b7b2968305579ac4f1)
  • Add all languages available in Obsidian (untranslated except for 2). (29fdad08527e7b798277d0aed4b231aedf77105e)
  • Update translations.
  • Update README.md.

Known bugs

  • Opening external terminals is still broken on Linux and macOS.

Full changelog: 2.8.1...2.9.0

2.10.0

I think this will be the last post for a while. The plugin experience is satisfying for all three platforms now so development will slow down. Don’t worry, there is still a lot of features to be implemented (see the todo section in readme).

Changelog

Notices

  • Updating the plugin starting from this version to a newer version will no longer close all active terminal views. (Does not include updating from a previous version to this version.)
  • Please reset your settings and reconfigure it.
  • Linux, macOS: Please specify a terminal emulator (not a shell) for external terminal, and a shell (not a terminal emulator) for internal terminal.
  • macOS: This is not necessary if you have only used the release versions. But just in case, you might need to reset settings to apply the external terminal cwd fix.
  • macOS: The external terminal cwd fix is implemented by passing $PWD as the first argument to the external terminal. This might cause issues with non-default terminals. You may need to edit executables.darwin.extArgs in .obsidian/plugins/terminal/data.json to remove the first argument. Also see the hint.
  • mobile: You can only change settings on mobile for now.
  • Hint: There are hidden settings to set the launching arguments in .obsidian/plugins/terminal/data.json. Search for intArgs and extArgs. I still need to figure out how to present the hidden settings in the settings UI well.

Features

  • Terminal view no longer closes when the underlying process terminates. (934eb24e2c7106e1122c8c29e4160ca5d55749ef)
  • Add terminal restoration message in the format of * Restored history at (time). (5dd1efb5709af6d5f7dae7ee5d4b813fc4156612)
  • Add menu to restart terminal and resizer. Access by right-clicking terminal tab header. (313b4b8f0c2ec2f71d79fd519925aab71cfff910)
  • Add settings to disable annoying notices. (602954ee0ee619368ffb770310262656ee1a1551)
  • Add settings to specify external terminal separately. (a80466f309483f6971c29b85d5825449ab93c448)

Fixes

  • Terminal view persists when updating the plugin. (934eb24e2c7106e1122c8c29e4160ca5d55749ef)
  • Windows: Pressing Ctrl-C will no longer close the resizer sometimes. (fc95167374d3174ce94ce47ecc8bb41709b2c535)
  • Fix “reset all” not resetting all settings. (133a141e10b09f9bf29c59ed5ffaa6cde5594b72)
  • (See notices) Mobile: Fix plugin not loading. (3b55de2c48bb5bbcb35f7a4d5a533b58d520670d63c99375fbf29ef9fa6cbf27dd527071987a13fd)
  • (See notices) Linux, macOS: Fix external terminal not opening by separating external and internal terminal executable. (a80466f309483f6971c29b85d5825449ab93c448)
  • (See notices) macOS: Fix external terminal not starting in the specified cwd. Might not work with non-default terminals. (0b66970f065160e713067bb930bedf97f7f71793)

Internals

  • Housekeeping.
  • Refactor terminal files.
  • Handle more uncaught errors. Less errors in the developer console!
  • Update npm packages. (02f455b7c8b196116d45d98dd8fe51f750671b59)
  • Improve build scripts. (02b0174ec8b6252dcd98fbc1925069db41d5ab23)

Full changelog: 2.9.0...2.10.0

2.11.0

Just adding a crucial feature (text searching) that I personally need, so you get another update!

Changelog

Features

  • Add GPU acceleration! Now scrolling the terminal is super smooth. (078c36818bfbb038501bd4302e5c45ead53f12ba)
  • Improve settings UI. (e3790ae02a7839aca2ef8659a16fcacebbc02d52)
  • Add setting to specify terminal renderer. (related to GPU acceleration) (e029c710f3cda5b9dd209c517702ad1360754f20)
  • Add find in terminal function! Right-click terminal tab header to access it. (925328b32c11470ae195b5061afe05b84d0f0d1b)

Fixes

  • Fix unable to unfocus from terminal. (22cd684673b69860f442d86cac5d2ae9546c85a2)
  • Fix reset all settings not resetting all settings. Again… (270530dde452ef0db5a0bf5ee813dc6d7072fa79)
  • Decrease the chance that the terminal resizer fails to initialize. (ba9c34f4be014d641670ba1b01d53ec6d1723c18, 781a4ec764628439aca519d7cc31e69f84e7f00e)
  • Improve accuracy of terminal resizer. (76c85dffda284e95a1deb234198bbf4db2e7fb8a)

Internals

  • Housekeeping.
  • Handle more uncaught errors.
  • Add several minor terminal addons. (9d3e38acf096517f5425fd2dd7c53a45ed5bbfaf6ab523fbe7f328e758c7e6d88e149ba95b769d7a)
  • Log discarded errors. (ab836e6bc692cd3806ee0ab77aa78a01d2211f4b)
  • Fix encoding of Python stdios. (8fbb087d6f00798434118bc86c46a4f15ad6b37b)
  • Make win32_resizer.py report inability to find the correct window. (028cde8159a12e7f346db74a472bdcb8c0fed907)

Full changelog: 2.10.0...2.11.0