Is it possible to customise the ‘fixed’ controls at the top of Control Center?

Solution 1:

Yes, if you're on iOS 11.1 to 11.1.2 inclusive. Tested myself on iOS 11.1.1. A reminder that you perform this at your own risk.

  1. Install FilzaEscaped from https://www.reddit.com/r/jailbreak/comments/7lisma/release_filza_with_root_access/
    This works with any method of writing outside the sandbox (so FilzaJailed too) but I have not tested other methods myself.

    1. Download the first IPA from the post.
    2. Download Cydia Impactor from http://www.cydiaimpactor.com.
    3. Open Impactor and connect your device over USB.
    4. Drag the downloaded Filza IPA to the Impactor window and follow the prompts. If you use 2FA on your Apple ID, you will need to generate an app password.
  2. In Filza on your device, navigate to /System/Library/PrivateFrameworks/ControlCenterServices.framework/ and open DefaultModuleOrder~iphone.plist with the text editor.

    1. Filza starts in /var/mobile by default, so use the back button to navigate to root (/) first.
    2. When in the correct folder, tap the ⓘ on the right of the file, then Share at the top-right, then choose Text Editor.

  3. Move all strings from the fixed array to the user-enabled array.

    Select all the strings, cut and paste them into the bottom array.

    Below is an example DefaultModuleOrder~iphone.plist with all components controls moved to the user-enabled array.

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
    <plist version="1.0">
    <dict>
        <key>fixed</key>
        <array>
        </array>
        <key>user-enabled</key>
        <array>
            <string>com.apple.control-center.FlashlightModule</string>
            <string>com.apple.mobiletimer.controlcenter.timer</string>
            <string>com.apple.control-center.CalculatorModule</string>
            <string>com.apple.control-center.CameraModule</string>
            <string>com.apple.Home.ControlCenter</string>
            <string>com.apple.control-center.ConnectivityModule</string>
            <string>com.apple.mediaremote.controlcenter.nowplaying</string>
            <string>com.apple.control-center.OrientationLockModule</string>
            <string>com.apple.control-center.DoNotDisturbModule</string>
            <string>com.apple.control-center.DisplayModule</string>
            <string>com.apple.control-center.AudioModule</string>
            <string>com.apple.mediaremote.controlcenter.airplaymirroring</string>
        </array>
    </dict>
    </plist>
    
  4. Respring. Rebooting will do it and is probably the easiest way if you're unfamiliar with other methods of just restarting SpringBoard.

  5. In Settings → Control Center, re-enable the disabled standard controls if you still want them and customise their position as you wish!