Src_Snapshot
Prototype
Recently while browsing the Alpine git repo I noticed they have
a function called snapshot
, see:
https://git.alpinelinux.org/aports/tree/testing/dart/APKBUILD#n45
I am not 100% sure about how that works but a wild guess is that
the developers can run that function to fetch the sources and maybe later
upload them to the Alpine repo or some sort of (cloud?) storage.
In Portage there exists a pkg_config
function used to run miscellaneous
configuration for packages.
The only major difference between src_snapshot
and that would of course be
that users would never run snapshot
.
Sandbox
Probably only the network sandbox
would have to be lifted out…
to fetch the sources of course.
But also a few (at least one?) special directories and variables would be useful.
Ebuild-Mode and Stuff
Portage
Configure the following for Portage.
dev-util/pkgcheck emacs
Emerge
Emerge the following packages:
app-emacs/company-ebuild
dev-util/pkgcheck
Company-Ebuild should pull in app-emacs/ebuild-mode
,
if that does not happen, then report a bug ;-D
Standard
Add the following to your user's Emacs initialization file.
The initialization file is either ~/.emacs.d/init.el
or ~/.config/emacs/init.el
for newer versions of GNU Emacs.
(require 'ebuild-mode) (require 'company-ebuild) (require 'flycheck) (require 'flycheck-pkgcheck) (add-hook 'ebuild-mode-hook 'company-ebuild-setup) (add-hook 'ebuild-mode-hook 'flycheck-mode) (add-hook 'ebuild-mode-hook 'flycheck-pkgcheck-setup)
Use-Package
We can also configure our environment using a use-package
macro
that simplifies the setup a little bit.
To use the below configuration the app-emacs/use-package
package
will have to be installed.
(require 'use-package) (use-package ebuild-mode :defer t :mode "\\.\\(ebuild\\|eclass\\)\\'" :hook ((ebuild-mode . company-ebuild-setup) (ebuild-mode . flycheck-mode) (ebuild-mode . flycheck-pkgcheck-setup)))
The :defer t
and :mode "..."
enable deferred loading which theoretically
speeds up GNU Emacs initialization time at the cost of running the whole
use-package
block of ebuild-mode
configuration
when the :mode
condition is met.
Fediverse RSS
Fosstodon
If you prefer to follow my posts on Fosstodon via RSS, then here is the link: fosstodon.org/users/xgqt.rss.
Chromium Flags
Dark interface
Force web UI dark mode
--enable-features=WebUIDarkMode --force-dark-mode
Hardware acceleration
Accelerated video decoding and GPU support
--enable-accelerated-video-decode --enable-gpu
Reader mode
--enable-reader-mode
Runtime cache
Use the cache directory /run/user/1000/chrome/cache
--disk-cache-dir=${XDG_RUNTIME_DIR}/chrome/cache
Window size
Sawn a window of size 1200x900
--window-size=1200,900
Full config
The file /etc/chromium/default
is sourced by the Chromium launcher,
that's why we can sue bash syntax here.
#!/usr/bin/env bash # Dark interface # Force web UI dark mode CHROMIUM_FLAGS="${CHROMIUM_FLAGS} --enable-features=WebUIDarkMode --force-dark-mode" # Hardware acceleration # Accelerated video decoding and GPU support CHROMIUM_FLAGS="${CHROMIUM_FLAGS} --enable-accelerated-video-decode --enable-gpu" # Reader mode CHROMIUM_FLAGS="${CHROMIUM_FLAGS} --enable-reader-mode" # Runtime cache # Use the cache directory /run/user/1000/chrome/cache CHROMIUM_FLAGS="${CHROMIUM_FLAGS} --disk-cache-dir=${XDG_RUNTIME_DIR}/chrome/cache" # Window size # Sawn a window of size 1200x900 CHROMIUM_FLAGS="${CHROMIUM_FLAGS} --window-size=1200,900"
Tighter integration of KDE with GNU Emacs
Proper window size
Sometimes while the Emacs GUI window is tiled to a side or maximized small gaps may appear around the window. This "bug" can be worked around by:
- right-click on the title bar,
- "More Actions",
- "Configure Special Window Settings…",
- "Add Property",
- "Obey Geometry Restrictions",
- Select "Force" form the combo box,
- Select "No" from the radio buttons.
Opening files from Dolphin in one Emacs instance
Emacs daemon can help with that.
But before you run emacs --daemon
,
I need You to know that there might be a better way:
(unless (or noninteractive (server-running-p)) (server-start))
Adding the above to Your Emacs config will cause Emacs to start a daemon
after it is opened (and no other Emacs servers are running),
this also does not require --daemon
flag.
After the daemon is started You can open files by right-clicking on them and selecting to open them in "Emacsclient".
Furthermore:
You also utilize --iconic
and add emacs --iconic
to your Plasma startup.
This is way better than using emacs --daemon
because you can just
click on your taskbar to open the minimized Emacs window.
Also, Emacs will load all Your graphical libraries and configurations
so Your theme will look properly and not as if Emacs was being used
on the console.
Breeze theme
Sadly I have not found any theme that would look like Plasma. I use the spacemacs theme which looks a little bit similar, especially the background color comes close to Breeze's dark background color.
Note that the theme which You load with the function load-theme
is a different thing that the GTK theme Emacs uses.
The GTK theme should be enabled if Your Emacs version is
built with GTK support. On Gentoo this setting is controlled with the gtk
USE flag. Also the flag toolkit-scroll-bars
can be enabled for a look of
scroll-bars consistent with the selected toolkit.
Xresources
There is a different approach to theming Your Emacs that loading a theme
defined in ELisp - You can use a ~/.Xresource
file.
If you do not load any theme in your configuration Emacs will by default
read the .Xresources file, unless the --no-x-resources
flag is used.
Here are a few Xresources config files that come close to the default Breeze theme:
Dbus integration
Emacs can be built with FreeDesktop's D-Bus support to communicate over the dbus protocol. This can come handy when using ERC as it has a setting to enable desktop notifications on mentions (erc-desktop-notifications.el).
The dbus interface can also be utilized to query desktop-oriented daemons, for example this library talks to the Bluetooth daemon.
KDE development
Those are some ELisp libraries that I found while browsing GitHub, they might be useful for somebody who delves into KDE app development.
Opening files in different applications
In addition to async-shell-command
and start-process-shell-command
I wrote
this
small library that may come handy.